Your system information
- Steam client version: 1776387948
- SteamOS version: 3.8.2 Beta
- Kernel version: 6.16.12-valve14-1-neptune-616-g4f70fa45dc69
- Opted into Steam client beta?: Yes
- Opted into SteamOS beta?: Yes
- Have you checked for updates in Settings > System?: Yes
Please describe your issue in as much detail as possible:
Expected Behavior:
After waking up from sleep (suspend), all CPU cores should preserve their energy_performance_preference (EPP) setting. For the Steam Deck using the amd-pstate-epp driver in "active" mode, the default should be balance_performance across all cores.
Actual Behavior:
Upon resume, only CPU0 retains the balance_performance setting. All other cores (CPU1-CPU7) are automatically reset to performance. This leads to higher power consumption and heat than expected after a sleep cycle.
I have verified this behavior using a custom debug script in /usr/lib/systemd/system-sleep/. The logs clearly show the state transition:
- Pre-suspend: All 8 cores are at
balance_performance.
- Post-resume: CPU0 is at
balance_performance, but CPU1 through CPU7 are at performance.
This seems to be a regression or a known issue in recent Linux kernels (6.16+).
Steps for reproducing this issue:
- Boot Steam Deck (SteamOS 3.8 Beta).
- Check EPP status:
cat /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference (All should be balance_performance).
- Put the device to sleep (Suspend).
- Wake the device.
- Check EPP status again. You will observe that only cpu0 is correct, while cpu1-7 have switched to
performance.
debug script
sudo tee /usr/lib/systemd/system-sleep/00-log-epp >/dev/null <<'EOF'
#!/bin/sh
LOG=/tmp/epp-resume.log
dump_state() {
echo "=== $1 @ $(date '+%F %T.%N %Z') ===" >> "$LOG"
echo "--- scaling_driver ---" >> "$LOG"
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver 2>/dev/null >> "$LOG"
echo "--- amd_pstate status ---" >> "$LOG"
cat /sys/devices/system/cpu/amd_pstate/status 2>/dev/null >> "$LOG"
echo "--- governors ---" >> "$LOG"
for g in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
printf "%s = %s\n" "$g" "$(cat "$g" 2>/dev/null)" >> "$LOG"
done
echo "--- epp ---" >> "$LOG"
for f in /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference; do
printf "%s = %s\n" "$f" "$(cat "$f" 2>/dev/null)" >> "$LOG"
done
echo >> "$LOG"
}
case "$1" in
pre) dump_state "PRE-SUSPEND" ;;
post) dump_state "POST-RESUME" ;;
esac
EOF
sudo chmod +x /usr/lib/systemd/system-sleep/00-log-epp
debug logs
cat /tmp/epp-resume.log
=== PRE-SUSPEND @ 2026-04-19 16:10:49.650911703 ===
--- scaling_driver ---
amd-pstate-epp
--- amd_pstate status ---
active
--- governors ---
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu4/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu5/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu6/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu7/cpufreq/scaling_governor = powersave
--- epp ---
/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference = balance_performance
/sys/devices/system/cpu/cpu1/cpufreq/energy_performance_preference = balance_performance
/sys/devices/system/cpu/cpu2/cpufreq/energy_performance_preference = balance_performance
/sys/devices/system/cpu/cpu3/cpufreq/energy_performance_preference = balance_performance
/sys/devices/system/cpu/cpu4/cpufreq/energy_performance_preference = balance_performance
/sys/devices/system/cpu/cpu5/cpufreq/energy_performance_preference = balance_performance
/sys/devices/system/cpu/cpu6/cpufreq/energy_performance_preference = balance_performance
/sys/devices/system/cpu/cpu7/cpufreq/energy_performance_preference = balance_performance
=== POST-RESUME @ 2026-04-19 16:10:56.639612150 ===
--- scaling_driver ---
amd-pstate-epp
--- amd_pstate status ---
active
--- governors ---
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu4/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu5/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu6/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu7/cpufreq/scaling_governor = powersave
--- epp ---
/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference = balance_performance
/sys/devices/system/cpu/cpu1/cpufreq/energy_performance_preference = performance
/sys/devices/system/cpu/cpu2/cpufreq/energy_performance_preference = performance
/sys/devices/system/cpu/cpu3/cpufreq/energy_performance_preference = performance
/sys/devices/system/cpu/cpu4/cpufreq/energy_performance_preference = performance
/sys/devices/system/cpu/cpu5/cpufreq/energy_performance_preference = performance
/sys/devices/system/cpu/cpu6/cpufreq/energy_performance_preference = performance
/sys/devices/system/cpu/cpu7/cpufreq/energy_performance_preference = performance
Additional context
This issue seems to be a known regression in the Linux kernel affecting AMD EPP persistence. Similar behavior has been reported by other users here: Reddit.
It appears that this issue is addressed in the upstream kernel by the following commit: cpufreq/amd-pstate: Fix EPP being reset on resume.
Your system information
Please describe your issue in as much detail as possible:
Expected Behavior:
After waking up from sleep (suspend), all CPU cores should preserve their energy_performance_preference (EPP) setting. For the Steam Deck using the amd-pstate-epp driver in "active" mode, the default should be
balance_performanceacross all cores.Actual Behavior:
Upon resume, only CPU0 retains the
balance_performancesetting. All other cores (CPU1-CPU7) are automatically reset toperformance. This leads to higher power consumption and heat than expected after a sleep cycle.I have verified this behavior using a custom debug script in
/usr/lib/systemd/system-sleep/. The logs clearly show the state transition:balance_performance.balance_performance, but CPU1 through CPU7 are atperformance.This seems to be a regression or a known issue in recent Linux kernels (6.16+).
Steps for reproducing this issue:
cat /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference(All should bebalance_performance).performance.debug script
debug logs
Additional context
This issue seems to be a known regression in the Linux kernel affecting AMD EPP persistence. Similar behavior has been reported by other users here: Reddit.
It appears that this issue is addressed in the upstream kernel by the following commit: cpufreq/amd-pstate: Fix EPP being reset on resume.