[RFC] Patch to enable temperature ceiling in powerd
Ian Smith
smithi at nimnet.asn.au
Sun Feb 10 05:25:25 UTC 2008
On Fri, 8 Feb 2008, Alexandre "Sunny" Kovalenko wrote:
> On Thu, 2008-02-07 at 22:17 -0800, Nate Lawson wrote:
> > Kevin Oberman wrote:
> > >> From: "Alexandre \"Sunny\" Kovalenko" <alex.kovalenko at verizon.net>
> > >>
> > >> On Fri, 2008-02-08 at 00:50 +0900, Hajimu UMEMOTO wrote:
> > >>>>>>>> On Wed, 30 Jan 2008 17:56:19 -0500
> > >>>>>>>> "Alexandre \"Sunny\" Kovalenko" <alex.kovalenko at verizon.net> said:
[..]
> > >>> alex.kovalenko> Temperature threshold (in Celsius) could be set by means of '-T' command
> > >>> alex.kovalenko> line option (as in '-T 60').
> > >>>
> > >>> Our kernel has passive cooling feature, already. Is it not enough for
> > >>> you?
> > >> I must have missed it somehow, if you could, please, point me in the
> > >> right direction I will really appreciate it.
> > >
> > > When the temperature reaches hw.acpi.thermal.tz0._PSV, the system will
> > > slow down until the CPU drops to a level below the _PSV value. The
> > > operation, if enabled, is under the control of BIOS (and/or the EC) and
> > > typically runs with substantial hysteresis, but is usually adequate for
> > > keeping the CPU temperature to a safe point.
> > >
> > > My Pentium-M 2GHz has a value of 94.5C for _PSV. This may seem very
> > > high, but the maximum "safe" operating temperature for the CPU is 100C,
> > > so it is designed for pretty high temperatures. Quiescent temperature
> > > runs about 51C and, during a CPU intensive operation such as a big build
> > > (e.g. make -j2 buildworld) will rise to near 80C.
> > >
> > > Before I blew two years of dust out of the heat sinks, I was seeing
> > > about 60C quiescent and about 95 during CPU intensive operations.
> > > Passive cooling was kicking in then and the temperature never went
> > > higher (although the build took longer).
> >
> > You can override the _PSV value by setting:
> > hw.acpi.thermal.user_override=1
> >
> > Then:
> > hw.acpi.thermal.tz0._PSV=70C
> >
> > This will maintain a lower temperature. Note that user_override is
> > potentially a bit dangerous because there is no sanity checking of the
> > value you set.
> >
> I'd say it is not working here (ThinkPad X60 1709-73U, BIOS was up to
> date as of day before yesterday, FreeBSD 7.0 as of January 31):
>
> RabbitsDen# sysctl hw.acpi.thermal
> hw.acpi.thermal.min_runtime: 0
> hw.acpi.thermal.polling_rate: 10
> --> hw.acpi.thermal.user_override: 1
> --> hw.acpi.thermal.tz0.temperature: 67.0C
> hw.acpi.thermal.tz0.active: -1
> hw.acpi.thermal.tz0.passive_cooling: 0
That has to be 1 for passive cooling to be activated, I gather.
> hw.acpi.thermal.tz0.thermal_flags: 1
> --> hw.acpi.thermal.tz0._PSV: 60.0C
> hw.acpi.thermal.tz0._HOT: -1
> hw.acpi.thermal.tz0._CRT: 127.0C
127C sounds (smells?) way too hot for a laptop CPU. Did you set that?
> hw.acpi.thermal.tz0._ACx: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
Perhaps with .user_override you need to set these too? but I'm not sure,
and I haven't yet a 7 or late model 6.x system to try these here. I've
read and reread acpi_thermal(4) about these, and latest acpi_thermal.c,
but I still don't get it ..
> --> hw.acpi.thermal.tz1.temperature: 68.0C
> hw.acpi.thermal.tz1.active: -1
> hw.acpi.thermal.tz1.passive_cooling: 0
Ditto. Is tz1 the second CPU? or the GPU? What does sysctl
dev.acpi_ibm.0.thermal have to say, assuming you load acpi_ibm?
> hw.acpi.thermal.tz1.thermal_flags: 1
> --> hw.acpi.thermal.tz1._PSV: 60.0C
> hw.acpi.thermal.tz1._HOT: -1
> hw.acpi.thermal.tz1._CRT: 97.0C
That looks more normal, and more like what tz0 should have, I imagine.
> hw.acpi.thermal.tz1._ACx: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
>
> Anything, I have missed?
Did you set .passive_cooling to 0, or has something else? Have you set
anything about this in the BIOS? Can you set it/them to 1 manually? If
so, does that help?
cheers, Ian
More information about the freebsd-acpi
mailing list