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; |
