diff options
author | Glauber de Oliveira Costa <gcosta@redhat.com> | 2008-03-19 14:25:12 -0300 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-17 17:41:00 +0200 |
commit | fa8004d8e0c2ba21a44bdc95c44c6c5267a991ec (patch) | |
tree | 4ba54d48ba30f26a08e33211505dbd68cef6fff7 | |
parent | 148a30f8cf2ac72b7ea6e5c8971fad8d80ec3879 (diff) |
x86: add barriers statement
goal is to have i386 and x86_64 closer, so we
add barriers to match
Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | arch/x86/kernel/smpboot_32.c | 4 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot_64.c | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/kernel/smpboot_32.c b/arch/x86/kernel/smpboot_32.c index 4e5416eb42b..a232f4d1f7a 100644 --- a/arch/x86/kernel/smpboot_32.c +++ b/arch/x86/kernel/smpboot_32.c @@ -180,6 +180,9 @@ static void __cpuinit start_secondary(void *unused) smp_callin(); while (!cpu_isset(smp_processor_id(), smp_commenced_mask)) cpu_relax(); + + /* otherwise gcc will move up smp_processor_id before the cpu_init */ + barrier(); /* * Check TSC synchronization with the BP: */ @@ -432,6 +435,7 @@ wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip) Dprintk("Waiting for send to finish...\n"); send_status = safe_apic_wait_icr_idle(); + mb(); atomic_set(&init_deasserted, 1); /* diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c index d7b59d6c696..a9cc91127b9 100644 --- a/arch/x86/kernel/smpboot_64.c +++ b/arch/x86/kernel/smpboot_64.c @@ -239,6 +239,7 @@ void __cpuinit start_secondary(void) setup_secondary_clock(); + wmb(); cpu_idle(); } |