Browse Source

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>
Glauber de Oliveira Costa 17 years ago
parent
commit
fa8004d8e0
2 changed files with 5 additions and 0 deletions
  1. 4 0
      arch/x86/kernel/smpboot_32.c
  2. 1 0
      arch/x86/kernel/smpboot_64.c

+ 4 - 0
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);
 
 	/*

+ 1 - 0
arch/x86/kernel/smpboot_64.c

@@ -239,6 +239,7 @@ void __cpuinit start_secondary(void)
 
 	setup_secondary_clock();
 
+	wmb();
 	cpu_idle();
 }