diff options
Diffstat (limited to 'kernel/irq/resend.c')
-rw-r--r-- | kernel/irq/resend.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/kernel/irq/resend.c b/kernel/irq/resend.c index 14dd5761e8c..ef60772d2fe 100644 --- a/kernel/irq/resend.c +++ b/kernel/irq/resend.c | |||
@@ -55,17 +55,18 @@ static DECLARE_TASKLET(resend_tasklet, resend_irqs, 0); | |||
55 | */ | 55 | */ |
56 | void check_irq_resend(struct irq_desc *desc, unsigned int irq) | 56 | void check_irq_resend(struct irq_desc *desc, unsigned int irq) |
57 | { | 57 | { |
58 | /* | ||
59 | * We do not resend level type interrupts. Level type | ||
60 | * interrupts are resent by hardware when they are still | ||
61 | * active. | ||
62 | */ | ||
63 | if (irq_settings_is_level(desc)) | ||
64 | return; | ||
65 | if (desc->istate & IRQS_REPLAY) | ||
66 | return; | ||
67 | if (desc->istate & IRQS_PENDING) { | 58 | if (desc->istate & IRQS_PENDING) { |
68 | desc->istate &= ~IRQS_PENDING; | 59 | desc->istate &= ~IRQS_PENDING; |
60 | /* | ||
61 | * We do not resend level type interrupts. Level type | ||
62 | * interrupts are resent by hardware when they are still | ||
63 | * active. | ||
64 | */ | ||
65 | if (irq_settings_is_level(desc)) | ||
66 | return; | ||
67 | if (desc->istate & IRQS_REPLAY) | ||
68 | return; | ||
69 | |||
69 | desc->istate |= IRQS_REPLAY; | 70 | desc->istate |= IRQS_REPLAY; |
70 | 71 | ||
71 | if (!desc->irq_data.chip->irq_retrigger || | 72 | if (!desc->irq_data.chip->irq_retrigger || |