Bug 8920

Summary: The USB 2.0 flash disk can not be detected with EHCI is loaded
Product: Drivers Reporter: henry su (henry.su)
Component: USBAssignee: Greg Kroah-Hartman (greg)
Status: CLOSED CODE_FIX    
Severity: high CC: dbrownell, henry.su, stern
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.23-rc2-mm2 Subsystem:
Regression: --- Bisected commit-id:
Bug Depends on:    
Bug Blocks: 5089    
Attachments: dmesg
usbmon
dmesg with command_abort
usbmon with command_abort

Description henry su 2007-08-22 02:11:39 UTC
Most recent kernel where this bug did not occur:N/A
Distribution: FC7
Hardware Environment:ATI SB700
Software Environment:
Problem Description:
The plugged-in USB flash disk cannot be detected if EHCI module is loead,this disk works well in windows or the EHCI module is removed.

Steps to reproduce:
1.boot Federa core 7,
2.plug in the USB 2.0 flash disk
Comment 1 henry su 2007-08-22 02:16:49 UTC
Created attachment 12482 [details]
dmesg

attached dmesg
Comment 2 henry su 2007-08-22 02:18:10 UTC
Created attachment 12483 [details]
usbmon

attached USBmon
Comment 3 Anonymous Emailer 2007-08-22 02:47:57 UTC
Reply-To: akpm@linux-foundation.org

On Wed, 22 Aug 2007 02:04:14 -0700 (PDT) bugme-daemon@bugzilla.kernel.org wrote:

> http://bugzilla.kernel.org/show_bug.cgi?id=8920
> 
>            Summary: The USB 2.0 flash disk can not be detected with EHCI is
>                     loaded
>            Product: Drivers
>            Version: 2.5
>      KernelVersion: 2.6.23-rc2-mm2
>           Platform: All
>         OS/Version: Linux
>               Tree: -mm
>             Status: NEW
>           Severity: high
>           Priority: P1
>          Component: USB
>         AssignedTo: greg@kroah.com
>         ReportedBy: henry.su@amd.com
>                 CC: stern@rowland.harvard.edu
> 
> 
> Most recent kernel where this bug did not occur:N/A
> Distribution: FC7
> Hardware Environment:ATI SB700
> Software Environment:
> Problem Description:
> The plugged-in USB flash disk cannot be detected if EHCI module is loead,this
> disk works well in windows or the EHCI module is removed.
> 
> Steps to reproduce:
> 1.boot Federa core 7,
> 2.plug in the USB 2.0 flash disk
> 
> 
> -- 
> Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email
> ------- You are receiving this mail because: -------
> You are on the CC list for the bug, or are watching someone who is.
Comment 4 Alan Stern 2007-08-22 08:05:26 UTC
I don't understand.  Your dmesg attachment shows the flash disk working perfectly with ehci-hcd, apart from one error which was recovered.  The usbmon log doesn't show any errors at all.

So what's the problem?
Comment 5 henry su 2007-08-22 20:05:28 UTC
Hi Alan,
Normally,if the USB flash disk is detected, there are two devices in the /dev directory(/dev/sdb and /dev/sdb1), so that I can mount the /dev/sdb1 device manually. Actually I can find the /dev/sdb, no /dev/sdb1 exists in /dev directory. 

Sometimes the flash disk can be detected successfully, but it takes a long time to mount this disk.
Comment 6 henry su 2007-08-22 20:44:51 UTC
I noticed that it takes a long time in the READ_10 command, there are about 30 seconds between "usb_stor_bulk_transfer_sglist ..." and "---transfer complete".

