Fixing the throttling that slow down the Lenovo Thinkpad T420s (BD PROCHOT)

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?

  1. Install the msr-tools package
  2. Load the msr Linux module using: modprobe msr
  3. 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:

  1. Using underpowered or aging power adapters or an unverified third-party charger.
  2. Using a heavily degraded or failing battery, which can misreport electrical metrics to the embedded controller.
  3. Failing hardware or bad sensors on the motherboard can incorrectly signal a thermal or power fault.
  4. Old, dried-up thermal paste on the CPU.
  5. Accumulated dust in the fan assembly.
  6. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *