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

From: Sedat Dilek
Date: Sat Mar 06 2021 - 15:55:30 EST


On Sat, Mar 6, 2021 at 9:38 PM Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote:
>
> On Sat, Mar 6, 2021 at 9:26 PM Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote:
> >
> > On Sat, Mar 6, 2021 at 5:58 PM Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > 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;
> > >
> > >
> >
> > Thanks for the diff, Alan.
> >
> > With an adapted version to fit Linux v5.12-rc2 (see attachment) I see:
> >
> > root@iniza:~# LC_ALL=C dmesg -T | grep 'SCSI ioctl error'
> > [Sat Mar 6 21:16:42 2021] SCSI ioctl error, cmd A1, prog ata_id
> > [Sat Mar 6 21:16:42 2021] SCSI ioctl error, cmd A1, prog ata_id
> > [Sat Mar 6 21:16:45 2021] SCSI ioctl error, cmd A1, prog ata_id
> > [Sat Mar 6 21:17:07 2021] SCSI ioctl error, cmd A1, prog ata_id
> > [Sat Mar 6 21:17:07 2021] SCSI ioctl error, cmd A1, prog ata_id
> > [Sat Mar 6 21:17:12 2021] SCSI ioctl error, cmd 85, prog hdparm
> > [Sat Mar 6 21:17:12 2021] SCSI ioctl error, cmd 85, prog hdparm
> > [Sat Mar 6 21:17:13 2021] SCSI ioctl error, cmd 85, prog hdparm
> > [Sat Mar 6 21:17:13 2021] SCSI ioctl error, cmd 85, prog hdparm
> > [Sat Mar 6 21:17:13 2021] SCSI ioctl error, cmd 85, prog hdparm
> > [Sat Mar 6 21:17:14 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:14 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:14 2021] SCSI ioctl error, cmd A1, prog ata_id
> > [Sat Mar 6 21:17:14 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:15 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:16 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:18 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:18 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:18 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:18 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:18 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:19 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:19 2021] SCSI ioctl error, cmd 85, prog smartd
> > [Sat Mar 6 21:17:21 2021] SCSI ioctl error, cmd A1, prog ata_id
> > [Sat Mar 6 21:17:21 2021] SCSI ioctl error, cmd A1, prog ata_id
> > [Sat Mar 6 21:17:22 2021] SCSI ioctl error, cmd 85, prog hdparm
> > [Sat Mar 6 21:17:22 2021] SCSI ioctl error, cmd 85, prog hdparm
> > [Sat Mar 6 21:17:22 2021] SCSI ioctl error, cmd A1, prog ata_id
> > [Sat Mar 6 21:17:22 2021] SCSI ioctl error, cmd 85, prog hdparm
> > [Sat Mar 6 21:17:22 2021] SCSI ioctl error, cmd 85, prog hdparm
> > [Sat Mar 6 21:17:22 2021] SCSI ioctl error, cmd 85, prog hdparm
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:28 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:30 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:30 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:34 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:35 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:35 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:35 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:36 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:36 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:36 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:36 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:36 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:37 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:37 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:37 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:38 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:38 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:17:38 2021] SCSI ioctl error, cmd 85, prog udisksd
> > [Sat Mar 6 21:17:39 2021] SCSI ioctl error, cmd A1, prog pool-udisksd
> > [Sat Mar 6 21:17:39 2021] SCSI ioctl error, cmd A1, prog pool-udisksd
> > [Sat Mar 6 21:17:39 2021] SCSI ioctl error, cmd A1, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd A1, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:17:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd
> > [Sat Mar 6 21:18:55 2021] SCSI ioctl error, cmd 85, prog smartctl
> > [Sat Mar 6 21:18:56 2021] SCSI ioctl error, cmd 85, prog smartctl
> > [Sat Mar 6 21:18:56 2021] SCSI ioctl error, cmd 85, prog smartctl
> >
> > My linux-config and full dmesg-log are attached.
> >
>
> Checking dmesg again...
>
> So, this is pool-udisksd (cmd A1 and 85) and smartctl (cmd 85) causing
> regular xhci-resets.
>
> SCSI ioctl error, cmd 85, prog smartctl
>
> SCSI ioctl error, cmd A1, prog pool-udisksd
> SCSI ioctl error, cmd 85, prog pool-udisksd
>

For testing purposes, I stopped these systemd services:

1. systemctl stop smartmontools.service

2. systemctl stop udisks2.service

Last seen xhci-reset:

[Sat Mar 6 21:37:40 2021] SCSI ioctl error, cmd 85, prog pool-udisksd

So, that every 10min xhci-reset was caused by pool-udisksd from udisks2.service.

- Sedat -