fix bug of GIC crash
authoryangkai <yangkai@ubuntu-fs>
Fri, 22 Jul 2011 01:45:07 +0000 (09:45 +0800)
committeryangkai <yangkai@ubuntu-fs>
Fri, 22 Jul 2011 01:45:07 +0000 (09:45 +0800)
arch/arm/common/gic.c

index 3ff84676ace782e150d481f4531f09085685de21..f352d793a944c18a9da0c56a18d4ae259cf9bf2b 100755 (executable)
@@ -87,6 +87,7 @@ static void gic_ack_irq(unsigned int irq)
        spin_lock(&irq_controller_lock);
        writel(mask, gic_dist_base(irq) + GIC_DIST_ENABLE_CLEAR + (gic_irq(irq) / 32) * 4);
        writel(gic_irq(irq), gic_cpu_base(irq) + GIC_CPU_EOI);
+       dsb();
        spin_unlock(&irq_controller_lock);
 }
 
@@ -96,6 +97,7 @@ static void gic_mask_irq(unsigned int irq)
 
        spin_lock(&irq_controller_lock);
        writel(mask, gic_dist_base(irq) + GIC_DIST_ENABLE_CLEAR + (gic_irq(irq) / 32) * 4);
+       dsb();
        spin_unlock(&irq_controller_lock);
 }
 
@@ -105,6 +107,7 @@ static void gic_unmask_irq(unsigned int irq)
 
        spin_lock(&irq_controller_lock);
        writel(mask, gic_dist_base(irq) + GIC_DIST_ENABLE_SET + (gic_irq(irq) / 32) * 4);
+       dsb();
        spin_unlock(&irq_controller_lock);
 }