Troubles with ACPI on HP nx5000 laptop
null at bikeman.ru
Wed Nov 10 12:00:01 PST 2004
Monday, November 8, 2004, 8:19:04 PM, you wrote:
>>>> DK>> After enabling ACPI on HP nx5000 my laptop (Pentium
>>>> DK>> Dothan) hangs when compiling programs. dmesg, sysctl
>>>> DK>> acpidump -t -d output are in attach. Disabling ACPI helps.
>>>> DK> oops, attach was filtered somewhere. You can get it here:
>>>> DK> http://bikeman.ru/HPnx5000.tgz
>>>> The problem is in acpi thermal module. I set hw.acpi.verbose to 1 in
>>>> /boot/loader.conf and noted that my laptop hangs when it changes
>>>> cooling level too often. If i set hw.acpi.thermal.tz0.active to 0 for
>>>> active cooling or disable thermal module via loader.conf.
>>>> Btw, when I pull out power cord, my laptop also hang after trying to
>>>> change power profile.
>>>> In both cases it doesn't really hangs, it still react to alt-fn, enter
>>>> and power button. After pressing power I get "acpi: suspend request
>>>> ignored (not ready yet)".
NL> Thanks for the update. I need some more information to narrow down the
NL> problem. Does it hang the very first time it switches cooling levels or
NL> after multiple switches?
I tested it all again just a few minutes ago, it hung after first
try to switch.
NL> NL> After it has hung, please break to DDB
NL> (ctrl-alt-backspace) and do a ps. Go through doing a "tr" on each
NL> process id that looks interesting, looking for stacks that have
NL> "acpi_tz" functions in them. Email me the process stack info. It's
NL> obvious that you're getting a deadlock in the acpi thermal zone
NL> switching code but we need to figure out how.
I don't think it's deadlock, because I found only one process
callling acpi_tz funcs.
45 c15b8c5c d4de5000 0 0 0 0000204 [RUNQ]
> trace 45
sched_switch(c155f640,0,1,5e21f7f1,5e141b1) at sched_switch+0x160
mi_switch(1,0,d3becca8,10) at mi_switch+0x1d9
msleep(c07a4694,c07a46a0,254,c07a0150,3e8) at msleep+0x3bc
acpi_tz_thread(0,d3becd48,68bf09fc,85e800c6, 2c483cd) at
fork_exit(c07902f0,0,d3becd48) at fork_exit+0x80
fork_trampoline() at fork_trampoline+0x8
--- trap 0x1, eip = 0, esp = 0xd3becd7c, ebp = 0 ---
Furthermore, after "cont" in ddb, everything worked for a few
seconds. And it always works for a while till hangs again if after
hanging I call ddb and type "cont". Maybe it will "unhang" if I
wait till CPU gets cold.
More information about the freebsd-acpi