diff options
author | Steven Miao <realmz6@gmail.com> | 2011-08-02 05:50:41 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2011-10-25 19:51:29 -0400 |
commit | 0b2b06efd81ceb1630babcf2990f9577a17c132f (patch) | |
tree | aba576a0024ce65a0b60b541aeee55d380544db9 /arch/blackfin | |
parent | 74b654176aa15e06b81f26416654b9cd91bd9601 (diff) |
Blackfin: SMP: fix scheduling deadlock
Make sure our smp_send_reschedule() implementation matches the
scheduler_ipi() callback so that it can kick the idle cpu.
Signed-off-by: Steven Miao <realmz6@gmail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin')
-rw-r--r-- | arch/blackfin/mach-common/smp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c index 107622aacf6b..0784a52389c8 100644 --- a/arch/blackfin/mach-common/smp.c +++ b/arch/blackfin/mach-common/smp.c | |||
@@ -295,10 +295,15 @@ EXPORT_SYMBOL_GPL(smp_call_function_single); | |||
295 | 295 | ||
296 | void smp_send_reschedule(int cpu) | 296 | void smp_send_reschedule(int cpu) |
297 | { | 297 | { |
298 | cpumask_t callmap; | ||
298 | /* simply trigger an ipi */ | 299 | /* simply trigger an ipi */ |
299 | if (cpu_is_offline(cpu)) | 300 | if (cpu_is_offline(cpu)) |
300 | return; | 301 | return; |
301 | platform_send_ipi_cpu(cpu, IRQ_SUPPLE_0); | 302 | |
303 | cpumask_clear(&callmap); | ||
304 | cpumask_set_cpu(cpu, &callmap); | ||
305 | |||
306 | smp_send_message(callmap, BFIN_IPI_RESCHEDULE, NULL, NULL, 0); | ||
302 | 307 | ||
303 | return; | 308 | return; |
304 | } | 309 | } |