diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-04-14 13:22:37 +0100 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-04-14 13:22:37 +0100 |
commit | 6967963d6d5cac40a091d075326f0e3ccb95c58a (patch) | |
tree | a9c29ac6450a7d1dc815f9d97f726ecd59271812 /arch/blackfin/mach-common/smp.c | |
parent | 9b1a88c7105f593cc61a7acd3c51fcf4bf7b8038 (diff) | |
parent | 34e51ce60a210094bd66cf0a75dd8512247618ca (diff) |
Merge branch 'for-2.6.30' into for-2.6.31
Diffstat (limited to 'arch/blackfin/mach-common/smp.c')
-rw-r--r-- | arch/blackfin/mach-common/smp.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c index 77c992847094..93eab6146079 100644 --- a/arch/blackfin/mach-common/smp.c +++ b/arch/blackfin/mach-common/smp.c @@ -158,10 +158,14 @@ static irqreturn_t ipi_handler(int irq, void *dev_instance) kfree(msg); break; case BFIN_IPI_CALL_FUNC: + spin_unlock(&msg_queue->lock); ipi_call_function(cpu, msg); + spin_lock(&msg_queue->lock); break; case BFIN_IPI_CPU_STOP: + spin_unlock(&msg_queue->lock); ipi_cpu_stop(cpu); + spin_lock(&msg_queue->lock); kfree(msg); break; default: @@ -457,7 +461,7 @@ void smp_icache_flush_range_others(unsigned long start, unsigned long end) smp_flush_data.start = start; smp_flush_data.end = end; - if (smp_call_function(&ipi_flush_icache, &smp_flush_data, 1)) + if (smp_call_function(&ipi_flush_icache, &smp_flush_data, 0)) printk(KERN_WARNING "SMP: failed to run I-cache flush request on other CPUs\n"); } EXPORT_SYMBOL_GPL(smp_icache_flush_range_others); |