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 /arch/mips | |
parent | f67ae98352284d7ac1e03f3a872e33c68ea35a5b (diff) | |
download | op-kernel-dev-7920c4d658ff2b0f7b8acf3bd7c700875c2bc163.zip op-kernel-dev-7920c4d658ff2b0f7b8acf3bd7c700875c2bc163.tar.gz |
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>
Diffstat (limited to 'arch/mips')
-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 7b59cfb..b79ea70 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) |