[Bug 221822] tb-retry.patch (against drivers/thunderbolt/tb.c): makes USB4 link setup resilient to transient sideband failures on AMD hosts with slow-to-ready device routers.

[email protected] Sun, 02 Aug 2026 11:34:58 +0000
Newsgroups org.kernel.vger.linux-usb
Message-ID <[email protected]/>
https://bugzilla.kernel.org/show_bug.cgi?id=221822

--- Comment #1 from j. james johnson ([email protected]) ---
The 3-site retry patch (CL2→CL0s/CL1 fallback on *any* CL-enable error; 3×
retry with 100/200/300 ms backoff on
`tb_enable_clx`/`tb_enable_tmu`/`tb_tunnel_usb3`/`tb_tunnel_activate`) was
ported to the **shipping distro kernel `7.0.14-8-pve`** (pve-kernel build with
patch applied as `patches/kernel/0052-...`) and is now the daily driver on this
host. Results correct the original report:

- **Boot-attached hub self-recovers after ~2 failed cycles (~252 s) — no
hotplug.** This invalidates the report's claim that boot-attached USB3 tunnel
creation is a hard failure point requiring a device reset. 

- **CL-state and TMU failures eliminated** — the CL2→CL0s/CL1 fallback absorbs
them.
- **The link lane-bonds at 40 Gb/s** on the successful cycle (`link width set
to symmetric, dual lanes`) — the original Summary's "never bonds" is wrong;
bonding occurs whenever lane 1 trains in time, and the retries keep the session
alive long enough for that to happen.
- **New errno data:** the winning cycle logged `PCIe Down path activation
failed: -13` (EACCES) twice before succeeding, alongside the `-107` (ENOTCONN)
seen on failing cycles. Both are transient sideband/port-state races during
device-router enumeration; retry recovers both.
- **BIOS excluded:** flashed board BIOS 1.06 (which adds a retimer GPIO-detect
change). Retimer sideband reads unchanged — lane-0 NVM still all-zeros, lane-1
retimer still never responds. Firmware is not the active variable; tracked
separately with the board vendor.
- 5 HDDs + PCIe/USB3 devices stable under sustained load (I/O at platter speed)

Open, load-tested asks to restate to upstream when the thread is next touched:
(a) retry-with-backoff on transient CL/TMU/USB3/PCIe-path-activation failures;
(b) CL2→CL0s/CL1 fallback on any CL-enable error, not just `-EOPNOTSUPP`; (c)
re-attempt `tb_switch_set_link_width(DUAL)` when the second lane reaches
`TB_PORT_UP` late — single-lane sessions still occur on cycles where lane 1
trains after the initial bonding attempt.

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.