aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/irq')
-rw-r--r--kernel/irq/handle.c2
-rw-r--r--kernel/irq/spurious.c4
2 files changed, 5 insertions, 1 deletions
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 515ad40bde15..32e1ab1477d1 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -180,6 +180,8 @@ fastcall unsigned int __do_IRQ(unsigned int irq)
180 if (desc->chip->ack) 180 if (desc->chip->ack)
181 desc->chip->ack(irq); 181 desc->chip->ack(irq);
182 action_ret = handle_IRQ_event(irq, desc->action); 182 action_ret = handle_IRQ_event(irq, desc->action);
183 if (!noirqdebug)
184 note_interrupt(irq, desc, action_ret);
183 desc->chip->end(irq); 185 desc->chip->end(irq);
184 return 1; 186 return 1;
185 } 187 }
diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
index 9d8c79b48823..b0d81aae472f 100644
--- a/kernel/irq/spurious.c
+++ b/kernel/irq/spurious.c
@@ -146,7 +146,9 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc,
146 146
147 if (unlikely(irqfixup)) { 147 if (unlikely(irqfixup)) {
148 /* Don't punish working computers */ 148 /* Don't punish working computers */
149 if ((irqfixup == 2 && irq == 0) || action_ret == IRQ_NONE) { 149 if ((irqfixup == 2 && ((irq == 0) ||
150 (desc->action->flags & IRQF_IRQPOLL))) ||
151 action_ret == IRQ_NONE) {
150 int ok = misrouted_irq(irq); 152 int ok = misrouted_irq(irq);
151 if (action_ret == IRQ_NONE) 153 if (action_ret == IRQ_NONE)
152 desc->irqs_unhandled -= ok; 154 desc->irqs_unhandled -= ok;