David Brownell wrote:

> Out of curiousity, which kind of support does your motherboard provide?
> There's the south bridge (VT8235), or the standalone chip (VT6202).
>
> It might matter; the VT602 hasn't always worked for me in PCI cards
> (due to what seem like PCI problems).  The patches I sent recently
> have gotten more VT8235 testing than VT6206 (NEC behaves fine :),
> and in any case I'm glad the patches give you an improvement!

I don't know exactly what chips is there. Its PCI device ID is 
0x1106:0x3104 rev 82. It is definitly not south bridge because 
motheboard contains VT8233A chipset which provides only USB 1.1 support.

>> The device works for some time, but when read command timeouts the 
>> following happens:
>>
>> 1) If command_abort() is called by scsi subsytem, process deadlocks 
>> on wait_for_completion(&(us->notify))
>
>
> For this one, it'd be good to know if 2.5.latest does the same thing.

2.5.38 oopses on the last line if usb_stor_abort_transport (us->srb == 
NULL). I attepted to fix it:

--- linux-2.5.38-orig/drivers/usb/storage/transport.c    Sun Sep 22 
08:25:06 2002
+++ linux-2.5.38/drivers/usb/storage/transport.c    Thu Sep 26 17:18:20 2002
@@ -859,4 +859,5 @@
 void usb_stor_abort_transport(struct us_data *us)
 {
+    struct Scsi_Host *host;
     int state = atomic_read(&us->sm_state);
 
@@ -870,5 +871,6 @@
     /* set state to abort and release the lock */
     atomic_set(&us->sm_state, US_STATE_ABORTING);
-    scsi_unlock(us->srb->host);
+    host = us->srb->host;
+    scsi_unlock(host);
 
     /* If the state machine is blocked waiting for an URB or an IRQ,
@@ -893,5 +895,5 @@
 
     /* Reacquire the lock */
-    scsi_lock(us->srb->host);
+    scsi_lock(host);
 }
 

But it still does not work. insmod usb-storage takes about 20 sec. And 
just after return from insmod the whole system hangs. See log at the end 
of the letter.

> I could believe your diagnosis (usb-storage, or scsi, EH not working),
> since I've seen some strange behaviors.  But at least some of them do
> seem fixed in 2.5, and it'd be good to know more about this case.
> (Why was it aborting the command?) 

Because sd driver timeout which equals to 30 sec for read command expired.

>> 2) If I disable command_abort by initializing eh_abort_handler to 
>> NULL, another issue occures. When scsi subsytem attempts to reset 
>> device/bus, reset fails and device is disabled. Here are log entries:
>
>
> This one looks odd to me.  But again, it does look to me as if
> the EHCI driver is behaving reasonably at that point.

I think disabling of command_abort is not correct. usb-storage can't 
perform device reset until previous request is properly aborted.


Yuri



