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

Alexandre "Sunny" Kovalenko gaijin.k at gmail.com
Thu Mar 26 18:50:37 PDT 2009


On Thu, 2009-03-26 at 16:49 -0700, Nate Lawson wrote:
> Chris Whitehouse wrote:
> > Alexandre "Sunny" Kovalenko wrote:
> >> 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.
> > 
> > I tried this and it sets hw.acpi.thermal.tz0._CRT correctly until
> > hw.acpi.thermal.tz0.active and hw.acpi.thermal.tz0.temperature change
> > values at which point hw.acpi.thermal.tz0._CRT reverts to -1.
> >
> 
> Thermal zones are re-evaluated when a Notify comes in that says to do
> so. Perhaps if "user_override" is set to 1, we should not re-evaluate
> them. However, perhaps that should only be done for values the user
> actually overrode.
ACPI 2.0 spec explicitly talks about updating of the _PSV and _ACx on
Notify(..., 0x81). ACPI 3.0b is shade more vague, but still talking
about "active and passive cooling temperature trip points". Maybe we
should not reevaluate _HOT and _CRT at all?
> 
> There has to be a different solution Windows used. Maybe they ignore _crt.

Looking at ASL I can see five thermal zone objects defined and only one
of them (TZ4) looking somewhat normal: _CRT is 110C and _TMP method goes
to the trouble of making sane return value. Maybe Windows somehow knows
which thermal zones to ignore? Given the snippet below this _was_ geared
heavily towards Windows:

                    If (\_OSI ("Windows 2001"))
                    {
                        Store (0x04, C014)
                    }

                    If (\_OSI ("Windows 2001 SP1"))
                    {
                        Store (0x04, C014)
                    }

                    If (\_OSI ("Windows 2001 SP2"))
                    {
                        Store (0x05, C014)
                    }

                    If (\_OSI ("Windows 2006"))
                    {
                        Store (0x06, C014)
                    }

Chris, you should be able to set hw.acpi.osname=<pick one from the
above> in loader.conf and see if things improve somewhat. Note that
"Windows 2001" and "Windows 2001 SP1" are identical.

Could you also, please, post the full output of the sysctl
hw.acpi.thermal

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




More information about the freebsd-acpi mailing list