On Thu, Apr 03, 2014 at 04:30:28PM +0000, 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 0000: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

Reply via email to