[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] x86-64 linux: unmap temporary mappings established for setup of 1:1 mappings

On 1 Jun 2006, at 19:21, Keir Fraser wrote:

The temporary mappings needed to set up the 1:1 mappings must be torn down after use; otherwise they may trigger the WARN_ON() in vmap_pte_range() (namely if the chunk allocated to hold kernel and initial page tables gets close to or exceeds 128Mb, or if a sufficiently high mem= argument causes the static allocations to grow beyond 128Mb, which in
either case means these mappings extend into the modules area).

I've applied this to -unstable, but in this patch I only see code to destroy the extended init mappings. What happens if you have a really big initrd (for example)? That will push the initial pagetables up into the modules area -- is that handled correctly now or is more fixup required?

Might it make sense to zap all init mappings (after kernel code/data) in mem_init(), where we leave 'bootmem mode'? At that point initrd etc. can all be accessed via the main 1:1 mapping. I think this should work so long as we don't have any residual pointers to the init mapping hanging around.

Another concern I have is that our x86/64 mm/init.c is still very complicated and rather different from native mm/init.c (even though I did clean it up a lot some time ago). I'm interested in any ideas about how to reduce the complexity...

 -- Keir

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.