Latest working kernel version: Earliest failing kernel version: 2.6.1x Distribution: Mandriva Linux Hardware Environment: x86 (PIII@733, PIV@1.8, ...= Software Environment: Problem Description: Some USB2.0 devices are dead slow b/c the kernel thinks they're USB1.0. Looking at dmesg, one can spot the following (note the last line): Intel ICH 0000:00:02.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver input: PC Speaker as /class/input/input3 ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver Warning! ehci_hcd should always be loaded before uhci_hcd and ohci_hc This results in the following when plugging an USB hard drive: Jan 10 12:27:49 localhost klogd: usb 1-2: new full speed USB device using ohci_hcd and address 5 Jan 10 12:27:49 localhost klogd: usb 1-2: not running at top speed; connect to a high speed hub Jan 10 12:27:49 localhost klogd: usb 1-2: configuration #1 chosen from 1 choice Jan 10 12:27:49 localhost klogd: usb 1-2: New USB device found, idVendor=059f, idProduct=0341 Jan 10 12:27:49 localhost klogd: usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Jan 10 12:27:49 localhost klogd: usb 1-2: Product: LaCie Hard Drive USB Jan 10 12:27:49 localhost klogd: usb 1-2: Manufacturer: LaCie Jan 10 12:27:49 localhost klogd: usb 1-2: SerialNumber: 10000E0008E76DE2 Instead of: Jan 10 18:06:36 localhost klogd: usb 1-3: new high speed USB device using ehci_hcd and address 3 Jan 10 18:06:36 localhost klogd: usb 1-3: configuration #1 chosen from 1 choice Jan 10 18:06:36 localhost klogd: usb 1-3: New USB device found, idVendor=059f, idProduct=0341 Jan 10 18:06:36 localhost klogd: usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Jan 10 18:06:36 localhost klogd: usb 1-3: Product: LaCie Hard Drive USB Jan 10 18:06:36 localhost klogd: usb 1-3: Manufacturer: LaCie Jan 10 18:06:36 localhost klogd: usb 1-3: SerialNumber: 10000E0008E76DE2 Using the same kernel and the _same_ USB port!! Some USB discs never cause this to happen whereas some often cause this to happen. Sometimes, rmmod ohci then repluging the usb hard drive on the same USB port result results in it being managed by ehci, thus having a full 21Mb/s instead of 1Mb/sec. I'm guessing this is because (drivers/usb/host/Kconfig): EHCI controllers are packaged with "companion" host controllers (OHCI or UHCI) to handle USB 1.1 devices connected to root hub ports. Ports will connect to EHCI if the device is high speed, otherwise they connect to a companion controller. With modularized modules, udev doesn't enforce loading ehci before ohci/uhci. It looks like when ohci is loaded first, the kernel sometimes do the wrong thing. But this wild guess doesn't explain why some USB2.0 devices are always connected in USB2 mode whereas other are in USB1 mode... Steps to reproduce:
On Sun, Feb 15, 2009 at 04:01:37AM -0800, bugme-daemon@bugzilla.kernel.org wrote: > Some USB2.0 devices are dead slow b/c the kernel thinks they're USB1.0. > Looking at dmesg, one can spot the following (note the last line): > > Intel ICH 0000:00:02.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 > ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver > input: PC Speaker as /class/input/input3 > ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver > Warning! ehci_hcd should always be loaded before uhci_hcd and ohci_hc Please follow the warning that the kernel is giving you and load ehci-hcd before uhci-hcd and ohci-hcd, that should solve this problem. > With modularized modules, udev doesn't enforce loading ehci before ohci/uhci. > It looks like when ohci is loaded first, the kernel sometimes do the wrong > thing. Put a line in your /etc/modprobe.conf to load ehci-hcd before the other two and udev will do so automatically.
Created attachment 20348 [details] dmesg output
This doesn't help. I had already previously tried building ehci as core module and the like. In the above 2.6.29-rc5 dmesg output, one can see that echci is loaded first. However, the first time the USB2 disc is plugged, it's handled as USB1: usb 2-2: new full speed USB device using ohci_hcd and address 2 usb 2-2: not running at top speed; connect to a high speed hub usb 2-2: New USB device found, idVendor=059f, idProduct=0341 The second time, it's handled as USB2: usb 1-3: new high speed USB device using ehci_hcd and address 109 usb 1-3: New USB device found, idVendor=059f, idProduct=0341 usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Using the same damn physical port...
Still valid. It still sometimes randomly connect as USB1 on the same physical port. As I said, a kernel with ehci in core will just not see it in that case until ohci_hcd is loaded (with tons of "hub 1-0:1.0: unable to enumerate USB device on port 2" messages)
See also https://bugs.launchpad.net/ubuntu/+bug/177235
Here is what looks like the same problem on an OpenSuse 11.2 (2.6.31.8-0.1-desktop x86_64 Intel Atom) system. This shows a DVD writer being correctly detected as USB 2.0, and a hard disk being wrongly detected as USB 1.1 . Both devices really support USB 2.0, and both are connected to 'motherboard' USB sockets in the obvious way. [ 2.144566] device-mapper: ioctl: 4.15.0-ioctl (2009-04-01) initialised: dm-devel@redhat.com [ 2.178233] udev: starting version 146 [ 2.341079] usb 1-1: new high speed USB device using ehci_hcd and address 3 [ 2.538064] usb 1-1: device descriptor read/64, error -71 [ 2.837064] usb 1-1: device descriptor read/64, error -71 [ 3.040070] usb 1-1: new high speed USB device using ehci_hcd and address 4 [ 3.505045] usb 1-1: device not accepting address 4, error -71 [ 3.528068] md: linear personality registered for level -1 [ 3.606049] usb 1-1: new high speed USB device using ehci_hcd and address 5 [ 3.837918] PM: Marking nosave pages: 000000000009f000 - 0000000000100000 [ 3.837935] PM: Basic memory bitmaps created [ 3.901229] PM: Basic memory bitmaps freed [ 3.925385] PM: Starting manual resume from disk [ 3.925395] PM: Resume from partition 253:3 [ 3.925400] PM: Checking hibernation image. [ 3.925645] PM: Resume from disk failed. [ 4.068040] usb 1-1: device not accepting address 5, error -71 [ 4.068194] hub 1-0:1.0: unable to enumerate USB device on port 1 [ 4.091721] EXT4-fs (dm-1): barriers enabled [ 4.092065] kjournald2 starting: pid 327, dev dm-1:8, commit interval 5 seconds [ 4.092588] EXT4-fs (dm-1): internal journal on dm-1:8 [ 4.092598] EXT4-fs (dm-1): delayed allocation enabled [ 4.092606] EXT4-fs: file extents enabled [ 4.097812] EXT4-fs: mballoc enabled [ 4.097856] EXT4-fs (dm-1): mounted filesystem with ordered data mode [ 4.176062] usb 1-3: new high speed USB device using ehci_hcd and address 6 [ 4.311090] usb 1-3: New USB device found, idVendor=152e, idProduct=2507 [ 4.311106] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 4.311119] usb 1-3: Product: Super Multi Rewriter [ 4.311128] usb 1-3: Manufacturer: HLDS Inc. [ 4.311138] usb 1-3: SerialNumber: P01061024184203 [ 4.311459] usb 1-3: configuration #1 chosen from 1 choice [ 4.312046] scsi6 : SCSI emulation for USB Mass Storage devices [ 4.312326] usb-storage: device found at 6 [ 4.312335] usb-storage: waiting for device to settle before scanning [ 4.573052] usb 2-1: new full speed USB device using ohci_hcd and address 2 [ 4.766405] usb 2-1: not running at top speed; connect to a high speed hub [ 4.867436] usb 2-1: New USB device found, idVendor=07ab, idProduct=fcfe [ 4.867447] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 4.867455] usb 2-1: Product: Freecom Hard Drive [ 4.867461] usb 2-1: Manufacturer: Freecom [ 4.867466] usb 2-1: SerialNumber: 01BC0E5601300 [ 4.867708] usb 2-1: configuration #1 chosen from 1 choice [ 4.870744] scsi7 : SCSI emulation for USB Mass Storage devices [ 4.870970] usb-storage: device found at 2 [ 4.870978] usb-storage: waiting for device to settle before scanning [ 5.348951] scsi 6:0:0:0: CD-ROM HL-DT-ST DVDRAM GSA-E10N JE07 PQ: 0 ANSI: 0 [ 5.350223] usb-storage: device scan complete [ 5.909618] scsi 7:0:0:0: Direct-Access SAMSUNG HD400LD WQ10 PQ: 0 ANSI: 0 [ 5.920646] sd 7:0:0:0: [sdb] 781422768 512-byte logical blocks: (400 GB/372 GiB)
Hello, I'm also seeing the same warning on a Mandriva 2010.0 with all the latest updates on an x64 system. Kernel id is 2.6.31.12-desktop-2mnb
All USB bugs should be sent to the linux-usb@vger.kernel.org mailing list, and not entered into bugzilla. Please bring this issue up there, if it is still a problem in the latest kernel release.