> On Thu, Jun 16, 2011 at 3:33 PM, Michal Mazurek <akf...@jasminek.net> wrote: > > 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 > > > > > > I had noticed the following behaviour (maybe related or maybe not) in my > laptop: > > - When the batt goes low the system shutdown with the same message. > The temp is always (not 100% sure) 110C. This is 100% reproducible > (every time batt goes low --> system shutdown). > > I was trying to figure myself what is happening to introduce myself to > kernel code but if someone want to test something I'll glad to help.
This diff you are writing is a workaround. It is not fixing the bug. Somewhere higher, some acpi, aml, bios, or EC behaviour has provided bad data, which has propogated up to the acpitz driver. We will kind of needs these workarounds until the real bugs are found, though, perhaps...