Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Oct 2008 09:47:43 -0400
From:      "Alexandre \"Sunny\" Kovalenko" <gaijin.k@gmail.com>
To:        Lars Engels <lme@FreeBSD.org>
Cc:        acpi@FreeBSD.org
Subject:   Re: acpi_tz1: _CRT value is absurd, ignored (256.0C)
Message-ID:  <1224683263.2199.24.camel@RabbitsDen>
In-Reply-To: <20081022101506.zfazdtjeskwg8sgc@0x20.net>
References:  <20081021140617.ejzk8i5wpskksc4w@0x20.net> <48FE121B.3000206@root.org> <20081022101506.zfazdtjeskwg8sgc@0x20.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2008-10-22 at 10:15 +0200, Lars Engels wrote:
> Quoting Nate Lawson <nate@root.org>:
> 
> 
> >> hw.acpi.thermal.tz1._CRT: -1
> >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >> hw.acpi.thermal.tz1._ACx: 89.0C 83.0C 60.0C 50.0C 40.0C -1 -1 -1 -1 -1
> >> hw.acpi.thermal.tz1._TC1: 1
> >> hw.acpi.thermal.tz1._TC2: 2
> >> hw.acpi.thermal.tz1._TSP: 300
> >
> > We could try to work around it in the tz poll routine.  Or, you could
> > set the _CRT value to something reasonable via sysctl.  man acpi_thermal
> > to see how.  You have to specify user_override to unlock the sysctl.
> > 105C seems reasonable based on other settings in tz2-3.
> 
> Setting the sysctl doesn't work:
> 
> Oct 22 09:50:15 NB0117232 sudo:   engels : TTY=pts/3 ;  
> PWD=/usr/home/engels ; USER=root ; COMMAND=/sbin/sysctl  
> hw.acpi.thermal.user_override=1
> Oct 22 09:50:45 NB0117232 kernel: acpi_tz1: _CRT value is absurd,  
> ignored (256.0C)
> Oct 22 09:50:55 NB0117232 sudo:   engels : TTY=pts/3 ;  
> PWD=/usr/home/engels ; USER=root ; COMMAND=/sbin/sysctl  
> hw.acpi.thermal.tz1._CRT=105C
> Oct 22 09:51:03 NB0117232 kernel: acpi_tz1: _CRT value is absurd,  
> ignored (256.0C)
> 
> hw.acpi.thermal.tz1._CRT: -1
> 
> It is only set to the overridden value for a moment and is then set  
> back to -1.
I suspect that ASL re-evaluates _CRT and tells FreeBSD to re-read it
based on some event. I would have expected 'user_override' to block the
update. I might be completely off the mark, though.

> 
> So a workaround in the code would be nice.
In the time being you should be able to dump our ASL (see Handbook for
instructions), look for something like
    Scope (\_TZ)
    {
	...
        ThermalZone (THM1)
        {
		...

            Method (_CRT, 0, NotSerialized)
            {
		<possible some other statements>
                Return (<something or other>)
            }

where THM1 is just a name, so it could be different in your case. You
need to find one for the zone #1 inside the Scope(\TZ) definition. I
think FreeBSD numbers them sequentially, regardless of the name, so this
would be the second ThermalZone definition in the scope. If you want
105C, put 
	Return(0xEC6);

in there. The value 0xEC6 = 105 * 0xA + 0xAAC.

If _CRT method is not there, you should be safe to add one, consisting
of the single return statement.

You would have to recompile ASL and set it to override on boot (see
Handbook).

As the side note, thermal chapter of the ACPI spec is both short and
readable, so if you'd rather understand where did all of this come from,
I would recommend reading through it.

HTH,
-- 
Alexandre "Sunny" Kovalenko (Олександр Коваленко)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1224683263.2199.24.camel>