usb-storage: Command READ_10 (10 bytes)
usb-storage:  28 00 00 3b 8e 71 00 00 07 00
usb-storage: Bulk Command S 0x43425355 T 0x23 L 3584 F 128 Trg 0 LUN 0 CL 10
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: Status code 0; transferred 31/31
usb-storage: -- transfer complete
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_bulk_transfer_sglist: xfer 3584 bytes, 1 entries
<<<<<<<<<<<<<<<<< about 30 seconds
usb-storage: Status code 0; transferred 4096/4096
usb-storage: -- transfer complete
Comment 7 Anonymous Emailer 2007-08-22 23:30:32 UTC
Reply-To: david-b@pacbell.net

On Wednesday 22 August 2007, bugme-daemon@bugzilla.kernel.org wrote:
> usb-storage: usb_stor_bulk_transfer_sglist: xfer 3584 bytes, 1 entries
> <<<<<<<<<<<<<<<<< about 30 seconds
> usb-storage: Status code 0; transferred 4096/4096

Where does the extra 512 bytes come from??
(4096 - 3584) == 512 ... fishy?
Comment 8 henry su 2007-08-22 23:34:35 UTC
sorry for the mistake,should be:
usb-storage: Status code 0; transferred 3584/3584
usb-storage: -- transfer complete
Comment 9 henry su 2007-08-22 23:50:04 UTC
Finally, there are some errors in the console,such as:
end_request: I/O error, dev sdb, sector 24
Buffer I/O error on device sdb1, Logical block 8
Buffer I/O error on device sdb1, Logical block 9
Buffer I/O error on device sdb1, Logical block 10
Buffer I/O error on device sdb1, Logical block 11
Buffer I/O error on device sdb1, Logical block 12
Buffer I/O error on device sdb1, Logical block 13
Buffer I/O error on device sdb1, Logical block 14
Buffer I/O error on device sdb1, Logical block 15
...
Comment 10 Alan Stern 2007-08-23 07:44:13 UTC
> I noticed that it takes a long time in the READ_10 command, there are about
> 30
> seconds between "usb_stor_bulk_transfer_sglist ..." and "---transfer
> complete".

This may sound silly, but how do you know there were 30 seconds between them?  The log file doesn't include any timestamps.

Your flash disk has the same behavior as lots of other USB storage devices: They get occasional errors when running at high speed.  Nobody knows why or how to fix it, and nobody knows what Windows does differently from Linux.  Sometimes using a better USB cable can help; sometimes the hardware on the computer or the device is bad (like the capacitance is wrong); sometimes there's no obvious reason.

In the dmesg log you attached there was an example of such an error.  In that case the system was able to recover and keep working.  Quite often when one of these errors occurs the device simply dies and fails to respond to any futher communication until you power-cycle it.
Comment 11 henry su 2007-08-28 22:35:42 UTC
Hi Alan,
This Flash runs well with ATI SB600 chipset which has 5 OHCIs and one EHCI, and the SB700 chipset adds one more EHCI.
I compared the registers value with these two chipsets after plugged in the flash disk, but got no cue.
Ideally,it takes a long time to mount the disk if it was detected,but normally the disk cannot be detected at all.
I attached another dmesg in which the command_abort comes up many times,maybe that is why  there were 30 seconds delay.
Comment 12 henry su 2007-08-28 22:37:51 UTC
Created attachment 12589 [details]
dmesg with command_abort
Comment 13 henry su 2007-08-28 22:38:20 UTC
Created attachment 12590 [details]
usbmon with command_abort
Comment 14 henry su 2007-08-28 22:45:37 UTC
Hi Alan,
Could you please tell me what is likely to cause the command_delay?
Thank you very much!
Comment 15 Alan Stern 2007-08-29 07:51:47 UTC
The delay happens because the computer is waiting for the flash disk to send a reply, but the reply never comes.  After 30 seconds the computer stops waiting and resets the flash disk.

Why doesn't the reply arrive?  I don't know.  It could be a problem with your USB connections or cables.  It could even be a problem with the USB connections inside the computer's case.  Try using different ports and different cables.
Comment 16 henry su 2007-09-25 02:52:49 UTC
This issue has been fixed by disable the enhancement features of SB700.