[PATCH 0/2] irqchip/econet-en751221: Support MIPS 34Kc VEIC mode

Caleb James DeLisle
2026-04-25T12:40:56Z

MIPS 34Kc and 1004Kc have a Vectored External Interrupt mode, where
CPU interrupts are re-routed to the external interrupt controller,
which prioritizes them, renumbers them, and integrates them with its
own, creating a flat interrupt table.

This bypasses the CPU interrupt controller entirely, which is not ideal
for modern Linux which formalizes the interrupt hierarchy. The 1004Kc
standardized the interrupt controller (MIPS_GIC) so it can be viewed as
"part of the CPU" and it's tolerable for it to be more closely coupled
to arch/mips/* than a typical interrupt controller driver.

The 34Kc supports VEIC mode, but the interrupt controller is not
standardized, so it's different per-SoC. This creates a challenge of
writing a reasonably modular driver, given hardware that actually does
take over the interrupt hierarchy.

Ordinarily we wouldn't bother with VEIC on the 34Kc but it is required
for MIPS_MT_SMP, so without it you get a single thread processor. The
only other 34Kc device which has an in-tree DTS file is
realtek,rtl9302-soc, in OpenWrt there is this, realtek,rtl839x-soc, and
lantiq,xway. Of these, only the realtek,rtl839x-soc has multi-thread
support via an out-of-tree patch to its interrupt controller. Everybody
else is not solving this problem and instead sacrificing multi-thread
support.

This patchset aims to tackle this challenge in a way that is most
likely generalizable to other 34Kc interrupt controllers which are
facing the same problem.

Caleb James DeLisle (2):
dt-bindings: interrupt-controller: econet: Add CPU interrupt mapping
irqchip/econet-en751221: Support MIPS 34Kc VEIC mode

.../econet,en751221-intc.yaml | 20 ++
drivers/irqchip/irq-econet-en751221.c | 176 +++++++++++++++++-
2 files changed, 193 insertions(+), 3 deletions(-)

base-commit: e8be82c2d77ec1bb0148406e54b105028a83537e
--
2.39.5