Thunderbolt 3 Dock, USB issues when undocking then docking

From: Juergen Stuber
Date: Tue Sep 07 2021 - 19:29:00 EST


Greetings!

In Linux versions 5.10-rc1 or newer (exact bisect see below) I have
issues when I undock and then dock my Thunderbolt 3 dock.
Afterwards I see

- log messages like "retire_capture_urb: 571 callbacks suppressed"
(always)
- audio glitches when playing audio via the dock on USB speakers
(almost always)
- keyboard events are lost on a dock-connected keyboard (sometimes)

I tested this by undocking, waiting a short while, then redocking, and
after that playing audio via USB speakers connected to the dock.
It seems to be deterministic, that is, in affected kernels it seems to
happen on every undock-dock cycle.

This is a Thinkpad T14 Gen1 Intel (20S0000HGE) and
a Thinkpad Thunderbolt 3 Dock Gen2 (40AN / SD20M70247),
the USB speakers are Logitech Z-10,
the distribution is Debian bullseye.

I bisected the issue, this pointed to the first bad commit

726eb70e0d34 Merge tag 'char-misc-5.10-rc1' of
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc

Since that was a big merge and thus not too helpful, I bisected the two
branches that were merged. That is, I bisected one branch and merged
into the head of the other branch and tested the merge.
On char-misc this pointed to

7c33e3c4c79a misc: rtsx: Add power saving functions and fix driving
parameter

The affected driver is in use for a device in my system:
02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd.
RTS522A PCI Express Card Reader [10ec:522a] (rev 01)

Log output:
[ 1.179205] rtsx_pci 0000:02:00.0: enabling device (0000 -> 0002)

On the mainline side the bisect points to

edc649a82341 xhci: Tune interrupt blocking for isochronous transfers


I tried to revert each of these, but that was not easily possible.


RedHat has a bug report about this issue:
https://bugzilla.redhat.com/show_bug.cgi?id=1951372

Please ask if you need more info or testing.


Jürgen

--
Jürgen Stuber <juergen@xxxxxxxxxxx>
http://www.jstuber.net/