David:

I'm going to have to ask for your help in tracing this any farther.

Here's a commented log extract from Andras:

On Thu, 5 Jun 2003, Major A wrote:

> Now, with the disk connected directly, I can see a bit more output
> though:
> 
> > Jun  5 20:53:25 ventus kernel: usb-storage: Bulk command transfer result=0
> > Jun  5 20:53:25 ventus kernel: usb-storage: usb_stor_bulk_transfer_sglist: xfer 
> > 131072 bytes, 32 entries
> > Jun  5 20:53:25 ventus kernel: usb-storage: Status code 0; transferred 
> > 131072/131072
> > Jun  5 20:53:25 ventus kernel: usb-storage: -- transfer complete
> > Jun  5 20:53:25 ventus kernel: usb-storage: Bulk data transfer result 0x0

That was the successful completion of the data part of a READ(10).

> > Jun  5 20:53:25 ventus kernel: usb-storage: Attempting to get CSW...
> > Jun  5 20:53:25 ventus kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 
> > bytes
> > Jun  5 20:53:55 ventus kernel: usb-storage: usb_storage_command_abort called
> > Jun  5 20:53:55 ventus kernel: usb-storage: usb_stor_stop_transport called
> > Jun  5 20:53:55 ventus kernel: usb-storage: -- cancelling URB
> > Jun  5 20:53:55 ventus kernel: usb-storage: Status code -104; transferred 0/13
> > Jun  5 20:53:55 ventus kernel: usb-storage: -- transfer cancelled
> > Jun  5 20:53:55 ventus kernel: usb-storage: Bulk status result = 3
> > Jun  5 20:53:55 ventus kernel: usb-storage: -- command was aborted

But the accompanying status bulk-in transfer timed out.  Unfortunately, 
there's no information from the EHCI driver to indicate if anything else 
happened.

> > Jun  5 20:53:55 ventus kernel: usb-storage: Bulk reset requested
> > Jun  5 20:53:55 ventus kernel: usb-storage: usb_stor_control_msg: rq=ff rqtype=21 
> > value=0000 index=00 len=0
> > Jun  5 20:54:15 ventus kernel: usb-storage: Timeout -- cancelling URB
> > Jun  5 20:54:15 ventus kernel: usb-storage: Soft reset failed: -104

A control transfer telling the device to reset also timed out.

> > Jun  5 20:54:15 ventus kernel: usb-storage: scsi command aborted
> > Jun  5 20:54:15 ventus kernel: usb-storage: *** thread sleeping.
> > Jun  5 20:54:15 ventus kernel: usb-storage: queuecommand() called
> > Jun  5 20:54:15 ventus kernel: usb-storage: *** thread awakened.
> > Jun  5 20:54:15 ventus kernel: usb-storage: Command TEST_UNIT_READY (6 bytes)
> > Jun  5 20:54:15 ventus kernel: usb-storage:  00 00 00 00 00 00
> > Jun  5 20:54:15 ventus kernel: usb-storage: Bulk command S 0x43425355 T 0x136 Trg 
> > 0 LUN 0 L 0 F 0 CL 6
> > Jun  5 20:54:15 ventus kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 
> > bytes
> > Jun  5 20:54:15 ventus kernel: usb-storage: Status code 0; transferred 31/31
> > Jun  5 20:54:15 ventus kernel: usb-storage: -- transfer complete
> > Jun  5 20:54:15 ventus kernel: usb-storage: Bulk command transfer result=0

The command bulk-out transfer part of the TUR apparently worked, oddly 
enough.

> > Jun  5 20:54:15 ventus kernel: usb-storage: Attempting to get CSW...
> > Jun  5 20:54:15 ventus kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 
> > bytes
> > Jun  5 20:54:25 ventus kernel: usb-storage: usb_storage_command_abort called
> > Jun  5 20:54:25 ventus kernel: usb-storage: usb_stor_stop_transport called
> > Jun  5 20:54:25 ventus kernel: usb-storage: -- cancelling URB
> > Jun  5 20:54:25 ventus kernel: usb-storage: Status code -104; transferred 0/13
> > Jun  5 20:54:25 ventus kernel: usb-storage: -- transfer cancelled
> > Jun  5 20:54:25 ventus kernel: usb-storage: Bulk status result = 3
> > Jun  5 20:54:25 ventus kernel: usb-storage: -- command was aborted

But then the status bulk-in part timed out.

> > Jun  5 20:54:25 ventus kernel: usb-storage: Bulk reset requested
> > Jun  5 20:54:25 ventus kernel: usb-storage: usb_stor_control_msg: rq=ff rqtype=21 
> > value=0000 index=00 len=0
> 
> > Jun  5 20:54:45 ventus kernel: usb-storage: Timeout -- cancelling URB
> > Jun  5 20:54:45 ventus kernel: usb-storage: Soft reset failed: -104

As did another soft reset control message.

> > Jun  5 20:54:45 ventus kernel: usb-storage: scsi command aborted
> > Jun  5 20:54:45 ventus kernel: usb-storage: *** thread sleeping.
> > Jun  5 20:54:45 ventus kernel: usb-storage: usb_storage_device_reset called
> > Jun  5 20:54:45 ventus kernel: usb-storage: Bulk reset requested
> > Jun  5 20:54:45 ventus kernel: usb-storage: usb_stor_control_msg: rq=ff rqtype=21 
> > value=0000 index=00 len=0
> > Jun  5 20:55:05 ventus kernel: usb-storage: Timeout -- cancelling URB
> > Jun  5 20:55:05 ventus kernel: usb-storage: Soft reset failed: -104

The SCSI midlayer tried to request its own soft reset, which also timed 
out.

> > Jun  5 20:55:05 ventus kernel: usb-storage: usb_storage_bus_reset called

Then it asked for a hard device reset, which translates into
usb_reset_device().  The debugging messages added by Andras, which I've
removed here, make it clear that usb_hub_port_wait_reset() eventually
returns 1, indicating a disconnect.

> > Jun  5 20:55:05 ventus kernel: hub 5-0:0: port 1 not reset yet, waiting 10ms
> > Jun  5 20:55:05 ventus kernel: hub 5-0:0: port 1 not reset yet, waiting 10ms
> > Jun  5 20:55:06 ventus kernel: hub 5-0:0: port 1 not reset yet, waiting 200ms
> > Jun  5 20:55:06 ventus kernel: ehci-hcd 00:09.2: GetStatus port 1 status 001002 
> > POWER sig=se0  CSC
> > Jun  5 20:55:06 ventus kernel: usb-storage: usb_reset_device returns -19

>From then on, there was nothing to try.

I strongly suspect -- but I don't know for certain -- that the device did
not really disconnect itself electrically from the bus.  In fact, Andras 
stated that rebooting without unplugging or powering-off the device got 
everything working again.

Does this suggest any place to start looking in the EHCI driver?  Would
turning on the driver's verbose debugging help?  Is there anything else to 
try?

Alan Stern



-------------------------------------------------------
This SF.net email is sponsored by:  Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to