Pedro Ramalhais found another interesting thing in:
ftp://download.intel.com/design/Pentium4/manuals/25366816.pdf
that's the IA32_CLOCK_MODULATION (still called
MSR_IA32_THERM_CONTROL in include/asm-i386/msr.h, and I think this would
need a fix) register, that let set a reduced CPU duty cycle. So just today I
coded something to use it.
Just add to speedstep-centrino.c:
[yes I know, this isn't the Right Coding Style, but it's just to give an
idea of the whole thing]
static int sccm_level = 0;
module_param(sccm_level, uint, 0644);
MODULE_PARM_DESC(sccm_level, "Software Controlled Clock Modulation level: 0
for disabling, 7 for 12.5\% duty cycle");
in the first part, right after the third #define
and this function after centrino_target():
static int centrino_target_sccm ()
{
unsigned int msr, h;
rdmsr(MSR_IA32_THERM_CONTROL, msr, h);
msr &= (0<<1); msr &= (0<<2); msr &= (0<<3);
switch (sccm_level) {
case 0:
msr &= (0<<4);
case 1:
msr |= (1<<4); msr |= (1<<3); msr |= (1<<2);
msr |= (1<<1); break;
case 2:
msr |= (i<<4); msr |= (1<<3); msr |= (1<<2); break;
case 3:
msr |= (1<<4); msr |= (1<<3); msr |= (1<<1); break;
case 4:
msr |= (1<<4); msr |= (1<<3); break;
case 5:
msr |= (1<<4); msr |= (1<<2); msr |= (1<<1); break;
case 6:
msr |= (1<<4); msr |= (1<<2); break;
case 7:
msr |= (1<<4); msr |= (1<<1); break;
}
wrmsr (MSR_IA32_THERM_CONTROL, msr, h);
}
Then you'll just have to insmod speedstep-centrino.ko sccm_level=x, where x
can be 0 to disable software cycle control modulation, 1 to enable a
reduced duty cycle of 87.5%, 7 to enable a duty cycle of 12.5% and so on.
Enabling, say, a duty cycle of 12.5% means that the CPU chip will be driven
by clock just one time every eight, thus reducing power consumption and
temperature (and it speeds down dramatically the CPU, too =).
I tested it so far on my Pentium M Dothan 715 and on a Dothan 725.
What do you think, could this be useful? I could provide a patch or a
stand-alone module. Should I write an interface to sysfs?
--
ciao
st3
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
|
|