[PATCH] Updated: Fix soft lockup in at91 udc driver
Ryan Mallon
ryan at bluewatersys.com
Mon Jan 18 15:40:20 EST 2010
Ryan Mallon wrote:
> Fix a potential soft lockup in the AT91 UDC driver by ensuring that the
> UDC clock is enabled inside the interrupt handler. If the UDC clock is
> not enabled then the UDC registers cannot be written to and the
> interrupt cannot be cleared or masked.
>
> Note that this patch (and other parts of the existing AT91 UDC driver)
> is potentially racy for preempt-rt kernels, but is okay for mainline.
>
> Signed-off-by: Ryan Mallon <ryan at bluewatersys.com>
> Tested-by: Remy Bohmer <linux at bohmer.net>
> Cc: Andrew Victor <avictor.za at gmail.com>
> Cc: David Brownell <dbrownell at users.sourceforge.net>
Is somebody able to give me an Acked-by for this patch. It has been
verified to correct a soft-lockup issue, and I don't want it getting
lost for another year :-).
Thanks,
~Ryan
> ----
>
> diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
> index c4997e9..5ba8319 100644
> --- a/drivers/usb/gadget/at91_udc.c
> +++ b/drivers/usb/gadget/at91_udc.c
> @@ -1370,6 +1370,12 @@ static irqreturn_t at91_udc_irq (int irq, void *_udc)
> {
> struct at91_udc *udc = _udc;
> u32 rescans = 5;
> + int disable_clock = 0;
> +
> + if (!udc->clocked) {
> + clk_on(udc);
> + disable_clock = 1;
> + }
>
> while (rescans--) {
> u32 status;
> @@ -1458,6 +1464,9 @@ static irqreturn_t at91_udc_irq (int irq, void *_udc)
> }
> }
>
> + if (disable_clock)
> + clk_off(udc);
> +
> return IRQ_HANDLED;
> }
>
>
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
Bluewater Systems Ltd - ARM Technology Solution Centre
Ryan Mallon 5 Amuri Park, 404 Barbadoes St
ryan at bluewatersys.com PO Box 13 889, Christchurch 8013
http://www.bluewatersys.com New Zealand
Phone: +64 3 3779127 Freecall: Australia 1800 148 751
Fax: +64 3 3779135 USA 1800 261 2934
More information about the linux-arm-kernel
mailing list