Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Temperature sensor is absurd

61 views
Skip to first unread message

Sean Bruno

unread,
Nov 19, 2007, 1:18:03 PM11/19/07
to freebs...@freebsd.org
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
http://consultcsg.com/shuttle.dsdt


Sean

Sean Bruno

unread,
Nov 19, 2007, 3:16:47 PM11/19/07
to freebs...@freebsd.org
I enabled debug and need some help interpreting the debug output for the
thermal poll:

Execute Method: [\\_TZ_.THRM._TMP] (Node 0xc3322128)
exregion-0265 [188] ExSystemMemorySpaceHan: SystemMemory 0 (16 width)
Address= 0 FF81A
exregion-0378 [189] ExSystemIoSpaceHandler: SystemIO 1 (8 width)
Address= 0 295
exregion-0378 [188] ExSystemIoSpaceHandler: SystemIO 0 (8 width)
Address= 0 296
exregion-0265 [188] ExSystemMemorySpaceHan: SystemMemory 0 (8 width)
Address= 0 FF840


acpi_tz0: _TMP value is absurd, ignored (-73.0C)

Execute Method: [\\_TZ_.THRM._TMP] (Node 0xc3322128)
exregion-0265 [188] ExSystemMemorySpaceHan: SystemMemory 0 (16 width)
Address= 0 FF81A
exregion-0378 [189] ExSystemIoSpaceHandler: SystemIO 1 (8 width)
Address= 0 295
exregion-0378 [188] ExSystemIoSpaceHandler: SystemIO 0 (8 width)
Address= 0 296
exregion-0265 [188] ExSystemMemorySpaceHan: SystemMemory 0 (8 width)
Address= 0 FF840


acpi_tz0: _TMP value is absurd, ignored (-73.0C)


Sean

Alexandre "Sunny" Kovalenko

unread,
Nov 21, 2007, 10:59:19 AM11/21/07
to Sean Bruno, freebs...@freebsd.org

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.

> > http://consultcsg.com/shuttle.dsdt
> I enabled debug and need some help interpreting the debug output for the
> thermal poll:
>
> Execute Method: [\\_TZ_.THRM._TMP] (Node 0xc3322128)
> exregion-0265 [188] ExSystemMemorySpaceHan: SystemMemory 0 (16 width)
> Address= 0 FF81A
> exregion-0378 [189] ExSystemIoSpaceHandler: SystemIO 1 (8 width)
> Address= 0 295
> exregion-0378 [188] ExSystemIoSpaceHandler: SystemIO 0 (8 width)
> Address= 0 296
> exregion-0265 [188] ExSystemMemorySpaceHan: SystemMemory 0 (8 width)
> Address= 0 FF840
> acpi_tz0: _TMP value is absurd, ignored (-73.0C)
> Execute Method: [\\_TZ_.THRM._TMP] (Node 0xc3322128)
> exregion-0265 [188] ExSystemMemorySpaceHan: SystemMemory 0 (16 width)
> Address= 0 FF81A
> exregion-0378 [189] ExSystemIoSpaceHandler: SystemIO 1 (8 width)
> Address= 0 295
> exregion-0378 [188] ExSystemIoSpaceHandler: SystemIO 0 (8 width)
> Address= 0 296
> exregion-0265 [188] ExSystemMemorySpaceHan: SystemMemory 0 (8 width)
> Address= 0 FF840
> acpi_tz0: _TMP value is absurd, ignored (-73.0C)
>
>
> Sean

> _______________________________________________
> freebs...@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-acpi
> To unsubscribe, send any mail to "freebsd-acpi...@freebsd.org"

--
Alexandre "Sunny" Kovalenko

Alexandre "Sunny" Kovalenko

unread,
Nov 21, 2007, 8:19:31 PM11/21/07
to Sean Bruno, freebs...@freebsd.org

On Wed, 2007-11-21 at 14:58 -0800, Sean Bruno wrote:
> 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 really could not speak to how this utility is working and where does
it take values it reports back to you. According to your ASL, there is
one ACPI thermal zone, with one temperature reporting method (_TMP).
This method could, in turn, walk down three possible paths:
1a. call RTMP() method, we have discussed previously, which either
returns some value it reads from somewhere
1b. or returns fixed value, equivalent to 40C
2. return fixed value, equivalent to 21.8C
>
>
> I note that there is some other kind of temperature monitor available:
>
> Method (STMP, 2, NotSerialized)
Apart from the suggestive method name and placement in the ThermalZone,
I don't know that it is relevant. It is not being called by anything,
that I can tell, and it is not mentioned in ACPI Specification.
> {
> 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?
If you are willing to override your ASL on startup (very easily done
with FreeBSD) and not afraid of some fairly basic programming (using
pretty obscure programming language ;), you can do practically anything
you want. On one of the laptops, I have owned in the past, I have
created full complement of _ACx/_ALx objects complete with the
appropriate FAN devices. However, I was lucky to stumble upon pretty
self-explanatory fan control code in my ASL. YMMV.

In addition to cooling pad and running without battery, I would also
recommend reading relevant portions of the Handbook and Chapter 12
("Thermal management") of the ACPI specification.
>
> Sean

--
Alexandre "Sunny" Kovalenko

Sean Bruno

unread,
Nov 21, 2007, 5:58:26 PM11/21/07
to Alexandre "Sunny" Kovalenko, freebs...@freebsd.org
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

0 new messages