forked from Minki/linux
1e4c2830c3
This patch adds support for special tests which were reported on the PM list over the years, which helped catching core bugs by several developers. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
116 lines
1.9 KiB
Bash
Executable File
116 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Special test cases reported by people
|
|
|
|
# Testcase 1: Reported here: http://marc.info/?l=linux-pm&m=140618592709858&w=2
|
|
|
|
# protect against multiple inclusion
|
|
if [ $FILE_SPECIAL ]; then
|
|
return 0
|
|
else
|
|
FILE_SPECIAL=DONE
|
|
fi
|
|
|
|
source cpu.sh
|
|
source cpufreq.sh
|
|
source governor.sh
|
|
|
|
# Test 1
|
|
# $1: policy
|
|
__simple_lockdep()
|
|
{
|
|
# switch to ondemand
|
|
__switch_governor $1 "ondemand"
|
|
|
|
# cat ondemand files
|
|
local ondir=$(find_gov_directory $1 "ondemand")
|
|
if [ -z $ondir ]; then
|
|
printf "${FUNCNAME[0]}Ondemand directory not created, quit"
|
|
return
|
|
fi
|
|
|
|
cat $ondir/*
|
|
|
|
# switch to conservative
|
|
__switch_governor $1 "conservative"
|
|
}
|
|
|
|
simple_lockdep()
|
|
{
|
|
printf "** Test: Running ${FUNCNAME[0]} **\n"
|
|
|
|
for_each_policy __simple_lockdep
|
|
}
|
|
|
|
# Test 2
|
|
# $1: policy
|
|
__concurrent_lockdep()
|
|
{
|
|
for i in `seq 0 100`; do
|
|
__simple_lockdep $1
|
|
done
|
|
}
|
|
|
|
concurrent_lockdep()
|
|
{
|
|
printf "** Test: Running ${FUNCNAME[0]} **\n"
|
|
|
|
for_each_policy_concurrent __concurrent_lockdep
|
|
}
|
|
|
|
# Test 3
|
|
quick_shuffle()
|
|
{
|
|
# this is called concurrently from governor_race
|
|
for I in `seq 1000`
|
|
do
|
|
echo ondemand | sudo tee $CPUFREQROOT/policy*/scaling_governor &
|
|
echo userspace | sudo tee $CPUFREQROOT/policy*/scaling_governor &
|
|
done
|
|
}
|
|
|
|
governor_race()
|
|
{
|
|
printf "** Test: Running ${FUNCNAME[0]} **\n"
|
|
|
|
# run 8 concurrent instances
|
|
for I in `seq 8`
|
|
do
|
|
quick_shuffle &
|
|
done
|
|
}
|
|
|
|
# Test 4
|
|
# $1: cpu
|
|
hotplug_with_updates_cpu()
|
|
{
|
|
local filepath="$CPUROOT/$1/cpufreq"
|
|
|
|
# switch to ondemand
|
|
__switch_governor_for_cpu $1 "ondemand"
|
|
|
|
for i in `seq 1 5000`
|
|
do
|
|
reboot_cpu $1
|
|
done &
|
|
|
|
local freqs=$(cat $filepath/scaling_available_frequencies)
|
|
local oldfreq=$(cat $filepath/scaling_min_freq)
|
|
|
|
for j in `seq 1 5000`
|
|
do
|
|
# Set all frequencies one-by-one
|
|
for freq in $freqs; do
|
|
echo $freq > $filepath/scaling_min_freq
|
|
done
|
|
done
|
|
|
|
# restore old freq
|
|
echo $oldfreq > $filepath/scaling_min_freq
|
|
}
|
|
|
|
hotplug_with_updates()
|
|
{
|
|
for_each_non_boot_cpu hotplug_with_updates_cpu
|
|
}
|