Checking the clock speed:
grep MHz /proc/cpuinfo
Every core sat at 400–800 MHz on a CPU rated for 4.8 GHz.
Troubleshooting
Intel CPUs report why they are throttling in MSR 0x64F (PERF_LIMIT_REASONS). Reading it showed PROCHOT as the active limiter — yet the CPU was at 55 °C, nowhere near hot, with the fan at maximum speed.
BD PROCHOT (Bi-Directional PROCHOT) is an Intel feature that lets external chips (VRMs, chipset, thermal sensors) signal the CPU to throttle hard, even when the CPU itself is cool. On some laptops a dying battery or a misreporting sensor can pin the cores at 800 MHz indefinitely. This installer clears bit 0 of Machine state register (MSR) 0x1FC so the CPU ignores those external signals, and it keeps clearing it after every sleep state.
Fixing the issue:
MSR 0x1FC bit 0 controls whether the CPU listens to the external signal. Clearing it makes the CPU ignore BD_PROCHOT:
# pacman -S msr-tools# rdmsr 0x1fc # 0x24005b — bit 0 set# wrmsr -a 0x1fc 0x24005a
Clocks went from a 1.5 GHz straight back to a 4.3 GHz boost. It is significant to note that this setting reverts on reboot.
> grep MHz /proc/cpuinfocpu MHz : 1524.652cpu MHz : 1473.830cpu MHz : 1851.206cpu MHz : 1700.613cpu MHz : 572.149cpu MHz : 1326.832cpu MHz : 1877.484cpu MHz : 652.318~ > 20:19:05
The proper fix is to reset the embedded controller itself: full shutdown, unplug the charger and then hold the power button for 30–60 seconds.






