Sorry for the trouble, I was wrong. I incorrectly diagnosed this as a kernel regression introduced in 6.12.94, problem is in the dock itself.
The "failed to enable CL states" / "failed to enable TMU" / "PCIe tunnel activation failed" messages were a SYMPTOM of the dock's internal tunnel/routing state being stuck after repeated failed re-attach attempts, not the root cause. The actual fix was the cold power-cycle. (An earlier workaround, thunderbolt.clx=0, appeared to help, but it was the power-cycle and not the kernel parameter that restored function. clx=0 is not required.) The kernel was upgraded 6.12.90-2 -> 6.12.94-1 via a package update. A new kernel only takes effect on reboot, so the dock kept working until the next reboot. The trigger was the reboot after the kernel install, not the kernel code. The dock does not reliably re-attach across a warm reboot and needs a coldpower-cycle to reset. Also, I reverted to the kernel 6.12.90 and then back to 6.12.94 and it keeps working in both directions. (In normal day-to-day use this has occurred three times in a row following a kernel update, yet when I deliberately try to reproduce it, the dock works fine) Sorry again Dado 28 Jun 2026, 21:03 by [email protected]: > Control: tags -1 + moreinfo upstream > > On Sun, Jun 28, 2026 at 02:45:36AM +0200, dado wrote: > >> Source: linux >> Version: 6.12.94-1 >> Severity: important >> X-Debbugs-Cc: [email protected] >> >> Dear Maintainer, >> >> Thunderbolt 4 dock stops working completely after upgrading from >> 6.12.90+deb13.1-amd64 to 6.12.94+deb13-amd64. The dock is detected >> and authorized by bolt but all tunnel creation fails, making peripherals >> and laptop charging unavailable. A similar issue has occurred on >> previous kernel upgrades on this machine. >> >> == Hardware == >> >> Machine: Lenovo ThinkPad T16 Gen 4 (21QN001MSC) >> CPU: AMD Ryzen AI 7 PRO 350 w/ Radeon 860M >> TB controller: Intel Thunderbolt 4 Goshen Ridge [8086:0b26] rev 03 >> (PCI 61:00.0 / 62:00.0-04.0) >> Dock: Lenovo ThinkPad Thunderbolt 4 Smart Dock Gen 2 7500 >> (vendor=0x108 device=0x2350) >> >> == Regression range == >> >> Last working kernel: 6.12.90+deb13.1-amd64 >> First broken kernel: 6.12.94+deb13-amd64 >> > > Since you reliably can reproduce the issue and regression, can you > please bisect the changes between 6.12.90 and 6.12.94 upstream to > identify the breaking commit. This will involve compiling and testing > a couple of kernels. > > git clone --single-branch -b linux-6.12.y > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git > cd linux-stable > git checkout v6.12.90 > cp /boot/config-$(uname -r) .config > yes '' | make localmodconfig > make savedefconfig > mv defconfig arch/x86/configs/my_defconfig > > # test 6.12.90 to ensure this is "good" > make my_defconfig > make -j $(nproc) bindeb-pkg > ... install the resulting .deb package and confirm problem does not exist > > # test 6.12.94 to ensure this is "bad" > git checkout v6.12.35 > make my_defconfig > make -j $(nproc) bindeb-pkg > ... install the resulting .deb package and confirm problem exists > > With that confirmed, the bisection can start: > > git bisect start > git bisect good v6.12.90 > git bisect bad v6.12.94 > > In each bisection step git checks out a state between the oldest > known-bad and the newest known-good commit. In each step test using: > > make my_defconfig > make -j $(nproc) bindeb-pkg > ... install, verify if problem exists > > and if the problem is hit run: > > git bisect bad > > and if the problem doesn't trigger run: > > git bisect good > > . Please pay attention to always select the just built kernel for > booting, it won't always be the default kernel picked up by grub. > > Iterate until git announces to have identified the first bad commit. > > Then provide the output of > > git bisect log > > In the course of the bisection you might have to uninstall previous > kernels again to not exhaust the disk space in /boot. Also in the end > uninstall all self-built kernels again. > > Regards, > Salvatore >

