diff options
-rw-r--r-- | .SRCINFO | 24 | ||||
-rw-r--r-- | PKGBUILD | 39 | ||||
-rw-r--r-- | phc-k8.default | 4 | ||||
-rw-r--r-- | phc-k8.install | 30 | ||||
-rw-r--r-- | phc-k8.sh | 80 | ||||
-rw-r--r-- | phc-k8.sleep | 7 | ||||
-rw-r--r-- | phc-k8.system-sleep | 5 |
7 files changed, 189 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..31534b42edc5 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,24 @@ +pkgbase = phc-k8 + pkgdesc = frequency driver for AMD CPUs with undervolting feature + pkgver = 0.4.6 + pkgrel = 1 + url = http://www.linux-phc.org + install = phc-k8.install + arch = any + license = GPL + provides = linux-phc + backup = etc/default/phc-k8 + backup = etc/modprobe.d/phc-k8.conf + source = phc-k8-0.4.6.tar.gz::http://www.linux-phc.org/forum/download/file.php?id=165 + source = phc-k8.default + source = phc-k8.sh + source = phc-k8.sleep + source = phc-k8.system-sleep + sha256sums = 33c6041f314cfe25b7cded4b71736a3986781c505209c1af766723a12d37b53b + sha256sums = 352a97272390ed428cc1ebb886ebb044e7b54c145aa7a4c0d96862ad7a7fd46a + sha256sums = 8b4638f406249bf3e54604bfd282af6886be1c817045d586471383ea3b251fbf + sha256sums = 8619514df4b931705f713d61c1288b6e6960d578067523604b75960dcbc6e778 + sha256sums = 74ae72d992d0205babd6c9428e637ca407fb26461bfc68da7f331945126b810a + +pkgname = phc-k8 + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..1f35ed2100d9 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,39 @@ +# Contributor: fs4000 <matthias_dienstbier[at]yahoo[dot]de> + +pkgname=phc-k8 +pkgver=0.4.6 +pkgrel=1 +pkgdesc="frequency driver for AMD CPUs with undervolting feature" +url="http://www.linux-phc.org" +arch=('any') +license=('GPL') +provides=('linux-phc') +backup=(etc/default/phc-k8 etc/modprobe.d/phc-k8.conf) +install=phc-k8.install +source=(phc-k8-$pkgver.tar.gz::$url/forum/download/file.php?id=165 + phc-k8.{default,sh,sleep,system-sleep}) +sha256sums=('33c6041f314cfe25b7cded4b71736a3986781c505209c1af766723a12d37b53b' + '352a97272390ed428cc1ebb886ebb044e7b54c145aa7a4c0d96862ad7a7fd46a' + '8b4638f406249bf3e54604bfd282af6886be1c817045d586471383ea3b251fbf' + '8619514df4b931705f713d61c1288b6e6960d578067523604b75960dcbc6e778' + '74ae72d992d0205babd6c9428e637ca407fb26461bfc68da7f331945126b810a') + +prepare() { + cd phc-k8_v$pkgver + sed -e 's,lib/modules/$(KERNELVERSION)/updates/kernel/arch/x86/kernel/cpu/cpufreq,usr/lib/modules/$(KERNELVERSION)/extramodules,'\ + -e 's,^\tinstall -m 644 -o root -g root phc-k8.modprobe,#\tinstall -m 644 -o root -g root phc-k8.modprobe,' -i Makefile + sed -i 's,/sbin/modprobe phc-k8 |,/sbin/modprobe phc-k8 \&\& /usr/bin/phc-k8 set |,' phc-k8.modprobe +} + +package() { + install -Dm644 phc-k8.default "$pkgdir/etc/default/phc-k8" + install -Dm755 phc-k8.sh "$pkgdir/usr/bin/phc-k8" + install -Dm755 phc-k8.sleep "$pkgdir/usr/lib/pm-utils/sleep.d/00phc-k8" + install -Dm755 phc-k8.system-sleep "$pkgdir/usr/lib/systemd/system-sleep/phc-k8" + + cd phc-k8_v$pkgver + install -Dm644 phc-k8.modprobe "$pkgdir/etc/modprobe.d/phc-k8.conf" + install -d "$pkgdir/usr/src/phc-k8/" "$pkgdir/usr/share/doc/phc-k8/" + install -m644 Changelog README "$pkgdir/usr/share/doc/phc-k8/" + install -m644 Makefile mperf.? phc-k8.? "$pkgdir/usr/src/phc-k8/" +} diff --git a/phc-k8.default b/phc-k8.default new file mode 100644 index 000000000000..44de4a53988a --- /dev/null +++ b/phc-k8.default @@ -0,0 +1,4 @@ +# configuration for phc-k8 + +# voltage IDs to be set for all CPUs +VIDS="" diff --git a/phc-k8.install b/phc-k8.install new file mode 100644 index 000000000000..b167ea823c85 --- /dev/null +++ b/phc-k8.install @@ -0,0 +1,30 @@ +post_install() { + cat << EOF +Run "phc-k8 setup" to build the module for current kernel. +You can enter the desired voltage IDs in /etc/default/phc-k8. +Booting with nophc kernel parameter skips setting of VIDs in case of failure. +EOF +} + +post_upgrade() { + rm -f var/log/phc-k8.log +} + +post_remove() { + echo Removing built modules ... + rm -rf usr/src/phc-k8/ + cd usr/lib/modules/ + for i in *; do + if [ -f "$i/extramodules/phc-k8.ko" ]; then + rm -f "$i"/extramodules/{mperf,phc-k8}.ko + [ -d "$i/kernel" ] && depmod "$i" + elif [ -f "$i/phc-k8.ko" ]; then + rm -f "$i"/{mperf,phc-k8}.ko + rmdir -p --ignore-fail-on-non-empty "$i" + elif [ -d "$i/updates/kernel/arch/x86/kernel/cpu/cpufreq" ]; 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" + [ -d "$i/kernel" ] && depmod "$i" + fi + done +} 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 diff --git a/phc-k8.sleep b/phc-k8.sleep new file mode 100644 index 000000000000..154d711d0b39 --- /dev/null +++ b/phc-k8.sleep @@ -0,0 +1,7 @@ +#!/bin/bash + +case $1 in + resume|thaw) + . /usr/bin/phc-k8 set + ;; +esac diff --git a/phc-k8.system-sleep b/phc-k8.system-sleep new file mode 100644 index 000000000000..191fc74536f9 --- /dev/null +++ b/phc-k8.system-sleep @@ -0,0 +1,5 @@ +#!/bin/bash + +if [ "$1" = post ]; then + . /usr/bin/phc-k8 set +fi |