diff options
Diffstat (limited to 'kernel/irq/chip.c')
-rw-r--r-- | kernel/irq/chip.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 2c30b7844595..809a03fe7e07 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
@@ -448,9 +448,6 @@ static bool irq_check_poll(struct irq_desc *desc) | |||
448 | void | 448 | void |
449 | handle_simple_irq(unsigned int irq, struct irq_desc *desc) | 449 | handle_simple_irq(unsigned int irq, struct irq_desc *desc) |
450 | { | 450 | { |
451 | struct irqaction *action; | ||
452 | irqreturn_t action_ret; | ||
453 | |||
454 | raw_spin_lock(&desc->lock); | 451 | raw_spin_lock(&desc->lock); |
455 | 452 | ||
456 | if (unlikely(desc->status & IRQ_INPROGRESS)) | 453 | if (unlikely(desc->status & IRQ_INPROGRESS)) |
@@ -460,19 +457,11 @@ handle_simple_irq(unsigned int irq, struct irq_desc *desc) | |||
460 | desc->status &= ~(IRQ_REPLAY | IRQ_WAITING); | 457 | desc->status &= ~(IRQ_REPLAY | IRQ_WAITING); |
461 | kstat_incr_irqs_this_cpu(irq, desc); | 458 | kstat_incr_irqs_this_cpu(irq, desc); |
462 | 459 | ||
463 | action = desc->action; | 460 | if (unlikely(!desc->action || (desc->status & IRQ_DISABLED))) |
464 | if (unlikely(!action || (desc->status & IRQ_DISABLED))) | ||
465 | goto out_unlock; | 461 | goto out_unlock; |
466 | 462 | ||
467 | desc->status |= IRQ_INPROGRESS; | 463 | handle_irq_event(desc); |
468 | raw_spin_unlock(&desc->lock); | ||
469 | 464 | ||
470 | action_ret = handle_IRQ_event(irq, action); | ||
471 | if (!noirqdebug) | ||
472 | note_interrupt(irq, desc, action_ret); | ||
473 | |||
474 | raw_spin_lock(&desc->lock); | ||
475 | desc->status &= ~IRQ_INPROGRESS; | ||
476 | out_unlock: | 465 | out_unlock: |
477 | raw_spin_unlock(&desc->lock); | 466 | raw_spin_unlock(&desc->lock); |
478 | } | 467 | } |