aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlauber de Oliveira Costa <gcosta@redhat.com>2008-03-19 14:25:12 -0300
committerIngo Molnar <mingo@elte.hu>2008-04-17 17:41:00 +0200
commitfa8004d8e0c2ba21a44bdc95c44c6c5267a991ec (patch)
tree4ba54d48ba30f26a08e33211505dbd68cef6fff7
parent148a30f8cf2ac72b7ea6e5c8971fad8d80ec3879 (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.c4
-rw-r--r--arch/x86/kernel/smpboot_64.c1
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();
}