|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 4/4] xen/drivers/char: fix exynos4210 IRQ registration failure propagation
On 22/04/2026 11:33, Oleksii Moisieiev wrote:
> In exynos4210_uart_init_postirq(), when setup_irq() returns an error
> the failure was only logged via dprintk() and execution continued,
> unconditionally clearing UINTM and setting UMCON_INT_EN. This enabled
> receive and transmit interrupt lines with no handler registered. On
> platforms where the GIC receives these asserted lines, the result is
> either repeated spurious-interrupt warnings or an unhandled interrupt
> fault.
>
> Add an early return in the setup_irq() error branch so that the
> interrupt-enable writes to UINTM and UMCON are skipped when IRQ
> registration fails.
>
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@xxxxxxxx>
> ---
>
> Changes in v3:
> - skip clearing pending interrupts if setup_irq was failed because
> according to the 13.4.1.13 of the RM: it must be cleared after
> cleaning interrupt pending in INTC.
>
> xen/drivers/char/exynos4210-uart.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/xen/drivers/char/exynos4210-uart.c
> b/xen/drivers/char/exynos4210-uart.c
> index 58901df554..2e5860ea2b 100644
> --- a/xen/drivers/char/exynos4210-uart.c
> +++ b/xen/drivers/char/exynos4210-uart.c
> @@ -199,8 +199,12 @@ static void __init exynos4210_uart_init_postirq(struct
> serial_port *port)
> uart->irqaction.dev_id = port;
>
> if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
> + {
> dprintk(XENLOG_ERR, "Failed to allocated exynos4210_uart IRQ %d\n",
> uart->irq);
> + /* Don't enable interrupts if irq setup was failed */
NIT: Not sure why this comment differs from one patch to another. Preferably
they should all be the same.
Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx>
~Michal
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |