Re: [2.6.34-rc1] Problem using USB 1.1 device on USB 3.0 xhci hostcontroller

From: Sarah Sharp
Date: Mon Mar 15 2010 - 02:04:31 EST


On Mon, Mar 15, 2010 at 11:05:39AM +0800, Libin wrote:
> On Sat, 2010-03-13 at 12:01 +0100, Sander Eikelenboom wrote:
> > The patches applied cleanly, but the device doesn't work yet.
> > complete dmesg and lsusb -vvv attached.
>
> Thanks for reporting the issue. We will look into the issue. From the
> description, it seems the initialization has passed, right? What's the
> symptom? Does the system hang?

>From the log, it looks like the USB driver is submitting URBs, but the
xHCI driver is seeing spurious events. It could be that the hardware is
sending spurious events, but it's more likely that the xHCI driver's
isochronous URB completion isn't correct. If you give back the URB too
soon, and the event ring handler finds the endpoint's TD list is empty,
you'll see lines like this:

> > [ 12.985500] xhci_hcd 0000:03:00.0: WARN Event TRB for slot 1 ep 10 with no TDs queued?

If you're giving the URB back too soon, that would also explain why the
device doesn't seem to work -- the driver would be seeing uncompleted
packets (and possibly retrying).

But we can't be sure without more information about what the spurious
event looks like.

Sander, can you recompile with CONFIG_USB_XHCI_HCD_DEBUGGING set to yes
and retry with your device?

Thanks,
Sarah Sharp

>
> >
> > Highlights from dmesg:
> >
> > [ 1.738043] usb 9-3: skipped 4 descriptors after interface
> > [ 1.738045] usb 9-3: skipped 2 descriptors after interface
> > [ 1.738048] usb 9-3: skipped 1 descriptor after endpoint
> > [ 1.738050] usb 9-3: skipped 2 descriptors after interface
> > [ 1.738053] usb 9-3: skipped 1 descriptor after endpoint
> > [ 1.738055] usb 9-3: skipped 2 descriptors after interface
> > [ 1.738057] usb 9-3: skipped 1 descriptor after endpoint
> > [ 1.738059] usb 9-3: skipped 2 descriptors after interface
> > [ 1.738061] usb 9-3: skipped 1 descriptor after endpoint
> > [ 1.741021] xhci_hcd 0000:03:00.0: WARN: short transfer on control ep
> > [ 1.742039] usb 9-3: default language 0x0409
> > [ 1.765016] xhci_hcd 0000:03:00.0: WARN: short transfer on control ep
> > [ 1.766036] usb 9-3: udev 2, busnum 9, minor = 1025
> > [ 1.766038] usb 9-3: New USB device found, idVendor=0471, idProduct=0311
> > [ 1.766244] usb 9-3: New USB device strings: Mfr=0, Product=0, SerialNumber=1
> > [ 1.766448] usb 9-3: SerialNumber: 01680000EA164101
> > [ 1.766811] usb 9-3: usb_probe_device
> > [ 1.766813] usb 9-3: configuration #1 chosen from 1 choice
> > [ 1.767184] usb 9-3: Successful Endpoint Configure command
> > [ 1.769035] usb 9-3: adding 9-3:1.0 (config #1, interface 0)
> > [ 1.769151] usb 9-3: adding 9-3:1.1 (config #1, interface 1)
> > [ 1.769235] usb 9-3: adding 9-3:1.2 (config #1, interface 2)
> >
> > [ 4.483174] pwc: Philips PCVC740K (ToUCam Pro)/PCVC840 (ToUCam II) USB webcam detected.
> > [ 4.515833] xhci_hcd 0000:03:00.0: WARN: short transfer on control ep
> > [ 4.516894] pwc: Registered as video0.
> > [ 4.518834] xhci_hcd 0000:03:00.0: WARN: Stalled endpoint
> > [ 4.520834] xhci_hcd 0000:03:00.0: WARN: Stalled endpoint
> > [ 4.521051] Philips webcam 9-3:1.1: usb_probe_interface
> > [ 4.521053] Philips webcam 9-3:1.1: usb_probe_interface - got id
> > [ 4.521058] Philips webcam 9-3:1.2: usb_probe_interface
> > [ 4.521060] Philips webcam 9-3:1.2: usb_probe_interface - got id
> > [ 4.521073] usbcore: registered new interface driver Philips webcam
> >
> >
> > And when trying to actually grab pictures from the device:
> >
> > [ 12.957593] usb 9-3: Successful Endpoint Configure command
> > [ 12.967542] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7ac74000, num_trbs = 10
> > [ 12.967553] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7af8c000, num_trbs = 10
> > [ 12.985500] xhci_hcd 0000:03:00.0: WARN Event TRB for slot 1 ep 10 with no TDs queued?
> > [ 20.946116] eth1: no IPv6 routers present
> > [ 40.029279] usb 9-3: Successful Endpoint Configure command
> > [ 40.039186] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7a814000, num_trbs = 10
> > [ 40.039198] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7b734000, num_trbs = 10
> > [ 40.057195] xhci_hcd 0000:03:00.0: WARN Event TRB for slot 1 ep 10 with no TDs queued?
> > [ 40.216270] usb 9-3: Successful Endpoint Configure command
> > [ 40.226183] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7a9c0000, num_trbs = 10
> > [ 40.226193] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7a98c000, num_trbs = 10
> > [ 40.245183] xhci_hcd 0000:03:00.0: WARN Event TRB for slot 1 ep 10 with no TDs queued?
> > [ 40.399261] usb 9-3: Successful Endpoint Configure command
> > [ 40.408210] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7a9c0000, num_trbs = 10
> > [ 40.408220] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7a98c000, num_trbs = 10
> > [ 47.145805] xhci_hcd 0000:03:00.0: WARN Event TRB for slot 1 ep 10 with no TDs queued?
> > [ 48.076894] usb 9-3: Successful Endpoint Configure command
> > [ 48.086805] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7b180000, num_trbs = 10
> > [ 48.086816] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7b47c000, num_trbs = 10
> > [ 48.105803] xhci_hcd 0000:03:00.0: WARN Event TRB for slot 1 ep 10 with no TDs queued?
> > [ 48.263885] usb 9-3: Successful Endpoint Configure command
> > [ 48.273796] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7bba0000, num_trbs = 10
> > [ 48.273807] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7af6c000, num_trbs = 10
> > [ 48.292793] xhci_hcd 0000:03:00.0: WARN Event TRB for slot 1 ep 10 with no TDs queued?
> > [ 48.446875] usb 9-3: Successful Endpoint Configure command
> > [ 48.456784] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7bba0000, num_trbs = 10
> > [ 48.456794] usb 9-3: ep 0x85 - urb len = 0x2580 (9600), addr = 0x7af6c000, num_trbs = 10
> > [ 51.778648] xhci_hcd 0000:03:00.0: WARN Event TRB for slot 1 ep 10 with no TDs queued?
> >
> >
> >
> >
> > Saturday, March 13, 2010, 12:25:38 AM, you wrote:
> >
> > > On Fri, Mar 12, 2010 at 05:43:45PM +0100, Sander Eikelenboom wrote:
> > >> Hi Sarah,
> > >>
> > >> I'm trying to use an USB 1.1 device on a USB 3.0 host controller, but it doesn't seem to work (tested with kernel versions up to 2.6.34-rc1):
> > >> - with lsusb I can only see a usb 3.0 root hub (with a USB 2.0 host controller, i'am always seeing the roothubs for lower speeds as well, so maybe this is the problem ?)
> > >> - with lsusb I can see the usb 1.1 device connected to the USB 3.0 root hub.
> > >> - the driver from the usb 1.1 device get loaded, but it gives errors, and (it's a webcam) doesn't give video.
> > >> - the manufacturer claims it should be backwards compatible hardware.
> > >>
> > >> - Should this work with the current (expirimental) state of the xhci-hcd driver in linux ?
> > >>
> > >> The hardware is (asus U3S6):
> > >> 03:00.0 USB Controller [0c03]: NEC Corporation Device [1033:0194] (rev 03) (prog-if 30)
> > >> Subsystem: ASUSTeK Computer Inc. Device [1043:8413]
> >
> > > From the log files, it looks like your usb 1.1 device is a webcam; is
> > > that correct?
> >
> > >> [ 5.097306] pwc: Philips webcam module version 10.0.13 loaded.
> > >> [ 5.097507] pwc: Supports Philips PCA645/646, PCVC675/680/690, PCVC720[40]/730/740/750 & PCVC830/840.
> > >> [ 5.097859] pwc: Also supports the Askey VC010, various Logitech Quickcams, Samsung MPC-C10 and MPC-C30,
> > >> [ 5.098215] pwc: the Creative WebCam 5 & Pro Ex, SOTEC Afina Eye and Visionite VCS-UC300 and VCS-UM100.
> > >> [ 5.098557] pwc: Trace options: 0x0001
> > >> [ 5.098576] Philips webcam 9-3:1.0: usb_probe_interface
> > >> [ 5.098578] Philips webcam 9-3:1.0: usb_probe_interface - got id
> > > ...
> > >> [ 13.116489] pwc: isoc_init() submit_urb 0 failed with error -22
> >
> > > Webcams have isochronous endpoints, and the xHCI driver doesn't support
> > > isochronous transfers yet. There are patches to add isochronous
> > > support, but they're still under going review. They missed the 2.6.34
> > > merge window, so I'm not sure if they'll make it into 2.6.34 or 2.6.35.
> > > If you want to try them out, the latest versions of the patches are
> > > here:
> >
> > > http://marc.info/?l=linux-usb&m=126838645617885&w=2
> > > http://marc.info/?l=linux-usb&m=126838648717923&w=2
> > > http://marc.info/?l=linux-usb&m=126838649217932&w=2
> >
> > > Let me know if they work for you.
> >
> > > Sarah Sharp
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/