Suspend not working (immediate resume) on my Thinkpad T14 after updates (starting 2025-08)

This is going to become a never-ending story

After updating to kernel 6.16.1-arch1-1 lately, suspend fails again!

Reason:

  • Apparently they’re doing the XHC (xhci_hcd) ACPI wakeup right now (i.e. wakeup is disabled per default):
    $ cat /proc/acpi/wakeup 
    Device	S-state	  Status   Sysfs node
    XHC	  S3	*disabled  pci:0000:00:14.0
    
  • But writing “XHC” to /proc/acpi/wakeup is a toggle, so…
  • …my /etc/tmpfiles.d/disable-usb-wake.conf enables wakeup again:
    $ cat /etc/tmpfiles.d/disable-usb-wake.conf.sav 
    # /etc/tmpfiles.d/disable-usb-wake.conf
    # Disable PCI 14.0 XHC USB wakeup (prevents suspending)
    
    #    Path                  Mode UID  GID  Age Argument
    w    /proc/acpi/wakeup     -    -    -    -   XHC
    
  • …which promptly leads to a suspend failure:
    Aug 20 05:45:50 t14-mch kernel: xhci_hcd 0000:00:14.0: PM: pci_pm_suspend(): hcd_pci_suspend returns -16
    Aug 20 05:45:50 t14-mch kernel: xhci_hcd 0000:00:14.0: PM: dpm_run_callback(): pci_pm_suspend returns -16
    Aug 20 05:45:50 t14-mch kernel: xhci_hcd 0000:00:14.0: PM: failed to suspend async: error -16
    Aug 20 05:45:50 t14-mch kernel: PM: Some devices failed to suspend, or early wake event detected
    

Arrrrgggh!

Solution:

  • Remove /etc/tmpfiles.d/disable-usb-wake.conf again (or rename to .conf.bak, just in case).

Suspend working again… (until the next upgrade…?)

On the positive side: Suspend should work on more systems “out-of-the-box”, which is a good thing for the average Joe & Jane.

@MyNameIsRichard: You might now also have to revert your unit, since it effectively does the same thing…

Note: Changed thread title to be more meaningful.