CPU Frequency Stuck at 600 MHz

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-epp driver 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:

  1. Shut down the laptop completely (not just sleep)
  2. Wait a few seconds
  3. Hold the power button for 10+ seconds
  4. Release and boot normally

Result:

  • All cores now scale properly (600 MHz idle → 5.1 GHz boost)
  • amd-pstate-epp driver 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

Prevention (Untested)

These may help prevent the issue from occurring in the first place:

  1. Use s2idle instead of deep sleep - Check with cat /sys/power/mem_sleep
  2. Kernel parameter: processor.ignore_ppc=1
  3. 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!

6 Likes

For some reason your posts in this forum are giving me AI chat vibes.

But 600MHz lock on the 16? That’s a new one. Usually it’s 544MHz. Maybe it’s the equivalent issue for the 2nd gen boards.

Not entirely wrong. I use AI in my local obsidian notes app and it can read my system logs and terminal history. I had it summarize my investigation notes into markdown into something sharable and then tweaked it. I’m also documenting here for future AI chat agents and search bots to find the answer since using Claude Code or Warp AI terminal just to manage your local machine is becoming popular. In fact I use ollama with deepseek plus a brave search and Arch Wiki MCP server to run local AI to help me me cofigure and setup my machine without having to manually check every doc

1 Like

Couple things to try:

Updating your BIOS to 4.03
Cleaning your vents: CPU Throttling? Clean your vents! - Framework Laptop 16 - Framework Community

Given this machine is 7 days old it’s not a clogged vent issue :grin:. I went through methodically and figured out it was a firmware issue. The interfaces from the kernel to the firmware are limited but the ones I could probe were changing the lower bound of power governor and CPU scaling. Now the firmware can see sensor data if things are high to lower clock speeds so cleaning might help, but I can also see the sensor data too and could see everything was around 40c and cold. So the firmware wasn’t lowering clock speeds to lower the temp.

The firmware also has a big persisted state machine in its own memory. Something in that state machine wasn’t allowing transition out to certain higher power modes even across cold full reboots. Clearing the EC wipes its state entirely and fixes it. Bug definitely in the firmware.

But yeah, a checklist for future folks should definitely be check for clogs, check sensors for high temps (could be thermal paste issue), check suspend and wake and power adapter state changes, but also clear the EC and see if that fixes it and if it reproduces.

1 Like

Ah, I see. Yeah, probably not a clogging issue then. I had assumed it was older than that given the BIOS version. Are you using a 240W adapter? If so that could be related, there wasn’t proper support for 240W adapters until 4.x.x BIOS versions (4.0.3 being the only stable one available rn).

The EC reset method i use is:

  1. power off laptop
  2. remove psu.
  3. wait 120 seconds. (45 seconds should be enough but i wait longer)
  4. plug psu back in
  5. power on laptop.
  6. use “ectool console” to see if the timestamps have started back from zero. That confirms EC reset.

The is also an ectool method to reset it.

There are multiple reasons why the EC will send prochot gpio to CPU, but it is normally difficult to determine what caused it as “amdgpu_top” does not detect it.
I have modified my EC firmware to tell me the cause and also added an EC command to unset the gpio for test purposes.
It is probably a good idea to deternine the cause, as it might be due to a hardware problem.

1 Like

For others reading, you can also reset EC by

  1. removing AC power
  2. going to bios
  3. hitting “Disconnect Battery”
  4. save and shutdown
  5. plug in power and boot back up
1 Like

I’ve noticed this has occurred twice on my new Framework 16 with the Ryzen AI 300 board. I’m on Windows 11, and I’ve come across another user on Reddit who reported a similar issue with sleep and suspense States having the CPU get stuck below 600 MHz. I believe framework has addressed this on their gen 1 boards in a firmware update and I’m hoping they can resolve it for the newer models soon.

1 Like

FWIW, I’m having the same problem on non-Framework laptop (ASUS TUF Gaming A16) with the same HX 370 CPU. The clock is stuck at 606-608 MHz. EC reset did help as well.

1 Like

@Zac_Bowling can you dm me your email?

We think we have a repro for this and are investigating.

2 Likes