[PATCH v2 2/2] irqchip/riscv-aplic: Apply pending affinity changes for level MSI sources
Thomas Gleixner
tglx at kernel.org
Tue Nov 10 16:09:20 PST 2026
On Tue, Nov 10 2026 at 12:06, 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 applied by irq_move_irq() in the IMSIC irq_ack
> callback, but level-triggered APLIC MSI interrupts are handled by
> handle_fasteoi_irq(), which never calls irq_ack.
>
> The pending change is therefore never applied. While it is pending,
> later affinity changes only update the pending mask, so the interrupt
> stays on its old CPU.
>
> Use handle_fasteoi_ack_irq() for level-triggered sources. It acks the
> interrupt before invoking the handler, so a pending affinity change is
> applied on the next interrupt, and the EOI retrigger then targets the
> new CPU.
Smart!
More information about the linux-riscv
mailing list