Changing temperature threshold
Nate Lawson
nate at root.org
Fri Jun 24 01:44:56 GMT 2005
Alexandre "Sunny" Kovalenko wrote:
> On Thu, 2005-06-23 at 14:25 -0700, Nate Lawson wrote:
>
>>Alexandre "Sunny" Kovalenko wrote:
>>
>>>>When I try to raise hw.acpi.thermal.tz0._CRT to 85C (which is the
>>>>threshold in the BIOS setup) it doesn't work:
>>>>
>>>>bell# sysctl hw.acpi.thermal.tz0._CRT=3580 # 3580 tenths of Kelvin=85C
>>>>sysctl: oid 'hw.acpi.thermal.tz0._CRT' is read only
>>>>
>>>>Now, my question is: how do I change this value? I've read several
>>>>manpages (acpi(4), acpi_thermal(4), acpiconf(8), loader(8), and many
>>>>others) and checked the handbook, to no avail. Can anyone point me
>>>>to the right direction?
>>>
>>>One of the ways to deal with that would be to dump your ASL (see
>>>Handbook for guidance), find lines which look like:
>>> Method (_CRT, 0, NotSerialized)
>>> {
>>> Return (KELV (0x5d))
>>> }
>>>modify them to your liking, compile ASL and override it during boot
>>>(instructions on how to compile and override are in Handbook as well).
>>>Please, note that actual value returned is in the 1/10th of the degree
>>>of Kelvin. Function KELV above has following ASL code associated with
>>>it:
>>> Method (KELV, 1, NotSerialized)
>>> {
>>> Store (Arg0, Local1)
>>> Multiply (0x0A, Local1, Local1)
>>> Add (Local1, 0x0AAC, Local1)
>>> Return (Local1)
>>> }
>>>Thermal management chapter of the ACPI specification should provide you
>>>with ample explanation of what this is all about.
>>
>>This explanation is correct. The reason why the sysctl is read-only is
>>because the values are supplied by the BIOS and are what the OEM thinks
>>are critical temperatures. However, we need a way to allow override in
>>the case of obviously wrong values like this. I'll probably change it
>>to allow overriding from the loader but be read-only in sysctl to avoid
>>accidental changes from users experimenting.
>>
>
> Would you consider making ACx levels writeable while you are at that? It
> will make it much easier to implement thermal hysteresis from userland.
That's pretty scary too. While not as important as _CRT, if a user
changes a threshold to a high value, it's possible to damage the system.
I'll consider implementing that with some reasonable cap on values.
--
Nate
More information about the freebsd-acpi
mailing list