Date: Wed, 21 Nov 2007 14:58:26 -0800 From: Sean Bruno <sbruno@miralink.com> To: "Alexandre \"Sunny\" Kovalenko" <alex.kovalenko@verizon.net> Cc: freebsd-acpi@FreeBSD.org Subject: Re: Temperature sensor is absurd Message-ID: <4744B812.6010602@miralink.com> In-Reply-To: <1195660760.56779.28.camel@RabbitsDen> References: <4741D35B.1010509@miralink.com> <4741EF2F.3060708@miralink.com> <1195660760.56779.28.camel@RabbitsDen>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4744B812.6010602>