Checking the clock speed:
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:
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.
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.