summaryrefslogtreecommitdiff
path: root/kernel/irq
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/irq')
-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 14dd5761e8c9..ef60772d2feb 100644
--- a/kernel/irq/resend.c
+++ b/kernel/irq/resend.c
@@ -55,17 +55,18 @@ static DECLARE_TASKLET(resend_tasklet, resend_irqs, 0);
*/
void check_irq_resend(struct irq_desc *desc, unsigned int irq)
{
- /*
- * We do not resend level type interrupts. Level type
- * interrupts are resent by hardware when they are still
- * active.
- */
- if (irq_settings_is_level(desc))
- return;
- if (desc->istate & IRQS_REPLAY)
- return;
if (desc->istate & IRQS_PENDING) {
desc->istate &= ~IRQS_PENDING;
+ /*
+ * We do not resend level type interrupts. Level type
+ * interrupts are resent by hardware when they are still
+ * active.
+ */
+ if (irq_settings_is_level(desc))
+ return;
+ if (desc->istate & IRQS_REPLAY)
+ return;
+
desc->istate |= IRQS_REPLAY;
if (!desc->irq_data.chip->irq_retrigger ||