Samsung P35 XVM 1500 - SuSE Linux 9.3 - vcore

Dothan

Vorab, nicht das ich es vergesse - Ich übernehme keine Verantwortung, für den Fall das der Prozessor zu schaden kommt.

Intel sieht für das setzen des Prozessortaktes und der Spannungswerte das MSR (Model Specific Register) vor.

Zum setzen der Spannungswerte ist das MSR 0x199 (IA32_PREF_CTL) zuständig.

Infos: Enhanced Intel SpeedStep Technology for the Intel Pentium M Processor (PDF)

Auf http://www.kernel.org/pub/linux/utils/cpu/msr-tools/ gibt es ein MSR-Tool welches das Lesen und Schreiben auf das MSR gestattet. (Vorkompiliert Version 1.1.2)

Bevor man auf das Register zugreifen kann, muss noch das Modul msr.ko geladen werden: Als root geht das mit modprobe msr

Um das laden des Modules zu automatisieren wird es in /etc/sysconfig/kernel bei INITRD_MODULES das Modul msrhinzugefügt. Anschliessend wird die Initial RAM Disk mit mkinitrd aktuallisiert.

Auslesen kann man die aktuelle Einstellung des Register mit rdmsr 0x199:

steve@tuxBook:~/bin/Tools/msr-tools/msr-tools-1.1.2> ./rdmsr 0x199
612

Der Prozessor läuft hier mit 600Mhz und der Wert "612" ist hier Standard.

Das erste Byte ist die Prozessorgeschwindigkeit in 100 Mhz, die nächsten 2 Byte * 16 +700 beschreiben die Spannung in Millivolt.

0x600 = 600 Mhz
0x012 = 18

18 * 16 + 700 = 988 mV

Mit wrmsr 0x199 0xXXX kann man einen Wert in das Register schreiben:

steve@tuxBook:~/bin/Tools/msr-tools/msr-tools-1.1.2> ./rdmsr 0x199
612
steve@tuxBook:~/bin/Tools/msr-tools/msr-tools-1.1.2> ./wrmsr 0x199 0x610
steve@tuxBook:~/bin/Tools/msr-tools/msr-tools-1.1.2> ./rdmsr 0x199
610
steve@tuxBook:~/bin/Tools/msr-tools/msr-tools-1.1.2>

Hier gibt es allerdings noch ein kleines Problem, die Werte werden bei jedem Frequenzwechsel durch die Standardwerte wieder überschrieben. Um das zu verhindern muss der Kernel die geänderten Spannungswerte kennen.

Original Werte: Pentium M 715   Ausprobierte Stabile Werte
  Mhz V   V       Diff. V / %
600 0,988 0,700       -0,288 / 70,9
800 1,068 0,700       -0,368 / 65,5
1000 1,148 0,748 0,732 0,712   -0,400 / 65,2
1200 1,228 0,812 0,796 0,780   -0,416 / 66,1
1500 1,340 0,940 0,924 0,908 0,892 -0,400 / 70,1

Der Kernel der SuSE 9.3 kennt jedoch nur die Spannungswerte des Banias, um ihm die Spannungswerte des Dothan bekannt zu machen muss erst mal der Speedstep-Dothan Patch von Sanjiv Sinha eingespielt werden.

cpufreq-speedstep-dothan-3.patch von Sanjiv Sinha Download
speedstep-centrino.c.dothan gepatchte Version Download
speedstep-centrino.c.original SuSE 9.3 Download
speedstep-centrino.c.steve Version mit meinen Werten Download

Nach dem einspielen der Kernel-Sources von CD/DVD bringt ein Online Update mit YOU die Quelltexte auf dem neusten Stand. Die Datei versteckt sich in /usr/src/linux/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c

In der gepatchten Version müssen dann noch die Spannungswerte angepasst werden. Anschliessend wird dir Kernel vorbereitet.

steve@tuxBook:~> su
Password
tuxBook:/home/steve # cd /usr/src/linux
tuxBook:/usr/src/linux # make mrproper
tuxBook:/usr/src/linux # make cloneconfig
tuxBook:/usr/src/linux # make prepare
tuxBook:/usr/src/linux # make xconfig

Da das Speedstep Modul die Spannungswerte aus den ACPI-Tabellen nimmt muss man diese Funktion noch deaktivieren

Power management options (ACPI, APM)  --->

   CPU Frequency scaling  --->
      [*] CPU Frequency scaling
      <M> Intel Enhanced SpeedStep
      [ ]   Use ACPI tables to decode valid frequency/voltage pairs
      ---   Built-in tables for Banias CPUs
xconfig

Jetzt noch die Module kompilieren und kopieren

tuxBook:/usr/src/linux # make modules
tuxBook:/usr/src/linux # cd arch/i386/kernel/cpu/cpufreq/
tuxBook:/usr/src/linux/arch/i386/kernel/cpu/cpufreq # 
  cp speedstep-centrino.ko /lib/modules/AKTUELLER-KERNEL/kernel/ 
     arch/i386/kernel/cpu/cpufreq/
(eine Zeile)

Zum guten Anschluss "ein-Boot-tut-gut". Nach dem Neustart des System kann mit dem MSR-Tool wieder die aktuelle Einstellung des Register mit rdmsr 0x199 ausgelesen werden. Allerdings sollte jetzt nicht wie am Anfang der Standardwert, sondern der gepatchte Wert ausgegeben werden.

steve@tuxBook:~/bin/Tools/msr-tools/msr-tools-1.1.2> ./rdmsr 0x199
600

Abgesehen vom der Entlastung des Akkus, sodass dieser länger hält, hat es auch noch den positiven Nebeneffekt das der Lüfter mit den Original ACPI-Tabellen nicht mehr im Dauerbetrieb läuft, sondern im "Office"-Betrieb fast komplett aus bleibt.