Re: USB device disconnect after suspend/resume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Mittwoch, 29. März 2017, 15:52:13 CEST schrieb Mathias Nyman:

Hi Mathias,

> On 28.03.2017 16:25, Stephan Müller wrote:
> > Am Dienstag, 28. März 2017, 03:12:44 CEST schrieb Peter Chen:
> What kernel version was this on again?
> Has it been working before?

It is 4.10 vanilla. It never worked.
> 
> does reloading xhci driver work?

Well, I cannot do that :-) My keyboard/touchpad hangs on this one.

I will test the suggestion with your patch. But please note that the patch 
does not apply to 4.10 vanilla. But I am tweaking it.
> 
> > The device is question is at port 2-3.
> > 
> > usb core dyndbg:
> > 
> > [   72.546341] Restarting tasks ...
> > [   72.546465] hub 1-0:1.0: state 7 ports 11 chg 0000 evt 0028
> > [   72.546595] hub 2-0:1.0: state 7 ports 4 chg 0008 evt 0000
> > [   72.546662] usb usb2-port3: status 0263, change 0000, 5.0 Gb/s
> > 
> > [   72.546670] usb 2-3: USB disconnect, device number 2
> > [   72.546675] usb 2-3: unregistering device
> > [   72.546682] usb 2-3: unregistering interface 2-3:1.0
> > [   72.552689] done.
> > [   72.553977] brcmfmac 0000:03:00.0: Direct firmware load for brcm/
> > brcmfmac43602-pcie.txt failed with error -2
> > [   72.676148] usb 2-3: usb_disable_device nuking all URBs
> > [   72.727915] usb usb2-port3: not reset yet, waiting 50ms
> > [   72.780009] usb usb2-port3: not reset yet, waiting 200ms
> > [   72.985875] usb usb2-port3: not reset yet, waiting 200ms
> > [   73.063770] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0:
> > Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c
> > [   73.096915] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code
> > (0x30 0x30)
> > [   73.122551] brcmfmac 0000:03:00.0 wlp3s0: renamed from wlan0
> > [   73.140131] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready
> > [   73.193919] usb usb2-port3: not reset yet, waiting 200ms
> > [   73.402026] usb usb2-port3: hot reset failed, warm reset
> > [   73.402028] usb usb2-port3: not enabled, trying warm reset again...
> > [   73.609968] usb usb2-port3: not warm reset yet, waiting 200ms
> > [   73.817946] usb usb2-port3: not warm reset yet, waiting 200ms
> > [   74.026100] usb usb2-port3: not warm reset yet, waiting 200ms
> > [   74.234126] usb usb2-port3: not warm reset yet, waiting 200ms
> > [   74.234167] usb usb2-port3: not enabled, trying warm reset again...
> > [   74.441910] usb usb2-port3: not warm reset yet, waiting 200ms
> > [   74.649894] usb usb2-port3: not warm reset yet, waiting 200ms
> > [   74.857981] usb usb2-port3: not warm reset yet, waiting 200ms
> > [   75.066006] usb usb2-port3: not warm reset yet, waiting 200ms
> > [   75.066040] xhci_hcd 0000:00:14.0: Cannot set link state.
> > [   75.066045] usb usb2-port3: cannot disable (err = -32)
> 
> I don't know what causes the disconnect, or why the reset fails, but
> after all this the device disable also fails.
> This is because usb3 disable changed to set the device to U3 state
> and disable remote wake to prevent them from re-enumerating.
> 
> This was to fix usb mass storage devices from re-appering right after
> eject/safely removing them.
> 
> It's possible that the old way of actually disabling, and then enter
> RxDetect would help finding the device again after disconnect and failed
> reset.
> 
> you could try a kernel without that patch and see if it works:
> 
> commit 37be66767e3cae4fd16e064d8bb7f9f72bf5c045
> usb: hub: Fix auto-remount of safely removed or ejected USB-3 devices

Will do -- let me first test the patches mentioned by Peter and then this one 
(separately).
> 
> > [   75.066065] xhci_hcd 0000:00:14.0: Cannot set link state.
> > [   75.066069] usb usb2-port3: cannot disable (err = -32)
> > [   75.066079] hub 2-0:1.0: state 7 ports 4 chg 0000 evt 0008
> > [   75.066130] hub 2-0:1.0: hub_suspend
> > [   75.066140] usb usb2: bus auto-suspend, wakeup 1
> > 
> > 
> > xhci dyndbg (I hope I have copied the right logs):
> > 
> > --- suspended ---
> > 
> > [  228.110972] Restarting tasks ...
> > [  228.129044] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 16 bytes, 10
> > bytes untransferred
> > [  228.129949] xhci_hcd 0000:00:14.0: get port status, actual port 2
> > status  = 0x603
> > [  228.129951] xhci_hcd 0000:00:14.0: Get port status returned 0x103
> > [  228.129962] xhci_hcd 0000:00:14.0: get port status, actual port 2
> > status  = 0x202e0
> 
> Port Status: 0x202e0
> 	Disconnected
> 	Disabled
> 	Link: Polling
> 	Powered
> 	Unknown port speed
> 	Connect Status Change
> 
> xhci portsc register really thinks it disconnected.

Thanks for the help!

Ciao
Stephan
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux