]> git.baikalelectronics.ru Git - kernel.git/commit
lguest: populate initial_page_table
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 16 Dec 2010 23:03:15 +0000 (17:03 -0600)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 16 Dec 2010 06:33:15 +0000 (17:03 +1030)
commit6accfaf1812718aa3d0873a9694ebabd6e9ee551
treefdb5fa8e874fdbe59878481b128b026719045523
parent4c21b9db260f7bf71304b10b1d12d0b52a0f31ea
lguest: populate initial_page_table

Two x86 patches broke lguest:
1) v2.6.35-492-g72d7c3b, which changed x86 to use the memblock allocator.

In lguest, the host places linear page tables at the top of mem, which
used to be enough to get us up to the swapper_pg_dir page tables.  With
the first patch, the direct mapping tables used that memory:

Before: kernel direct mapping tables up to 4000000 @ 7000-1a000
After: kernel direct mapping tables up to 4000000 @ 3fed000-4000000

I initially fixed this by lying about the amount of memory we had, so
the kernel wouldn't blatt the lguest boot pagetables (yuk!), but then...

2) v2.6.36-rc8-54-gb40827f, which made x86 boot use initial_page_table.

This was initialized in a part of head_32.S which isn't executed by
lguest; it is then copied into swapper_pg_dir.  So we have to initialize
it; and anyway we switch to it before we blatt the old tables, so that
fixes the previous damage as well.

For the moment, I cut & pasted the code into lguest's boot code, but
next merge window I will merge them.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: x86@kernel.org
arch/x86/kernel/head_32.S
arch/x86/lguest/boot.c
arch/x86/lguest/i386_head.S