Public bug reported:
[Impact]
On some boots, suspend freezes for 13-17 s on HP systems (CID: 202512-38218)
with an Intel Panther Lake xHCI controller (8086:e37d). Nothing is plugged into
the USB ports.
Firmware leaves the SuperSpeed root port usb4-port2 stuck in
SS.Inactive/Polling. After resume, the hub keeps retrying the port. Each
suspend logs:
usb usb4-port2: attempt power cycle
usb usb4-port2: Cannot enable. Maybe the USB cable is bad?
Freezing remaining freezable tasks completed (elapsed 15.632 seconds)
The cable message is wrong here, since no cable is attached.
On bad boots this hits every suspend. On good boots there is no message.
On some boots the message shows once, after the first suspend, with no
stall.
[Fix]
Stop the hub port enumeration retries while the system is freezing. The check
runs at the top of each retry and before the mid-loop port power cycle. The
port keeps its change bit set, so the hub checks it again on resume.
Enumeration outside of system sleep does not change.
The check is only built when usbcore is built-in (CONFIG_USB=y, as in
Ubuntu kernels). When usbcore is a module, the check always returns
false.
This does not fix the stuck link. The root cause is firmware. The patch
only keeps the stuck port from blocking suspend.
This is an Ubuntu SAUCE patch. No upstream commit fixes the stuck port.
[Test Plan]
Reproducer, run on the affected unit with nothing connected to the USB ports:
1. Boot the image.
2. Run suspend cycles: fwts s3 --s3-multiple=10 (or checkbox suspend-30-cycles).
3. After resume, check dmesg for usb4-port2 messages and for the freeze time
("Freezing remaining freezable tasks completed (elapsed N seconds)").
Without the patch (reproduced on 2026-10-22):
- 7.0.0-1016-oem: 3 runs of 10 suspends. Every suspend logged both usb4-port2
messages. Freeze stalls of about 7-15 s.
- 7.3.0-1003-oem: 3 runs of 10 suspends. Nearly every suspend logged both
messages (about 28 of 30 stalled). Freeze stalls of 13-17 s.
- Upstream mainline 7be4bc52fd9e: 30 suspends. 29 of 30 logged both messages.
27 of 30 stalled for 13-17 s.
With the patch: the test on the affected unit has not been run yet.
Expected result: the freeze completes in well under 2 s. The usb4-port2
messages may still appear after resume, since the port is checked again
then.
[Where problems could occur]
Could break USB device enumeration after system sleep, in
drivers/usb/core/hub.c. If the check fires for a device plugged in during the
freeze, that device is only enumerated on resume. If the change bit is not
handled, a port could stay unprocessed until the next hub event. The symptom
would be a USB device missing after resume (not shown in lsusb). The check is
compiled only when usbcore is built-in, so modular usbcore builds see no change.
[Other Info]
Ubuntu SAUCE patch, not sent upstream. Target series: oem-7.0. The stuck link
needs a firmware fix from the vendor. Upstream hub commits 6df47500b557,
29480b05e6e2, b84cc80610a8 and 8020c41b39f5 are not part of this patch.
** Affects: hwe-next
Importance: Undecided
Status: New
** Affects: linux-oem-7.0 (Ubuntu)
Importance: Undecided
Status: New
** Tags: jira-stella-4299 oem-priority resolute stella
** Tags added: jira-stella-4299 oem-priority stella
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2171919
Title:
USB hub retries stall suspend freeze 13-17s on empty root port
To manage notifications about this bug go to:
https://bugs.launchpad.net/hwe-next/+bug/2171919/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs