GPD win max 2 AMD 7840u s2idle suspend inconsistency + suspend power drain + frequency stuck at 544mhz
Brief summary of the problem:
To make suspend partially work I have to disable some acpi wakeup triggers first:
w=( GPP6 GPP7 ); for i in ${w[@]}; do echo $i > /proc/acpi/wakeup; done
After that I can suspend my laptop, it's LED will pulsate like it's suspended and screen is off.
But I have several problems:
- cpu fan is still working all the time even on suspend, laptop is warm (and continues to heat, I can't put in into backpack, or it will be really hot there)
- power drain is huge, it's nearly 5-10W (or 10-15% of battery drain per hour)
- laptop may wake up randomly by itself (I've got it in s2idle.py below)
- after wake up CPU frequency MAY be stuck below 544mhz (usually after at least 1hour in sleep state) (I've got lucky nearly once in a month and don't have frequency stuck problem until next reboot)
I've tried to remove TLP and use power-profiles-daemon but it didn't help.
Here are s2idle.py output exactly when frequency was stuck:
Location of log file (default s2idle_report-2023-12-24.txt)?
Debugging script for s2idle on AMD systems
💻 GPD G1619-04 (Game machining Series 28P) running BIOS 0.35 (0.35) released 09/12/2023 and EC 0.14
🐧 Debian GNU/Linux trixie/sid
🐧 Kernel 6.5.0-5-amd64
🔋 Battery BAT0 (Standard SR Real Battery) is operating at 101.26% of design
Checking prerequisites for s2idle
🚦Logs are provided via dmesg, timestamps may not be accurate over multiple cycles
✅ AMD Ryzen 7 7840U w/ Radeon 780M Graphics (family 19 model 74)
✅ LPS0 _DSM enabled
✅ ACPI FADT supports Low-power S0 idle
✅ HSMP driver `amd_hsmp` not detected (blocked: False)
✅ PMC driver `amd_pmc` loaded (Program 0 Firmware 76.65.0)
✅ USB4 driver `thunderbolt` loaded
✅ GPU driver `amdgpu` available
✅ System is configured for s2idle
✅ NVME MAXIO Technology (Hangzhou) Ltd. NVMe SSD Controller MAP1602 is configured for s2idle in BIOS
✅ GPIO driver `pinctrl_amd` available
How long should suspend cycles last in seconds (default 10)? 0
How long to wait in between suspend cycles in seconds (default 4)?
How many suspend cycles to run (default 1)?
Started at 2023-12-24 11:35:26.642661 (cycle finish expected @ 2023-12-24 11:35:30.642708)
Results from last s2idle cycle
○ Suspend count: 1
○ Hardware sleep cycle count: 1
○ GPIOs active: ['0', '58']
○ Wakeups triggered from IRQs: [7, 35]
❌ ACPI BIOS errors found
○ Woke up from IRQ 7 (IR-IO-APIC 7-fasteoi pinctrl_amd)
○ gpe0B increased from 0 to 2
○ gpe10 increased from 0 to 1
○ gpe19 increased from 0 to 1
✅ Userspace suspended for 1:06:08.909947
❌ In a hardware sleep state for 0:11:29.748311 (17.38%)
🔋 Battery BAT0 (Standard SR Real Battery) is operating at 101.26% of design
Explanations for your system
🚦 ACPI BIOS Errors detected
When running a firmware component utilized for s2idle
the ACPI interpreter in the Linux kernel encountered some
problems. This usually means it's a bug in the system BIOS
that should be fixed the system manufacturer.
You may have problems with certain devices after resume or high
power consumption when this error occurs.
2023-12-24T12:38:58,534549+03:00 ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.GPP6._PRW], AE_ALREADY_EXISTS (20230331/dswload2-326) 2023-12-24T12:38:58,534559+03:00 ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20230331/psobject-220) 2023-12-24T12:38:58,534571+03:00 ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.GPP6.WLAN._S0W], AE_ALREADY_EXISTS (20230331/dswload2-326) 2023-12-24T12:38:58,534577+03:00 ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20230331/psobject-220) 2023-12-24T12:38:58,534585+03:00 ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.GPP7._PRW], AE_ALREADY_EXISTS (20230331/dswload2-326) 2023-12-24T12:38:58,534590+03:00 ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20230331/psobject-220) 2023-12-24T12:38:58,534597+03:00 ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.GPP7.DEV0._S0W], AE_ALREADY_EXISTS (20230331/dswload2-326) 2023-12-24T12:38:58,534603+03:00 ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20230331/psobject-220)
🚦 System had low hardware sleep residency
The system was asleep for 1:06:08.909947, but only spent 17.38%
of this time in a hardware sleep state. In sleep cycles that are at least
60 seconds long it's expected you spend above 90 percent of the cycle in hardware sleep.
Hardware description:
- GPD win max 2 (2023) AMD phoenix 7840u 64GB RAM, BIOS 0.35 (latest)
- amd_s2idle report:s2idle_report-2023-12-24.txt
System information:
- Distro name and Version: Debian testing (Trixie), fully updated 2023-12-22
- Kernel version: Linux 6.5.0-5-amd64 #1 (closed) SMP PREEMPT_DYNAMIC Debian 6.5.13-1 (2023-11-29) x86_64 GNU/Linux (I've had this problem at least since kernel 6.2-6.3 when I bought this laptop)
- minor: I use ZFS for root FS, it should not be important but FWIW
How to reproduce the issue:
- disable some acpi wakeups (otherwise it will wake up instantly)
w=( GPP6 GPP7 ); for i in ${w[@]}; do echo $i > /proc/acpi/wakeup; done
- add
rtc_cmos.use_acpi_alarm=1
into kernel boot params because s2idle.py said about it in my previous runs - just suspend and wait ~1hour, laptop may wake up by itself too
Feel free to pinpoint me how can I debug this, thank you!
Edited by George Melikov