aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/head_32.S
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2010-12-16 18:03:15 -0500
committerRusty Russell <rusty@rustcorp.com.au>2010-12-16 01:33:15 -0500
commitda32dac101263fb5b155407507c548e3ac2a6a2a (patch)
treefdb5fa8e874fdbe59878481b128b026719045523 /arch/x86/kernel/head_32.S
parentbb4093deb259ea9c92415796a6a139e35272f8a8 (diff)
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
Diffstat (limited to 'arch/x86/kernel/head_32.S')
-rw-r--r--arch/x86/kernel/head_32.S4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
index bcece91dd311..f0bea76f6ea5 100644
--- a/arch/x86/kernel/head_32.S
+++ b/arch/x86/kernel/head_32.S
@@ -620,13 +620,13 @@ ENTRY(initial_code)
620__PAGE_ALIGNED_BSS 620__PAGE_ALIGNED_BSS
621 .align PAGE_SIZE_asm 621 .align PAGE_SIZE_asm
622#ifdef CONFIG_X86_PAE 622#ifdef CONFIG_X86_PAE
623initial_pg_pmd: 623ENTRY(initial_pg_pmd)
624 .fill 1024*KPMDS,4,0 624 .fill 1024*KPMDS,4,0
625#else 625#else
626ENTRY(initial_page_table) 626ENTRY(initial_page_table)
627 .fill 1024,4,0 627 .fill 1024,4,0
628#endif 628#endif
629initial_pg_fixmap: 629ENTRY(initial_pg_fixmap)
630 .fill 1024,4,0 630 .fill 1024,4,0
631ENTRY(empty_zero_page) 631ENTRY(empty_zero_page)
632 .fill 4096,1,0 632 .fill 4096,1,0