[v2] usb: dwc3: Prevent indefinite sleep in _dwc3_set_mode during suspend/resume
From: Roger Quadros <hidden>
Date: 2018-03-16 11:03:17
Also in:
lkml
From: Roger Quadros <hidden>
Date: 2018-03-16 11:03:17
Also in:
lkml
On 16/03/18 13:00, Felipe Balbi wrote:
Hi, Roger Quadros [off-list ref] writes:quoted
Hi Felipe, On 09/03/18 14:47, Roger Quadros wrote:quoted
In the following test we get stuck by sleeping forever in _dwc3_set_mode() after which dual-role switching doesn't work. On dra7-evm's dual-role port, - Load g_zero gadget driver and enumerate to host - suspend to mem - disconnect USB cable to host and connect otg cable with Pen drive in it. - resume system - we sleep indefinitely in _dwc3_set_mode due to. dwc3_gadget_exit()->usb_del_gadget_udc()->udc_stop()-> dwc3_gadget_stop()->wait_event_lock_irq() To fix this instead of waiting indefinitely with wait_event_lock_irq() we use wait_event_interruptible_lock_irq_timeout() and print and error message if there was a timeout. Signed-off-by: Roger Quadros <redacted>Thanks for picking this for -next. Is it better to have this in v4.16-rc fixes? and also stable? v4.12+Well, there was no "Fixes: foobar" or "Cc: stable" lines in the commit log ;-) The best we can do now, is wait for -rc1 and manually send the commit to stable.
That's fine. Thanks.