aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-02-06 19:23:07 -0500
committerThomas Gleixner <tglx@linutronix.de>2011-02-19 06:58:12 -0500
commita7ae4de5c8ae8110556f0f9c7241093ef984605c (patch)
tree091189ede3ce3f56c0ba460a038010174c0ee03e /kernel/irq
parent1529866c63d789925de9b4250646d82d033e4b95 (diff)
genirq: Use handle_irq_event() in handle_fasteoi_irq()
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/irq')
-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