mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2] genirq: Resend pending interrupts after handle_simple_irq()
@ 2026-11-01 10:16 Avi Weiss
  0 siblings, 0 replies; only message in thread
From: Avi Weiss @ 2026-11-01 10:16 UTC (permalink / raw)
  To: tglx; +Cc: radu, maz, linux-kernel, Avi Weiss

Commit 2c9e7f857400 ("genirq: Teach handle_simple_irq() to resend an
in-progress interrupt") sets IRQS_PENDING when an interrupt arrives
while another CPU is handling the IRQ. However, handle_simple_irq()
does not check for the pending interrupt after the initial handling
completes, so no resend is requested and the interrupt remains pending
without being signalled.

Check IRQS_PENDING after handle_irq_event() and request a resend, as
handle_fasteoi_irq() already does.

Fixes: 2c9e7f857400 ("genirq: Teach handle_simple_irq() to resend an in-progress interrupt")
Reviewed-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Avi Weiss <thnkslprpt@gmail.com>
---
Changes in v2:
  - clarify commit message - mainly that the interrupt remains pending 
    and resend signalling is missing, as pointed out by Marc Zyngier.

Related 2025 patch/review:
  https://lore.kernel.org/r/20250708173404.1278635-2-maz@kernel.org

 kernel/irq/chip.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index de754db414d1..4a131dd72196 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -626,6 +626,8 @@ void handle_simple_irq(struct irq_desc *desc)
 
 	kstat_incr_irqs_this_cpu(desc);
 	handle_irq_event(desc);
+	if (unlikely(desc->istate & IRQS_PENDING))
+		check_irq_resend(desc, false);
 }
 EXPORT_SYMBOL_GPL(handle_simple_irq);
 

base-commit: e9954f3fbddd25e1a01b7e5a0b72fb8b564204e0
-- 
2.53.0


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-11-01 10:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-01 10:16 [PATCH v2] genirq: Resend pending interrupts after handle_simple_irq() Avi Weiss

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®