]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
genirq: Add interrupt redirection infrastructure
authorRadu Rendec <rrendec@redhat.com>
Fri, 28 Nov 2025 21:20:53 +0000 (16:20 -0500)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 15 Dec 2025 21:30:48 +0000 (22:30 +0100)
commitfcc1d0dabdb65ca069f77e5b76d3b20277be4a15
treeac760b3a7d663e14dc03e15be246394e9f6cc425
parent0317e0aba5d41ae5e974026bf96899d9ae4bcbdb
genirq: Add interrupt redirection infrastructure

Add infrastructure to redirect interrupt handler execution to a
different CPU when the current CPU is not part of the interrupt's CPU
affinity mask.

This is primarily aimed at (de)multiplexed interrupts, where the child
interrupt handler runs in the context of the parent interrupt handler,
and therefore CPU affinity control for the child interrupt is typically
not available.

With the new infrastructure, the child interrupt is allowed to freely
change its affinity setting, independently of the parent. If the
interrupt handler happens to be triggered on an "incompatible" CPU (a
CPU that's not part of the child interrupt's affinity mask), the handler
is redirected and runs in IRQ work context on a "compatible" CPU.

No functional change is being made to any existing irqchip driver, and
irqchip drivers must be explicitly modified to use the newly added
infrastructure to support interrupt redirection.

Originally-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Radu Rendec <rrendec@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/linux-pci/878qpg4o4t.ffs@tglx/
Link: https://patch.msgid.link/20251128212055.1409093-2-rrendec@redhat.com
include/linux/irq.h
include/linux/irqdesc.h
kernel/irq/chip.c
kernel/irq/irqdesc.c
kernel/irq/manage.c