| From | Sent On | Attachments |
|---|---|---|
| Stefan Farfeleder | Aug 27, 2005 2:01 pm | |
| Philip S. Schulz | Aug 27, 2005 2:52 pm | |
| Bruno Ducrot | Aug 29, 2005 9:45 am |
| Subject: | acpi_perf error, powerd exiting | |
|---|---|---|
| From: | Philip S. Schulz (ph.s...@gmx.de) | |
| Date: | Aug 27, 2005 2:52:22 pm | |
| List: | org.freebsd.freebsd-mobile | |
Stefan Farfeleder wrote:
Hi,
on my ThinkPad R32 (dmesg attached), acpi_perf reports the following error at times, usually after a period of inactivity:
acpi_perf0: Px transition to 1200 failed acpi_perf0: set freq failed, err 6
This causes powerd to terminate. It seems to be a temporary error, because if I restart powerd, it works again. Should powerd be more fault-tolerant, is this an acpi_perf bug or my hardware broken?
powerd does not recover from such errors, so the fact that it "dies" (actually it prints an error message to stderr and exits) is expected. I guess powerd can easily sort of recover (i.e. continue to run and re-attempt the frequency the next time the frequency needs to be adjusted) from the error you're seeing, but I think that really is no real fix for your problem. See the patch included in this message but please note that I haven't tested it since I don't use acpi_perf and also please note that I don't know what effects this has in interaction with cpufreq and acpi_perf.
As to whether you're seeing a acpi_perf bug or experience hardware problems: I don't know.
Regards,
Phil.
Index: powerd.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/powerd/powerd.c,v retrieving revision 1.11 diff -u -r1.11 powerd.c --- powerd.c 24 Aug 2005 19:42:40 -0000 1.11 +++ powerd.c 27 Aug 2005 14:46:48 -0000 @@ -462,7 +462,7 @@ cpu_running_mark, curfreq, freqs[i]); } if (set_freq(freqs[i])) - err(1, "error setting CPU frequency %d", + warn("error setting CPU frequency %d", freqs[i]); } else if (idle > (total * cpu_idle_mark) / 100 && curfreq > freqs[numfreqs - 1]) { @@ -473,7 +473,7 @@ cpu_idle_mark, curfreq, freqs[i]); } if (set_freq(freqs[i])) - err(1, "error setting CPU frequency %d", + warn("error setting CPU frequency %d", freqs[i]); } }
-- Don't fix it if it ain't broke.





