NX6125 has insane thermal trip values
Booting a 64-bit kernel on an HP nx6125, the thermal trip values are set to 16 degrees centigrate by default. This seems to be due to the following block of code:
If (LAnd (LEqual (\_SB.C031, 0x01), LAnd (LEqual (Arg0,
0x00), LEqu\al (Arg1, 0x00))))
{
If (\_SB.C046.C0AD.C110.C164 ())
{
Store (0x0B4B, Local2)
}
}
If (LEqual (\_SB.C046.C054.C055, 0x01))
{
Store (0x0B4B, Local2)
}
Return (Local2)which appears to explicitly set those temperatures. I'm assuming that this is only supposed to be triggered under a certain set of conditions, but HP's insistence on replacing all of their object names with crap makes me weep bitter tears of loathing and I really can't be bothered tracking this down. I've attached the DSDT - can anyone see any obvious reason why this code path should be triggered? I'll get in touch with HP anyway, and see if they can fix it in a newer BIOS revision.
Signature · 8 lines
Matthew Garrett | [email protected] ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 20 lines · Matthew Garrett
Booting a 64-bit kernel on an HP nx6125, the thermal trip values are set to 16 degrees centigrate by default. This seems to be due to the following block of code:
If (LAnd (LEqual (\_SB.C031, 0x01), LAnd (LEqual (Arg0, 0x00), LEqu\al (Arg1, 0x00)))) { If (\_SB.C046.C0AD.C110.C164 ()) { Store (0x0B4B, Local2) } } If (LEqual (\_SB.C046.C054.C055, 0x01)) { Store (0x0B4B, Local2) } Return (Local2)
Quoted 5 lines
which appears to explicitly set those temperatures. I'm assuming that this is only supposed to be triggered under a certain set of conditions, but HP's insistence on replacing all of their object names with crap makes me weep bitter tears of loathing and I really can't be bothered tracking this down. I've attached the DSDT
Sorry, no DSDT attached.
Quoted 4 lines
- can anyone see any obvious
reason why this code path should be triggered? I'll get in touch with HP anyway, and see if they can fix it in a newer BIOS revision.
I saw fixed temperatures embedded in an if/else clause quite often. It seems as if BIOS programmers often misuse thermal zones to implement a shutdown trigger for other purposes.
Normally only a critical trip point is exported and a temperature like that is returned:
if (all_is_well)
return temp_below_critical_tp;
else
// trigger shutdown
return temp_above_critical_tp;As long as the temperature stays below, I wouldn't care.
This could get a problem if scripts like to automatically set tps according to user configurations, as the kernel cuts of the position after the decimal point.
The powersave daemon (sourceforge) can do that and triggered a critical shutdown by only resetting the critical tp to the same value:
E.g. possible temperatures: 47 C, 49.9 C
critical BIOS trip point: 49.7 C
The kernel simply exports the rounded 50 C value as critical trip point (in fact 49.7). Resetting it to 50 C triggers a shutdown.
If the /proc/acpi interface should ever be moved to /sys, people should consider to export exact values to userspace if it is intended to be able to control fan activity, which already works well on some laptops.
Thomas
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 1 line · Thomas Renninger
Sorry, no DSDT attached.
Oops - it should be this time.
Quoted 2 lines
Normally only a critical trip point is exported and a temperature like that is returned:
Yeah. In this case, the critical temperature is fine (95 degrees). I'm a bit confused.
Signature · 1 line
Matthew Garrett | [email protected]