Temperature sensor is absurd

Sean Bruno sbruno at miralink.com
Thu Nov 22 01:46:33 PST 2007


Alexandre "Sunny" Kovalenko wrote:
> On Mon, 2007-11-19 at 12:16 -0800, Sean Bruno wrote:
>   
>> Sean Bruno wrote:
>>     
>>> Using RELENG_6(updated) on a Shuttle xPC SD30G2, I am seeing the 
>>> following error message repeating on the console:
>>>    acpi_tz0: _TMP value is absurd, ignored (-73.0C)
>>>
>>> The temperature reported by the BIOS is ~31C for the CPU and ~32C for 
>>> the System.
>>>
>>> I agree that -73C is "absurd" for sure.  The system has the latest 
>>> BIOS(rev 7).   What should I look at to repair this condition?
>>>
>>> I have dumped the ACPI tables
>>> http://consultcsg.com/shuttle.asl
>>>       
> This chunk is somewhat suspicious:
>
> Method (RTMP, 0, NotSerialized)
>     {
>         Store (GBYT (0x29), Local0)
>         FindSetLeftBit (Local0, Local1)
>         If (LEqual (Local1, 0x08))
>         {
>             And (Local0, 0x7F, Local0)
>             Multiply (Local0, 0x0A, Local0)
>             Subtract (0x0AAC, Local0, Local0)
>         }
>         Else
>         {
>             Multiply (Local0, 0x0A, Local0)
>             Add (0x0AAC, Local0, Local0)
>         }
>
>         If (LEqual (SSHU, 0x01))
>         {
>             Return (0x0C3C)
>         }
>         Else
>         {
>             Return (Local0)
>         }
>     }
>
> Let's say GBYT(29) returned 0xc9, then first branch of the If kicks in and 
> 0xc9 & 0x7f -> 0x49
> 0x49 * 0xa -> 0x2da
> 0xAAC - 0x2da -> 0x7d2
>
> 0x7d2 is 200.2K or -73C in ACPI reckoning.
>
> Unfortunately, I have no idea why GBYT(0x29) would return value with the bit 0x80 set and what the real 
> special processing should have been. You can experiment by changing Subtract to Add and trying to see 
> whether your temperature makes any sense, but this is pretty much wild guess.
>
> As usual, if you are playing with the thermal subsystem, I would recommend putting laptop on the cooling
> pad and taking out the battery. Latter will allow you to shut machine down on the short notice by pulling
> the power cord out.
>   
I fired up an install of Windows XP to use the Shuttle "monitoring" 
software to see what it was doing.  There appear to be three different 
temperature settings to query:  CPU, System and Motherboard.  CPU and 
System are valid (~31C) but Motherboard returns N/A in the Shuttle 
monitoring app.


I note that there is some other kind of temperature monitor available:

        Method (STMP, 2, NotSerialized)
            {
                Store (Arg1, DW00)
                If (Arg0)
                {
                    STHY (DB00, DB01, DW00)
                }
                Else
                {
                    STOS (DB00, DB01, DW00)

                }



I assume that these are the two valid value that I would want to gather 
for this motherboard.  Since they appear to be non-standard, is there a 
quirk in the acpi code that I can try to get them returned for the 
temperature?

Sean


More information about the freebsd-acpi mailing list