Port-i386 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Two SpeedStep issues
Michael van Elst <mlelstv%serpens.de@localhost> schrieb:
> That's probably correct. The speedstep frequency parameter is
> scaled by the bus clock and it is likely that the driver does
> not identify this correctly. If you build the kernel with
> options EST_DEBUG you will get some information about the
> data found.
>
> However, this shouldn't affect how EST works. Configuring
> 800, 700 or 600 should result in real clock values of 2666,
> 2333 and 2000 respectively.
Hm, it seems something is quite messed up there in
sys/arch/x86/x86. First, on three consequent boots, I got three
different CPU frequencies:
cpu0 at mainbus0 apid 0: Intel 686-class, 2673MHz, id 0x10676
cpu0 at mainbus0 apid 0: Intel 686-class, 3742MHz, id 0x10676
cpu0 at mainbus0 apid 0: Intel 686-class, 3208MHz, id 0x10676
The bus clock is indeed wrong:
est_init_main: bus_clock = 10000
It seems this is because intel_busclock.c does not take the
extmodel into account. My Core2Duo has model #6, which originally
appears to have been some P3, but extmodel #1, which is ignored...
I'm not sure this model# is even correct; wikipedia says it should
be 23!?
Consequently, the rest of the data collected by est_init_main is
interpreted wrongly:
est_init_main: idlo = 0x61a
est_init_main: lo 1116 mV, 600 MHz
est_init_main: raw 26 , 6
est_init_main: idhi = 0x820
est_init_main: hi 1212 mV, 800 MHz
est_init_main: raw 32 , 8
est_init_main: cur = 0x820
est_init_main: fake entry 0: 1212 mV, 800 MHz MSR*100 mV = 3200 freq = 800
est_init_main: fake entry 1: 1180 mV, 700 MHz MSR*100 mV = 2901 freq = 700
est_init_main: fake entry 2: 1132 mV, 600 MHz MSR*100 mV = 2602 freq = 600
I didn't check it cancels out when _setting_ speedstep modes, but I
sure hope it does, considering these voltages! ;-)
On the Celeron side of things...
> Celeron M was used for many different CPUs. What does the
> kernel (or cpuctl identify) say? Enhanced SpeedStep is
> signaled with the EST flag in the features2 register.
>
> If the there is the EST flag but the est driver doesn't
> recognize SpeedStep then it is because the CPU reports
> minimum and maximum clocks to be the same. This is
> Intels way to say: don't play with it but use the
> power saving features of ACPI where we have hidden
> the details.
>
> Unfortunately we don't support he ACPI power saving
> features yet.
... I think OpenBSD just lied. The CPU has original SpeedStep
support but no EST, and I don't think this could actually save
as much power as OpenBSD pretended it was.
> If you want to play yourself with the EST driver,
> sys/arch/x86/x86/est.c is it :)
I now did, and I really did not like it. ;-)
Thanks,
Dennis den Brok
Home |
Main Index |
Thread Index |
Old Index