devd and/or ACPI not reporting a heat problem

John Baldwin jhb at
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