diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2008-10-18 13:23:10 +0100 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2008-10-27 16:18:26 +0000 |
commit | 7920c4d658ff2b0f7b8acf3bd7c700875c2bc163 (patch) | |
tree | 102ac4fd260329c49eaa94491413658c647e95a0 | |
parent | f67ae98352284d7ac1e03f3a872e33c68ea35a5b (diff) | |
download | blackbird-op-linux-7920c4d658ff2b0f7b8acf3bd7c700875c2bc163.tar.gz blackbird-op-linux-7920c4d658ff2b0f7b8acf3bd7c700875c2bc163.zip |
MIPS: SMP: Don't reenable interrupts in stop_this_cpu; use WAIT instruction.
Noticed by Anirban Sinha <ASinha@zeugmasystems.com>; patch by me.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
-rw-r--r-- | arch/mips/kernel/smp.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index 7b59cfb7e602..b79ea7055ec3 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c @@ -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) |