i386/79080: acpi thermal changes freezes HP nx6110
pryd at atlas.cz
Wed Nov 30 13:20:06 GMT 2005
The following reply was made to PR i386/79080; it has been noted by GNATS.
From: Pavel Rydvan <pryd at atlas.cz>
To: bug-followup at FreeBSD.org, juho.vuori at kepa.fi
Subject: Re: i386/79080: acpi thermal changes freezes HP nx6110
Date: Wed, 30 Nov 2005 14:15:49 +0100
I am also using nx6110 and having the same problem. It also seems that
USB works only if ACPI is enabled (and, having no ports than USB, it
seems to be quite vital). Another astonishing connection is, that with
ACPI enabled, the notebook's touchpad started to be "tappable" (when i
tap to the surface, it performs a click), which never worked, but it
somehow started with enabling ACPI (and remains also when I disable it
again) -- it is out of my immagination and also out of toppic...
As was told, notebook dies (when using SCHED_4BSD scheduler), or freezes
for approx. 2 seconds (when using SCHED_ULE), when the temperature
raises/drops above/below hw.acpi.thermal.tz0._ACx.
There happens to appear a storm of acpi TZ_NOTIFY_TEMPERATURE messages.
When using SCHED_ULE, then --- after 2 seconds --- one occurence of
TZ_NOTIFY_LEVELS appears, then again one appearence of
TZ_NOTIFY_TEMPERATURE, and then the system continues in working well,
until another raise/drop happens.
It seems that there should come some answer/action to the
TZ_NOTIFY_TEMPERATURE from the acpi_thermal driver, but it never happens
(or happens quite late). It seems to me that the answer is only "waked
up" (acpi_tz_signal function in acpi_thermal.c:640) and is to be
performed by some other thread. I thought of moving that code "inside"
the actual thread, maybe it would help. But I do not understand ACPI at
all, so I do not know, WHAT the hw is expecting to happen:((.
My "backup" idea was to set the ACx temperatures to values that cannot
be raised/dropped above/below, so the freezes wouldn't appear. And also
set some reasonable fan speed.
There are 4+1 fan speeds (0=fastest, ... 3=slowest; -1=off), it is
possible to control their speed via sysctl hw.acpi.thermal.tz0.active=n,
which works well (no freeze when changing "by hand").
There is following list of temperatures in hw.acpi.thermal.tz0._ACx:
hw.acpi.thermal.tz0._ACx: 80.0C 70.0C 60.0C 45.0C -1 -1 -1 -1 -1 -1
If I persuaded the ntb to have the list for example 80.0C 5.0C 4.0C
3.0C -1 -1 -1..., than the storm perhaps never happens.
It seems to me that it is somehow possible to change the values in the
list (but I don't know, where they are dictated by sw or hw): when the
temperature (for example) raises above 60.0C, the list is (somehow)
smartly changed to 80.0C 70.0C 55.0C 45.0C. Notice that 60.0 changed to
55.0, so the temperature is not going to lower below the limit
I have no experiences or knowledge of ACPI, I just tried to use sysctl
to set the _ACx, but it is read-only. Is it possible to be set by sw?
Has anybody idea of how to accomplish?
P.S.: Another astonishing connection is, that with ACPI enabled, the
notebook's touchpad started to be "tappable" (when i tap to the surface,
it performs a click), which never worked in FreeBSD with xorg, but it
somehow appeared with enabling ACPI (and remains also when I disable it
again) -- it is out of my immagination but it is also off topic...
More information about the freebsd-acpi