Dell Laptop with throttled CPU frequency – BD_PROCHOT feature

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/cpuinfo
cpu MHz : 1524.652
cpu MHz : 1473.830
cpu MHz : 1851.206
cpu MHz : 1700.613
cpu MHz : 572.149
cpu MHz : 1326.832
cpu MHz : 1877.484
cpu 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.


Leave a comment

Discover more from /root

Subscribe now to keep reading and get access to the full archive.

Continue reading