Thread (32 messages) 32 messages, 4 authors, 2018-04-10

[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

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help