Re: xhci_hcd: Error while assigning device slot ID

2014-04-07 Thread Amund Hov

 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

2014-04-04 Thread Amund Hov

 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

2014-04-04 Thread Peter Stuge
  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

2014-04-03 Thread Sarah Sharp
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