summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Louvel <paul.louvel@bootlin.com>2026-07-08 12:15:14 +0200
committerChristophe Leroy (CS GROUP) <chleroy@kernel.org>2026-08-03 14:58:58 +0200
commit7e47fe56415847732419ca8cef9307bf111dd368 (patch)
treeaf48f10552ecaa41e62919d5d7e786176854ebcc
parente460ef309f44b39480209970f1dd462f051d6f30 (diff)
soc: fsl: qe: Add chained_irq_{enter,exit}() calls in cascade handler
Wrap the cascade handler body with chained_irq_{enter,exit}() to properly inform the parent IRQ chip that a chained interrupt is being serviced. Fixes: f0bcd784e1b76 ("soc: fsl: qe: Add an interrupt controller for QUICC Engine Ports") Signed-off-by: Paul Louvel <paul.louvel@bootlin.com> Cc: stable@kernel.org Reviewed-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org> Link: https://lore.kernel.org/r/20260708-qe-pic-gpios-v2-1-1972044cfbd1@bootlin.com Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
-rw-r--r--drivers/soc/fsl/qe/qe_ports_ic.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/soc/fsl/qe/qe_ports_ic.c b/drivers/soc/fsl/qe/qe_ports_ic.c
index 33ca1ddafe18..c3768c82a58c 100644
--- a/drivers/soc/fsl/qe/qe_ports_ic.c
+++ b/drivers/soc/fsl/qe/qe_ports_ic.c
@@ -6,6 +6,7 @@
*/
#include <linux/irq.h>
+#include <linux/irqchip/chained_irq.h>
#include <linux/irqdomain.h>
#include <linux/platform_device.h>
@@ -82,7 +83,13 @@ static int qepic_get_irq(struct irq_desc *desc)
static void qepic_cascade(struct irq_desc *desc)
{
+ struct irq_chip *chip = irq_desc_get_chip(desc);
+
+ chained_irq_enter(chip, desc);
+
generic_handle_irq(qepic_get_irq(desc));
+
+ chained_irq_exit(chip, desc);
}
static int qepic_host_map(struct irq_domain *h, unsigned int virq, irq_hw_number_t hw)