Linux USB
 help / color / mirror / Atom feed
* ucsi_acpi: intermittent "PPM init failed" at boot is never retried, Type-C event handling stays dead for the session
@ 2026-07-25 21:31 Jacob Riff
  2026-08-05 12:11 ` Heikki Krogerus
  0 siblings, 1 reply; 4+ messages in thread
From: Jacob Riff @ 2026-07-25 21:31 UTC (permalink / raw)
  To: linux-usb; +Cc: heikki.krogerus

Hi,

On a Lenovo ThinkPad X1 Carbon Gen 14 (21V7CTO1WW, Panther Lake), UCSI
initialization intermittently fails at boot, and because the failure is
never retried, no typec ports are registered for the rest of the
session. Most visible consequence: after unplugging and replugging the
USB-C charger (a PD monitor), the machine silently never resumes
charging. Notably, DisplayPort alt mode on the same port continues to
work across replugs in this state, and charging does work if the
charger was already attached at boot (EC autonomous) - it is
specifically resumption of charging after a replug that is lost, which
makes the failure easy to miss until the battery is unexpectedly
drained.

Failure rate: 5 of 8 boots on one day of testing. Reproduced on two
firmware versions including the latest (BIOS N4OET49W/1.12 and
N4OET51W/1.14, EC 1.09 and 1.10). No clear correlation with whether
anything is attached at boot: two boots one minute apart with the same
setup split ok/fail.

Kernel: 7.1.4 (Arch Linux, unpatched in this area)

Two failure flavors seen:

  ucsi_acpi USBC000:00: error -ENODEV: PPM init failed

and:

  ucsi_acpi USBC000:00: possible UCSI driver bug 2
  ucsi_acpi USBC000:00: error -EINVAL: PPM init failed

Both appear ~1s after the typec ports bind. On failed boots
/sys/class/typec/ stays empty.

The part that suggests a driver-side improvement: recovery is trivial.
Reloading the module seconds later has succeeded on every attempt so
far (double digits by now):

  modprobe -r ucsi_acpi && sleep 2 && modprobe ucsi_acpi

after which connectors register and charging renegotiates immediately,
no replug needed.

ucsi_init_work() currently only requeues the init work for
-EPROBE_DEFER (up to UCSI_ROLE_SWITCH_WAIT_COUNT). Given that an
immediate retry reliably succeeds here, would it be reasonable to also
retry a few times on other errors (-ENODEV/-EINVAL) before giving up?
The PPM on these machines appears to simply not be ready to answer
during a window around when init runs.

Possibly related prior reports of Lenovo PPMs being slow/unready at
init: the "usb: typec: ucsi: increase timeout for PPM reset operations"
RFC (Feb 2025) and Ubuntu bug #2054928 (ThinkPad E490, -ENODEV).

Happy to test patches on this hardware.

Thanks,
Jacob Riff

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-08-06  2:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-25 21:31 ucsi_acpi: intermittent "PPM init failed" at boot is never retried, Type-C event handling stays dead for the session Jacob Riff
2026-08-05 12:11 ` Heikki Krogerus
2026-08-05 12:46   ` Heikki Krogerus
2026-08-06  2:18     ` Jacob Riff

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox