From: Geert Uytterhoeven Date: Fri, 6 Mar 2026 12:13:32 +0000 (+0100) Subject: irqchip/gic-v3: Print a warning for out-of-range interrupt numbers X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=42972b5464295450ce55f457645917aba4d54ead;p=thirdparty%2Flinux.git irqchip/gic-v3: Print a warning for out-of-range interrupt numbers gic_irq_domain_translate() does not check if an interrupt number lies within the valid range of the specified interrupt type. Add these checks, and print a warning if the interrupt number is out of range. This can help flagging incorrectly described Extended SPI and PPI interrupts in DT. Signed-off-by: Geert Uytterhoeven Signed-off-by: Thomas Gleixner Acked-by: Marc Zyngier Link: https://patch.msgid.link/ce695ea46decc816974179314a86f2b9b5cad6a9.1772799134.git.geert+renesas@glider.be --- diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index 6dc9827357a21..99444a1b2ffa2 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -1603,15 +1603,23 @@ static int gic_irq_domain_translate(struct irq_domain *d, switch (fwspec->param[0]) { case 0: /* SPI */ + if (fwspec->param[1] > 987) + pr_warn_once("SPI %u out of range (use ESPI?)\n", fwspec->param[1]); *hwirq = fwspec->param[1] + 32; break; case 1: /* PPI */ + if (fwspec->param[1] > 15) + pr_warn_once("PPI %u out of range (use EPPI?)\n", fwspec->param[1]); *hwirq = fwspec->param[1] + 16; break; case 2: /* ESPI */ + if (fwspec->param[1] > 1023) + pr_warn_once("ESPI %u out of range\n", fwspec->param[1]); *hwirq = fwspec->param[1] + ESPI_BASE_INTID; break; case 3: /* EPPI */ + if (fwspec->param[1] > 63) + pr_warn_once("EPPI %u out of range\n", fwspec->param[1]); *hwirq = fwspec->param[1] + EPPI_BASE_INTID; break; case GIC_IRQ_TYPE_LPI: /* LPI */