Description of problem: The USB 2.0 specification requires a 10ms reset recovery time (TRSTRCY) after port resets before commands are issued to USB devices. However linux kernels < 2.6.11 do not implement this recovery time leading to failures on USB2.0 devices. This failure is intermittent and seen on some devices (If other system activity causes there to be a 10ms delay between port resume and device access, then it works, else it would fail). It also depends on the Host controller implementation. The EHCI controller in the Broadcom HT1000 SouthBridge does not like this violation of the spec. and fails to initialize devices. Version-Release number of selected component (if applicable): 2.4.21-32.0.1.EL and all others How reproducible: Always. All USB2.0 devices fail under RHEL3. Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info: http://marc.theaimsgroup.com/?l=linux-usb-devel&m=110859443620747&w=2 GregKH accepted this patch into the 2.6.11 kernel. [PATCH] USB Hub driver: Add reset recovery-time delay This patch is clearly needed for us to be in compliance with the USB spec. It adds the mandated recovery-time delay following a port reset. Regardless of anything else we do to alter the device initialization sequence, this is necessary. Signed-off-by: Alan Stern <stern.edu> Signed-off-by: Greg Kroah-Hartman <gregkh> drivers/usb/core/hub.c | 3 +++ 1 files changed, 3 insertions(+) diff -Nru a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c --- a/drivers/usb/core/hub.c 2005-02-16 14:47:36 -08:00 +++ b/drivers/usb/core/hub.c 2005-02-16 14:47:36 -08:00 @@ -1382,6 +1382,9 @@ /* return on disconnect or reset */ switch (status) { case 0: + /* TRSTRCY = 10 ms */ + msleep(10); + /* FALL THROUGH */ case -ENOTCONN: case -ENODEV: clear_port_feature(hub->hdev,
Requestor, please test kernel 2.4.21-31.EL.usbserial.4 by selecting a suitable architecture from the following URL: ftp://people.redhat.com/zaitcev/rhel3usb/ Let us know if it fixes the problem in your test environment.
It works with the i686 smp version of the kernel. Used kernel-smp-2.4.21-31.EL.usbserial.4.i686.rpm. Made an initrd using mkinitrd for this kernel and tried a USB2.0 HDD.
Created attachment 123815 [details] Candidate #1 - wait_ms, from bug 138205
A fix for this problem has just been committed to the RHEL3 U8 patch pool this evening (in kernel version 2.4.21-40.2.EL).
This issue is on Red Hat Engineering's list of planned work items for the upcoming Red Hat Enterprise Linux 3.8 release. Engineering resources have been assigned and barring unforeseen circumstances, Red Hat intends to include this item in the 3.8 release.
A kernel has been released that contains a patch for this problem. Please verify if your problem is fixed with the latest available kernel from the RHEL3 public beta channel at rhn.redhat.com and report your test results.
It works correctly with the beta RHEL3 update 8.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2006-0437.html