[PATCH] ARM: mxs: icoll: Fix interrupts gpio bank 0

Shawn Guo shawn.guo at linaro.org
Wed May 29 10:42:58 EDT 2013


On Tue, May 28, 2013 at 05:00:57PM +0200, Markus Pargmann wrote:
> The mxs interrupt controller does not support polling for interrupts,
> but the driver still does it, which is a relict from
> pre-MULTI_IRQ_HANDLER times.
> 
> The existing code assumes that 0x7f means no interrupt, but this value
> is an actually valid irq number, namely gpio bank 0's irq. This results
> in the driver not detecting when irq 0x7f is active which makes the
> machine effectively dead lock.
> 
> This patch removes the interrupt poll loop and allows usage of gpio0
> interrupt without an infinite loop.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
> Signed-off-by: Markus Pargmann <mpa at pengutronix.de>
> Cc: stable at vger.kernel.org

Thomas, can you please help handle the fix?  If yes, here is my ack.

Acked-by: Shawn Guo <shawn.guo at linaro.org>

Otherwise, I can send it through arm-soc tree if you're fine with it.

Shawn

> ---
>  drivers/irqchip/irq-mxs.c | 14 ++++----------
>  1 file changed, 4 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/irqchip/irq-mxs.c b/drivers/irqchip/irq-mxs.c
> index 29889bb..63b3d4e 100644
> --- a/drivers/irqchip/irq-mxs.c
> +++ b/drivers/irqchip/irq-mxs.c
> @@ -76,16 +76,10 @@ asmlinkage void __exception_irq_entry icoll_handle_irq(struct pt_regs *regs)
>  {
>  	u32 irqnr;
>  
> -	do {
> -		irqnr = __raw_readl(icoll_base + HW_ICOLL_STAT_OFFSET);
> -		if (irqnr != 0x7f) {
> -			__raw_writel(irqnr, icoll_base + HW_ICOLL_VECTOR);
> -			irqnr = irq_find_mapping(icoll_domain, irqnr);
> -			handle_IRQ(irqnr, regs);
> -			continue;
> -		}
> -		break;
> -	} while (1);
> +	irqnr = __raw_readl(icoll_base + HW_ICOLL_STAT_OFFSET);
> +	__raw_writel(irqnr, icoll_base + HW_ICOLL_VECTOR);
> +	irqnr = irq_find_mapping(icoll_domain, irqnr);
> +	handle_IRQ(irqnr, regs);
>  }
>  
>  static int icoll_irq_domain_map(struct irq_domain *d, unsigned int virq,
> -- 
> 1.8.2.rc2
> 




More information about the linux-arm-kernel mailing list