Dear Maintainer,
There is issues when I connect and disconnect my laptop to/from
dockstation.
Machine details:
- Lenovo ThinkPad P16s AMD
- UEFI: R3HET21W (1.07)
- Linux p16s 7.2.9+deb14-amd64 #1 SMP PREEMPT_DYNAMIC Debian 7.2.9-1 (2026-10-03) x86_64 GNU/Linux
- Dockstation: Lenovo Thunderbolt 5 Smart
- All firmware are up to date
Use case 1:
1. connect laptop to a dockstation (usb-c)
2. send laptop sleep (suspend to ram)
3. disconnect laptop from dockstation
Expected: nothing happens
Actual:
1. Notebook wakes up
2. Screen immediately black
3. OS hangs completely
4. CPU 100%, overheating.
Only hold power button for 10 sec helps (hard power off)
Use case 2:
I gave up on case 1 as it always fail. The only annoying workflow works for me now:
1. connect laptop to a dockstation (usb-c)
2. send laptop sleep (suspend to ram)
3. wake up laptop
4. wait 10 sec to it initialize properly
5. disconnect usb-c
6. wait 10 sec to it handle everything properly
7. send laptop sleep (suspend to ram)
But 1 of 5 it still fail:
8. Laptop hangs for a 20 sec, no sleep, black screen
9. Wakes up
Nothing will help from this point. lsusb -t hangs.
Laptop is not going to sleep ever. And reboot will not help: when rebooting,
kernel just hangs somewhere in the "before reboot" step forever. Only hard power off.
Logs I could get:
[304219.195412] PM: suspend entry (s2idle)
[304219.215616] Filesystems sync: 0.020 seconds
[304219.221001] Freezing user space processes
[304219.238269] Freezing user space processes completed (elapsed 0.017 seconds)
[304219.238294] OOM killer disabled.
[304219.238296] Freezing remaining freezable tasks
[304239.242589] Freezing remaining freezable tasks failed after 20.004 seconds (0 tasks refusing to freeze, wq_busy=1):
[304239.242616] Showing freezable workqueues that are still busy:
[304239.242620] workqueue events_freezable: flags=0x104
[304239.242623] pwq 6: cpus=1 node=0 flags=0x0 nice=0 active=0 refcnt=2
[304239.242632] inactive: pci_pme_list_scan
[304239.242651] workqueue usb_hub_wq: flags=0x104
[304239.242654] pwq 82: cpus=20 node=0 flags=0x0 nice=0 active=1 refcnt=2
[304239.242659] in-flight: 663195:hub_event [usbcore] for 224s
[304239.242784] Restarting kernel threads ...
[304239.242892] Done restarting kernel threads.
[304239.243744] OOM killer enabled.
[304239.243745] Restarting tasks: Starting
[304239.244415] Restarting tasks: Done
[304239.244505] efivarfs: resyncing variable state
[304239.294689] efivarfs: finished resyncing variable state
[304239.294739] random: crng reseeded on system resumption
[304239.320885] PM: suspend exit
And details on task:
[304951.600995] INFO: task kworker/20:1:663195 blocked for more than 845 seconds.
[304951.601016] Tainted: G X 7.2.9+deb14-amd64 #1 Debian 7.2.9-1
[304951.601020] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[304951.601023] task:kworker/20:1 state:D stack:0 pid:663195 tgid:663195 ppid:2 task_flags:0x4208060 flags:0x00080000
[304951.601034] Workqueue: usb_hub_wq hub_event [usbcore]
[304951.601075] Call Trace:
[304951.601078] <TASK>
[304951.601085] __schedule+0x4c5/0x1070
[304951.601099] schedule+0x27/0xa0
[304951.601102] schedule_timeout+0xdc/0x120
[304951.601107] wait_for_completion+0x9e/0x170
[304951.601112] xhci_configure_endpoint+0x189/0x590 [xhci_hcd]
[304951.601136] xhci_check_bandwidth+0x19e/0x410 [xhci_hcd]
[304951.601150] ? xhci_drop_endpoint+0x1ae/0x340 [xhci_hcd]
[304951.601163] usb_hcd_alloc_bandwidth+0x25e/0x480 [usbcore]
[304951.601195] usb_disable_device_endpoints+0x86/0xe0 [usbcore]
[304951.601211] usb_disconnect+0xef/0x320 [usbcore]
[304951.601239] hub_quiesce+0x75/0x100 [usbcore]
[304951.601265] hub_event+0x817/0x1960 [usbcore]
[304951.601284] ? psi_task_switch+0x1fa/0x3b0
[304951.601292] ? finish_task_switch.isra.0+0xc3/0x3d0
[304951.601300] ? __schedule+0x4cd/0x1070
[304951.601303] process_one_work+0x19e/0x370
[304951.601309] worker_thread+0x1a6/0x310
[304951.601312] ? __pfx_worker_thread+0x10/0x10
[304951.601315] kthread+0xe4/0x120
[304951.601319] ? __pfx_kthread+0x10/0x10
[304951.601321] ret_from_fork+0x2b1/0x340
[304951.601329] ? __pfx_kthread+0x10/0x10
[304951.601330] ret_from_fork_asm+0x1a/0x30
[304951.601339] </TASK>
Expected, that even though external hardware could be crappy, disconnecting it should not lead to a broken kernel state.