acpi_tz0: _CRT value is absurd, ignored (256.0C) (was pr kern/105537)

Alexandre "Sunny" Kovalenko gaijin.k at gmail.com
Wed Mar 25 08:05:47 PDT 2009


On Wed, 2009-03-25 at 08:41 +0000, Chris Whitehouse wrote:
> [Please would you cc me in any reply as I'm not subscribed, thanks.]
> 
> Ian Smith wrote:
> > On Tue, 24 Mar 2009, Pasi Parviainen wrote:
> >  > Chris Whitehouse wrote:
> >  > > Hi, I sent this a while ago but don't think there was a reply. I'm about to
> >  > > embark on a custom ASL to load in loader.conf as per
> >  > > http://www.freebsd.org/doc/en/books/handbook/acpi-debug.html but just
> >  > > wondering if their might be a 'proper' fix on the way. I do have the latest
> >  > > bios installed.
> >  > 
> >  > Loading custom ASL with modified _CRT value for temperature zone in
> >  > question will solve the problem, see below for more information.
> >  > 
> >  > > Would it help if I installed 8-CURRENT?
> >  > 
> >  > Probably not, see below.
> >  > 
> >  > > -------- Original Message --------
> >  > > Subject: pr kern/105537
> >  > > Date: Mon, 12 Jan 2009 15:00:49 +0000
> >  > > From: Chris Whitehouse <cwhiteh at onetel.com>
> >  > > To: freebsd-acpi at FreeBSD.org
> >  > > 
> >  > > hi,
> >  > > 
> >  > > Please would you cc me in any reply as I'm not subscribed, thanks.
> >  > > 
> >  > > I have the same problem noted in
> >  > > 
> >  > > http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/105537
> >  > > 
> >  > > of frequent messages saying
> >  > > 
> >  > > acpi_tz0: _CRT value is absurd, ignored (256.0C)
> >  > > 
> >  > > on my HP nc6320 laptop, model RH383ET.
> >  > > 
> >  > 
> >  > I have HP 6510b and HP 2510p laptops and had same problem with those.
> >  > Actual problem is that the ACPI thermal code in kernel does sanity-check
> >  > for temperature values, and accepts only values between 0 - 200 Celsius.
> >  > To solve the problem you either create custom DSDT which returns 200.0C
> >  > value instead of 256.0C for thermal zone in question or increase the limit of
> >  > the sanity-check code of ACPI thermal code (src/sys/dev/acpica/acpi_thermal.c
> >  > function: acpi_tz_sanity).
> >  > 
> >  > Proper way to solve this in my opinion is to increase the range of
> >  > sanity-check function from 0 - 200 Celsius to 0 - 256 Celsius, or at
> >  > least provide sysctl variable to disable thermal sanity-checks.
> > 
> > Even 200C is absurd, really.  That's above the melting point of many 
> > types of solder (http://www.rfcafe.com/references/electrical/solder.htm) 
> > while 256C exceeds the melting point of _most_ types of solder.  I seem 
> > to recall that this limit used to be 150C, still hotter than anything 
> > you actually want to have anywhere on a computer board.
> > 
> > No sense checking sanity to then accept insane values; fix the broken 
> > ASL.  256 sounds suspiciously like a byte-swapped value, perhaps?
> > 
> > cheers, Ian
> > 
> 
> Getting the ASL in the actual BIOS firmware fixed would be great, but I 
> tried once to get Asus to correct a byte swapped value without success. 
> I don't suppose HP will be any more cooperative but I can try. I will 
> have a look at an acpidump tonight. A custom ASL would at least prove 
> what is wrong.
> 
> Does anyone know what this value is supposed to be measuring?
_CRT method in ASL is supposed to return temperature (in the tenth of
Kelvin) at which you would like to have your computer shut down rather
rapidly. On my ThinkPad X60 it is 97C. 

Overriding ASL is simple, if you are following the instruction in the
"Handbook", but the ease of fixing it really depends on what is broken.
Your case does not seem to look like the most popular exercise by the
BIOS writers -- returning temperature in the whole degrees of Celsius,
resulting in absurd negative values. If you would like to post your ASL
someplace and send out link to it or forward it to me privately, I can
take a look at it. I make no promises -- unless it is something obvious
it will require understanding of your specific hardware.

To be fair, if all you want is to override _CRT, you should be able to
put something to the tune of

hw.acpi.thermal.user_override=1
hw.acpi.thermal.tz0._CRT=90C

in your /etc/sysctl.conf and not deal with the ASL at all.

You might want to take a look at your output of 'sysctl hw.acpi.thermal'
-- your specific thermal zone, might be different from the one, I have
used as an example above. In fact, on my laptop, it is tz1 and not tz0.

In either case, I would recommend reading thermal chapter of the ACPI
specification -- it is short, well-written and has an example, I was
stealing stuff from, shamelessly, in the past.

HTH,

-- 
Alexandre "Sunny" Kovalenko



More information about the freebsd-acpi mailing list