Hello!
Sorry for the delay in getting back to this.
On Wed, Apr 28, 2010 at 02:21:58PM -0700, Jeremy Fitzhardinge wrote:
> On 04/20/2010 04:18 AM, Thomas Schwinge wrote:
> > On Sat, Apr 10, 2010 at 03:52:45PM -0700, Jeremy Fitzhardinge wrote:
> >> On 04/10/2010 03:13 PM, Thomas Schwinge wrote:
> >>>> Normally that would be OK, because it uses:
> >>>>
> >>>> __get_user(pfn, &machine_to_phys_mapping[mfn]);
> >>>>
> >>>> to dereference the array. But at this early stage, none of the kernel's
> >>>> exception handlers have been set up, so this will just fault into Xen.
> >>>>
> >>>> It would be interesting to confirm this by building your kernel with
> >>>> CONFIG_DEBUG_INFO=y in the .config, and verify that the faulting
> >>>> instruction is actually this line.
> >>>>
> >>> Bingo!
> >>>
> >> Excellent. Now I just need to work out how to do a proper manual limit
> >> check on the mfn. (I've always been a bit suspicious of this code,
> >> because there's no guarantee that a random invalid mfn *won't* happen to
> >> return the pfn we're looking for...)
>
> Does this help?
> From: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
> Subject: [PATCH] xen/core: don't bother trying to free pages beyond the ones
> Xen gave us
>
> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
I put this on top of Debian linux-2.6 2.6.32-11, which is based on
f64df18aae5ab07b44bdcc2334cf0044ef46320c of
git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git. Please
tell me if I shall put it on top of another version.
The patch does mitigate / hide the problem, as the 100000000 to 120000000
pages are now chopped off (which is not what you intended to do, as I
understood it):
(XEN) Xen version 3.4.3-rc3 (Debian 3.4.3~rc3-2) (waldi@xxxxxxxxxx) (gcc
version 4.4.3 (Debian 4.4.3-7) ) Thu Apr 8 14:16:43 UTC 2010
(XEN) Command line: com1=38400,8n1 vga=current,keep console=com1,vga
loglvl=all guest_loglvl=all console_to_ring
(XEN) Video information:
(XEN) VGA is text mode 80x25, font 8x16
(XEN) VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN) Found 1 MBR signatures
(XEN) Found 1 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN) 0000000000000000 - 000000000009e000 (usable)
(XEN) 000000000009e000 - 00000000000a0000 (reserved)
(XEN) 00000000000e4000 - 0000000000100000 (reserved)
(XEN) 0000000000100000 - 00000000ddee0000 (usable)
(XEN) 00000000ddee0000 - 00000000ddeef000 (ACPI data)
(XEN) 00000000ddeef000 - 00000000ddf00000 (ACPI NVS)
(XEN) 00000000ddf00000 - 00000000e0000000 (reserved)
(XEN) 00000000fec00000 - 00000000fec10000 (reserved)
(XEN) 00000000fee00000 - 00000000fee01000 (reserved)
(XEN) 00000000fff00000 - 0000000100000000 (reserved)
(XEN) 0000000100000000 - 0000000120000000 (usable)
(XEN) System RAM: 4062MB (4159992kB)
[...]
[ 0.000000] Linux version 2.6.32-4-xen-amd64 (Debian 2.6.32-11)
(maks@xxxxxxxxxx) (gcc version 4.3.4 (Debian 4.3.4-8) ) #1 SMP Thu Apr 29
09:32:20 CEST 2010
[ 0.000000] Command line: root=/dev/mapper/vg0-boole--root ro
console=hvc0 earlyprintk=xen debug
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
[ 0.000000] Centaur CentaurHauls
[ 0.000000] xen_release_chunk: looking at area pfn e0000-f2804: 75780
pages freed
[ 0.000000] released 75780 pages of unused memory
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] Xen: 0000000000000000 - 000000000009e000 (usable)
[ 0.000000] Xen: 000000000009e000 - 0000000000100000 (reserved)
[ 0.000000] Xen: 0000000000100000 - 00000000ddee0000 (usable)
[ 0.000000] Xen: 00000000ddee0000 - 00000000ddeef000 (ACPI data)
[ 0.000000] Xen: 00000000ddeef000 - 00000000ddf00000 (ACPI NVS)
[ 0.000000] Xen: 00000000ddf00000 - 00000000e0000000 (reserved)
[ 0.000000] Xen: 00000000fec00000 - 00000000fec10000 (reserved)
[ 0.000000] Xen: 00000000fee00000 - 00000000fee01000 (reserved)
[ 0.000000] Xen: 00000000fff00000 - 0000000100000000 (reserved)
[ 0.000000] bootconsole [xenboot0] enabled
[ 0.000000] DMI present.
[ 0.000000] Phoenix BIOS detected: BIOS may corrupt low RAM, working
around it.
[ 0.000000] e820 update range: 0000000000000000 - 0000000000010000
(usable) ==> (reserved)
[ 0.000000] last_pfn = 0xddee0 max_arch_pfn = 0x400000000
[...]
Regards,
Thomas
signature.asc
Description: Digital signature
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|