From owner-freebsd-acpi@FreeBSD.ORG Thu Nov 22 02:21:14 2007 Return-Path: Delivered-To: freebsd-acpi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BF6AF16A41B for ; Thu, 22 Nov 2007 02:21:13 +0000 (UTC) (envelope-from alex.kovalenko@verizon.net) Received: from vms046pub.verizon.net (vms046pub.verizon.net [206.46.252.46]) by mx1.freebsd.org (Postfix) with ESMTP id A93E813C4B8 for ; Thu, 22 Nov 2007 02:21:13 +0000 (UTC) (envelope-from alex.kovalenko@verizon.net) Received: from [10.0.3.231] ([70.21.144.51]) by vms046.mailsrvcs.net (Sun Java System Messaging Server 6.2-6.01 (built Apr 3 2006)) with ESMTPA id <0JRV006A8VPNKT10@vms046.mailsrvcs.net> for freebsd-acpi@FreeBSD.org; Wed, 21 Nov 2007 19:20:14 -0600 (CST) Date: Wed, 21 Nov 2007 20:19:31 -0500 From: "Alexandre \"Sunny\" Kovalenko" In-reply-to: <4744B812.6010602@miralink.com> To: Sean Bruno Message-id: <1195694371.57740.24.camel@RabbitsDen> MIME-version: 1.0 X-Mailer: Evolution 2.12.1 FreeBSD GNOME Team Port Content-type: text/plain Content-transfer-encoding: 7bit References: <4741D35B.1010509@miralink.com> <4741EF2F.3060708@miralink.com> <1195660760.56779.28.camel@RabbitsDen> <4744B812.6010602@miralink.com> Cc: freebsd-acpi@FreeBSD.org Subject: Re: Temperature sensor is absurd X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Nov 2007 02:21:14 -0000 On Wed, 2007-11-21 at 14:58 -0800, Sean Bruno wrote: > 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 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