aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhongbo.zhang <hongbo.zhang@linaro.com>2012-08-07 13:35:32 +0800
committerhongbo.zhang <hongbo.zhang@linaro.com>2012-11-28 17:11:10 +0800
commitba2cbccb2015cab2cdd707749f4430c847d14f9c (patch)
treef5833ee4184d87236c645c74a617bc9651dbdbdb
parent137c4f0852a17b99fea056b4bcc2a835a7832527 (diff)
cpufreq: governor mode should be checked if it is supported before setting it.
Signed-off-by: hongbo.zhang <hongbo.zhang@linaro.com>
-rwxr-xr-xcpufreq/cpufreq_04.sh7
-rwxr-xr-xcpufreq/cpufreq_05.sh54
-rwxr-xr-xcpufreq/cpufreq_06.sh6
-rwxr-xr-xcpufreq/cpufreq_07.sh6
-rwxr-xr-xcpufreq/cpufreq_08.sh6
-rwxr-xr-xcpufreq/cpufreq_09.sh6
6 files changed, 67 insertions, 18 deletions
diff --git a/cpufreq/cpufreq_04.sh b/cpufreq/cpufreq_04.sh
index a4ee5db..5b1c508 100755
--- a/cpufreq/cpufreq_04.sh
+++ b/cpufreq/cpufreq_04.sh
@@ -51,4 +51,9 @@ if [ $(id -u) != 0 ]; then
exit 0
fi
-for_each_cpu for_each_frequency check_frequency || exit 1
+supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "userspace")
+if [ -z $supported ]; then
+ log_skip "userspace not supported"
+else
+ for_each_cpu for_each_frequency check_frequency || exit 1
+fi
diff --git a/cpufreq/cpufreq_05.sh b/cpufreq/cpufreq_05.sh
index 560ae3d..ae6b670 100755
--- a/cpufreq/cpufreq_05.sh
+++ b/cpufreq/cpufreq_05.sh
@@ -51,30 +51,50 @@ switch_userspace() {
set_governor $cpu 'userspace'
}
-for cpu in $(ls $CPU_PATH | grep "cpu[0-9].*"); do
- switch_ondemand $cpu
-done
-check "'ondemand' directory exists" "test -d $CPU_PATH/cpufreq/ondemand"
+supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "ondemand")
+if [ -z $supported ]; then
+ log_skip "ondemand not supported"
+else
+ for cpu in $(ls $CPU_PATH | grep "cpu[0-9].*"); do
+ switch_ondemand $cpu
+ done
+ check "'ondemand' directory exists" "test -d $CPU_PATH/cpufreq/ondemand"
+fi
-for cpu in $(ls $CPU_PATH | grep "cpu[0-9].*"); do
- switch_conservative $cpu
-done
-check "'conservative' directory exists" "test -d $CPU_PATH/cpufreq/conservative"
+supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "conservative")
+if [ -z $supported ]; then
+ log_skip "conservative not supported"
+else
+ for cpu in $(ls $CPU_PATH | grep "cpu[0-9].*"); do
+ switch_conservative $cpu
+ done
+ check "'conservative' directory exists" "test -d $CPU_PATH/cpufreq/conservative"
+fi
-for cpu in $(ls $CPU_PATH | grep "cpu[0-9].*"); do
- switch_userspace $cpu
-done
+supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "userspace")
+if [ -z $supported ]; then
+ log_skip "userspace not supported"
+else
+ for cpu in $(ls $CPU_PATH | grep "cpu[0-9].*"); do
+ switch_userspace $cpu
+ done
-check "'ondemand' directory is not there" "test ! -d $CPU_PATH/cpufreq/ondemand"
-check "'conservative' directory is not there" "test ! -d $CPU_PATH/cpufreq/conservative"
+ check "'ondemand' directory is not there" "test ! -d $CPU_PATH/cpufreq/ondemand"
+ check "'conservative' directory is not there" "test ! -d $CPU_PATH/cpufreq/conservative"
+fi
# if more than one cpu, combine governors
nrcpus=$(ls $CPU_PATH | grep "cpu[0-9].*" | wc -l)
if [ $nrcpus > 1 ]; then
- switch_ondemand cpu0
- switch_conservative cpu1
- check "'ondemand' directory exists" "test -d $CPU_PATH/cpufreq/ondemand"
- check "'conservative' directory exists" "test -d $CPU_PATH/cpufreq/conservative"
+ affected=$(cat $CPU_PATH/cpu0/cpufreq/affected_cpus | grep 1)
+ if [ -z $affected ]; then
+ switch_ondemand cpu0
+ switch_conservative cpu1
+ check "'ondemand' directory exists" "test -d $CPU_PATH/cpufreq/ondemand"
+ check "'conservative' directory exists" "test -d $CPU_PATH/cpufreq/conservative"
+ else
+ log_skip "combine governors not supported"
+ fi
fi
restore_governors
diff --git a/cpufreq/cpufreq_06.sh b/cpufreq/cpufreq_06.sh
index d67ce6d..215bf61 100755
--- a/cpufreq/cpufreq_06.sh
+++ b/cpufreq/cpufreq_06.sh
@@ -106,6 +106,12 @@ if [ $(id -u) != 0 ]; then
exit 0
fi
+supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "userspace")
+if [ -z $supported ]; then
+ log_skip "userspace not supported"
+ exit 0
+fi
+
save_governors
save_frequencies
diff --git a/cpufreq/cpufreq_07.sh b/cpufreq/cpufreq_07.sh
index 1505cb3..539e2d1 100755
--- a/cpufreq/cpufreq_07.sh
+++ b/cpufreq/cpufreq_07.sh
@@ -82,6 +82,12 @@ if [ $(id -u) != 0 ]; then
exit 0
fi
+supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "ondemand")
+if [ -z $supported ]; then
+ log_skip "ondemand not supported"
+ exit 0
+fi
+
save_governors
trap "restore_governors; sigtrap" SIGHUP SIGINT SIGTERM
diff --git a/cpufreq/cpufreq_08.sh b/cpufreq/cpufreq_08.sh
index 89be94c..e881f72 100755
--- a/cpufreq/cpufreq_08.sh
+++ b/cpufreq/cpufreq_08.sh
@@ -71,6 +71,12 @@ if [ $(id -u) != 0 ]; then
exit 0
fi
+supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "userspace")
+if [ -z $supported ]; then
+ log_skip "userspace not supported"
+ exit 0
+fi
+
trap "restore_governors; sigtrap" SIGHUP SIGINT SIGTERM
for_each_cpu check_userspace
diff --git a/cpufreq/cpufreq_09.sh b/cpufreq/cpufreq_09.sh
index 1807dc8..fc700c2 100755
--- a/cpufreq/cpufreq_09.sh
+++ b/cpufreq/cpufreq_09.sh
@@ -67,6 +67,12 @@ if [ $(id -u) != 0 ]; then
exit 0
fi
+supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "powersave")
+if [ -z $supported ]; then
+ log_skip "powersave not supported"
+ exit 0
+fi
+
trap "restore_governors; sigtrap" SIGHUP SIGINT SIGTERM
for_each_cpu check_powersave