Even after configuring Linux on a Lenovo ThinkPad T420s, the laptop can still experience unexplained CPU throttling that degrades performance.
A common cause is an externally asserted BD PROCHOT (Bi-Directional Processor Hot). While standard PROCHOT is initiated internally by the processor when it overheats, BD-PROCHOT allows other components, such as power supply sensors or battery circuitry, to send a hardware signal directly to the CPU, which triggers processor throttling regardless of actual CPU core temperatures.
What does BD-PROCHOT do to the Lenovo ThinkPad T420s?
The CPU clock speed is locked at a low frequency, which causes severe system lag during basic desktop tasks such as video playback or web browsing. Because BD-PROCHOT can be asserted by power management sensors rather than CPU temperature, the CPU remains throttled even when core temperatures are normal.
How to check if PROCHOT is enabled?
- Install the
msr-toolspackage - Load the msr Linux module using:
modprobe msr - Run the following command:
echo -n "PROCHOT "; (( 0x$(rdmsr -p0 0x1fc) & 1 )) && echo "enabled" || echo "disabled"
What causes BD-PROCHOT and throttling on the Lenovo ThinkPad T420s?
Several hardware, power supply, and thermal conditions trigger BD-PROCHOT or general CPU throttling on the Lenovo ThinkPad T420s:
- Using underpowered or aging power adapters or an unverified third-party charger.
- Using a heavily degraded or failing battery, which can misreport electrical metrics to the embedded controller.
- Failing hardware or bad sensors on the motherboard can incorrectly signal a thermal or power fault.
- Old, dried-up thermal paste on the CPU.
- Accumulated dust in the fan assembly.
- Using an underpowered 65W (OUTPUT: 20V, 3.25 A) charger instead of the 90W power adapter (OUTPUT: 20V, 4.5A).
Solution: throttled
One solution is to use the the throttled daemon, which writes directly to CPU and chipset registers:
Download and install throttled from the 'throttled' repository
The primary configuration file is located at /etc/throttled.conf. It contains separate profiles for power limits, update intervals, and temperature targets.
Note: The thermald daemon can conflict with throttled by applying its own temperature policy.