Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/testing/selftests/cpufreq/special-tests.sh
26302 views
1
#!/bin/bash
2
# SPDX-License-Identifier: GPL-2.0
3
#
4
# Special test cases reported by people
5
6
# Testcase 1: Reported here: http://marc.info/?l=linux-pm&m=140618592709858&w=2
7
8
# protect against multiple inclusion
9
if [ $FILE_SPECIAL ]; then
10
return 0
11
else
12
FILE_SPECIAL=DONE
13
fi
14
15
source cpu.sh
16
source cpufreq.sh
17
source governor.sh
18
19
# Test 1
20
# $1: policy
21
__simple_lockdep()
22
{
23
# switch to ondemand
24
__switch_governor $1 "ondemand"
25
26
# cat ondemand files
27
local ondir=$(find_gov_directory $1 "ondemand")
28
if [ -z $ondir ]; then
29
printf "${FUNCNAME[0]}Ondemand directory not created, quit"
30
return
31
fi
32
33
cat $ondir/*
34
35
# switch to conservative
36
__switch_governor $1 "conservative"
37
}
38
39
simple_lockdep()
40
{
41
printf "** Test: Running ${FUNCNAME[0]} **\n"
42
43
for_each_policy __simple_lockdep
44
}
45
46
# Test 2
47
# $1: policy
48
__concurrent_lockdep()
49
{
50
for i in `seq 0 100`; do
51
__simple_lockdep $1
52
done
53
}
54
55
concurrent_lockdep()
56
{
57
printf "** Test: Running ${FUNCNAME[0]} **\n"
58
59
for_each_policy_concurrent __concurrent_lockdep
60
}
61
62
# Test 3
63
quick_shuffle()
64
{
65
# this is called concurrently from governor_race
66
for I in `seq 1000`
67
do
68
echo ondemand | sudo tee $CPUFREQROOT/policy*/scaling_governor &
69
echo userspace | sudo tee $CPUFREQROOT/policy*/scaling_governor &
70
done
71
}
72
73
governor_race()
74
{
75
printf "** Test: Running ${FUNCNAME[0]} **\n"
76
77
# run 8 concurrent instances
78
for I in `seq 8`
79
do
80
quick_shuffle &
81
done
82
}
83
84
# Test 4
85
# $1: cpu
86
hotplug_with_updates_cpu()
87
{
88
local filepath="$CPUROOT/$1/cpufreq"
89
90
# switch to ondemand
91
__switch_governor_for_cpu $1 "ondemand"
92
93
for i in `seq 1 5000`
94
do
95
reboot_cpu $1
96
done &
97
98
local freqs=$(cat $filepath/scaling_available_frequencies)
99
local oldfreq=$(cat $filepath/scaling_min_freq)
100
101
for j in `seq 1 5000`
102
do
103
# Set all frequencies one-by-one
104
for freq in $freqs; do
105
echo $freq > $filepath/scaling_min_freq
106
done
107
done
108
109
# restore old freq
110
echo $oldfreq > $filepath/scaling_min_freq
111
}
112
113
hotplug_with_updates()
114
{
115
for_each_non_boot_cpu hotplug_with_updates_cpu
116
}
117
118