summaryrefslogtreecommitdiffstats
path: root/kernel/irq/chip.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-03-02 11:49:21 +0100
committerThomas Gleixner <tglx@linutronix.de>2011-03-02 11:49:21 +0100
commitc69e3758ff56d03e161187355791ec992c574276 (patch)
treed423ff265f61d84d43c29b7e72c428ea2a3f68bc /kernel/irq/chip.c
parent8d32a307e4faa8b123dc8a9cd56d1a7525f69ad3 (diff)
downloadlinux-c69e3758ff56d03e161187355791ec992c574276.tar.gz
linux-c69e3758ff56d03e161187355791ec992c574276.tar.bz2
linux-c69e3758ff56d03e161187355791ec992c574276.zip
genirq: Fixup fasteoi handler for oneshot mode
The fasteoi handler must mask the interrupt line in oneshot mode otherwise we end up with an irq storm. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/irq/chip.c')
-rw-r--r--kernel/irq/chip.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index b5145654855f..c9c0601f0615 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -513,6 +513,10 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
mask_irq(desc);
goto out;
}
+
+ if (desc->istate & IRQS_ONESHOT)
+ mask_irq(desc);
+
preflow_handler(desc);
handle_irq_event(desc);