Initializing USB Mass Storage driver...
usb.c: usb_device_probe
usb.c: usb_device_probe - got id
usb-storage: act_altsetting is 0
usb-storage: id_index calculated to be: 77
usb-storage: Array length appears to be: 79
usb-storage: USB Mass Storage device detected
usb-storage: Endpoints: In: 0xcdb4cd24 Out: 0xcdb4cd10 Int: 0xcdb4cd38 (Period 9)
usb-storage: New GUID 0840006011100e00003f4a31
usb-storage: GetMaxLUN command result is 1, data is 0
usb-storage: Transport: Bulk
usb-storage: Protocol: Transparent SCSI
usb-storage: Allocating usb_ctrlrequest
usb-storage: Allocating URB
usb-storage: *** thread sleeping.
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Command INQUIRY (6 bytes)
usb-storage: 12 00 00 00 24 00 d3 cd 00 00 00 00
usb-storage: Bulk command S 0x43425355 T 0x1 Trg 0 LUN 0 L 36 F 128 CL 6
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_transfer_partial(): xfer 36 bytes
(6 sec later)
usb-storage: command_abort() called
usb-storage: usb_stor_abort_transport called
usb-storage: -- cancelling URB
ehci-hcd.c: 00:10.3 urb_dequeue cf3af450 qh cdb270c0 state 1
hcd.c: giveback urb cf3af450 status -104 len 0
usb-storage: usb_stor_bulk_msg() returned -104 xferred 0/36
usb-storage: usb_stor_transfer_partial(): transfer aborted
usb-storage: Bulk data transfer result 0x3
usb-storage: -- transport indicates command was aborted
usb-storage: scsi command aborted
usb-storage: *** thread sleeping.
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Command TEST_UNIT_READY (6 bytes)
usb-storage: 00 00 00 00 00 00 d3 cd 00 00 00 00
usb-storage: Bulk command S 0x43425355 T 0x1 Trg 0 LUN 0 L 0 F 0 CL 6
usb-storage: Bulk command transfer result=0
usb-storage: Attempting to get CSW...
(10 sec later)
usb-storage: command_abort() called
usb-storage: usb_stor_abort_transport called
usb-storage: -- cancelling URB
ehci-hcd.c: 00:10.3 urb_dequeue cf3af450 qh cdb270c0 state 1
hcd.c: giveback urb cf3af450 status -104 len 0
usb-storage: usb_stor_Bulk_transport(): transfer aborted
usb-storage: -- transport indicates command was aborted
usb-storage: scsi command aborted
usb-storage: *** thread sleeping.
usb-storage: device_reset() called
usb-storage: Bulk reset requested
(20 sec later)
message.c: usb_control/bulk_msg: timeout
ehci-hcd.c: 00:10.3 urb_dequeue cf0ff740 qh cdb27000 state 1
hcd.c: 00:10.3: wait for giveback urb cf0ff740
hcd.c: giveback urb cf0ff740 status -2 len 0
usb-storage: Soft reset failed: -110
usb-storage: bus_reset() called
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 10ms
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 10ms
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 200ms
ehci-hub.c: 00:10.3 port 1 high speed
ehci-hub.c: GetStatus port 1 status 001005 POWER sig=se0  PE CONNECT
hub.c: port 1, portstatus 503, change 10, 480 Mb/s
ehci-q.c: 3strikes
ehci-q.c: ep 0-out qtd token 00080248 --> status -71
hcd.c: giveback urb cf3af810 status -71 len 0
hub.c: USB device not accepting new address (error=-71)
usb-storage: usb_reset_device returns -71
ehci-hub.c: GetStatus port 1 status 001803 POWER sig=j  CSC CONNECT
hub.c: port 1, portstatus 501, change 1, 480 Mb/s
hub.c: hub 0 port 1 connection change
hub.c: hub 0 port 1, portstatus 501, change 1, 480 Mb/s
usb.c: USB disconnect on device 2
usb.c: kusbd: /sbin/hotplug remove 2
usb.c: kusbd policy returned 0xfffffffe
hub.c: port 1, portstatus 501, change 0, 480 Mb/s
hub.c: port 1, portstatus 501, change 0, 480 Mb/s
hub.c: port 1, portstatus 501, change 0, 480 Mb/s
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 10ms
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 10ms
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 200ms
ehci-hub.c: 00:10.3 port 1 high speed
ehci-hub.c: GetStatus port 1 status 001005 POWER sig=se0  PE CONNECT
hub.c: port 1, portstatus 503, change 10, 480 Mb/s
hub.c: new USB device 00:10.3-1, assigned address 3
usb.c: new device strings: Mfr=73, Product=90, SerialNumber=110
Product: USB Storage Adapter
Manufacturer: USB2.0 TO IDE   
SerialNumber: 11100E00003F4A31
ehci-hcd.c: 00:10.3: free_config devnum 3
ehci-hcd.c: free_config, async ep 0x00 qh cdb27120
ehci-hub.c: 00:10.3 port 1 high speed
ehci-hub.c: GetStatus port 1 status 001005 POWER sig=se0  PE CONNECT
hub.c: port 1, portstatus 503, change 10, 480 Mb/s
hub.c: new USB device 00:10.3-1, assigned address 4
usb.c: new device strings: Mfr=73, Product=90, SerialNumber=110
Product: USB Storage Adapter
Manufacturer: USB2.0 TO IDE   
SerialNumber: 11100E00003F4A31
ehci-hcd.c: 00:10.3: free_config devnum 4
ehci-hcd.c: free_config, async ep 0x00 qh cdb27120
hub.c: port 2, portstatus 100, change 0, 12 Mb/s
hub.c: port 3, portstatus 100, change 0, 12 Mb/s
hub.c: port 4, portstatus 100, change 0, 12 Mb/s
hub.c: port 5, portstatus 100, change 0, 12 Mb/s
hub.c: port 6, portstatus 100, change 0, 12 Mb/s
ehci-hub.c: GetStatus port 1 status 001803 POWER sig=j  CSC CONNECT
hub.c: port 1, portstatus 501, change 1, 480 Mb/s
hub.c: hub 0 port 1 connection change
hub.c: hub 0 port 1, portstatus 501, change 1, 480 Mb/s
hub.c: port 1, portstatus 501, change 0, 480 Mb/s
hub.c: port 1, portstatus 501, change 0, 480 Mb/s
hub.c: port 1, portstatus 501, change 0, 480 Mb/s
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 10ms
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 10ms
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 200ms
ehci-hub.c: 00:10.3 port 1 high speed
ehci-hub.c: GetStatus port 1 status 001005 POWER sig=se0  PE CONNECT
hub.c: port 1, portstatus 503, change 10, 480 Mb/s
hub.c: new USB device 00:10.3-1, assigned address 5
usb.c: new device strings: Mfr=73, Product=90, SerialNumber=110
Product: USB Storage Adapter
Manufacturer: USB2.0 TO IDE   
SerialNumber: 11100E00003F4A31
ehci-hcd.c: 00:10.3: free_config devnum 5
ehci-hcd.c: free_config, async ep 0x00 qh cdb27120
ehci-hub.c: 00:10.3 port 1 high speed
ehci-hub.c: GetStatus port 1 status 001005 POWER sig=se0  PE CONNECT
hub.c: port 1, portstatus 503, change 10, 480 Mb/s
hub.c: new USB device 00:10.3-1, assigned address 6
(3 sec later)
message.c: usb_control/bulk_msg: timeout
ehci-hcd.c: 00:10.3 urb_dequeue cf0ff740 qh cdb27120 state 1
hcd.c: 00:10.3: wait for giveback urb cf0ff740
hcd.c: giveback urb cf0ff740 status -2 len 0
usb-storage: host_reset() requested but not implemented
usb-storage: bus_reset() called
usb-storage: usb_reset_device returns -2
usb.c: new device strings: Mfr=73, Product=90, SerialNumber=110
Product: USB Storage Adapter
Manufacturer: USB2.0 TO IDE   
SerialNumber: 11100E00003F4A31
ehci-hcd.c: 00:10.3: free_config devnum 6
ehci-hcd.c: free_config, async ep 0x00 qh cdb27120
hub.c: port 2, portstatus 100, change 0, 12 Mb/s
hub.c: port 3, portstatus 100, change 0, 12 Mb/s
hub.c: port 4, portstatus 100, change 0, 12 Mb/s
hub.c: port 5, portstatus 100, change 0, 12 Mb/s
hub.c: port 6, portstatus 100, change 0, 12 Mb/s
ehci-hub.c: GetStatus port 1 status 001803 POWER sig=j  CSC CONNECT
hub.c: port 1, portstatus 501, change 1, 480 Mb/s
hub.c: hub 0 port 1 connection change
hub.c: hub 0 port 1, portstatus 501, change 1, 480 Mb/s
hub.c: port 1, portstatus 501, change 0, 480 Mb/s
hub.c: port 1, portstatus 501, change 0, 480 Mb/s
hub.c: port 1, portstatus 501, change 0, 480 Mb/s
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 10ms
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 10ms
hub.c: port 1, portstatus 511, change 0, 480 Mb/s
hub.c: port 1 of hub 0 not reset yet, waiting 200ms
ehci-hub.c: 00:10.3 port 1 high speed
ehci-hub.c: GetStatus port 1 status 001005 POWER sig=se0  PE CONNECT
hub.c: port 1, portstatus 503, change 10, 480 Mb/s
hub.c: new USB device 00:10.3-1, assigned address 7
ehci-q.c: 3strikes
ehci-q.c: ep 0-out qtd token 80008148 --> status -71
hcd.c: giveback urb cf0ff560 status -71 len 0
(no more messages in log, system hangs)





-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to