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

From: Alan Stern
Date: Sat Mar 06 2021 - 11:59:57 EST


On Sat, Mar 06, 2021 at 07:42:30AM +0100, Sedat Dilek wrote:
> No, with Debian-Kernel 5.10.19-1 there are no xhci-resets:

Is the kernel the only thing that is different? The rest of the
operating system and environment is exactly the same?

> But I see there is already a quirk enabled and matches my ASmedia USB
> 3.0 controller (as I have *no* usb-storage-quirks enabled):
>
> root# LC_ALL=C dmesg -T | grep -i quirks | egrep '174c|55aa'
> [Sat Mar 6 06:52:41 2021] usb-storage 4-1:1.0: Quirks match for vid
> 174c pid 55aa: 400000

Yes, this is because that type of device already has a quirk entry built
into the kernel. You can find it by searching for "174c" in the kernel
source file drivers/usb/storage/unusual_devs.h.

> Thanks Alan for all the hints and tips in the topic "usb-storage and
> quirks" and your patience.

You can try building a 5.11 kernel with the patch below. I don't know
whether it will show anything in the dmesg log when one of these resets
occurs, but it might.

If that doesn't work out, another possibility is to use git bisect to
find the commit between 5.10 and 5.11 which caused the problem to start.

Alan Stern


--- usb-devel.orig/block/scsi_ioctl.c
+++ usb-devel/block/scsi_ioctl.c
@@ -258,8 +258,11 @@ static int blk_complete_sghdr_rq(struct
hdr->host_status = host_byte(req->result);
hdr->driver_status = driver_byte(req->result);
hdr->info = 0;
- if (hdr->masked_status || hdr->host_status || hdr->driver_status)
+ if (hdr->masked_status || hdr->host_status || hdr->driver_status) {
hdr->info |= SG_INFO_CHECK;
+ printk(KERN_INFO "SCSI ioctl error, cmd %02X, prog %s\n",
+ req->cmd[0], current->comm);
+ }
hdr->resid = req->resid_len;
hdr->sb_len_wr = 0;