Re: xhci_hcd: Error while assigning device slot ID
The USB bus specification says that 255 devices can be connected to the host, but that doesn't mean the xHCI host controller has all the internal resources to support that. To me that sounds like such xHCI HCs can not be considered USB compliant. :\ I would tend to agree Peter. It sounds weird that the number of connected devices would not be part of the USB standard. On the other hand it makes sense as a host controller on a small tablet wouldn’t need to handle more than a few devices. Still, would be nice to have this in more clear print in resources online which frequently quote the 127 number with reservations made on bandwidth, not hardware registers. I realise this might not be relevant to kernel development at this point, so I’ll take my ranting elsewhere. Best regards, — Amund Hov +47 412 96 298 amund@silabs.com This message (including any attachments) is intended only for the use of the individual or entity to which it is addressed and may contain information that is non-public, proprietary, privileged, confidential, and exempt from disclosure under applicable law or may constitute as attorney work product. If you are not the intended recipient, you are hereby notified that any use, dissemination, distribution, or copying of this communication is strictly prohibited. If you have received this communication in error, notify us immediately by telephone and destroy this message if a facsimile or (ii) delete this message immediately if this is an electronic communication. Thank you. -- To unsubscribe from this list: send the line unsubscribe linux-usb in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: xhci_hcd: Error while assigning device slot ID
That sounds like the xHCI host ran out of slot IDs. It may be that it simply can't handle having more than 24 devices connected to the system. The USB bus specification says that 255 devices can be connected to the host, but that doesn't mean the xHCI host controller has all the internal resources to support that. Ah, as a consumer I would not expect that, but I can certainly see manufacturers would love to save on registers. In practice then, most consumer products won’t allow you to connect more than a few dozen devices? Can you unload and reload the module with dynamic debugging enabled, and look for output in dmesg like: // xHC can handle at most %d device slots. There's an xHCI capabilities register that gets printed which contains the maximum number of device slots the xHCI host provides. Indeed, after turning on debug for at module initialisation I find that my NEC chip reports 32 device slots, while my VIA chip only supports 16 (these are the doorbell registers?). I’m a bit curious what the remaining slots are used for. When I plug in a single hub with debugging enabled I get Slot IDs up to 8. I suppose this is necessary since each hub is seen as both superspeed and high-speed device? My two Anker hubs then need 2x(4+4) = 16 slots leaving 13+3 slots for my devices consistent with my testing. I will be sure to read the capability register of the host controller for my next purchase, luckily my final setup will have a dedicated controller for each hub. Thanks Sarah for pointing out this basic limitation, — Amund Hov +47 412 96 298 amund@silabs.com This message (including any attachments) is intended only for the use of the individual or entity to which it is addressed and may contain information that is non-public, proprietary, privileged, confidential, and exempt from disclosure under applicable law or may constitute as attorney work product. If you are not the intended recipient, you are hereby notified that any use, dissemination, distribution, or copying of this communication is strictly prohibited. If you have received this communication in error, notify us immediately by telephone and destroy this message if a facsimile or (ii) delete this message immediately if this is an electronic communication. Thank you. -- To unsubscribe from this list: send the line unsubscribe linux-usb in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: xhci_hcd: Error while assigning device slot ID
The USB bus specification says that 255 devices can be connected to the host, but that doesn't mean the xHCI host controller has all the internal resources to support that. To me that sounds like such xHCI HCs can not be considered USB compliant. :\ //Peter -- To unsubscribe from this list: send the line unsubscribe linux-usb in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: xhci_hcd: Error while assigning device slot ID
On Thu, Apr 03, 2014 at 04:30:28PM +, Amund Hov wrote: Dear kernel developers, I'm running into an interesting limitation with a NEC PD720200 USB 3.0 host controller connected by PCIe. What I want to do is connect 13 mass storage devices to each downstream port (of which there are two). For this I have a collection of Anker 13-port hubs containing 4 VIA VL812-B2 4-port hub controllers, daisy chained on the last port. Everything is fine until I've plugged in 20 of the usb-sticks, at which point I seem to run out of some resource. In my syslog I can read [ 6112.316240] xhci_hcd :04:00.0: Error while assigning device slot ID [ 6112.316247] hub 7-2.4:1.0: couldn't allocate port 1 usb_device whenever xhci_hcd tries to enumerate additional devices. In my head this amounts to 24 devices (16 sticks + 8 hub controllers) on the 2-port root hub, which seems a bit short of the USB spec. I have tried this combination of adapter card and hubs on the current 3.14-rc8 kernel in addition to the stock ubuntu 3.11.0-12-generic with same results. Attached is my syslog when successfully connecting the final high-speed stick into 7-2.3 followed by the failing enumeration of device 7-2.4.1 at time [ 6112.316240]. Even with dynamic debug set for the xhci_hcd module I can't seem to get a more specific reason for the failure to assign the device slot id. I grepped the error messages, leading me to xhci_alloc_dev, but without being familiar with the usb host drivers I am not able to see why the host controller is not assigning any more device slots. Could someone point me to the right place for me to look further? That sounds like the xHCI host ran out of slot IDs. It may be that it simply can't handle having more than 24 devices connected to the system. The USB bus specification says that 255 devices can be connected to the host, but that doesn't mean the xHCI host controller has all the internal resources to support that. Can you unload and reload the module with dynamic debugging enabled, and look for output in dmesg like: // xHC can handle at most %d device slots. There's an xHCI capabilities register that gets printed which contains the maximum number of device slots the xHCI host provides. Sarah Sharp -- To unsubscribe from this list: send the line unsubscribe linux-usb in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html