aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSteven Miao <realmz6@gmail.com>2012-09-04 16:57:14 +0800
committerBob Liu <lliubbo@gmail.com>2012-10-08 14:36:30 +0800
commit6594b982f6d5f957c8d72de7658bf8e240c7dfca (patch)
tree9d7c0acc8206760ca6ca1ab7a8b8861d8785efc4 /arch
parentBlackfin: drop irq enable in init_arch_irq() (diff)
downloadlinux-dev-6594b982f6d5f957c8d72de7658bf8e240c7dfca.tar.xz
linux-dev-6594b982f6d5f957c8d72de7658bf8e240c7dfca.zip
Blackfin: smp: add smp_mb() to keep coherency
After use generic smp helpers, smp_mb() should be added to keep coherency. Signed-off-by: Steven Miao <realmz6@gmail.com> Signed-off-by: Bob Liu <lliubbo@gmail.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/blackfin/mach-common/smp.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c
index a40151306b77..bb61ae4986e4 100644
--- a/arch/blackfin/mach-common/smp.c
+++ b/arch/blackfin/mach-common/smp.c
@@ -146,7 +146,7 @@ static irqreturn_t ipi_handler_int1(int irq, void *dev_instance)
platform_clear_ipi(cpu, IRQ_SUPPLE_1);
bfin_ipi_data = &__get_cpu_var(bfin_ipi);
-
+ smp_mb();
while ((pending = xchg(&bfin_ipi_data->bits, 0)) != 0) {
msg = 0;
do {
@@ -195,7 +195,7 @@ void send_ipi(const struct cpumask *cpumask, enum ipi_message_type msg)
unsigned long flags;
local_irq_save(flags);
-
+ smp_mb();
for_each_cpu(cpu, cpumask) {
bfin_ipi_data = &per_cpu(bfin_ipi, cpu);
smp_mb();