Hallo nochmal,
habe heute den Patch auf den aktuellsten Vanilla-Kernel von kernel.org angewendet, nämlich 2.6.22-rc5.
Zeilen-Offset hat sich geändert, aber ansonsten scheint der Patch zu funktionieren.
Wie gesagt, super Teil!
Weil die Änderung per Hand immer einiges zu tippen war, habe ich ein kleines Shellscript geschrieben, das auch gleich nachguckt, ob man alles korrekt eingegeben hat, und die Ansteuerung der Pseudodateien unter /sys/devices/... automatisiert.
Mein Script ist für nen AMD64 X2, also macht es für beide Kerne, "cpu0" und "cpu1" die Einstellung.
Die Benutzung ist ganz einfach. Root werden, und dann:
"vtune FREQUENZ[MHz] SPANNUNG[mV]",
also z.B. "vtune 1000 900", und die Frequenzstufe 1000MHz ist auf 0,9Volt eingestellt.
Wer andere Pfade oder ne Single-Core-CPU hat, kann das natürlich schnell anpassen.
Hier ist das Script; natürlich mit Warnung: Wenn Fehler drin sind, Euer Pech...
#!/bin/sh
# vtune - Ändern der Prozessor-Kernspannung bei der AMD K8 Dualcore-CPU in Zusammenhang mit gepatchtem powernow-k8-Kernelmodul.
MIN_VOLT=800
MAX_VOLT=1400
printf %b "\n\n vtune: Skript ändert Prozessor-Kernspannung. \n\nBenutzung: vtune FREQUENZ[MHz] SPANNUNG[mV]\n\n"
if [ "$2" -ge $MIN_VOLT -a "$2" -le $MAX_VOLT ]; then
printf %b "\nOK. Spannung liegt im Bereich\n"
else
printf %b "\nDie angegebene Spannung muss zwischen $MIN_VOLT Millivolt und $MAX_VOLT Millivolt liegen!\nBenutzung: vtune FREQUENZ[MHz] SPANNUNG[mV]\n\n"
exit 1
fi
if [ -r /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq -a -r /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq ]; then
min_freq_kHz=$( cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq )
max_freq_kHz=$( cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq )
printf %b "OK. Minimale Scaling-Frequenz ist $(( $min_freq_kHz / 1000 )) MHz.\nMaximale Scaling-Frequenz ist $(( $max_freq_kHz / 1000 )) MHz.\n"
else
printf %b "\nKann die Pseudodateien /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq und -_max_freq nicht lesen.\nEntweder das powernow-k8 Kernelmodul ist nicht korrekt gepatcht, oder die Pfade stimmen nicht, oder Sie sind nicht Root.\n\n"
exit 1
fi
if [ -w /sys/devices/system/cpu/cpu0/cpufreq/scaling_"$1"_mhz_voltage -a -w /sys/devices/system/cpu/cpu1/cpufreq/scaling_"$1"_mhz_voltage ]; then
printf %b "OK. Die angegebene Frequenzstufe von "$1" MHz scheint gültig zu sein.\n"
else
printf %b "\nKann auf die Pseudodateien /sys/devices/system/cpu/cpuX/cpufreq/scaling_"$1"_mhz_voltage nicht schreiben.\nEntweder die eingegebene Frequenzstufe ist nicht gültig, oder Sie sind nicht Root.\n\n"
exit 1
fi
# Hauptteil
printf %b "\nVersuche, bei beiden Prozessorkernen die \nFrequenzstufe $(( $1 * 1000 )) kHz auf "$2" mV zu setzen.\n\n"
echo $max_freq_kHz > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo $max_freq-kHz > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
echo "$2" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_"$1"_mhz_voltage
echo "$2" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_"$1"_mhz_voltage
echo $min_freq_kHz > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo $min_freq_kHz > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
resultat0=$( cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_"$1"_mhz_voltage )
resultat1=$( cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_"$1"_mhz_voltage )
echo Prozessorkern 0: Frequenzstufe "$1" MHz ist jetzt auf $resultat0 mV gesetzt.
echo Prozessorkern 1: Frequenzstufe "$1" MHz ist jetzt auf $resultat1 mV gesetzt.
Display More