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

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/cpufreq/module.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 ] ~

  1 #!/bin/bash
  2 # SPDX-License-Identifier: GPL-2.0
  3 #
  4 # Modules specific tests cases
  5 
  6 # protect against multiple inclusion
  7 if [ $FILE_MODULE ]; then
  8         return 0
  9 else
 10         FILE_MODULE=DONE
 11 fi
 12 
 13 source cpu.sh
 14 source cpufreq.sh
 15 source governor.sh
 16 
 17 # Check basic insmod/rmmod
 18 # $1: module
 19 test_basic_insmod_rmmod()
 20 {
 21         printf "** Test: Running ${FUNCNAME[0]} **\n\n"
 22 
 23         printf "Inserting $1 module\n"
 24         # insert module
 25         insmod $1
 26         if [ $? != 0 ]; then
 27                 ktap_exit_fail_msg "Insmod $1 failed\n"
 28         fi
 29 
 30         printf "Removing $1 module\n"
 31         # remove module
 32         rmmod $1
 33         if [ $? != 0 ]; then
 34                 ktap_exit_fail_msg "rmmod $1 failed\n"
 35         fi
 36 
 37         printf "\n"
 38 }
 39 
 40 # Insert cpufreq driver module and perform basic tests
 41 # $1: cpufreq-driver module to insert
 42 # $2: If we want to play with CPUs (1) or not (0)
 43 module_driver_test_single()
 44 {
 45         printf "** Test: Running ${FUNCNAME[0]} for driver $1 and cpus_hotplug=$2 **\n\n"
 46 
 47         if [ $2 -eq 1 ]; then
 48                 # offline all non-boot CPUs
 49                 for_each_non_boot_cpu offline_cpu
 50                 printf "\n"
 51         fi
 52 
 53         # insert module
 54         printf "Inserting $1 module\n\n"
 55         insmod $1
 56         if [ $? != 0 ]; then
 57                 printf "Insmod $1 failed\n"
 58                 return;
 59         fi
 60 
 61         if [ $2 -eq 1 ]; then
 62                 # online all non-boot CPUs
 63                 for_each_non_boot_cpu online_cpu
 64                 printf "\n"
 65         fi
 66 
 67         # run basic tests
 68         cpufreq_basic_tests
 69 
 70         # remove module
 71         printf "Removing $1 module\n\n"
 72         rmmod $1
 73         if [ $? != 0 ]; then
 74                 printf "rmmod $1 failed\n"
 75                 return;
 76         fi
 77 
 78         # There shouldn't be any cpufreq directories now.
 79         for_each_cpu cpu_should_not_have_cpufreq_directory
 80         printf "\n"
 81 }
 82 
 83 # $1: cpufreq-driver module to insert
 84 module_driver_test()
 85 {
 86         printf "** Test: Running ${FUNCNAME[0]} **\n\n"
 87 
 88         # check if module is present or not
 89         ls $1 > /dev/null
 90         if [ $? != 0 ]; then
 91                 printf "$1: not present in `pwd` folder\n"
 92                 return;
 93         fi
 94 
 95         # test basic module tests
 96         test_basic_insmod_rmmod $1
 97 
 98         # Do simple module test
 99         module_driver_test_single $1 0
100 
101         # Remove CPUs before inserting module and then bring them back
102         module_driver_test_single $1 1
103         printf "\n"
104 }
105 
106 # find governor name based on governor module name
107 # $1: governor module name
108 find_gov_name()
109 {
110         if [ $1 = "cpufreq_ondemand.ko" ]; then
111                 printf "ondemand"
112         elif [ $1 = "cpufreq_conservative.ko" ]; then
113                 printf "conservative"
114         elif [ $1 = "cpufreq_userspace.ko" ]; then
115                 printf "userspace"
116         elif [ $1 = "cpufreq_performance.ko" ]; then
117                 printf "performance"
118         elif [ $1 = "cpufreq_powersave.ko" ]; then
119                 printf "powersave"
120         elif [ $1 = "cpufreq_schedutil.ko" ]; then
121                 printf "schedutil"
122         fi
123 }
124 
125 # $1: governor string, $2: governor module, $3: policy
126 # example: module_governor_test_single "ondemand" "cpufreq_ondemand.ko" 2
127 module_governor_test_single()
128 {
129         printf "** Test: Running ${FUNCNAME[0]} for $3 **\n\n"
130 
131         backup_governor $3
132 
133         # switch to new governor
134         printf "Switch from $CUR_GOV to $1\n"
135         switch_show_governor $3 $1
136 
137         # try removing module, it should fail as governor is used
138         printf "Removing $2 module\n\n"
139         rmmod $2
140         if [ $? = 0 ]; then
141                 printf "WARN: rmmod $2 succeeded even if governor is used\n"
142                 insmod $2
143         else
144                 printf "Pass: unable to remove $2 while it is being used\n\n"
145         fi
146 
147         # switch back to old governor
148         printf "Switchback to $CUR_GOV from $1\n"
149         restore_governor $3
150         printf "\n"
151 }
152 
153 # Insert cpufreq governor module and perform basic tests
154 # $1: cpufreq-governor module to insert
155 module_governor_test()
156 {
157         printf "** Test: Running ${FUNCNAME[0]} **\n\n"
158 
159         # check if module is present or not
160         ls $1 > /dev/null
161         if [ $? != 0 ]; then
162                 printf "$1: not present in `pwd` folder\n"
163                 return;
164         fi
165 
166         # test basic module tests
167         test_basic_insmod_rmmod $1
168 
169         # insert module
170         printf "Inserting $1 module\n\n"
171         insmod $1
172         if [ $? != 0 ]; then
173                 printf "Insmod $1 failed\n"
174                 return;
175         fi
176 
177         # switch to new governor for each cpu
178         for_each_policy module_governor_test_single $(find_gov_name $1) $1
179 
180         # remove module
181         printf "Removing $1 module\n\n"
182         rmmod $1
183         if [ $? != 0 ]; then
184                 printf "rmmod $1 failed\n"
185                 return;
186         fi
187         printf "\n"
188 }
189 
190 # test modules: driver and governor
191 # $1: driver module, $2: governor module
192 module_test()
193 {
194         printf "** Test: Running ${FUNCNAME[0]} **\n\n"
195 
196         # check if modules are present or not
197         ls $1 $2 > /dev/null
198         if [ $? != 0 ]; then
199                 printf "$1 or $2: is not present in `pwd` folder\n"
200                 return;
201         fi
202 
203         # TEST1: Insert gov after driver
204         # insert driver module
205         printf "Inserting $1 module\n\n"
206         insmod $1
207         if [ $? != 0 ]; then
208                 printf "Insmod $1 failed\n"
209                 return;
210         fi
211 
212         # run governor tests
213         module_governor_test $2
214 
215         # remove driver module
216         printf "Removing $1 module\n\n"
217         rmmod $1
218         if [ $? != 0 ]; then
219                 printf "rmmod $1 failed\n"
220                 return;
221         fi
222 
223         # TEST2: Insert driver after governor
224         # insert governor module
225         printf "Inserting $2 module\n\n"
226         insmod $2
227         if [ $? != 0 ]; then
228                 printf "Insmod $2 failed\n"
229                 return;
230         fi
231 
232         # run governor tests
233         module_driver_test $1
234 
235         # remove driver module
236         printf "Removing $2 module\n\n"
237         rmmod $2
238         if [ $? != 0 ]; then
239                 printf "rmmod $2 failed\n"
240                 return;
241         fi
242 }

~ [ 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