Worked for a while, now after the kernel 6.16 updates immediately resumes again!
Since we already saw it’s caused by the USB3 ACPI for some reason (xhci_hcd at PCI 0000:00:14.0):
Aug 17 22:43:42 t14-mch kernel: xhci_hcd 0000:00:14.0: PM: pci_pm_suspend(): hcd_pci_suspend returns -16
Aug 17 22:43:42 t14-mch kernel: xhci_hcd 0000:00:14.0: PM: dpm_run_callback(): pci_pm_suspend returns -16
Aug 17 22:43:42 t14-mch kernel: xhci_hcd 0000:00:14.0: PM: failed to suspend async: error -16
Aug 17 22:43:42 t14-mch kernel: PM: Some devices failed to suspend, or early wake event detected
I dont’t need the system to be woken up by something on the USB3 port, so I took more drastic measures and disabled it:
# /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
Result after each boot/resume:
$ cat /proc/acpi/wakeup
Device S-state Status Sysfs node
XHC S3 *disabled pci:0000:00:14.0
Seems to work: suspend, suspend-then-hibernate, hibernate and hybrid-sleep all working for now.
See also: https://wiki.archlinux.org/title/Systemd#systemd-tmpfiles_-_temporary_files
The little things take the most time to fix.