aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2010-08-27 18:18:19 -0400
committerJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2010-10-22 15:57:25 -0400
commit33a847502b0338351cebd8fc0c68ac796cfadbbd (patch)
tree58f1628db992d5b358042e5fac9eb2c5fd35bf5f /arch/x86
parentc3798062f100c3e1d4ae1241bc536f3b1f28a6ca (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.c3
-rw-r--r--arch/x86/xen/mmu.c3
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
382unsigned long get_phys_to_machine(unsigned long pfn) 379unsigned long get_phys_to_machine(unsigned long pfn)