Re: [PATCH] irqchip/riscv-aplic: Process pending affinity changes on EOI
From: Troy Mitchell
Date: Tue Nov 10 2026 - 02:33:01 EST
On Mon, 09 Nov 2026 11:13:41 +0100, Thomas Gleixner wrote:
> On Wed, Nov 04 2026 at 14:21, Troy Mitchell wrote:
> > IMSIC rejects an affinity change with -EBUSY while a previous vector
> > move is still in flight, and the IRQ core then records the new mask
> > as pending. The change is meant to be applied by irq_move_irq() in
> > the IMSIC irq_ack callback, but APLIC MSI interrupts are handled by
> > handle_fasteoi_irq(), which does not call irq_ack.
>
> Which is a bug when the interrupt is edge type.
>
> Edge type interrupts are fire and forget from the device point of
> view. So you want handle_edge_irq() for them, which issues the ack()
> _before_ the handler is invoked. Otherwise you can lose interrupts.
Right, I can reproduce the lost edge here. v2 will use handle_edge_irq()
for edge sources and handle_fasteoi_ack_irq() for level sources.
--
Troy Mitchell
Attachment:
signature.asc
Description: PGP signature