Linux Audio

Check our new training course

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