Re: USB 3.0 drive crashes system when plugged in - regression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2014-12-05 11:00, Hans de Goede wrote:
> Hi,
> 
> On 12/05/2014 12:35 AM, Marcin Zajączkowski wrote:
>> On 2014-12-04 20:21, Hans de Goede wrote:
>>> Hi,
>>>
>>> On 12/03/2014 10:22 PM, Marcin Zajączkowski wrote:
>>>> On 2014-12-03 10:53, Oliver Neukum wrote:
>>>>> On Wed, 2014-12-03 at 10:41 +0100, Marcin Zajączkowski wrote:
>>>>>> 2014-12-03 Oliver Neukum wrote:
>>>>>>> On Wed, 2014-12-03 at 00:29 +0100, Marcin Zajączkowski wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> After upgrade to Fedora 21 with 3.17.3-300.fc21.x86_64 (from
>>>>>>>> 3.14.x in
>>>>>>>> Fedora 19) my USB 3.0 drive (Seagate Backup+ 1TB) stopped working
>>>>>>>> with
>>>>>>>> USB 3.0 port (works fine with USB 2.0 port).
>>>>>>>>
>>>>>>>> When plug in for the first time (USB 3.0 port) I see in log:
>>>>>>>>
>>>>>>>>> kernel: xhci_hcd 0000:04:00.0: ERROR Transfer event for disabled
>>>>>>>> endpoint or incorrect stream ring
>>>>>>>>> kernel: xhci_hcd 0000:04:00.0: @0000000241eec570 11979000 00000002
>>>>>>>> 05000000 01078001
>>>>>>>
>>>>>>> Are you using the UAS driver?
>>>>>>
>>>>>> Probably yes. How can check that and/or switch to not UAS driver for
>>>>>> a test?
>>>>>
>>>>> Sysfs holds the information. I can be comfortably queried with the
>>>>> "usb-devices" script.
>>>>>
>>>>> To switch drivers you can use the "no UAS" quirk which can be given as
>>>>> a module parameter like other quirks.
>>>>
>>>> Thanks Olivier for your reply. UAS keyword helped me to ignore UAS for
>>>> my drive (via `options usb-storage quirks=vendorId:productId:u`) and my
>>>> drive can again be used via USB 3.0 port.
>> (...)
>>
>>>> What would you propose to do with the issue with that Seagate drive
>>>> (family?)? To either track it or to temporary disable UAS for them
>>>> globally (to not produce system crashes).
>>>
>>> If you have a seagate driver you may need a US_FL_NO_ATA_1X quirk
>>> to disable ata pass through commands, as all (current) seagate devices
>>
>> How can I do that from the modprobe level?
> 
> With the quirk line I've provided below (and you've already tested).
> 
>>> seem to bork on this. What is the usb-id of your seagate device ?
>>
>> idVendor=0bc2, idProduct=a013
> 
> Hmm, that one does not yet have the US_FL_NO_ATA_1X quirk most seagate
> devices
> seem to need. That is not the problem in your case (probing does not get so
> far that it matters), but this does seem to be one of the devices which
> need
> one looking at the model-name and usb-id. So I'll add a quirk for it to
> help
> out other users.
> 
>>> And can you try with options usb-storage quirks=vendorId:productId:t ?
>>
>> I tried "quirks=vendorId:productId:t" and it failed. The system reported
>> errors when a drive was connected:
> 
> Ok, I already suspected as much, since this seems to be an xhci controller
> problem, not an uas problem.
> 
>>> 21:37:32 kernel: usb 4-1: new SuperSpeed USB device number 2 using
>>> xhci_hcd
>>> 21:37:32 kernel: usb 4-1: New USB device found, idVendor=0bc2,
>>> idProduct=a013
>>> 21:37:32 kernel: usb 4-1: New USB device strings: Mfr=2, Product=3,
>>> SerialNumber=1
>>> 21:37:32 kernel: usb 4-1: Product: Backup+ BK
>>> 21:37:32 kernel: usb 4-1: Manufacturer: Seagate
>>> 21:37:32 kernel: usb 4-1: SerialNumber: XXXXXXXX
>>> 21:37:33 mtp-probe[2777]: checking bus 4, device 2:
>>> "/sys/devices/pci0000:00/0000:00:1c.3/0000:04:00.0/usb4/4-1"
>>> 21:37:33 mtp-probe[2777]: bus: 4, device: 2 was not an MTP device
>>> 21:37:33 kernel: usbcore: registered new interface driver usb-storage
>>> 21:37:33 kernel: scsi host6: uas
>>> 21:37:33 kernel: usbcore: registered new interface driver uas
>>> 21:37:33 kernel: xhci_hcd 0000:04:00.0: ERROR Transfer event for
>>> disabled endpoint or incorrect stream ring
>>> 21:37:33 kernel: xhci_hcd 0000:04:00.0: @00000000368b3570 9067b000
>>> 00000000 05000000 01078001
>>> 21:37:33 kernel: xhci_hcd 0000:04:00.0: ERROR Transfer event for
>>> disabled endpoint or incorrect stream ring
>>> 21:37:33 kernel: xhci_hcd 0000:04:00.0: @00000000368b3580 9067b400
>>> 00000000 05000000 01038001
>>> 21:37:53 kernel: scsi 6:0:0:0: uas_eh_abort_handler ffff88003653ee80
>>> tag -1, inflight: CMD IN
>>> 21:37:53 kernel: xhci_hcd 0000:04:00.0: WARN waiting for error on ep
>>> to be cleared
>>> 21:37:53 kernel: scsi 6:0:0:0: uas_submit_sense_urb ffff88003653ee80
>>> tag -1, inflight: CMD IN abort
>>> 21:37:53 kernel: scsi host6: sense urb submission error -22 stream 32
>>> 21:37:53 kernel: scsi host6: uas_eh_task_mgmt: ABORT TASK: submit
>>> sense urb failed
>>> 21:37:53 kernel: scsi 6:0:0:0: uas_eh_device_reset_handler
>>> 21:37:53 kernel: xhci_hcd 0000:04:00.0: WARN waiting for error on ep
>>> to be cleared
>>> 21:37:53 kernel: scsi 6:0:0:0: uas_submit_sense_urb ffff88003653ee80
>>> tag -1, inflight: CMD IN abort
>>> 21:37:53 kernel: scsi host6: sense urb submission error -22 stream 32
>>> 21:37:53 kernel: scsi host6: uas_eh_task_mgmt: LOGICAL UNIT RESET:
>>> submit sense urb failed
>>> 21:37:53 kernel: scsi host6: uas_eh_bus_reset_handler start
>>> 21:37:53 kernel: usb 4-1: stat urb: killed, stream 1
>>> 21:37:53 kernel: scsi 6:0:0:0: uas_data_cmplt ffff88003653ee80 tag
>>> -1, inflight: CMD abort
>>> 21:37:53 kernel: scsi 6:0:0:0: data cmplt err -2 stream 1
>>> 21:37:53 kernel: scsi 6:0:0:0: uas_zap_dead ffff88003653ee80 tag -1,
>>> inflight: CMD abort
>>> 21:37:53 kernel: scsi 6:0:0:0: abort completed
>>> 21:37:54 kernel: usb 4-1: reset SuperSpeed USB device number 2 using
>>> xhci_hcd
>>> 21:37:54 kernel: xhci_hcd 0000:04:00.0: xHCI xhci_drop_endpoint
>>> called with disabled ep ffff880036a82200
>>> 21:37:54 kernel: xhci_hcd 0000:04:00.0: xHCI xhci_drop_endpoint
>>> called with disabled ep ffff880036a82248
>>> 21:37:54 kernel: xhci_hcd 0000:04:00.0: xHCI xhci_drop_endpoint
>>> called with disabled ep ffff880036a82290
>>> 21:37:54 kernel: xhci_hcd 0000:04:00.0: xHCI xhci_drop_endpoint
>>> called with disabled ep ffff880036a822d8
>>> 21:37:54 kernel: scsi host6: uas_eh_bus_reset_handler success
>>> 21:37:54 kernel: xhci_hcd 0000:04:00.0: ERROR Transfer event for
>>> disabled endpoint or incorrect stream ring
>>> 21:37:54 kernel: xhci_hcd 0000:04:00.0: @00000000368b36c0 9067b800
>>> 00000000 05000000 01078001
>>
>> And crashed when disconnected:
>>
>>> 21:38:17 kernel: usb 4-1: USB disconnect, device number 2
>>> 21:38:17 kernel: usb 4-1: stat urb: status -108
>>> 21:38:17 kernel: scsi 6:0:0:0: uas_disconnect ffff88003653ee80 tag
>>> -1, inflight: CMD
>>> 21:38:17 kernel: scsi 6:0:0:0: uas_zap_dead ffff88003653ee80 tag -1,
>>> inflight: CMD abort
>>
>>
>>> Although the error in this case seems to point to a problem with your
>>> xhci controller rather then with the drive in this case.
>>>
>>> Can you provide the output of lspci -nn please ?
>>
>> Here's the output:
>>> $ lspci -nn | grep USB
>>> 00:1a.0 USB controller [0c03]: Intel Corporation 6 Series/C200 Series
>>> Chipset Family USB Enhanced Host Controller #2 [8086:1c2d] (rev 05)
>>> 00:1d.0 USB controller [0c03]: Intel Corporation 6 Series/C200 Series
>>> Chipset Family USB Enhanced Host Controller #1 [8086:1c26] (rev 05)
>>> 04:00.0 USB controller [0c03]: Fresco Logic FL1000G USB 3.0 Host
>>> Controller [1b73:1000] (rev 04)
> 
> Ah, that is the first time I encounter a Fresco Logic controller, the
> Fresco
> Logic controllers esp. the FL1000G model already have quite a few quirks,
> they were one of the first to market before the spec was fully hashed out
> I believe.
> 
> It seems that all the early generations xhci controllers (except for the
> NEC ones)
> have issues with streams, since there was no OS support for uas yet, so
> they
> could not be tested. At least the early VIA xhci controllers (pci
> product id 0x3432),
> the Etron EJ168 and the Asmedia ASM1042 all suffer from this.
> 
> I'll send a patch upstream adding a XHCI_BROKEN_STREAMS quirk for the
> Fresco Logic FL1000G controller. This will make the kernel automatically
> fall-back to usb-storage for any uas devices attached to such a controller.
> 
> I've also ordered a pci-e addon card for myself to test with a Fresco
> Logic controller. This one will likely have a newer version though, but
> it is good to verify that streams will work on the newer version.
> 
> In the mean time you can keep using the :u quirk as module option as a
> workaround (it does the same thing), note if you use another uas device
> with
> your controller and the current kernel, you will need to add a quirk for
> that device too.

Thanks Hans. I updated the bugzilla ticket to reflect that:
https://bugzilla.redhat.com/show_bug.cgi?id=1164945

Marcin

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux