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