diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2008-10-18 08:23:10 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2008-10-27 12:18:26 -0400 |
commit | 7920c4d658ff2b0f7b8acf3bd7c700875c2bc163 (patch) | |
tree | 102ac4fd260329c49eaa94491413658c647e95a0 /arch/mips | |
parent | f67ae98352284d7ac1e03f3a872e33c68ea35a5b (diff) |
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 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) | |||
163 | * Remove this CPU: | 163 | * Remove this CPU: |
164 | */ | 164 | */ |
165 | cpu_clear(smp_processor_id(), cpu_online_map); | 165 | cpu_clear(smp_processor_id(), cpu_online_map); |
166 | local_irq_enable(); /* May need to service _machine_restart IPI */ | 166 | for (;;) { |
167 | for (;;); /* Wait if available. */ | 167 | if (cpu_wait) |
168 | (*cpu_wait)(); /* Wait if available. */ | ||
169 | } | ||
168 | } | 170 | } |
169 | 171 | ||
170 | void smp_send_stop(void) | 172 | void smp_send_stop(void) |