powerd adaptive mode latching

Andrew Atrens atrens at nortel.com
Mon Nov 5 18:55:43 PST 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


I see the same thing with my T7500 -

dev.cpu.0.freq: 300
dev.cpu.0.freq_levels: 2201/32000 2200/31000 1925/27125 1650/23250 1600/20000 1400/17500 1200/13000
1050/11375 900/9750 800/10000 700/8750 600/7500 500/6250 400/5000 300/3750

This patch to powerd works around the problem -


- --- powerd.c    2007-11-05 21:33:40.000000000 -0500
+++ /usr/src/usr.sbin/powerd/powerd.c   2007-11-05 16:48:49.000000000 -0500
@@ -182,6 +182,11 @@
                        free(*power);
                        return (-1);
                }
+               /* kludge to w/around too-close cpu freqs */
+               if ((i > 0 && ((*freqs)[i-1]-(*freqs)[i]) < 2)) {
+                       (*numfreqs)--;
+                       i--;
+               }
                p = q + 1;
        }


- --Andrew


Matus Harvan wrote:
> On Sun, Nov 04, 2007 at 08:33:15PM -0800, Russell Jackson wrote:
>> Powerd seems to latch at the maximum - 1 cpufreq setting while in adaptive 
>> mode. This is 100% reproducible for me. It never un-wedges from this state 
>> no matter how long I wait.
> [...]
>> dev.cpu.0.freq_levels: 2579/-1 2578/-1 2255/-1 1933/-1 1611/-1 1289/-1 
>> 966/-1 644/-1 322/-1
> [...]
>> $ sysctl dev.ichss
>> dev.ichss.0.%desc: SpeedStep ICH
>> dev.ichss.0.%driver: ichss
>> dev.ichss.0.%parent: cpu0
>> dev.ichss.0.freq_settings: 2579/-1 2578/-1
>>
>> The ichss levels looked odd to me, and trying to set cpufreq=2578 is a 
>> NOOP.
>>
>> $ sysctl dev.cpu.0.freq=2578
>> dev.cpu.0.freq: 2579 -> 2579
> 
> I have a similar problem on a
> CPU: Intel(R) Core(TM)2 Duo CPU     L7500  @ 1.60GHz (1596.01-MHz 686-class CPU)
> I think I am using est.
> 
> For me the two highest frequencies seem to be 1601 and 1600:
> $ sysctl dev.cpu
> [...]
> dev.cpu.0.freq_levels: 1601/35000 1600/35000 1400/30625 1200/16000 1050/14000 900/12000 800/14000 700/12250 600/10500 500/8750 400/7000 300/5250
> [...]
> $ sysctl dev.est
> dev.est.0.%desc: Enhanced SpeedStep Frequency Control
> dev.est.0.%driver: est
> dev.est.0.%parent: cpu0
> dev.est.0.freq_settings: 1601/35000 1600/35000 1200/16000 800/14000
> dev.est.1.%desc: Enhanced SpeedStep Frequency Control
> dev.est.1.%driver: est
> dev.est.1.%parent: cpu1
> dev.est.1.freq_settings: 1601/35000 1600/35000 1200/16000 800/14000
> 
> However, setting the frequency to 1600 results in 1601
> $ sudo sysctl dev.cpu.0.freq=1600
> dev.cpu.0.freq: 1601 -> 1601
> 
> which causes the same powerd behavior as you have experienced. I am
> running RELENG_7 from about three weeks ago.
> 
> Matus

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHL9Mg8It2CaCdeMwRAgJMAJ4ngu3KjXl84oq0gvL+zL2CW+EfbACfXkTk
3SczmsbCGOOBeK0cIuYa1nI=
=E/cy
-----END PGP SIGNATURE-----


More information about the freebsd-current mailing list