Dell Inspiron 5425 Takes 60 Seconds To Resume From Suspend

ComputerDell Inspiron 5425
CPUAMD Ryzen 5625U (Barcelo)
RAM16GB
SWAP20GB
SSDSK Hynix 512GB BC711 (firmware: 41002131)
BIOS1.2.1
OSUbuntu 22.04
Linux Kernel5.15.0-40-generic

No S3 support and always S0

Because S3 should be fast because it means “suspend to RAM”, and S4 means “suspend to DISC”, so I doubt that this computer always suspends to S4. By running command below, it means this laptop does not have S3 state support and it always suspend to S0 state.

sudo dmesg | grep S0[ 0.417411] ACPI: PM: (supports S0 S4 S5)
sudo cat /sys/power/statefreeze mem disk
sudo cat /sys/power/mem_sleep[s2idle]
sudo journalctl -k | grep "suspend"kernel: PM: suspend entry (s2idle)

Follow best practice to debug suspend

“Best practice to debug Linux* suspend/hibernate issues” is a complete guide to narrow down the problem if possible. So my situation matches “4.8 Long latency during suspend/resume (STI/STR/Hibernation)” so I do whatever it says. I follow this guide to add “initcall_debug no_console_suspend” into boot options and reboot. Disable async suspend by "echo 0 > /sys/power/pm_async". Then suspend with intel/pm-graph tool and this command "./analyze_suspend.py -rtcwake 30 -f -m freeze". After resuming, this tool generates report and it looks like this.

64 seconds to resume
nvme takes 61645.433 ms to resume
Caused by nvme

Dmesg & ftrace logs

dmesg logs:

[  559.976755] nvme 0000:02:00.0: PM: calling pci_pm_resume+0x0/0xf0 @ 3616, parent: 0000:00:01.2
[  592.948075] nvme nvme0: I/O 407 QID 1 timeout, aborting
[  592.948110] nvme nvme0: I/O 408 QID 1 timeout, aborting
[  592.948137] nvme nvme0: I/O 337 QID 11 timeout, aborting
[  592.948153] nvme nvme0: I/O 338 QID 11 timeout, aborting
[  621.620012] nvme nvme0: I/O 6 QID 0 timeout, reset controller
[  621.621983] nvme nvme0: Abort status: 0x371
[  621.621995] nvme nvme0: Abort status: 0x371
[  621.622003] nvme nvme0: Abort status: 0x371
[  621.622011] nvme nvme0: Abort status: 0x371
[  621.622029] PM: dpm_run_callback(): pci_pm_resume+0x0/0xf0 returns -16
[  621.622156] nvme 0000:02:00.0: PM: pci_pm_resume+0x0/0xf0 returned -16 after 61645374 usecs
[  621.622190] nvme 0000:02:00.0: PM: failed to resume: error -16
[  621.622223] mt7921e 0000:03:00.0: PM: calling pci_pm_resume+0x0/0xf0 @ 3616, parent: 0000:00:02.2
[  621.669436] nvme nvme0: 16/0/0 default/read/poll queues

ftrace logs: https://blog-img.artyomliou.ninja/wp-content/uploads/2022/07/ftrace_20220701.txt

Related resources

The thread “NVME fails to reset after resume from sleep on “Lenovo Thinkpad P14s Gen 2 AMD” when IOMMU is enabled” on gitlab shows that "iommu=pt" in boot options could be a workaround, but it does not work for me.

Tried but not working solutions as below:

  • iommu=pt
  • amd_iommu=pt
  • Boot with 5.18 kernel
iommu=ptNot working
amd_iommu=ptNot working
iommu=softNot working
iommu=offNot working, WIFI down
Boot with 5.18 kernelNot working

Response from Dell Support

They said that they wont fix this, because Ubuntu is free to use, not commercial.

References

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *