MIPS: SMP: Don't reenable interrupts in stop_this_cpu; use WAIT instruction.
authorRalf Baechle <ralf@linux-mips.org>
Sat, 18 Oct 2008 12:23:10 +0000 (13:23 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 27 Oct 2008 16:18:26 +0000 (16:18 +0000)
Noticed by Anirban Sinha <ASinha@zeugmasystems.com>; patch by me.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/smp.c

index 7b59cfb..b79ea70 100644 (file)
@@ -163,8 +163,10 @@ static void stop_this_cpu(void *dummy)
         * Remove this CPU:
         */
        cpu_clear(smp_processor_id(), cpu_online_map);
-       local_irq_enable();     /* May need to service _machine_restart IPI */
-       for (;;);               /* Wait if available. */
+       for (;;) {
+               if (cpu_wait)
+                       (*cpu_wait)();          /* Wait if available. */
+       }
 }
 
 void smp_send_stop(void)