diff options
Diffstat (limited to 'arch/x86/kernel/setup_percpu.c')
-rw-r--r-- | arch/x86/kernel/setup_percpu.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c index 497aa766fab3..ea554f812ee1 100644 --- a/arch/x86/kernel/setup_percpu.c +++ b/arch/x86/kernel/setup_percpu.c | |||
@@ -287,24 +287,15 @@ void __init setup_per_cpu_areas(void) | |||
287 | /* Setup cpu initialized, callin, callout masks */ | 287 | /* Setup cpu initialized, callin, callout masks */ |
288 | setup_cpu_local_masks(); | 288 | setup_cpu_local_masks(); |
289 | 289 | ||
290 | #ifdef CONFIG_X86_32 | ||
291 | /* | 290 | /* |
292 | * Sync back kernel address range again. We already did this in | 291 | * Sync back kernel address range again. We already did this in |
293 | * setup_arch(), but percpu data also needs to be available in | 292 | * setup_arch(), but percpu data also needs to be available in |
294 | * the smpboot asm. We can't reliably pick up percpu mappings | 293 | * the smpboot asm. We can't reliably pick up percpu mappings |
295 | * using vmalloc_fault(), because exception dispatch needs | 294 | * using vmalloc_fault(), because exception dispatch needs |
296 | * percpu data. | 295 | * percpu data. |
296 | * | ||
297 | * FIXME: Can the later sync in setup_cpu_entry_areas() replace | ||
298 | * this call? | ||
297 | */ | 299 | */ |
298 | clone_pgd_range(initial_page_table + KERNEL_PGD_BOUNDARY, | 300 | sync_initial_page_table(); |
299 | swapper_pg_dir + KERNEL_PGD_BOUNDARY, | ||
300 | KERNEL_PGD_PTRS); | ||
301 | |||
302 | /* | ||
303 | * sync back low identity map too. It is used for example | ||
304 | * in the 32-bit EFI stub. | ||
305 | */ | ||
306 | clone_pgd_range(initial_page_table, | ||
307 | swapper_pg_dir + KERNEL_PGD_BOUNDARY, | ||
308 | min(KERNEL_PGD_PTRS, KERNEL_PGD_BOUNDARY)); | ||
309 | #endif | ||
310 | } | 301 | } |