aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/irq/chip.c19
1 files changed, 2 insertions, 17 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 2d2ba4ace0e..a499ca5b11a 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -518,9 +518,6 @@ EXPORT_SYMBOL_GPL(handle_level_irq);
518void 518void
519handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc) 519handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
520{ 520{
521 struct irqaction *action;
522 irqreturn_t action_ret;
523
524 raw_spin_lock(&desc->lock); 521 raw_spin_lock(&desc->lock);
525 522
526 if (unlikely(desc->status & IRQ_INPROGRESS)) 523 if (unlikely(desc->status & IRQ_INPROGRESS))
@@ -534,26 +531,14 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
534 * If its disabled or no action available 531 * If its disabled or no action available
535 * then mask it and get out of here: 532 * then mask it and get out of here:
536 */ 533 */
537 action = desc->action; 534 if (unlikely(!desc->action || (desc->status & IRQ_DISABLED))) {
538 if (unlikely(!action || (desc->status & IRQ_DISABLED))) {
539 desc->status |= IRQ_PENDING; 535 desc->status |= IRQ_PENDING;
540 mask_irq(desc); 536 mask_irq(desc);
541 goto out; 537 goto out;
542 } 538 }
543 539 handle_irq_event(desc);
544 desc->status |= IRQ_INPROGRESS;
545 desc->status &= ~IRQ_PENDING;
546 raw_spin_unlock(&desc->lock);
547
548 action_ret = handle_IRQ_event(irq, action);
549 if (!noirqdebug)
550 note_interrupt(irq, desc, action_ret);
551
552 raw_spin_lock(&desc->lock);
553 desc->status &= ~IRQ_INPROGRESS;
554out: 540out:
555 desc->irq_data.chip->irq_eoi(&desc->irq_data); 541 desc->irq_data.chip->irq_eoi(&desc->irq_data);
556
557 raw_spin_unlock(&desc->lock); 542 raw_spin_unlock(&desc->lock);
558} 543}
559 544