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: Ladislav Michl <ladis@linux-mips.org> Tested-by: Ladislav Michl <ladis@linux-mips.org> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Bin Liu <b-liu@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
3fa2a81e6e
commit
2c5575401e
|
@ -290,6 +290,7 @@ int musb_hub_control(
|
|||
u32 temp;
|
||||
int retval = 0;
|
||||
unsigned long flags;
|
||||
bool start_musb = false;
|
||||
|
||||
spin_lock_irqsave(&musb->lock, flags);
|
||||
|
||||
|
@ -390,7 +391,7 @@ int musb_hub_control(
|
|||
* logic relating to VBUS power-up.
|
||||
*/
|
||||
if (!hcd->self.is_b_host && musb_has_gadget(musb))
|
||||
musb_start(musb);
|
||||
start_musb = true;
|
||||
break;
|
||||
case USB_PORT_FEAT_RESET:
|
||||
musb_port_reset(musb, true);
|
||||
|
@ -451,5 +452,9 @@ error:
|
|||
retval = -EPIPE;
|
||||
}
|
||||
spin_unlock_irqrestore(&musb->lock, flags);
|
||||
|
||||
if (start_musb)
|
||||
musb_start(musb);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue