aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/resend.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/irq/resend.c')
-rw-r--r--kernel/irq/resend.c19
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 */
56void check_irq_resend(struct irq_desc *desc, unsigned int irq) 56void 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 ||