#!/bin/sh # Ensure cpu governor is set to something sane. # TODO: Which of the cpu governors is still insane? File bugs against # those that are. . "${PM_FUNCTIONS}" [ -d /sys/devices/system/cpu/ ] || exit $NA hibernate_cpufreq() { ( cd /sys/devices/system/cpu/ for x in cpu[0-9]*; do # if cpufreq is a symlink, it is handled by another cpu. Skip. [ -L "$x/cpufreq" ] && continue gov="$x/cpufreq/scaling_governor" # if we do not have a scaling_governor file, skip. [ -f "$gov" ] || continue # if our temporary governor is not available, skip. grep -q "$TEMPORARY_CPUFREQ_GOVERNOR" \ "$x/cpufreq/scaling_available_governors" || continue savestate "${x}_governor" < "$gov" echo "$TEMPORARY_CPUFREQ_GOVERNOR" > "$gov" done ) } thaw_cpufreq() { ( cd /sys/devices/system/cpu/ for x in cpu[0-9]*/cpufreq/scaling_governor ; do [ -f "$x" ] || continue state_exists "${x%%/*}_governor" || continue restorestate "${x%%/*}_governor" > "$x" done ) } case "$1" in suspend|hibernate) hibernate_cpufreq ;; resume|thaw) thaw_cpufreq ;; *) exit $NA ;; esac