After moving my old laptop around I got home, booted it and got a very
distressing message:

messages.2.gz:Jun 14 22:40:09 hopek /bsd: acpitz2: Critical temperature
4938C (52112K), shutting down

Perhaps some dust moved around, or a cable disconnected.
Unfortunately, the system shut down before it booted. I booted bsd.rd,
read some manpages and booted with -c 'disable acpitz' - everything
worked fine. I attach a diff to only shutdown if the temperature is
below 2000C. If it's above then it's too late to shut down anyway :)

BTW, for no apparent reason my laptop started working fine again.


Index: acpitz.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpitz.c,v
retrieving revision 1.43
diff -u -r1.43 acpitz.c
--- acpitz.c    15 Jun 2011 00:15:54 -0000      1.43
+++ acpitz.c    16 Jun 2011 15:09:14 -0000
@@ -326,11 +326,17 @@
        }
        /* critical trip points */
        if (sc->sc_crt != -1 && sc->sc_crt <= sc->sc_tmp) {
-               /* do critical shutdown */
-               printf("%s: critical temperature exceeded %dC (%dK), shutting "
-                   "down\n",
-                   DEVNAME(sc), KTOC(sc->sc_tmp), sc->sc_tmp);
-               psignal(initproc, SIGUSR2);
+               if (KTOC(sc->sc_tmp) > 2000) {
+                       printf("%s: absurdly high temperature %dC (%dK), "
+                           "doing nothing\n",
+                           DEVNAME(sc), KTOC(sc->sc_tmp), sc->sc_tmp);
+               } else {
+                       /* do critical shutdown */
+                       printf("%s: critical temperature exceeded %dC (%dK), "
+                           "shutting down\n",
+                           DEVNAME(sc), KTOC(sc->sc_tmp), sc->sc_tmp);
+                       psignal(initproc, SIGUSR2);
+               }
        }
        if (sc->sc_hot != -1 && sc->sc_hot <= sc->sc_tmp) {
                printf("%s: _HOT temperature\n", DEVNAME(sc));

-- 
Michal Mazurek

Reply via email to