aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/smpboot.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/smpboot.c')
-rw-r--r--arch/x86/kernel/smpboot.c13
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 /*