Problem
After suspend/resume, all CPU cores get stuck at ~600 MHz (the lowest P-state) and won’t scale up, even under full load. The system becomes extremely sluggish.
Key observation: The issue persists across normal reboots. A standard reboot does NOT fix it - the throttle state is stored in firmware/EC.
System Info
- Laptop: Framework Laptop 16 (AMD Ryzen AI 300 Series)
- CPU: AMD Ryzen AI 9 HX 370
- BIOS: 3.04
- OS: Arch Linux (CachyOS kernel 6.18.4)
- Date: 2026-01-12
Symptoms
- All 24 cores locked at ~600 MHz
amd-pstate-eppdriver reports incorrect hardware limits (605 MHz - 3.29 GHz instead of full range)- System is painfully slow - even the BIOS menu runs slowly
- Governor set to “performance” has no effect
- Platform profile set to “performance” has no effect
- Issue persists across reboots
How to Check
# Check if stuck (all cores should NOT be at ~600MHz)
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq | sort -n | uniq -c
# Check driver
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver
# Full info
sudo cpupower frequency-info
When stuck, you’ll see output like:
driver: amd-pstate-epp
hardware limits: 605 MHz - 3.29 GHz
current CPU frequency: 603 MHz
Solution: EC Reset
Hold the power button for 10+ seconds while the laptop is completely off.
Steps:
- Shut down the laptop completely (not just sleep)
- Wait a few seconds
- Hold the power button for 10+ seconds
- Release and boot normally
Result:
- All cores now scale properly (600 MHz idle → 5.1 GHz boost)
amd-pstate-eppdriver reports correct limits- System runs at full speed again
Why This Works
The Embedded Controller (EC) manages power states independently of the operating system and main CPU. When the firmware enters a bad throttle state after suspend, it persists across normal reboots because the EC maintains its state through warm boots.
A long power button hold (10+ seconds) triggers a full EC reset, clearing the stuck throttle state from the firmware.
Partial Workaround (if EC reset isn’t possible)
Switching to the acpi-cpufreq driver can unstick some cores (~50%):
sudo sh -c 'echo disable > /sys/devices/system/cpu/amd_pstate/status'
sudo modprobe acpi-cpufreq
sudo sh -c 'echo performance > /sys/firmware/acpi/platform_profile'
This is not a full fix but makes the system usable until you can do a proper EC reset.
Related Issues
- Framework Issue #91 - CPU frequency stuck after suspend
- Framework Issue #133 - Stuck at 0.55 GHz after BIOS update
- Framework Community - AMD CPU stuck in low-speed state
- Ubuntu Bug #2088733
Prevention (Untested)
These may help prevent the issue from occurring in the first place:
- Use s2idle instead of deep sleep - Check with
cat /sys/power/mem_sleep - Kernel parameter:
processor.ignore_ppc=1 - Systemd resume hook to reset power state after wake
Hopefully this helps others hitting the same issue on the Framework 16 with Ryzen AI 300 series!