hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# 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
}