2 # SPDX-License-Identifier: GPL-2.0
4 # Modules specific tests cases
6 # protect against multiple inclusion
7 if [ $FILE_MODULE ]; then
17 # Check basic insmod/rmmod
19 test_basic_insmod_rmmod
()
21 printf "** Test: Running ${FUNCNAME[0]} **\n\n"
23 printf "Inserting $1 module\n"
27 printf "Insmod $1 failed\n"
31 printf "Removing $1 module\n"
35 printf "rmmod $1 failed\n"
42 # Insert cpufreq driver module and perform basic tests
43 # $1: cpufreq-driver module to insert
44 # $2: If we want to play with CPUs (1) or not (0)
45 module_driver_test_single
()
47 printf "** Test: Running ${FUNCNAME[0]} for driver $1 and cpus_hotplug=$2 **\n\n"
50 # offline all non-boot CPUs
51 for_each_non_boot_cpu offline_cpu
56 printf "Inserting $1 module\n\n"
59 printf "Insmod $1 failed\n"
64 # online all non-boot CPUs
65 for_each_non_boot_cpu online_cpu
73 printf "Removing $1 module\n\n"
76 printf "rmmod $1 failed\n"
80 # There shouldn't be any cpufreq directories now.
81 for_each_cpu cpu_should_not_have_cpufreq_directory
85 # $1: cpufreq-driver module to insert
88 printf "** Test: Running ${FUNCNAME[0]} **\n\n"
90 # check if module is present or not
93 printf "$1: not present in `pwd` folder\n"
97 # test basic module tests
98 test_basic_insmod_rmmod
$1
100 # Do simple module test
101 module_driver_test_single
$1 0
103 # Remove CPUs before inserting module and then bring them back
104 module_driver_test_single
$1 1
108 # find governor name based on governor module name
109 # $1: governor module name
112 if [ $1 = "cpufreq_ondemand.ko" ]; then
114 elif [ $1 = "cpufreq_conservative.ko" ]; then
115 printf "conservative"
116 elif [ $1 = "cpufreq_userspace.ko" ]; then
118 elif [ $1 = "cpufreq_performance.ko" ]; then
120 elif [ $1 = "cpufreq_powersave.ko" ]; then
122 elif [ $1 = "cpufreq_schedutil.ko" ]; then
127 # $1: governor string, $2: governor module, $3: policy
128 # example: module_governor_test_single "ondemand" "cpufreq_ondemand.ko" 2
129 module_governor_test_single
()
131 printf "** Test: Running ${FUNCNAME[0]} for $3 **\n\n"
135 # switch to new governor
136 printf "Switch from $CUR_GOV to $1\n"
137 switch_show_governor
$3 $1
139 # try removing module, it should fail as governor is used
140 printf "Removing $2 module\n\n"
143 printf "WARN: rmmod $2 succeeded even if governor is used\n"
146 printf "Pass: unable to remove $2 while it is being used\n\n"
149 # switch back to old governor
150 printf "Switchback to $CUR_GOV from $1\n"
155 # Insert cpufreq governor module and perform basic tests
156 # $1: cpufreq-governor module to insert
157 module_governor_test
()
159 printf "** Test: Running ${FUNCNAME[0]} **\n\n"
161 # check if module is present or not
164 printf "$1: not present in `pwd` folder\n"
168 # test basic module tests
169 test_basic_insmod_rmmod
$1
172 printf "Inserting $1 module\n\n"
175 printf "Insmod $1 failed\n"
179 # switch to new governor for each cpu
180 for_each_policy module_governor_test_single $
(find_gov_name
$1) $1
183 printf "Removing $1 module\n\n"
186 printf "rmmod $1 failed\n"
192 # test modules: driver and governor
193 # $1: driver module, $2: governor module
196 printf "** Test: Running ${FUNCNAME[0]} **\n\n"
198 # check if modules are present or not
201 printf "$1 or $2: is not present in `pwd` folder\n"
205 # TEST1: Insert gov after driver
206 # insert driver module
207 printf "Inserting $1 module\n\n"
210 printf "Insmod $1 failed\n"
215 module_governor_test
$2
217 # remove driver module
218 printf "Removing $1 module\n\n"
221 printf "rmmod $1 failed\n"
225 # TEST2: Insert driver after governor
226 # insert governor module
227 printf "Inserting $2 module\n\n"
230 printf "Insmod $2 failed\n"
235 module_driver_test
$1
237 # remove driver module
238 printf "Removing $2 module\n\n"
241 printf "rmmod $2 failed\n"