Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Jan 2008 17:43:38 -0800
From:      Nate Lawson <nate@root.org>
To:        Stefan Lambrev <stefan.lambrev@moneybookers.com>
Cc:        bruno@FreeBSD.org, freebsd-current@FreeBSD.ORG
Subject:   Re: powerd adaptive mode latching
Message-ID:  <47896CCA.9020309@root.org>
In-Reply-To: <478965CC.1010609@moneybookers.com>
References:  <200801110909.m0B99tlr097501@lurza.secnetix.de> <47873840.7050401@moneybookers.com> <47894263.6010706@root.org> <478965CC.1010609@moneybookers.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------020003050706080909070507
Content-Type: text/plain; charset=windows-1251
Content-Transfer-Encoding: 7bit

Stefan Lambrev wrote:
> Nate Lawson wrote:
>> I am not sure this patch should be committed as-is.  It might be better
>> centralized in the cpufreq mid-layer so that all drivers benefit instead
>> of just acpi_perf.  If there are frequencies that are too close to each
>> other (no matter what the source driver), it might be good to eliminate
>> them.
>>
>> I'll look into it later today.
>>
>> -Nate
>>   
> I fully agree that centralized solution is better.
> But at this late stage of RELENG_7_0, I'm happy with this patch, as it
> solves our problem and is very simple.
> If you can come with something better before 7-RELEASE, it's OK, but
> otherwise I think we should have this patch in the CVS and then
> RELENG_7_0 (even marked as XXX)
> 
> The other patch actually is in powerd.c and with it doesn't matter what
> is the source of the information, but I personally, more like the
> acpi_perf patch :)

Some of us have other jobs that have nothing to do with FreeBSD.
Anyway, attached is the patch (compile tested).  You should test without
the acpi_perf patch to be sure it is functionally equivalent.

Thanks
Nate

--------------020003050706080909070507
Content-Type: text/x-patch;
 name="cpufreq_uniq1.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="cpufreq_uniq1.diff"

Index: kern_cpu.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/kern_cpu.c,v
retrieving revision 1.28
diff -u -r1.28 kern_cpu.c
--- kern_cpu.c	30 Oct 2007 22:18:08 -0000	1.28
+++ kern_cpu.c	13 Jan 2008 01:38:24 -0000
@@ -606,6 +606,17 @@
 	/* Finally, output the list of levels. */
 	i = 0;
 	TAILQ_FOREACH(lev, &sc->all_levels, link) {
+		/*
+		 * Skip levels that are too close in frequency to the
+		 * previous levels.  Some systems report bogus duplicate
+		 * settings (i.e., for acpi_perf).
+		 */
+		if (i > 0 && CPUFREQ_CMP(lev->total_set.freq,
+		    levels[i - 1].total_set.freq)) {
+			sc->all_count--;
+			continue;
+		}
+
 		/* Skip levels that have a frequency that is too low. */
 		if (lev->total_set.freq < cf_lowest_freq) {
 			sc->all_count--;

--------------020003050706080909070507--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47896CCA.9020309>