Projects

Linux 2.6.8.1 K7 PowerNow! MSR Support

This is a patch for Dave Jones' Linux 2.6 K7 PowerNow! CPU frequency driver for Linux 2.6.8.1 which adds options to support falling back to reading the CPU's MSR registers when the BIOS fails to supply any useful frequency table information.

This is tested and working on my Athlon XP-M 2600+ with an Epox 8KHA+ motherboard. The primary reason for its existence is that this board, despite supposedly supporting FSB multipliers up to 15x, refused to POST at anything over 12.5x. It now runs happily at 15x in Linux. (This board has since been replaced by an ASRock K7VT6, which does not seem to like changing frequency on the fly, leading to lock-ups whenever the system attempted such a change. It does, however, support the full multiplier range of the CPU.)

Warning: Athlon XP-M chips aren't intended to be used in desktop boards. Adjusting the frequency and/or voltage on the fly could crash your computer, eat your data, fry your CPU, microwave your cat and cause hideous tentacled creatures from the Dungeon Dimensions to destroy the world. Back up your data before trying this, since I can't make any guarantee it'll work for you. That said, if it does (or doesn't) work, I'd be happy to hear from you (provided you're not out to kill me after frying your motherboard).

This patch adds the following parameters to the powernow-k7 module:

Parameter Description
msr_force Set to non-zero to enable MSR fallback mode.
msr_force_latency Set the settling time for CPU state transitions in microseconds. The default is 200us, which should work on most systems; the minimum is 100us. If your system crashes when changing speed, you might try increasing this.
msr_force_voltage_scaling Set to non-zero to enable voltage scaling when changing CPU frequency. This is disabled by default because the voltage regulators on desktop boards may well not take kindly to changing voltage while running. Enable this at your own risk. It's safer to set the core voltage in your BIOS to a value which will support the highest frequency you want to run.

With thanks to Dave Jones for helpful advice and suitable warnings.

This patch will hopefully become obsolete as soon as the kernel.org tree gains some similar form of support.


Linux 2.6.16.x K7 PowerNow! MSR Support

An updated version of my 2.6.8 patch suitable for 2.6.16.x kernels has kindly been made available via this German forum by Stefan Hussfeldt. He reports success with an AMD Geode CPU on an Asus A7V333 board and a PC-Chips M811.

Thanks to Joern Seeman for bringing this to my attention. He reports success with an AMD Geode CPU on an Epox 8KHA+ motherboard.

The module parameters are the same as for the original patch.


Linux 2.6.8.1 PowerNow! K7 Manual Frequency Table

This patch was written by Hendrik Muhs (Hendrik.Muhs at web.de) based on my MSR patch, and allows the user to manually specify a frequency/voltage table for an Athlon XP-M CPU in the parameters to the powernow-k7 module.

This patch adds the following parameters to the powernow-k7 module:

Parameter Description
overwrite_table Set to non-zero to enable manual frequency table specification.
multiplier Specifies an array of FSB multipliers, which must be multiplied by 10 (e.g. 8.5 -> 85, 10 -> 100).
voltage Specifies an array of Vcore voltages corresponding to the given multipliers, in mV (e.g. 1125 -> 1.125V).
switch_latency Set the settling time for CPU state transitions in microseconds. The default is 200us, as for msr_force_latency above.

Thanks to Hendrik for supplying this patch. If it acquires a more permanent home, I will endeavour to link to it from this page.


Linux 2.6.12.2 PowerNow! K7 Manual Frequency Table

Milan Enev (uvigii at linux-bg.org) has kindly supplied a patch for the 2.6.12 kernel series which allows the voltage and multiplier tables to be manually specified.

The module parameters are the same as for Hendrik Muhs' 2.6.8 patch.


Linux 2.6.16.x PowerNow! K7 Manual Frequency Table

Stefan Hussfeldt has also made available an updated version of Milan's patch for 2.6.16.x kernels via the forum.


Linux 2.6.17.x PowerNow! K7 Manual Frequency Table

Martin Oelsner has sent in an updated version of powernow-k7.c for 2.6.17.x kernels. (Note that this is not a patch - rename the file to powernow-k7.c and drop it into place instead.) He reports success using a Geode NX on an ASRock K7S41GX board.


Linux 2.6.18.x PowerNow! K7 Manual Frequency Table

Nicolas Ferrero has made available an updated version of powernow-k7.c by porting Milan's patch to 2.6.18.x kernels. (Note that this is not a patch - rename the file to powernow-k7.c and drop it into place instead.)


Linux 2.6.23.x PowerNow! K7 Manual Frequency Table

Robert Brink has made available a modified version of powernow-k7.c to enable manual frequency table entry on 2.6.23.x kernels. (Note that this is not a patch - rename the file to powernow-k7.c and drop it into place.) He reports success using a Geode NX1750+ on an ASRock K7S41GX board.


Linux 2.6.24.x PowerNow! K7 Manual Frequency Table

Robert Brink has helpfully pointed out an updated patch for 2.6.24.x kernels from the VDR boards. He also reports:

Please note that for using the AMD Geode NX1750+ with this modified powernow-k7 module on an Abit KX7-333 board, it is advised to set the switch_latency to 300, otherwise you might experience lockups during the FID transistion.


Linux 2.6.28.x PowerNow! K7 Manual Frequency Table

Michaël Belheur has provided a modified version of powernow-k7.c for 2.6.28.x kernels. He reports success using it as a drop-in replacement in Ubuntu Jaunty's 2.6.28-13 kernel.


wmsensormon Sensor Detection

This is a patch for wmsensormon 1.2.0, a WindowMaker dockapp which displays system information reported by the lm_sensors modules.

The patch modifies the sensor detection code to search for a sensor chip which reports temperature information, rather than simply using the first chip found in the system (which in the case of my machine was an SPD EEPROM on one of my DIMMs).


adam@yggdrasl.demon.co.uk