folk.zone Wiki

a public knowledge base

Site Tools


troubleshooting:prochot_throttling

PROCHOT Throttling (Dead Battery)

Affects: Laptops with a dead or removed battery; documented on a MacBook Pro 2015, applies anywhere the SMC/EC asserts PROCHOT

Symptom

Everything is very slow (video choppy even at low resolution) and the fan never spins. The machine is cool because the CPU is held at ~1 GHz and physically cannot run fast enough to heat up.

Cause

When the battery is dead or removed, the power-management chip asserts a signal called PROCHOT (BD_PROCHOT on some vendors). The CPU obeys and throttles to near minimum speed regardless of the governor or TLP settings. Software settings cannot override it: the CPU must be told to ignore the signal.

Fix

Clear bit 0 of MSR 0x1fc to make the CPU ignore external PROCHOT. Internal thermal protection still works: this only disables the SMC's ability to force-throttle.

sudo apt install msr-tools
sudo modprobe msr
sudo wrmsr 0x1fc 0xa005      # clears bit 0 (value varies; read first)
sudo rdmsr -f 0:0 0x1fc      # verify: 0 = good, 1 = still throttleable

The MSR resets every boot and on resume, so persist it three ways: a script that does the write, a systemd oneshot unit that re-applies it at boot, and a /lib/systemd/system-sleep/ hook that re-applies after resume. /etc/modules-load.d/ loads the msr module at boot.

Verify

sudo rdmsr -f 0:0 0x1fc          # 0 = disabled, 1 = throttleable
grep MHz /proc/cpuinfo           # under load should reach max clock, not ~1000

Notes

  • This masks a hardware warning. The correct fix for a machine with a swollen or failed battery is replacing the battery; the MSR workaround is for machines run permanently on AC.
  • The signature to remember: slow AND cold. A slow laptop with a working fan is a different problem.

See Also

troubleshooting/prochot_throttling.txt · Last modified: by 127.0.0.1