I tried to reproduce this issue on an Intel Ivybridge machine. But I
failed.
Kernel version: 4.0.0-rc1 (built against master branch of Greg's usb
tree)
USB fabric:
$ sudo lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
|__ Port 5: Dev 3, If 0, Class=Video, Driver=, 480M
|__ Port 5: Dev 3, If 1, Class=Video, Driver=, 480M
|__ Port 6: Dev 4, If 0, Class=Wireless, Driver=, 12M
|__ Port 6: Dev 4, If 1, Class=Wireless, Driver=, 12M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Human Interface Device,
Driver=usbhid, 12M
|__ Port 1: Dev 3, If 1, Class=Human Interface Device,
Driver=usbhid, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
|__ Port 2: Dev 10, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 11, If 0, Class=Human Interface Device,
Driver=usbhid, 1.5M
|__ Port 1: Dev 11, If 1, Class=Human Interface Device,
Driver=usbhid, 1.5M
|__ Port 2: Dev 12, If 0, Class=Hub, Driver=hub/3p, 12M
|__ Port 1: Dev 13, If 0, Class=Human Interface Device,
Driver=usbhid, 12M
|__ Port 1: Dev 13, If 1, Class=Human Interface Device,
Driver=usbhid, 12M
|__ Port 3: Dev 14, If 0, Class=Vendor Specific Class,
Driver=asix, 480M
Test script:
#!/bin/bash
while [ 1 ]
do
echo "devices" > /sys/power/pm_test
sleep 5
echo "freeze" > /sys/power/state
sleep 15
done
I kept this script running for more than 24 hours and didn't see the
issue described below.
Any hints or suggestions?
Thanks,
Baolu
On 2014-11-10 14:40:13, Mathias Nyman wrote:
On 10.11.2014 12:47, Kenneth Johansson wrote:
So I have a problem that happens with 1-2 weeks interval in that
the xhci driver confuses itself and thinks that the usb bus is
overused or something.
The thing is that this is an external usb 2 hub with 7 ports and
all 7 is used for different devices. I do a suspend/resume once a
day and thats it.
its the same devices on the hub but the USB driver for some reason
decides that it no longer can allow the devices on the bus.
1. is there any way to reset the entire usb stack without
rebooting?? I run 3.16 ubuntu kernel and I think usb is built in
I at least can see any module named xhci.
2. what can be done to solve this ?? there must be some type of
resource leak here as a reboot solves the problem and I have
exactly the same usb devices that I use.
3. I also notice that we max out at about 30 devices and I think
usb should be able to handle 127.
4. I noticed on a different computer that a usb sound card (5.1)
was also getting the bandwidth error if I attached it to a usb3
hub that had only that device, it works if I remove the hub.
5. overall usb3 looks to be a bit "unpredictable" and if you
google for this type of errors the advice is to downgrade to usb2.
that do sound like the wrong thing to do unless the xhci hardware
is that broken. is it ? or is this the driver that needs fixing.
-----------------
[65633.315419] usb 3-1.4.1: Product: USB Transfer Cable
[65633.315422] usb 3-1.4.1: Manufacturer: Prolific Technology Inc.
[65633.315607] xhci_hcd 0000:00:14.0: Not enough bandwidth on HS
bus for newly activated TT.
[65633.315612] xhci_hcd 0000:00:14.0: Not enough bandwidth
[65633.315619] usb 3-1.4.1: can't set config #1, error -12
---
[65653.367865] xhci_hcd 0000:00:14.0: Not enough bandwidth on HS
bus for newly activated TT.
[65653.367867] xhci_hcd 0000:00:14.0: Not enough bandwidth
[65653.367872] usb 3-1.2: can't set config #1, error -12
and so on.
--
The xhci controller has a limit for max devices it can support,
usually less than 127.
3.16 kernel and later should report "Max number of devices this
xHCI host supports is %u.\n" when you reach the limit.
I've got reports about bandwidth errors before, so far two
different kinds, one is a context error which happends
while allocating bandwith, and is not really a bandwidth issue.
Then we also got real bandwith errors in cases
when we really shouldn't ave them.
This is one of the many issues I need to address after resolving
other current issues (race in reset endpoint, reset device and stop
endoint).
Might be that it's just the driver that needs fixing, need to get
my hands on it. Probably start with displaying more debug output
when we hit bandwidth limits.
-Mathias
--
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
--
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