Messages in this thread | | | Subject | Re: [PATCH] reserve end-of-conventional-memory to 1MB on 32-bit | From | Mark McLoughlin <> | Date | Fri, 29 Feb 2008 22:06:59 +0000 |
| |
On Fri, 2008-02-29 at 19:38 +0100, Alexander van Heukelum wrote: > On Fri, 29 Feb 2008 17:14:07 +0000, "Mark McLoughlin" > <markmc@redhat.com> said: > > > I haven't investigated in any detail, but with 2.6.25-rc3 and your > > patch I'm seeing a Xen guest hit this BUG: > > > > void __init smp_alloc_memory(void) > > { > > trampoline_base = alloc_bootmem_low_pages(PAGE_SIZE); > > /* > > * Has to be in very low memory so we can execute > > * real-mode AP code. > > */ > > if (__pa(trampoline_base) >= 0x9F000) > > BUG(); > > } > > > > Stack looks like: > > > > [<c137ef97>] smp_alloc_memory+0x25 <-- > > [<c137ef97>] smp_alloc_memory+0x25 > > [<c137a500>] setup_arch+0x28e > > [<c13735f7>] start_kernel+0x7a > > [<c1379240>] xen_start_kernel+0x300 > > Ouch. > > My first guess is that the BIOS data area is completely non-existent for > Xen. > Is it guaranteed that the memory is zeroed out on boot?
Yep, that seems to be the case
> In that case we can special-case it easily: > > change: > /* Paranoia: should never happen, but... */ > if (lowmem >= 0x100000) > lowmem = 0xa0000; > > into: > /* Strange case, like Xen ;) */ > if (lowmem == 0 || lowmem >= 0x100000) > lowmem = 0x9f000; > > Can you test that?
Yes, that fixes boot for me.
Thanks, Mark.
| |