x86: take load_sp0 out of smpboot.c
authorGlauber Costa <gcosta@redhat.com>
Thu, 5 Jun 2008 06:05:39 +0000 (23:05 -0700)
committerIngo Molnar <mingo@elte.hu>
Tue, 8 Jul 2008 10:48:25 +0000 (12:48 +0200)
there's no particular reason to do load_sp0 in different
places for i386 and x86_64. They should all be in cpu_init.
Right now, cpu_init itself is not integrated, but with this patch,
the code becomes closer to each other, making in easier to integrate
when the time comes.

Furthermore, although doing it in do_boot_cpu for x86_64 is fine, since it's
only a copy, load_sp0 should be executed in the cpu it refers to anyway.

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/setup64.c
arch/x86/kernel/smpboot.c

index 70ff071867724da1f23285193d8f2c6d28573172..151d3155ddf68cc067c05d2dcc5c734f127fe59b 100644 (file)
@@ -247,6 +247,7 @@ void __cpuinit cpu_init (void)
                BUG();
        enter_lazy_tlb(&init_mm, me);
 
+       load_sp0(t, &current->thread);
        set_tss_desc(cpu, t);
        load_TR_desc();
        load_LDT(&init_mm.context);
index 67af727f733a691910e4f84eefc246dee0070d5c..3b48d1f4c7c3c634dea267c9db783d3b2fee0cf2 100644 (file)
@@ -864,7 +864,6 @@ do_rest:
        irq_ctx_init(cpu);
 #else
        cpu_pda(cpu)->pcurrent = c_idle.idle;
-       load_sp0(&per_cpu(init_tss, cpu), &c_idle.idle->thread);
        clear_tsk_thread_flag(c_idle.idle, TIF_FORK);
 #endif
        early_gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu);