Bug 24172

Summary: No thermal sensors on HP tx 2500 series because of flawed DSDT
Product: ACPI Reporter: Pietro Battiston (me)
Component: Power-ThermalAssignee: Zhang Rui (rui.zhang)
Status: CLOSED PATCH_ALREADY_AVAILABLE    
Severity: normal CC: acpi-bugzilla, lenb, rui.zhang
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: Subsystem:
Regression: No Bisected commit-id:
Attachments: Original DSDT table

Description Pietro Battiston 2010-12-01 21:18:49 UTC
The DSDT of my HP tx2510 contains the following code:

Method (_HOT, 0, Serialized)
{
    If (LEqual (TPOS, 0x40))
    {
        Return (Add (0x0AAC, Multiply (TPC, 0x0A)))
    }
}

Method (_CRT, 0, Serialized)
{
    If (LLess (TPOS, 0x40))
    {
        Return (Add (0x0AAC, Multiply (TPC, 0x0A)))
    }
}


which basically disables thermal sensors for any operating system that is not Windows. For more details, see
https://wiki.edubuntu.org/LaptopTestingTeam/Old/HPdv5z
which also suggests to comment out the check.

Since it is no more possible to load customized DSDTs however, the above howto is now useless, but I was told that the problem can be fixed directly in the kernel.

Needless to say I tried contacting HP in all ways I could conceive, but (also because my warranty is over) I doubt anyone there cared at all - certainly, I was not contacted back and there were no BIOS updates in the last year.

In case it's useful, the current BIOS can be downloaded through:
http://ftp.hp.com/pub/softpaq/sp45001-45500/sp45056.exe

I'm available for any additional information/testing.
Comment 1 Pietro Battiston 2010-12-02 11:50:34 UTC
Launchpad related bug:
https://bugs.launchpad.net/linux/+bug/461789
Comment 2 Zhang Rui 2010-12-06 05:55:33 UTC
can you attach the dsdt table of your laptop?
BTW: we can still override the DSDT table, please refer to http://www.lesswatts.org/projects/acpi/overridingDSDT.php
Comment 3 Pietro Battiston 2010-12-06 08:16:11 UTC
Created attachment 39112 [details]
Original DSDT table
Comment 4 Pietro Battiston 2010-12-06 08:17:09 UTC
> can you attach the dsdt table of your laptop?

Sure, I attached the result of "cp /proc/acpi/dsdt DSDT".

> BTW: we can still override the DSDT table, please refer to
> http://www.lesswatts.org/projects/acpi/overridingDSDT.php

Yep, sorry for the misunderstanding: I knew but implicitly assumed recompiling the kernel is not a solution (at least not for everyone).
Comment 5 Zhang Rui 2010-12-06 08:43:57 UTC
Oh, so the problem is that "no _CRT results in thermal driver load failure"?
If yes, I think the problem has been fixed by:

commit fa80945269f312bc609e8384302f58b03c916e12
Author: Thomas Renninger <trenn@suse.de>
Date:   Sat Feb 20 11:44:27 2010 +0100

    ACPI thermal: Don't invalidate thermal zone if critical trip point is bad
    
    V2: Corrected integer/long conversion.
    
    Some BIOSes return a negative value for the critical trip point.
    Especially since Windows 2006...
    We currently invalidate the whole thermal zone in this case.
    But it may still be needed for cooling, also without critical
    trip point.
    
    This patch invalidates the critical trip point if no _CRT
    function is found or if it returns negative values, but does
    not invalidate the whole thermal zone in this case.
    
    Reference: http://bugzilla.novell.com/show_bug.cgi?id=531547
    
    Signed-off-by: Thomas Renninger <trenn@suse.de>
    Tested-by: clarkt@cnsp.com
    Acked-by: Zhang Rui <rui.zhang@intel.com>
    Signed-off-by: Len Brown <len.brown@intel.com>

Why not try a kernel later than 2.6.34 and see if the problem still exist?
Comment 6 Pietro Battiston 2010-12-07 15:23:50 UTC
Ahem,(In reply to comment #5)
> Oh, so the problem is that "no _CRT results in thermal driver load failure"?

I have no idea of what that means, but...

> 
> Why not try a kernel later than 2.6.34 and see if the problem still exist?

Yep, tried with 2.6.36 and it works. Sorry for the noise: the problem was there since a while and hence I didn't consider trying a new kernel.

Pietro