Re: [xhci] usb 4-1: reset SuperSpeed Gen 1 USB device number 2 using xhci_hcd

From: Alan Stern
Date: Fri Mar 05 2021 - 11:08:30 EST


On Fri, Mar 05, 2021 at 01:09:16PM +0100, Sedat Dilek wrote:
> On Mon, Mar 1, 2021 at 4:53 PM Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> [ ... ]
> > You can use usbmon on bus 4 to record the USB traffic. It may indicate
> > why the resets occur.
> >
>
> Hi Alan,
>
> I followed the instructions in [1].
>
> root# modprobe -v usbmon
>
> root# ls /sys/kernel/debug/usb/usbmon
> 0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u
>
> root# cat /sys/kernel/debug/usb/usbmon/4u > /tmp/usbmon-log_4u.txt
> [ Ctrl+C ]
>
> I recorded 13:03 - 13:04 (one minute).
>
> So these xhci-resets should be included:
>
> [Fri Mar 5 13:03:07 2021] usb 4-1: reset SuperSpeed Gen 1 USB device
> number 2 using xhci_hcd
> [Fri Mar 5 13:03:07 2021] usb 4-1: reset SuperSpeed Gen 1 USB device
> number 2 using xhci_hcd
> [Fri Mar 5 13:03:27 2021] usb 4-1: reset SuperSpeed Gen 1 USB device
> number 2 using xhci_hcd
> [Fri Mar 5 13:03:27 2021] usb 4-1: reset SuperSpeed Gen 1 USB device
> number 2 using xhci_hcd
> [Fri Mar 5 13:03:27 2021] usb 4-1: reset SuperSpeed Gen 1 USB device
> number 2 using xhci_hcd
> [Fri Mar 5 13:03:28 2021] usb 4-1: reset SuperSpeed Gen 1 USB device
> number 2 using xhci_hcd
> [Fri Mar 5 13:03:28 2021] usb 4-1: reset SuperSpeed Gen 1 USB device
> number 2 using xhci_hcd
>
> The usbmon-log is attached.
>
> Unsure how to interpret the log - the kernel-doc says `raw data`.
> How can I bring this into a human-readable format?
> Can you give me a hand?

Don't worry about trying to decode the output. To me it looks like the
drive crashes and needs to be reset at times when the computer sends it
an ATA command. (Not all ATA commands, but some.) You can prevent this
by setting the following module parameter for the usb-storage driver:

quirks=174c:55aa:t

where the two numbers are the Vendor and Product IDs for the external
drive, and the 't' is a quirks flag saying not to use any ATA commands.
If this module parameter fixes the problem, we can add a permanent quirk
setting to the kernel.

Alan Stern