Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Aug 2005 16:52:17 +0200
From:      "Philip S. Schulz" <ph.schulz@gmx.de>
To:        Stefan Farfeleder <stefan@fafoe.narf.at>
Cc:        freebsd-mobile@freebsd.org
Subject:   Re: acpi_perf error, powerd exiting
Message-ID:  <43107E21.5010400@gmx.de>
In-Reply-To: <20050827140129.GB595@wombat.fafoe.narf.at>
References:  <20050827140129.GB595@wombat.fafoe.narf.at>

next in thread | previous in thread | raw e-mail | index | archive | help
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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43107E21.5010400>