diff options
author | Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> | 2010-08-27 18:18:19 -0400 |
---|---|---|
committer | Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> | 2010-10-22 15:57:25 -0400 |
commit | 33a847502b0338351cebd8fc0c68ac796cfadbbd (patch) | |
tree | 58f1628db992d5b358042e5fac9eb2c5fd35bf5f /arch/x86 | |
parent | c3798062f100c3e1d4ae1241bc536f3b1f28a6ca (diff) |
xen: defer building p2m mfn structures until kernel is mapped
When building mfn parts of p2m structure, we rely on being able to
use mfn_to_virt, which in turn requires kernel to be mapped into
the linear area (which is distinct from the kernel image mapping
on 64-bit). Defer calling xen_build_mfn_list_list() until after
xen_setup_kernel_pagetable();
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/xen/enlighten.c | 3 | ||||
-rw-r--r-- | arch/x86/xen/mmu.c | 3 |
2 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index ee304b52d8b7..d8873014b5ed 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -1178,6 +1178,9 @@ asmlinkage void __init xen_start_kernel(void) | |||
1178 | xen_raw_console_write("mapping kernel into physical memory\n"); | 1178 | xen_raw_console_write("mapping kernel into physical memory\n"); |
1179 | pgd = xen_setup_kernel_pagetable(pgd, xen_start_info->nr_pages); | 1179 | pgd = xen_setup_kernel_pagetable(pgd, xen_start_info->nr_pages); |
1180 | 1180 | ||
1181 | /* Allocate and initialize top and mid mfn levels for p2m structure */ | ||
1182 | xen_build_mfn_list_list(); | ||
1183 | |||
1181 | init_mm.pgd = pgd; | 1184 | init_mm.pgd = pgd; |
1182 | 1185 | ||
1183 | /* keep using Xen gdt for now; no urgent need to change it */ | 1186 | /* keep using Xen gdt for now; no urgent need to change it */ |
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index b96513437236..9b43bb398d37 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
@@ -374,9 +374,6 @@ void __init xen_build_dynamic_phys_to_machine(void) | |||
374 | 374 | ||
375 | p2m_top[topidx][mididx] = &mfn_list[pfn]; | 375 | p2m_top[topidx][mididx] = &mfn_list[pfn]; |
376 | } | 376 | } |
377 | |||
378 | /* Allocate and initialize top and mid mfn levels */ | ||
379 | xen_build_mfn_list_list(); | ||
380 | } | 377 | } |
381 | 378 | ||
382 | unsigned long get_phys_to_machine(unsigned long pfn) | 379 | unsigned long get_phys_to_machine(unsigned long pfn) |