EST SpeedStep with E2140 shows wrong frequencies

Daniel Duerr dd at gizmocreative.com
Wed Feb 25 17:00:52 PST 2009


Hello,

I have been following the developments (or lack thereof) around EST  
and the more recent Intel Dual-core CPUs and was very happy to  
discover some new results with the latest FreeBSD 7.1 versions,  
specifically Gabriel Lavoie's recent posts about his success with the  
E5200 CPU.  My CPU is an Intel Pentium Dual 65nm E2140 @ 1.6GHz which  
is supposed to use under 8W of power when idled down with EST.  Since  
this server is always on, this power savings would be wonderful.

Today, I decided to give it another shot and updated my 7.1-STABLE  
amd64 system to the current sources.  I re-enabled the cpufreq driver  
in my /boot/loader.conf and now, upon bootup, no longer get the  
message about EST not recognizing my CPU which seems like a great step  
forward.  Furthermore, EST is actually attaching to the cpufreq  
subsystem and populating frequency information as it should.   
Unfortunately I am experiencing two issues though:
1) the resulting frequency information picked up by EST don't seem  
complete/accurate for my CPU
2) the behavior changes further if I disable the multiple cores in my  
BIOS

Here's the relevant output from dmesg when both cores are enabled:

CPU: Intel(R) Pentium(R) Dual  CPU  E2140  @ 1.60GHz (1596.01-MHz K8- 
class CPU)
   Origin = "GenuineIntel"  Id = 0x6fd  Stepping = 13
    
Features 
= 
0xbfebfbff 
< 
FPU 
,VME 
,DE 
,PSE 
,TSC 
,MSR 
,PAE 
,MCE 
,CX8 
,APIC 
,SEP 
,MTRR 
,PGE 
,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
   Features2=0xe39d<SSE3,RSVD2,MON,DS_CPL,EST,TM2,SSSE3,CX16,xTPR,PDCM>
   AMD Features=0x20100800<SYSCALL,NX,LM>
   AMD Features2=0x1<LAHF>
   Cores per package: 2

... and sysctl -a | grep freq shows the following output:

dev.cpu.0.freq: 800
dev.cpu.0.freq_levels: 800/31000
dev.est.0.freq_settings: 800/31000
dev.est.1.freq_settings: 800/31000
dev.cpufreq.0.%driver: cpufreq
dev.cpufreq.0.%parent: cpu0
dev.cpufreq.1.%driver: cpufreq
dev.cpufreq.1.%parent: cpu1

Now, if I disable the 2nd core I get this:

CPU: Intel(R) Pentium(R) Dual  CPU  E2140  @ 1.60GHz (1608.77-MHz K8- 
class CPU)
   Origin = "GenuineIntel"  Id = 0x6fd  Stepping = 13
    
Features 
= 
0xafebfbff 
< 
FPU 
,VME 
,DE 
,PSE 
,TSC 
,MSR 
,PAE 
,MCE 
,CX8 
,APIC 
,SEP 
,MTRR 
,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,TM,PBE>
   Features2=0xe39d<SSE3,RSVD2,MON,DS_CPL,EST,TM2,SSSE3,CX16,xTPR,PDCM>
   AMD Features=0x20100800<SYSCALL,NX,LM>
   AMD Features2=0x1<LAHF>

... with no mention of "Cores per package" or a second CPU.  Here's  
the sysctl output:

dev.cpu.0.freq_levels: 800/31000 600/13000
dev.est.0.freq_settings: 800/31000 600/13000
dev.cpufreq.0.%driver: cpufreq
dev.cpufreq.0.%parent: cpu0

So, it seems that with the 2nd core disabled I am at least offered two  
choices.  The choices, however, don't seem to match up with my CPU  
speed nor do I get anywhere near the idle power consumption that I am  
supposed to (I verified this with a Kill A Watt meter which throttling  
the CPU up & down).

Does anyone have any ideas on this?  I'd love to get this working.

Thanks!
Daniel



More information about the freebsd-acpi mailing list