47 lines
1.1 KiB
Bash
Executable File
47 lines
1.1 KiB
Bash
Executable File
#!/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
|