aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/irq/chip.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 809a03fe7e07..2d2ba4ace0ec 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -479,9 +479,6 @@ out_unlock:
479void 479void
480handle_level_irq(unsigned int irq, struct irq_desc *desc) 480handle_level_irq(unsigned int irq, struct irq_desc *desc)
481{ 481{
482 struct irqaction *action;
483 irqreturn_t action_ret;
484
485 raw_spin_lock(&desc->lock); 482 raw_spin_lock(&desc->lock);
486 mask_ack_irq(desc); 483 mask_ack_irq(desc);
487 484
@@ -496,19 +493,10 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc)
496 * If its disabled or no action available 493 * If its disabled or no action available
497 * keep it masked and get out of here 494 * keep it masked and get out of here
498 */ 495 */
499 action = desc->action; 496 if (unlikely(!desc->action || (desc->status & IRQ_DISABLED)))
500 if (unlikely(!action || (desc->status & IRQ_DISABLED)))
501 goto out_unlock; 497 goto out_unlock;
502 498
503 desc->status |= IRQ_INPROGRESS; 499 handle_irq_event(desc);
504 raw_spin_unlock(&desc->lock);
505
506 action_ret = handle_IRQ_event(irq, action);
507 if (!noirqdebug)
508 note_interrupt(irq, desc, action_ret);
509
510 raw_spin_lock(&desc->lock);
511 desc->status &= ~IRQ_INPROGRESS;
512 500
513 if (!(desc->status & (IRQ_DISABLED | IRQ_ONESHOT))) 501 if (!(desc->status & (IRQ_DISABLED | IRQ_ONESHOT)))
514 unmask_irq(desc); 502 unmask_irq(desc);