diff options
Diffstat (limited to 'arch/i386/kernel/smpboot.c')
-rw-r--r-- | arch/i386/kernel/smpboot.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c index dea7ef9d3e82..8c6c8c52b95c 100644 --- a/arch/i386/kernel/smpboot.c +++ b/arch/i386/kernel/smpboot.c | |||
@@ -596,6 +596,12 @@ static void __cpuinit start_secondary(void *unused) | |||
596 | void __devinit initialize_secondary(void) | 596 | void __devinit initialize_secondary(void) |
597 | { | 597 | { |
598 | /* | 598 | /* |
599 | * switch to the per CPU GDT we already set up | ||
600 | * in do_boot_cpu() | ||
601 | */ | ||
602 | cpu_set_gdt(current_thread_info()->cpu); | ||
603 | |||
604 | /* | ||
599 | * We don't actually need to load the full TSS, | 605 | * We don't actually need to load the full TSS, |
600 | * basically just the stack pointer and the eip. | 606 | * basically just the stack pointer and the eip. |
601 | */ | 607 | */ |
@@ -972,9 +978,6 @@ static int __cpuinit do_boot_cpu(int apicid, int cpu) | |||
972 | /* Stack for startup_32 can be just as for start_secondary onwards */ | 978 | /* Stack for startup_32 can be just as for start_secondary onwards */ |
973 | stack_start.esp = (void *) idle->thread.esp; | 979 | stack_start.esp = (void *) idle->thread.esp; |
974 | 980 | ||
975 | start_pda = cpu_pda(cpu); | ||
976 | cpu_gdt_descr = per_cpu(cpu_gdt_descr, cpu); | ||
977 | |||
978 | irq_ctx_init(cpu); | 981 | irq_ctx_init(cpu); |
979 | 982 | ||
980 | x86_cpu_to_apicid[cpu] = apicid; | 983 | x86_cpu_to_apicid[cpu] = apicid; |