On Sat, Jan 28, 2012 at 12:56:43AM +0200, Felipe Contreras wrote: > Hi, > > I just bought a USB 3.0 card, however, it doesn't seem to be detecting > mass storage devices, other devices seem to work fine (HID). > > They seem to be powered, and I see some activity in the kernel log, > but that's it. No actual device node is created, and lsusb doesn't > show the device either. > > I am attaching the log with xhci debugging enabled [1]. This is with > Linux 3.2.0. Can you run `lspci -vvv`? I'm interested in what PCI device vendor and product this USB 3.0 host is. > Any ideas? This bit is odd: Jan 27 23:06:50 dyfed kernel: [ 1.098074] xhci_hcd 0000:02:00.0: Ext Cap ffffc900028c80b0, port offset = 1, count = 1, revision = 0x2 Jan 27 23:06:50 dyfed kernel: [ 1.098078] xhci_hcd 0000:02:00.0: Ext Cap ffffc900028c80c0, port offset = 2, count = 4, revision = 0x3 Jan 27 23:06:50 dyfed kernel: [ 1.098080] xhci_hcd 0000:02:00.0: Found 1 USB 2.0 ports and 4 USB 3.0 ports. Jan 27 23:06:50 dyfed kernel: [ 1.098081] xhci_hcd 0000:02:00.0: USB 2.0 port at index 0, addr = ffffc900028c8420 Jan 27 23:06:50 dyfed kernel: [ 1.098082] xhci_hcd 0000:02:00.0: USB 3.0 port at index 1, addr = ffffc900028c8430 Jan 27 23:06:50 dyfed kernel: [ 1.098084] xhci_hcd 0000:02:00.0: USB 3.0 port at index 2, addr = ffffc900028c8440 Jan 27 23:06:50 dyfed kernel: [ 1.098085] xhci_hcd 0000:02:00.0: USB 3.0 port at index 3, addr = ffffc900028c8450 Jan 27 23:06:50 dyfed kernel: [ 1.098086] xhci_hcd 0000:02:00.0: USB 3.0 port at index 4, addr = ffffc900028c8460 Usually USB 2.0 and USB 3.0 ports are paired together. The blue USB 3.0 port you see actually contains both USB 2.0 and USB 3.0 wires. Unless your host really does have three USB 3.0-only ports, and one USB 2.0/3.0 port? What kind of USB ports did the packaging advertise? My suspicion is that they messed up their Extended Capabilities, and they meant to say count = 4 in that first line. The port registers show that the USB 3.0 ports are empty: Jan 27 23:06:50 dyfed kernel: [ 1.098683] xhci_hcd 0000:02:00.0: set port power, actual port 0 status = 0x2a0 Jan 27 23:06:50 dyfed kernel: [ 1.098689] xhci_hcd 0000:02:00.0: set port power, actual port 1 status = 0x2a0 Jan 27 23:06:50 dyfed kernel: [ 1.098695] xhci_hcd 0000:02:00.0: set port power, actual port 2 status = 0x2a0 Jan 27 23:06:50 dyfed kernel: [ 1.098701] xhci_hcd 0000:02:00.0: set port power, actual port 3 status = 0x2a0 Then we get a connection on a USB 2.0 port: Jan 27 23:06:50 dyfed kernel: [ 1.198449] xhci_hcd 0000:02:00.0: get port status, actual port 0 status = 0x400202e1 Jan 27 23:06:50 dyfed kernel: [ 1.198453] xhci_hcd 0000:02:00.0: Get port status returned 0x10101 Jan 27 23:06:50 dyfed kernel: [ 1.198458] hub 3-0:1.0: port 1: status 0101 change 0001 Jan 27 23:06:50 dyfed kernel: [ 1.198466] xhci_hcd 0000:02:00.0: clear port connect change, actual port 0 status = 0x400002e1 Found a USB 2.0 hub: Jan 27 23:06:50 dyfed kernel: [ 1.834010] usb 3-1: New USB device found, idVendor=2109, idProduct=0811 Jan 27 23:06:50 dyfed kernel: [ 1.834013] usb 3-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0 Jan 27 23:06:50 dyfed kernel: [ 1.834016] usb 3-1: Product: USB2.0 Hub Queued the interrupt transfer for the hub: Jan 27 23:06:50 dyfed kernel: [ 1.942338] xhci_hcd 0000:02:00.0: ep 0x81 - urb len = 0x1 (1), addr = 0x42b87e260, num_trbs = 1 A poll of the hub status shows it's not reporting any port status changes: Jan 27 23:06:50 dyfed kernel: [ 2.238890] hub 3-1:1.0: state 7 ports 4 chg 0000 evt 0000 And then there's a long period of nothing, with a couple minutes of xHCI polling logs. The polling does shows that we did put the TRB on the ring interrupt ring: Jan 27 23:07:49 dyfed kernel: [ 61.256918] xhci_hcd 0000:02:00.0: Dev 1 endpoint ring 2: Jan 27 23:07:49 dyfed kernel: [ 61.256920] xhci_hcd 0000:02:00.0: @000000000282b000 2b87e260 00000004 00000001 00000425 Jan 27 23:07:49 dyfed kernel: [ 61.256921] xhci_hcd 0000:02:00.0: @000000000282b010 00000000 00000000 00000000 00000000 We just never got an event for the interrupt transfer completion. So your hub never notified us that there was a port status change (e.g. device connect) on its ports. Or it did notify the host and host HW didn't tell the driver about it. But we're getting interrupts for port status changes and control transfer completions, so that's less likely. You also said that HID devices work, so interrupt transfers for low speed devices work. Does your mass storage device contain a USB hub, or are you plugging the mass storage device into the hub? If you're plugging it into a hub, please try plugging it in directly to the ports on your machine and see if that works. Does it help to connect the mass storage device to the hub before you plug in the hub, or if you're doing that, does it help to wait until the hub is finished enumerating (when it shows up in lsusb) and then plug in the mass storage device? Sarah Sharp -- 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