devd and/or ACPI not reporting a heat problem
John Baldwin
jhb at freebsd.org
Wed Jun 16 15:25:25 UTC 2010
On Wednesday 16 June 2010 3:04:24 am Doug Barton wrote:
> Howdy,
>
> I thought my heat problems were over with this laptop thanks to all the
> great suggestions I've received about powerd, no stepping, etc. (I also
> propped up both the back and the front to make a nice big air pocket.)
> I've always been pretty religious about blowing the dust off the fans
> and heat sinks, but I guess it's been dustier than I thought lately
> because I finally "caught" my laptop doing what it's been doing for the
> last 2 weeks, which is (occasionally) powering down when it was
> unattended; and the problem was heat.
>
> Of course I've been running devd all along, and so I initially ruled out
> the heat problem due to this entry in devd.conf:
>
> # Notify all users before beginning emergency shutdown when we get
> # a _CRT or _HOT thermal event and we're going to power down the system
> # very soon.
> notify 10 {
> match "system" "ACPI";
> match "subsystem" "Thermal";
> match "notify" "0xcc";
> action "logger -p kern.emerg 'WARNING: system temperature too
> high, shutting down soon!'";
> };
>
> I'm not getting any of those notices in the logs, so I was looking other
> places. (I do get other ACPI-related activity from devd, such as the
> notice that it's going on and off AC power.)
>
> So, 2-part question, how can I make sure that devd gets the message, and
> how do I make sure that the notice comes _before_ the BIOS forces the
> system to power off. I.e., I'd like to have some sort of devd notice
> that comes in time to do a clean shutdown, or perhaps some other
> mitigation strategy prior to the BIOS taking over.
Hmm, so the system just polls the temperature every 10 seconds
(sys/dev/acpica/acpi_thermal.c has the details) and if it sees a high
temperature twice in a row, it sends this event to devd. If it sees it a
third time it initiates a shutdown. It may be that the BIOS takes over before
those 20 seconds have passed. You can reduce the polling interval by changing
hw.acpi.thermal.polling_rate (it is in seconds it seems) to a lower value.
--
John Baldwin
More information about the freebsd-current
mailing list