diff options
Diffstat (limited to 'arch/x86/kernel/smpboot.c')
-rw-r--r-- | arch/x86/kernel/smpboot.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 0854ff169274..ad59edd84de7 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
@@ -232,12 +232,6 @@ static void notrace start_secondary(void *unused) | |||
232 | */ | 232 | */ |
233 | if (boot_cpu_has(X86_FEATURE_PCID)) | 233 | if (boot_cpu_has(X86_FEATURE_PCID)) |
234 | __write_cr4(__read_cr4() | X86_CR4_PCIDE); | 234 | __write_cr4(__read_cr4() | X86_CR4_PCIDE); |
235 | cpu_init(); | ||
236 | x86_cpuinit.early_percpu_clock_init(); | ||
237 | preempt_disable(); | ||
238 | smp_callin(); | ||
239 | |||
240 | enable_start_cpu0 = 0; | ||
241 | 235 | ||
242 | #ifdef CONFIG_X86_32 | 236 | #ifdef CONFIG_X86_32 |
243 | /* switch away from the initial page table */ | 237 | /* switch away from the initial page table */ |
@@ -245,6 +239,13 @@ static void notrace start_secondary(void *unused) | |||
245 | __flush_tlb_all(); | 239 | __flush_tlb_all(); |
246 | #endif | 240 | #endif |
247 | 241 | ||
242 | cpu_init(); | ||
243 | x86_cpuinit.early_percpu_clock_init(); | ||
244 | preempt_disable(); | ||
245 | smp_callin(); | ||
246 | |||
247 | enable_start_cpu0 = 0; | ||
248 | |||
248 | /* otherwise gcc will move up smp_processor_id before the cpu_init */ | 249 | /* otherwise gcc will move up smp_processor_id before the cpu_init */ |
249 | barrier(); | 250 | barrier(); |
250 | /* | 251 | /* |