Commit 2c557540 authored by Tony Lindgren's avatar Tony Lindgren Committed by Greg Kroah-Hartman

usb: musb: Fix locking errors for host only mode

If we have USB gadgets disabled and USB_MUSB_HOST set, we get
errors "possible irq lock inverssion dependency detected"
errors during boot.

Let's fix the issue by adding start_musb flag and start
the controller after we're out of the spinlock protected
section.
Reported-by: default avatarLadislav Michl <ladis@linux-mips.org>
Tested-by: default avatarLadislav Michl <ladis@linux-mips.org>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
Signed-off-by: default avatarBin Liu <b-liu@ti.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3fa2a81e
...@@ -290,6 +290,7 @@ int musb_hub_control( ...@@ -290,6 +290,7 @@ int musb_hub_control(
u32 temp; u32 temp;
int retval = 0; int retval = 0;
unsigned long flags; unsigned long flags;
bool start_musb = false;
spin_lock_irqsave(&musb->lock, flags); spin_lock_irqsave(&musb->lock, flags);
...@@ -390,7 +391,7 @@ int musb_hub_control( ...@@ -390,7 +391,7 @@ int musb_hub_control(
* logic relating to VBUS power-up. * logic relating to VBUS power-up.
*/ */
if (!hcd->self.is_b_host && musb_has_gadget(musb)) if (!hcd->self.is_b_host && musb_has_gadget(musb))
musb_start(musb); start_musb = true;
break; break;
case USB_PORT_FEAT_RESET: case USB_PORT_FEAT_RESET:
musb_port_reset(musb, true); musb_port_reset(musb, true);
...@@ -451,5 +452,9 @@ int musb_hub_control( ...@@ -451,5 +452,9 @@ int musb_hub_control(
retval = -EPIPE; retval = -EPIPE;
} }
spin_unlock_irqrestore(&musb->lock, flags); spin_unlock_irqrestore(&musb->lock, flags);
if (start_musb)
musb_start(musb);
return retval; return retval;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment