]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
irqchip/econet-en751221: Support MIPS 34Kc VEIC mode
authorCaleb James DeLisle <cjd@cjdns.fr>
Thu, 30 Apr 2026 16:41:57 +0000 (16:41 +0000)
committerThomas Gleixner <tglx@kernel.org>
Mon, 11 May 2026 13:29:31 +0000 (15:29 +0200)
commit2ee2a685ee838fd103a306dab43f6969b61e9156
treef8aeca5bfbc181bb1111f46c7729f89a3c66c440
parent02bea6ff684b62c14d5c6eafaee752d24fe62352
irqchip/econet-en751221: Support MIPS 34Kc VEIC mode

The Vectored External Interrupt Controller mode present in the MIPS 34Kc
and 1004Kc variants causes the CPU to stop dispatching interrupts by the
normal code path and instead it sends those interrupts to the external
interrupt controller to be prioritized, renumbered, and sent back.  When
they come back, they are handled through a different path using a dispatch
table, so plat_irq_dispatch() never sees action.

This of course subverts the traditional intc hierarchy, and on the 1004Kc
the interrupt controller is standardized (IRQ_GIC) so it can be reasonably
considered part of the CPU itself - and tighter coupling between IRQ_GIC
and arch/mips/* is tolerable. However on the 34Kc the intc is defined by
each SoC vendor, so it's required to have a modular driver - but for a
device which in fact ends up taking over the entire interrupt system.

Let the DT describe which IRQs which come from the CPU and should be
routed back and handled by the CPU intc. These particularly include the
two IPI interrupts which would otherwise necessitate duplication of all
the IPI supporting infrastructure from the CPU intc.

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260430164157.6026-3-cjd@cjdns.fr
drivers/irqchip/irq-econet-en751221.c