diff options
Diffstat (limited to 'kernel/irq/resend.c')
-rw-r--r-- | kernel/irq/resend.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/irq/resend.c b/kernel/irq/resend.c index 60b20261041b..f83387cd11f3 100644 --- a/kernel/irq/resend.c +++ b/kernel/irq/resend.c | |||
@@ -62,8 +62,11 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq) | |||
62 | */ | 62 | */ |
63 | if (desc->status & IRQ_LEVEL) | 63 | if (desc->status & IRQ_LEVEL) |
64 | return; | 64 | return; |
65 | if ((desc->status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) { | 65 | if (desc->istate & IRQS_REPLAY) |
66 | desc->status = (desc->status & ~IRQ_PENDING) | IRQ_REPLAY; | 66 | return; |
67 | if (desc->status & IRQ_PENDING) { | ||
68 | desc->status &= ~IRQ_PENDING; | ||
69 | desc->istate |= IRQS_REPLAY; | ||
67 | 70 | ||
68 | if (!desc->irq_data.chip->irq_retrigger || | 71 | if (!desc->irq_data.chip->irq_retrigger || |
69 | !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) { | 72 | !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) { |