Re: [PATCH v5 1/9] irqchip/imx-irqsteer: Call chained_irq_exit() on the handler error path

Frank Li <[email protected]>
Newsgroups dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel
Message-ID <aohddKWL31fSXH2D@SMW015318>
On Fri, Aug 21, 2026 at 07:10:31PM +0900, [email protected] wrote:
> From: Zhipeng Wang <[email protected]>
>
> A chained handler must pair every chained_irq_enter() with a
> chained_irq_exit() before returning, so that the parent interrupt's flow
> control is completed (EOI for fasteoi parents, unmask for level-triggered
> parents). Skipping it leaves the parent interrupt unacknowledged, blocking
> further interrupts multiplexed through that line.
>
> When imx_irqsteer_get_hwirq_base() fails, the handler returned early
> without calling chained_irq_exit(). Route the error path through the
> existing chained_irq_exit() so the parent interrupt is always completed
> before returning.
>
> Fixes: 28528fca4908 ("irqchip/imx-irqsteer: Add multi output interrupts support")
> Signed-off-by: Zhipeng Wang <[email protected]>
> ---

Reviewed-by: Frank Li <[email protected]>

>  drivers/irqchip/irq-imx-irqsteer.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/irqchip/irq-imx-irqsteer.c b/drivers/irqchip/irq-imx-irqsteer.c
> index 87b07f517be3..1b8d0c8eedb9 100644
> --- a/drivers/irqchip/irq-imx-irqsteer.c
> +++ b/drivers/irqchip/irq-imx-irqsteer.c
> @@ -154,7 +154,7 @@ static void imx_irqsteer_irq_handler(struct irq_desc *desc)
>  	if (hwirq < 0) {
>  		pr_warn("%s: unable to get hwirq base for irq %d\n",
>  			__func__, irq);
> -		return;
> +		goto out;
>  	}
>
>  	for (i = 0; i < 2; i++, hwirq += 32) {
> @@ -172,6 +172,7 @@ static void imx_irqsteer_irq_handler(struct irq_desc *desc)
>  			generic_handle_domain_irq(data->domain, pos + hwirq);
>  	}
>
> +out:
>  	chained_irq_exit(irq_desc_get_chip(desc), desc);
>  }
>
>
> base-commit: bd5f485f3f026225b86573e559af0b7254ef4184
> --
> 2.34.1
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.