diff options
author | Steven Miao <realmz6@gmail.com> | 2011-08-02 11:50:41 +0200 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2011-10-26 01:51:29 +0200 |
commit | 0b2b06efd81ceb1630babcf2990f9577a17c132f (patch) | |
tree | aba576a0024ce65a0b60b541aeee55d380544db9 /arch/blackfin/mach-common/smp.c | |
parent | Blackfin: H8606: fixup bogus ioresource init (diff) | |
download | linux-0b2b06efd81ceb1630babcf2990f9577a17c132f.tar.xz linux-0b2b06efd81ceb1630babcf2990f9577a17c132f.zip |
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/mach-common/smp.c')
-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); void smp_send_reschedule(int cpu) { + cpumask_t callmap; /* simply trigger an ipi */ if (cpu_is_offline(cpu)) return; - platform_send_ipi_cpu(cpu, IRQ_SUPPLE_0); + + cpumask_clear(&callmap); + cpumask_set_cpu(cpu, &callmap); + + smp_send_message(callmap, BFIN_IPI_RESCHEDULE, NULL, NULL, 0); return; } |