* [v4l-utils PATCH v2 0/2] Fix module unloading, vimc device naming
@ 2025-08-04 15:51 Sakari Ailus
2025-08-04 15:51 ` [v4l-utils PATCH v2 1/2] contrib/test/test-media: Fix module unloading Sakari Ailus
2025-08-04 15:52 ` [v4l-utils PATCH v2 2/2] contrib/test/test-media: Probe the vimc device Sakari Ailus
0 siblings, 2 replies; 3+ messages in thread
From: Sakari Ailus @ 2025-08-04 15:51 UTC (permalink / raw)
To: linux-media; +Cc: laurent.pinchart, hans
This set fixes test driver module unloading and vimc device naming (see
<20231129141545.87461-3-sakari.ailus@linux.intel.com> on LMML).
since v1:
- Rework module loading and unloading. All loaded modules are now
unloaded, too, by new functions handling the respective operations.
Sakari Ailus (2):
contrib/test/test-media: Fix module unloading
contrib/test/test-media: Probe the vimc device
contrib/test/test-media | 134 ++++++++++++++++++++++------------------
1 file changed, 75 insertions(+), 59 deletions(-)
--
2.39.5
^ permalink raw reply [flat|nested] 3+ messages in thread
* [v4l-utils PATCH v2 1/2] contrib/test/test-media: Fix module unloading
2025-08-04 15:51 [v4l-utils PATCH v2 0/2] Fix module unloading, vimc device naming Sakari Ailus
@ 2025-08-04 15:51 ` Sakari Ailus
2025-08-04 15:52 ` [v4l-utils PATCH v2 2/2] contrib/test/test-media: Probe the vimc device Sakari Ailus
1 sibling, 0 replies; 3+ messages in thread
From: Sakari Ailus @ 2025-08-04 15:51 UTC (permalink / raw)
To: linux-media; +Cc: laurent.pinchart, hans
Keep track of all loaded modules and unload them at exit. This also
unifies informing of loading and unloading modules.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
contrib/test/test-media | 83 ++++++++++++++++++++++-------------------
1 file changed, 44 insertions(+), 39 deletions(-)
diff --git a/contrib/test/test-media b/contrib/test/test-media
index 68fe48f947f3..87f5a0544b84 100755
--- a/contrib/test/test-media
+++ b/contrib/test/test-media
@@ -24,10 +24,31 @@ kobj_rel=0
v4l2_ctl=v4l2-ctl
v4l2_compliance=v4l2-compliance
compliance_args=
+declare -A modules_loaded
+
+unload_module() {
+ echo rmmod $1 | tee /dev/kmsg
+ rmmod $1 2> /dev/null
+ unset modules_loaded[$1];
+}
+
+unload_modules() {
+ local i
+
+ for i in ${!modules_unload[@]}; do
+ unload_module $i
+ done
+}
run_modprobe () {
dmesg -n info
+ if [ "$1" == "-r" ]; then
+ unload_module "$2"
+ shift
+ fi
+ echo modprobe $1 | tee /dev/kmsg
modprobe $@
+ modules_loaded[$1]=1
sleep $modprobe_time
udevadm settle
dmesg -n notice
@@ -229,8 +250,7 @@ if [ $kmemleak -eq 1 ]; then
fi
dmesg -n info
-rmmod vivid 2&>/dev/null
-run_modprobe vivid n_devs=3 multiplanar=1,2,2 cache_hints=1,0,0 #allocators=0,1,1
+run_modprobe -r vivid n_devs=3 multiplanar=1,2,2 cache_hints=1,0,0 #allocators=0,1,1
tmp=`mktemp`
@@ -238,6 +258,7 @@ if ! $v4l2_ctl -z platform:vivid-002 -d vivid-002-vid-cap ; then
echo "FAIL: the vivid module failed to load" | tee -a $tmp
echo "Grand Total for vivid: Succeeded: 0, Failed: 1, Warnings: 0" | tee -a $tmp
echo "Final Summary: 1, Succeeded: 0, Failed: 1, Warnings: 0"
+ unload_modules
exit 0
fi
@@ -291,6 +312,7 @@ if [ $cec -eq 1 ]; then
echo "FAIL: the vivid module had no cec support" | tee -a $tmp
echo "Grand Total for vivid cec: Succeeded: 0, Failed: 1, Warnings: 0" | tee -a $tmp
echo "Final Summary: 1, Succeeded: 0, Failed: 1, Warnings: 0"
+ unload_modules
exit 0
fi
cec-ctl -D vivid -a vivid-000-vid-cap0 --tv
@@ -375,9 +397,7 @@ if [ $vivid -eq 1 -a $setup -eq 0 ]; then
echo -n vivid.0 >/sys/bus/platform/drivers/vivid/unbind
sleep $reunbind_time
echo
- echo rmmod vivid | tee /dev/kmsg
- echo
- rmmod vivid
+ unload_module vivid
sleep $rmmod_time
if [ $kmemleak -eq 1 ]; then
@@ -410,14 +430,13 @@ if [ $vivid -eq 1 -a $setup -eq 0 ]; then
fi
if [ $vim2m -eq 1 ]; then
- rmmod vim2m 2&>/dev/null
- run_modprobe vim2m
+ run_modprobe -r vim2m
if ! $v4l2_ctl -z platform:vim2m ; then
echo "FAIL: the vim2m module failed to load" | tee -a $tmp
echo "Grand Total for vim2m: Succeeded: 0, Failed: 1, Warnings: 0" | tee -a $tmp
echo "Final Summary: 1, Succeeded: 0, Failed: 1, Warnings: 0"
- rmmod vivid
+ unload_modules
exit 0
fi
fi
@@ -432,9 +451,7 @@ if [ $vim2m -eq 1 -a $setup -eq 0 ]; then
echo
echo
echo
- echo rmmod vim2m | tee /dev/kmsg
- echo
- rmmod vim2m
+ unload_module vim2m
sleep $rmmod_time
if [ $kmemleak -eq 1 ]; then
echo
@@ -453,7 +470,7 @@ if [ $vim2m -eq 1 -a $setup -eq 0 ]; then
echo "FAIL: the vim2m module failed to load" | tee -a $tmp
echo "Grand Total for vim2m: Succeeded: 0, Failed: 1, Warnings: 0" | tee -a $tmp
echo "Final Summary: 1, Succeeded: 0, Failed: 1, Warnings: 0"
- rmmod vivid
+ unload_modules
exit 0
fi
@@ -493,9 +510,7 @@ if [ $vim2m -eq 1 -a $setup -eq 0 ]; then
echo -n vim2m.0 >/sys/bus/platform/drivers/vim2m/unbind
sleep $reunbind_time
echo
- echo rmmod vim2m | tee /dev/kmsg
- echo
- rmmod vim2m
+ unload_module vim2m
sleep $rmmod_time
if [ $kmemleak -eq 1 ]; then
echo
@@ -518,14 +533,13 @@ if [ $vim2m -eq 1 -a $setup -eq 0 ]; then
fi
if [ $vimc -eq 1 ]; then
- rmmod vimc 2&>/dev/null
- run_modprobe vimc
+ run_modprobe -r vimc
if ! $v4l2_ctl -z platform:vimc -d "Sensor A" ; then
echo "FAIL: the vimc module failed to load" | tee -a $tmp
echo "Grand Total for vimc: Succeeded: 0, Failed: 1, Warnings: 0" | tee -a $tmp
echo "Final Summary: 1, Succeeded: 0, Failed: 1, Warnings: 0"
- rmmod vivid
+ unload_modules
exit 0
fi
@@ -587,9 +601,7 @@ if [ $vimc -eq 1 -a $setup -eq 0 ]; then
echo -n vimc.0 >/sys/bus/platform/drivers/vimc/unbind
sleep 14
echo
- echo rmmod vimc | tee /dev/kmsg
- echo
- rmmod vimc
+ unload_module vimc
sleep $rmmod_time
if [ $kmemleak -eq 1 ]; then
echo
@@ -620,14 +632,13 @@ if [ $vicodec -eq 1 ]; then
mkdir $tmpdir
fi
- rmmod vicodec 2&>/dev/null
- run_modprobe vicodec
+ run_modprobe -r vicodec
if ! $v4l2_ctl -z platform:vicodec ; then
echo "FAIL: the vicodec module failed to load" | tee -a $tmp
echo "Grand Total for vicodec: Succeeded: 0, Failed: 1, Warnings: 0" | tee -a $tmp
echo "Final Summary: 1, Succeeded: 0, Failed: 1, Warnings: 0"
- rmmod vivid
+ unload_modules
exit 0
fi
@@ -778,9 +789,7 @@ if [ $vicodec -eq 1 -a $setup -eq 0 ]; then
echo -n vicodec.0 >/sys/bus/platform/drivers/vicodec/unbind
sleep $reunbind_time
echo
- echo rmmod vicodec | tee /dev/kmsg
- echo
- rmmod vicodec
+ unload_module vicodec
sleep $rmmod_time
if [ $kmemleak -eq 1 ]; then
echo
@@ -805,14 +814,13 @@ fi
if [ $visl -eq 1 ]; then
echo
- echo loading visl module | tee /dev/kmsg
- run_modprobe visl
+ run_modprobe -r visl
if ! $v4l2_ctl -z platform:visl ; then
echo "FAIL: the visl module failed to load" | tee -a $tmp
echo "Grand Total for visl: Succeeded: 0, Failed: 1, Warnings: 0" | tee -a $tmp
echo "Final Summary: 1, Succeeded: 0, Failed: 1, Warnings: 0"
- rmmod vivid
+ unload_modules
exit 0
fi
fi
@@ -846,9 +854,7 @@ if [ $visl -eq 1 -a $setup -eq 0 ]; then
echo -n visl.0 >/sys/bus/platform/drivers/visl/unbind
sleep $reunbind_time
echo
- echo rmmod visl | tee /dev/kmsg
- echo
- rmmod visl
+ unload_module visl
sleep $rmmod_time
if [ $kmemleak -eq 1 ]; then
@@ -889,6 +895,7 @@ if [ $vidtv -eq 1 ]; then
echo "Grand Total for vidtv: Succeeded: 0, Failed: 1, Warnings: 0" | tee -a $tmp
echo "Final Summary: 1, Succeeded: 0, Failed: 1, Warnings: 0"
rmmod dvb_vidtv_bridge dvb_vidtv_tuner dvb_vidtv_demod 2&>/dev/null
+ unload_modules
exit 0
fi
fi
@@ -926,9 +933,7 @@ if [ $vidtv -eq 1 -a $setup -eq 0 ]; then
echo -n vidtv.0 >/sys/bus/platform/drivers/vidtv/unbind
sleep $reunbind_time
echo
- echo rmmod dvb_vidtv_bridge dvb_vidtv_tuner dvb_vidtv_demod
- echo
- rmmod dvb_vidtv_bridge dvb_vidtv_tuner dvb_vidtv_demod
+ unload_module dvb_vidtv_bridge dvb_vidtv_tuner dvb_vidtv_demod
sleep $rmmod_time
if [ $kmemleak -eq 1 ]; then
echo
@@ -959,9 +964,7 @@ if [ $setup -eq 0 ]; then
echo -n vivid.0 >/sys/bus/platform/drivers/vivid/unbind
sleep $unbind_time
echo
- echo rmmod vivid | tee /dev/kmsg
- echo
- rmmod vivid
+ unload_module vivid
sleep $rmmod_time
fi
@@ -1001,5 +1004,7 @@ if [ $setup -eq 0 ]; then
fi
fi
+unload_modules
+
dmesg -n info
date
--
2.39.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [v4l-utils PATCH v2 2/2] contrib/test/test-media: Probe the vimc device
2025-08-04 15:51 [v4l-utils PATCH v2 0/2] Fix module unloading, vimc device naming Sakari Ailus
2025-08-04 15:51 ` [v4l-utils PATCH v2 1/2] contrib/test/test-media: Fix module unloading Sakari Ailus
@ 2025-08-04 15:52 ` Sakari Ailus
1 sibling, 0 replies; 3+ messages in thread
From: Sakari Ailus @ 2025-08-04 15:52 UTC (permalink / raw)
To: linux-media; +Cc: laurent.pinchart, hans
The vimc platform device is called platform:vimc.0 after kernel patch
"media: vimc: Don't explicitly set bus_info". Adapt to possible different
naming of the vimc device.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
contrib/test/test-media | 51 +++++++++++++++++++++++++----------------
1 file changed, 31 insertions(+), 20 deletions(-)
diff --git a/contrib/test/test-media b/contrib/test/test-media
index 87f5a0544b84..0bb4844a58ad 100755
--- a/contrib/test/test-media
+++ b/contrib/test/test-media
@@ -535,7 +535,18 @@ fi
if [ $vimc -eq 1 ]; then
run_modprobe -r vimc
- if ! $v4l2_ctl -z platform:vimc -d "Sensor A" ; then
+ for i in vimc vimc.0; do
+ if media-ctl -d platform:$i > /dev/null; then
+ vimc_device=platform:$i
+ fi
+ done
+ if [ "$vimc_device" -eq "" ]; then
+ echo "FAIL: can't find vimc device" | tee -a $tmp
+ unload_modules
+ exit 0
+ fi
+
+ if ! $v4l2_ctl -z $vimc_device -d "Sensor A" ; then
echo "FAIL: the vimc module failed to load" | tee -a $tmp
echo "Grand Total for vimc: Succeeded: 0, Failed: 1, Warnings: 0" | tee -a $tmp
echo "Final Summary: 1, Succeeded: 0, Failed: 1, Warnings: 0"
@@ -543,14 +554,14 @@ if [ $vimc -eq 1 ]; then
exit 0
fi
- media-ctl -d platform:vimc -V '"Sensor A":0[fmt:SBGGR8_1X8/640x480]'
- media-ctl -d platform:vimc -V '"Debayer A":0[fmt:SBGGR8_1X8/640x480]'
- media-ctl -d platform:vimc -V '"Sensor B":0[fmt:SBGGR8_1X8/640x480]'
- media-ctl -d platform:vimc -V '"Debayer B":0[fmt:SBGGR8_1X8/640x480]'
- media-ctl -d platform:vimc -V '"Scaler":1[fmt:RGB888_1X24/1920x1440]'
- $v4l2_ctl -z platform:vimc -d "RGB/YUV Capture" -v width=1920,height=1440
- $v4l2_ctl -z platform:vimc -d "Raw Capture 0" -v pixelformat=BA81
- $v4l2_ctl -z platform:vimc -d "Raw Capture 1" -v pixelformat=BA81
+ media-ctl -d $vimc_device -V '"Sensor A":0[fmt:SBGGR8_1X8/640x480]'
+ media-ctl -d $vimc_device -V '"Debayer A":0[fmt:SBGGR8_1X8/640x480]'
+ media-ctl -d $vimc_device -V '"Sensor B":0[fmt:SBGGR8_1X8/640x480]'
+ media-ctl -d $vimc_device -V '"Debayer B":0[fmt:SBGGR8_1X8/640x480]'
+ media-ctl -d $vimc_device -V '"Scaler":1[fmt:RGB888_1X24/1920x1440]'
+ $v4l2_ctl -z $vimc_device -d "RGB/YUV Capture" -v width=1920,height=1440
+ $v4l2_ctl -z $vimc_device -d "Raw Capture 0" -v pixelformat=BA81
+ $v4l2_ctl -z $vimc_device -d "Raw Capture 1" -v pixelformat=BA81
fi
if [ $vimc -eq 1 -a $setup -eq 0 ]; then
@@ -559,7 +570,7 @@ if [ $vimc -eq 1 -a $setup -eq 0 ]; then
echo vimc compliance tests | tee /dev/kmsg
echo
date
- stdbuf -oL $v4l2_compliance -m platform:vimc -z platform:vivid-002 -e vivid-002-vid-cap -s10 -P -a 2>&1 | tee -a $tmp
+ stdbuf -oL $v4l2_compliance -m $vimc_device -z platform:vivid-002 -e vivid-002-vid-cap -s10 -P -a 2>&1 | tee -a $tmp
echo
echo
echo
@@ -579,24 +590,24 @@ if [ $vimc -eq 1 -a $setup -eq 0 ]; then
echo
echo -n vimc.0 >/sys/bus/platform/drivers/vimc/bind
sleep 1
- media-ctl -d platform:vimc -V '"Sensor A":0[fmt:SBGGR8_1X8/640x480]'
- media-ctl -d platform:vimc -V '"Debayer A":0[fmt:SBGGR8_1X8/640x480]'
- media-ctl -d platform:vimc -V '"Sensor B":0[fmt:SBGGR8_1X8/640x480]'
- media-ctl -d platform:vimc -V '"Debayer B":0[fmt:SBGGR8_1X8/640x480]'
- media-ctl -d platform:vimc -V '"Scaler":1[fmt:RGB888_1X24/1920x1440]'
- $v4l2_ctl -z platform:vimc -d "RGB/YUV Capture" -v width=1920,height=1440
- $v4l2_ctl -z platform:vimc -d "Raw Capture 0" -v pixelformat=BA81
- $v4l2_ctl -z platform:vimc -d "Raw Capture 1" -v pixelformat=BA81
+ media-ctl -d $vimc_device -V '"Sensor A":0[fmt:SBGGR8_1X8/640x480]'
+ media-ctl -d $vimc_device -V '"Debayer A":0[fmt:SBGGR8_1X8/640x480]'
+ media-ctl -d $vimc_device -V '"Sensor B":0[fmt:SBGGR8_1X8/640x480]'
+ media-ctl -d $vimc_device -V '"Debayer B":0[fmt:SBGGR8_1X8/640x480]'
+ media-ctl -d $vimc_device -V '"Scaler":1[fmt:RGB888_1X24/1920x1440]'
+ $v4l2_ctl -z $vimc_device -d "RGB/YUV Capture" -v width=1920,height=1440
+ $v4l2_ctl -z $vimc_device -d "Raw Capture 0" -v pixelformat=BA81
+ $v4l2_ctl -z $vimc_device -d "Raw Capture 1" -v pixelformat=BA81
echo
echo second unbind vimc | tee /dev/kmsg
echo
# Max sleep time is 6 + 8 = 14s
- for i in `$v4l2_ctl -z platform:vimc --list-devices`; do
+ for i in `$v4l2_ctl -z $vimc_device --list-devices`; do
let "t = 6 + $RANDOM / 4096"
echo $i: sleep ${t}s
sleep $t <$i &
done
- $v4l2_ctl -z platform:vimc -d "Raw Capture 0" --stream-mmap --sleep 5 &
+ $v4l2_ctl -z $vimc_device -d "Raw Capture 0" --stream-mmap --sleep 5 &
sleep 1
echo -n vimc.0 >/sys/bus/platform/drivers/vimc/unbind
sleep 14
--
2.39.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-08-04 15:52 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-04 15:51 [v4l-utils PATCH v2 0/2] Fix module unloading, vimc device naming Sakari Ailus
2025-08-04 15:51 ` [v4l-utils PATCH v2 1/2] contrib/test/test-media: Fix module unloading Sakari Ailus
2025-08-04 15:52 ` [v4l-utils PATCH v2 2/2] contrib/test/test-media: Probe the vimc device Sakari Ailus
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.