~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/cpufreq/cpufreq.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/testing/selftests/cpufreq/cpufreq.sh (Architecture i386) and /tools/testing/selftests/cpufreq/cpufreq.sh (Architecture sparc)


  1 #!/bin/bash                                         1 #!/bin/bash
  2 # SPDX-License-Identifier: GPL-2.0                  2 # SPDX-License-Identifier: GPL-2.0
  3                                                     3 
  4 # protect against multiple inclusion                4 # protect against multiple inclusion
  5 if [ $FILE_CPUFREQ ]; then                          5 if [ $FILE_CPUFREQ ]; then
  6         return 0                                    6         return 0
  7 else                                                7 else
  8         FILE_CPUFREQ=DONE                           8         FILE_CPUFREQ=DONE
  9 fi                                                  9 fi
 10                                                    10 
 11 source cpu.sh                                      11 source cpu.sh
 12                                                    12 
 13                                                    13 
 14 # $1: cpu                                          14 # $1: cpu
 15 cpu_should_have_cpufreq_directory()                15 cpu_should_have_cpufreq_directory()
 16 {                                                  16 {
 17         if [ ! -d $CPUROOT/$1/cpufreq ]; then      17         if [ ! -d $CPUROOT/$1/cpufreq ]; then
 18                 printf "Warning: No cpufreq di     18                 printf "Warning: No cpufreq directory present for $1\n"
 19         fi                                         19         fi
 20 }                                                  20 }
 21                                                    21 
 22 cpu_should_not_have_cpufreq_directory()            22 cpu_should_not_have_cpufreq_directory()
 23 {                                                  23 {
 24         if [ -d $CPUROOT/$1/cpufreq ]; then        24         if [ -d $CPUROOT/$1/cpufreq ]; then
 25                 printf "Warning: cpufreq direc     25                 printf "Warning: cpufreq directory present for $1\n"
 26         fi                                         26         fi
 27 }                                                  27 }
 28                                                    28 
 29 for_each_policy()                                  29 for_each_policy()
 30 {                                                  30 {
 31         policies=$(ls $CPUFREQROOT| grep "poli     31         policies=$(ls $CPUFREQROOT| grep "policy[0-9].*")
 32         for policy in $policies; do                32         for policy in $policies; do
 33                 $@ $policy                         33                 $@ $policy
 34         done                                       34         done
 35 }                                                  35 }
 36                                                    36 
 37 for_each_policy_concurrent()                       37 for_each_policy_concurrent()
 38 {                                                  38 {
 39         policies=$(ls $CPUFREQROOT| grep "poli     39         policies=$(ls $CPUFREQROOT| grep "policy[0-9].*")
 40         for policy in $policies; do                40         for policy in $policies; do
 41                 $@ $policy &                       41                 $@ $policy &
 42         done                                       42         done
 43 }                                                  43 }
 44                                                    44 
 45 # $1: Path                                         45 # $1: Path
 46 read_cpufreq_files_in_dir()                        46 read_cpufreq_files_in_dir()
 47 {                                                  47 {
 48         local files=`ls $1`                        48         local files=`ls $1`
 49                                                    49 
 50         printf "Printing directory: $1\n\n"        50         printf "Printing directory: $1\n\n"
 51                                                    51 
 52         for file in $files; do                     52         for file in $files; do
 53                 if [ -f $1/$file ]; then           53                 if [ -f $1/$file ]; then
 54                         printf "$file:"            54                         printf "$file:"
 55                         cat $1/$file               55                         cat $1/$file
 56                 else                               56                 else
 57                         printf "\n"                57                         printf "\n"
 58                         read_cpufreq_files_in_     58                         read_cpufreq_files_in_dir "$1/$file"
 59                 fi                                 59                 fi
 60         done                                       60         done
 61         printf "\n"                                61         printf "\n"
 62 }                                                  62 }
 63                                                    63 
 64                                                    64 
 65 read_all_cpufreq_files()                           65 read_all_cpufreq_files()
 66 {                                                  66 {
 67         printf "** Test: Running ${FUNCNAME[0]     67         printf "** Test: Running ${FUNCNAME[0]} **\n\n"
 68                                                    68 
 69         read_cpufreq_files_in_dir $CPUFREQROOT     69         read_cpufreq_files_in_dir $CPUFREQROOT
 70                                                    70 
 71         printf "%s\n\n" "---------------------     71         printf "%s\n\n" "------------------------------------------------"
 72 }                                                  72 }
 73                                                    73 
 74                                                    74 
 75 # UPDATE CPUFREQ FILES                             75 # UPDATE CPUFREQ FILES
 76                                                    76 
 77 # $1: directory path                               77 # $1: directory path
 78 update_cpufreq_files_in_dir()                      78 update_cpufreq_files_in_dir()
 79 {                                                  79 {
 80         local files=`ls $1`                        80         local files=`ls $1`
 81                                                    81 
 82         printf "Updating directory: $1\n\n"        82         printf "Updating directory: $1\n\n"
 83                                                    83 
 84         for file in $files; do                     84         for file in $files; do
 85                 if [ -f $1/$file ]; then           85                 if [ -f $1/$file ]; then
 86                         # file is writable ?       86                         # file is writable ?
 87                         local wfile=$(ls -l $1     87                         local wfile=$(ls -l $1/$file | awk '$1 ~ /^.*w.*/ { print $NF; }')
 88                                                    88 
 89                         if [ ! -z $wfile ]; th     89                         if [ ! -z $wfile ]; then
 90                                 # scaling_sets     90                                 # scaling_setspeed is a special file and we
 91                                 # should skip      91                                 # should skip updating it
 92                                 if [ $file !=      92                                 if [ $file != "scaling_setspeed" ]; then
 93                                         local      93                                         local val=$(cat $1/$file)
 94                                         printf     94                                         printf "Writing $val to: $file\n"
 95                                         echo $     95                                         echo $val > $1/$file
 96                                 fi                 96                                 fi
 97                         fi                         97                         fi
 98                 else                               98                 else
 99                         printf "\n"                99                         printf "\n"
100                         update_cpufreq_files_i    100                         update_cpufreq_files_in_dir "$1/$file"
101                 fi                                101                 fi
102         done                                      102         done
103                                                   103 
104         printf "\n"                               104         printf "\n"
105 }                                                 105 }
106                                                   106 
107 # Update all writable files with their existin    107 # Update all writable files with their existing values
108 update_all_cpufreq_files()                        108 update_all_cpufreq_files()
109 {                                                 109 {
110         printf "** Test: Running ${FUNCNAME[0]    110         printf "** Test: Running ${FUNCNAME[0]} **\n\n"
111                                                   111 
112         update_cpufreq_files_in_dir $CPUFREQRO    112         update_cpufreq_files_in_dir $CPUFREQROOT
113                                                   113 
114         printf "%s\n\n" "---------------------    114         printf "%s\n\n" "------------------------------------------------"
115 }                                                 115 }
116                                                   116 
117                                                   117 
118 # CHANGE CPU FREQUENCIES                          118 # CHANGE CPU FREQUENCIES
119                                                   119 
120 # $1: policy                                      120 # $1: policy
121 find_current_freq()                               121 find_current_freq()
122 {                                                 122 {
123         cat $CPUFREQROOT/$1/scaling_cur_freq      123         cat $CPUFREQROOT/$1/scaling_cur_freq
124 }                                                 124 }
125                                                   125 
126 # $1: policy                                      126 # $1: policy
127 # $2: frequency                                   127 # $2: frequency
128 set_cpu_frequency()                               128 set_cpu_frequency()
129 {                                                 129 {
130         printf "Change frequency for $1 to $2\    130         printf "Change frequency for $1 to $2\n"
131         echo $2 > $CPUFREQROOT/$1/scaling_sets    131         echo $2 > $CPUFREQROOT/$1/scaling_setspeed
132 }                                                 132 }
133                                                   133 
134 # $1: policy                                      134 # $1: policy
135 test_all_frequencies()                            135 test_all_frequencies()
136 {                                                 136 {
137         local filepath="$CPUFREQROOT/$1"          137         local filepath="$CPUFREQROOT/$1"
138                                                   138 
139         backup_governor $1                        139         backup_governor $1
140                                                   140 
141         local found=$(switch_governor $1 "user    141         local found=$(switch_governor $1 "userspace")
142         if [ $found = 1 ]; then                   142         if [ $found = 1 ]; then
143                 printf "${FUNCNAME[0]}: usersp    143                 printf "${FUNCNAME[0]}: userspace governor not available for: $1\n"
144                 return;                           144                 return;
145         fi                                        145         fi
146                                                   146 
147         printf "Switched governor for $1 to us    147         printf "Switched governor for $1 to userspace\n\n"
148                                                   148 
149         local freqs=$(cat $filepath/scaling_av    149         local freqs=$(cat $filepath/scaling_available_frequencies)
150         printf "Available frequencies for $1:     150         printf "Available frequencies for $1: $freqs\n\n"
151                                                   151 
152         # Set all frequencies one-by-one          152         # Set all frequencies one-by-one
153         for freq in $freqs; do                    153         for freq in $freqs; do
154                 set_cpu_frequency $1 $freq        154                 set_cpu_frequency $1 $freq
155         done                                      155         done
156                                                   156 
157         printf "\n"                               157         printf "\n"
158                                                   158 
159         restore_governor $1                       159         restore_governor $1
160 }                                                 160 }
161                                                   161 
162 # $1: loop count                                  162 # $1: loop count
163 shuffle_frequency_for_all_cpus()                  163 shuffle_frequency_for_all_cpus()
164 {                                                 164 {
165         printf "** Test: Running ${FUNCNAME[0]    165         printf "** Test: Running ${FUNCNAME[0]} for $1 loops **\n\n"
166                                                   166 
167         for i in `seq 1 $1`; do                   167         for i in `seq 1 $1`; do
168                 for_each_policy test_all_frequ    168                 for_each_policy test_all_frequencies
169         done                                      169         done
170         printf "\n%s\n\n" "-------------------    170         printf "\n%s\n\n" "------------------------------------------------"
171 }                                                 171 }
172                                                   172 
173 # Basic cpufreq tests                             173 # Basic cpufreq tests
174 cpufreq_basic_tests()                             174 cpufreq_basic_tests()
175 {                                                 175 {
176         printf "*** RUNNING CPUFREQ SANITY TES    176         printf "*** RUNNING CPUFREQ SANITY TESTS ***\n"
177         printf "==============================    177         printf "====================================\n\n"
178                                                   178 
179         count=$(count_cpufreq_managed_cpus)       179         count=$(count_cpufreq_managed_cpus)
180         if [ $count = 0 ]; then                   180         if [ $count = 0 ]; then
181                 ktap_exit_fail_msg "No cpu is     181                 ktap_exit_fail_msg "No cpu is managed by cpufreq core, exiting\n"
182         else                                      182         else
183                 printf "CPUFreq manages: $coun    183                 printf "CPUFreq manages: $count CPUs\n\n"
184         fi                                        184         fi
185                                                   185 
186         # Detect & print which CPUs are not ma    186         # Detect & print which CPUs are not managed by cpufreq
187         print_unmanaged_cpus                      187         print_unmanaged_cpus
188                                                   188 
189         # read/update all cpufreq files           189         # read/update all cpufreq files
190         read_all_cpufreq_files                    190         read_all_cpufreq_files
191         update_all_cpufreq_files                  191         update_all_cpufreq_files
192                                                   192 
193         # hotplug cpus                            193         # hotplug cpus
194         reboot_cpus 5                             194         reboot_cpus 5
195                                                   195 
196         # Test all frequencies                    196         # Test all frequencies
197         shuffle_frequency_for_all_cpus 2          197         shuffle_frequency_for_all_cpus 2
198                                                   198 
199         # Test all governors                      199         # Test all governors
200         shuffle_governors_for_all_cpus 1          200         shuffle_governors_for_all_cpus 1
201 }                                                 201 }
202                                                   202 
203 # Suspend/resume                                  203 # Suspend/resume
204 # $1: "suspend" or "hibernate", $2: loop count    204 # $1: "suspend" or "hibernate", $2: loop count
205 do_suspend()                                      205 do_suspend()
206 {                                                 206 {
207         printf "** Test: Running ${FUNCNAME[0]    207         printf "** Test: Running ${FUNCNAME[0]}: Trying $1 for $2 loops **\n\n"
208                                                   208 
209         # Is the directory available              209         # Is the directory available
210         if [ ! -d $SYSFS/power/ -o ! -f $SYSFS    210         if [ ! -d $SYSFS/power/ -o ! -f $SYSFS/power/state ]; then
211                 printf "$SYSFS/power/state not    211                 printf "$SYSFS/power/state not available\n"
212                 return 1                          212                 return 1
213         fi                                        213         fi
214                                                   214 
215         if [ $1 = "suspend" ]; then               215         if [ $1 = "suspend" ]; then
216                 filename="mem"                    216                 filename="mem"
217         elif [ $1 = "hibernate" ]; then           217         elif [ $1 = "hibernate" ]; then
218                 filename="disk"                   218                 filename="disk"
219         else                                      219         else
220                 printf "$1 is not a valid opti    220                 printf "$1 is not a valid option\n"
221                 return 1                          221                 return 1
222         fi                                        222         fi
223                                                   223 
224         if [ -n $filename ]; then                 224         if [ -n $filename ]; then
225                 present=$(cat $SYSFS/power/sta    225                 present=$(cat $SYSFS/power/state | grep $filename)
226                                                   226 
227                 if [ -z "$present" ]; then        227                 if [ -z "$present" ]; then
228                         printf "Tried to $1 bu    228                         printf "Tried to $1 but $filename isn't present in $SYSFS/power/state\n"
229                         return 1;                 229                         return 1;
230                 fi                                230                 fi
231                                                   231 
232                 for i in `seq 1 $2`; do           232                 for i in `seq 1 $2`; do
233                         printf "Starting $1\n"    233                         printf "Starting $1\n"
234                                                   234 
235                         if [ "$3" = "rtc" ]; t    235                         if [ "$3" = "rtc" ]; then
236                                 if ! command -    236                                 if ! command -v rtcwake &> /dev/null; then
237                                         printf    237                                         printf "rtcwake could not be found, please install it.\n"
238                                         return    238                                         return 1
239                                 fi                239                                 fi
240                                                   240 
241                                 rtcwake -m $fi    241                                 rtcwake -m $filename -s 15
242                                                   242 
243                                 if [ $? -ne 0     243                                 if [ $? -ne 0 ]; then
244                                         printf    244                                         printf "Failed to suspend using RTC wake alarm\n"
245                                         return    245                                         return 1
246                                 fi                246                                 fi
247                         fi                        247                         fi
248                                                   248 
249                         echo $filename > $SYSF    249                         echo $filename > $SYSFS/power/state
250                         printf "Came out of $1    250                         printf "Came out of $1\n"
251                                                   251 
252                         printf "Do basic tests    252                         printf "Do basic tests after finishing $1 to verify cpufreq state\n\n"
253                         cpufreq_basic_tests       253                         cpufreq_basic_tests
254                 done                              254                 done
255         fi                                        255         fi
256 }                                                 256 }
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php