test_firmware: add simple firmware firmware test library

We'll expland on this later, for now just add basic module checker.
While at it, move this all to use /bin/bash as we'll have much more
flexibility with it.

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Luis R. Rodriguez 2018-03-10 06:14:42 -08:00 committed by Greg Kroah-Hartman
parent 0c8efd610b
commit 29a1c00ce1
3 changed files with 51 additions and 20 deletions

View File

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# This validates that the kernel will fall back to using the fallback mechanism # This validates that the kernel will fall back to using the fallback mechanism
# to load firmware it can't find on disk itself. We must request a firmware # to load firmware it can't find on disk itself. We must request a firmware
@ -6,9 +6,10 @@
# won't find so that we can do the load ourself manually. # won't find so that we can do the load ourself manually.
set -e set -e
modprobe test_firmware TEST_DIR=$(dirname $0)
source $TEST_DIR/fw_lib.sh
DIR=/sys/devices/virtual/misc/test_firmware check_mods
# CONFIG_FW_LOADER_USER_HELPER has a sysfs class under /sys/class/firmware/ # CONFIG_FW_LOADER_USER_HELPER has a sysfs class under /sys/class/firmware/
# These days no one enables CONFIG_FW_LOADER_USER_HELPER so check for that # These days no one enables CONFIG_FW_LOADER_USER_HELPER so check for that

View File

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# This validates that the kernel will load firmware out of its list of # This validates that the kernel will load firmware out of its list of
# firmware locations on disk. Since the user helper does similar work, # firmware locations on disk. Since the user helper does similar work,
@ -6,24 +6,10 @@
# know so we can be sure we're not accidentally testing the user helper. # know so we can be sure we're not accidentally testing the user helper.
set -e set -e
DIR=/sys/devices/virtual/misc/test_firmware
TEST_DIR=$(dirname $0) TEST_DIR=$(dirname $0)
source $TEST_DIR/fw_lib.sh
test_modprobe() check_mods
{
if [ ! -d $DIR ]; then
echo "$0: $DIR not present"
echo "You must have the following enabled in your kernel:"
cat $TEST_DIR/config
exit 1
fi
}
trap "test_modprobe" EXIT
if [ ! -d $DIR ]; then
modprobe test_firmware
fi
# CONFIG_FW_LOADER_USER_HELPER has a sysfs class under /sys/class/firmware/ # CONFIG_FW_LOADER_USER_HELPER has a sysfs class under /sys/class/firmware/
# These days most distros enable CONFIG_FW_LOADER_USER_HELPER but disable # These days most distros enable CONFIG_FW_LOADER_USER_HELPER but disable

View File

@ -0,0 +1,44 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# Library of helpers for test scripts.
set -e
DIR=/sys/devices/virtual/misc/test_firmware
PROC_CONFIG="/proc/config.gz"
TEST_DIR=$(dirname $0)
print_reqs_exit()
{
echo "You must have the following enabled in your kernel:" >&2
cat $TEST_DIR/config >&2
exit 1
}
test_modprobe()
{
if [ ! -d $DIR ]; then
print_reqs_exit
fi
}
check_mods()
{
trap "test_modprobe" EXIT
if [ ! -d $DIR ]; then
modprobe test_firmware
fi
if [ ! -f $PROC_CONFIG ]; then
if modprobe configs 2>/dev/null; then
echo "Loaded configs module"
if [ ! -f $PROC_CONFIG ]; then
echo "You must have the following enabled in your kernel:" >&2
cat $TEST_DIR/config >&2
echo "Resorting to old heuristics" >&2
fi
else
echo "Failed to load configs module, using old heuristics" >&2
fi
fi
}