Comment 138 for bug 22336

Revision history for this message
jojo4u (bugzilla-freedom-x) wrote :

I'm not affected and to not own a laptop at all, but I see some knowledge lacking here about how a CPU should react when overheating. I will talk about Intel CPUs here. From the Pentium-M on, Thermal Monitor 2 supplements Thermal Monitor 1 in cause of overheating.

Info material:
Pentium-M: http://www.digit-life.com/articles2/cpu/intel-thermal-features-pm.html
Core 2 Duo: http://www.digit-life.com/articles2/cpu/intel-thermal-features-core2.html

There are two overheating points on Intel mobile processors.
1st is the "throttling temperature" - the CPU starts throttling from this point on (PROCHOT# gets activated). On Intel Core 2 Duo mobile CPUs this is 100 °C.
2n is the "shutdown temperature" - the CPU just shuts down (THERMTRIP# gets activated). On Intel Core 2 Duo mobile CPUs this is set to ~125 °C.

When the system get's over 100 °C, Thermal Monitor 2 is supposed to put the CPU into it's lowest power state (i.e. idle VID and FID 6x as in C1E/lowest EIST). If this is not sufficient - and "extended throttling" is configured - Thermal Monitor 1 jumps in and throttles the CPU (i.e. putting waitstates in) down to 33%. If even this isn't enough, the temperature rises to 125 °C and the CPU shuts itself down.

I can see that Linux tries to rely an the ACPI tables of the BIOS for thermal mangement.
First, take a look here: http://acpi.sourceforge.net/documentation/thermal.html and http://www.columbia.edu/~ariel/acpi/acpi_howto.html#thermal_management
It says there are two cooling modes. One active and one passive. This is controlled by the trip_points.
E.g. active trip-point: 60, passive: 90. That means that after 60 °C the fan should kicks in and after 90 °C throttling kicks in as well.
E.g. active trip-point: 0, passive: 90 as seen here in this bug. That means, fan is off all the time and throttling occurs over 90 °C. "Matthew Garrett said on 2005-09-24" explains this nicely.
On the other hand, the fan seems to be controlled by the BIOS sometimes.

I can see that many DSDTs have a critical point below 100 °C. This prevents Thermal Monitor to kick in. I'd suggest to put critical to 115 °C, hot to 0 °C (disabled - there is no time to to a software suspend), passive to 100 °C and active to whatever you want: E.g.
sudo echo -n "110:0:90:60:0" > /proc/acpi/thermal_zone/*/trip_points
followed by a
cat /proc/acpi/thermal_zone/*/trip_points
to see wether the settings got applied.

Btw, I have no clue how "extended throttling is managed in Linux.
Btw2, of course your fan should keep the CPU below 100 °C. If it doesn't you should correct that but that's outside my post.

Core 2 Duo mobile datasheet: ftp://download.intel.com/design/mobile/datashts/31407803.pdf