- patches.suse/slab-handle-memoryless-nodes-v2a.patch: Refresh.
[linux-flexiantxendom0-3.2.10.git] / arch / microblaze / kernel / intc.c
index 6eea6f9..03172c1 100644 (file)
@@ -42,8 +42,16 @@ unsigned int nr_irq;
 
 static void intc_enable_or_unmask(unsigned int irq)
 {
+       unsigned long mask = 1 << irq;
        pr_debug("enable_or_unmask: %d\n", irq);
-       out_be32(INTC_BASE + SIE, 1 << irq);
+       out_be32(INTC_BASE + SIE, mask);
+
+       /* ack level irqs because they can't be acked during
+        * ack function since the handle_level_irq function
+        * acks the irq before calling the interrupt handler
+        */
+       if (irq_desc[irq].status & IRQ_LEVEL)
+               out_be32(INTC_BASE + IAR, mask);
 }
 
 static void intc_disable_or_mask(unsigned int irq)