summarylogtreecommitdiffstats
path: root/phc-k8.sh
diff options
context:
space:
mode:
authorMatthias Dienstbier2015-07-12 15:47:52 +0200
committerMatthias Dienstbier2015-07-12 15:47:52 +0200
commit5124a38051185759d2292362d396b0ddc66f5d91 (patch)
tree883e2ce12307aa08b76fa3ca38d0ac49cf82747e /phc-k8.sh
downloadaur-5124a38051185759d2292362d396b0ddc66f5d91.tar.gz
Initial import
Diffstat (limited to 'phc-k8.sh')
-rw-r--r--phc-k8.sh80
1 files changed, 80 insertions, 0 deletions
diff --git a/phc-k8.sh b/phc-k8.sh
new file mode 100644
index 000000000000..734c76c5f92e
--- /dev/null
+++ b/phc-k8.sh
@@ -0,0 +1,80 @@
+#!/bin/bash -e
+shopt -s nullglob
+
+case "$1" in
+start)
+ . /etc/default/phc-k8
+ if [ -z "$VIDS" ]; then
+ echo '=> Please edit /etc/default/phc-k8'
+ exit 1
+ fi
+ echo ':: Setting PHC VIDs'
+ for i in /sys/devices/system/cpu/cpu*/cpufreq/phc_vids; do
+ echo $VIDS > "$i"
+ done
+ ;;
+stop)
+ echo ':: Resetting default PHC VIDs'
+ for i in /sys/devices/system/cpu/cpu*/cpufreq; do
+ [ -e "$i/phc_default_vids" -a -e "$i/phc_vids" ] && cp "$i"/phc_{default_,}vids
+ done
+ ;;
+status)
+ check_off () {
+ for i in /sys/devices/system/cpu/cpu*/cpufreq; do
+ [ "$(< $i/phc_vids)" = "$(< $i/phc_default_vids)" ] || return;
+ done
+ }
+ check_on () {
+ for i in /sys/devices/system/cpu/cpu*/cpufreq/phc_vids; do
+ [[ "$(< $i)" =~ "$VIDS" ]] || return;
+ done
+ }
+ echo -n 'PHC status: '
+ . /etc/default/phc-k8
+ if check_off; then
+ echo 'inactive'
+ elif check_on; then
+ echo 'active'
+ else
+ echo 'unknown'
+ fi
+ ;;
+setup)
+ echo ':: Removing old phc-k8 modules'
+ echo
+ for i in /usr/lib/modules/*; do
+ if [ -f "$i/phc-k8.ko" -a ! -f "$i/version" ]; then
+ rm -f "$i"/{mperf,phc-k8}.ko
+ rmdir --ignore-fail-on-non-empty "$i"
+ elif [ -d "$i/updates/kernel/arch/x86/kernel/cpu/cpufreq" -a ! -d "$i/kernel" ]; then
+ rm -f "$i"/updates/kernel/arch/x86/kernel/cpu/cpufreq/{mperf,phc-k8}.ko
+ rmdir -p --ignore-fail-on-non-empty "$i/updates/kernel/arch/x86/kernel/cpu/cpufreq"
+ fi
+ done
+ echo ':: Compiling new phc-k8 module'
+ echo
+ cd /usr/src/phc-k8/
+ make
+ echo
+ echo ':: Installing new phc-k8 module'
+ echo
+ make install
+ echo
+ echo ':: Cleaning up'
+ echo
+ make clean
+ ;;
+set)
+ . /etc/default/phc-k8
+ [ -z "$VIDS" ] && exit
+ for i in $(< /proc/cmdline); do
+ [ $i = nophc ] && exit
+ done
+ for i in /sys/devices/system/cpu/cpu*/cpufreq/phc_vids; do
+ echo $VIDS > "$i"
+ done
+ ;;
+*)
+ echo "usage: $0 {start|stop|status|setup|set}"
+esac