forked from Minki/linux
selftests: firmware: Add request_firmware_into_buf tests
Add tests cases for checking request_firmware_into_buf api. API was introduced into kernel with no testing present previously. Signed-off-by: Scott Branden <scott.branden@broadcom.com> Acked-by: Luis Chamberlain <mcgrof@kernel.org> Acked-by: Shuah Khan <skhan@linuxfoundation.org> Link: https://lore.kernel.org/r/20190822184005.901-3-scott.branden@broadcom.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7feebfa487
commit
1798045900
@ -116,6 +116,16 @@ config_set_name()
|
||||
echo -n $1 > $DIR/config_name
|
||||
}
|
||||
|
||||
config_set_into_buf()
|
||||
{
|
||||
echo 1 > $DIR/config_into_buf
|
||||
}
|
||||
|
||||
config_unset_into_buf()
|
||||
{
|
||||
echo 0 > $DIR/config_into_buf
|
||||
}
|
||||
|
||||
config_set_sync_direct()
|
||||
{
|
||||
echo 1 > $DIR/config_sync_direct
|
||||
@ -153,11 +163,14 @@ config_set_read_fw_idx()
|
||||
|
||||
read_firmwares()
|
||||
{
|
||||
if [ "$1" = "xzonly" ]; then
|
||||
fwfile="${FW}-orig"
|
||||
if [ "$(cat $DIR/config_into_buf)" == "1" ]; then
|
||||
fwfile="$FW_INTO_BUF"
|
||||
else
|
||||
fwfile="$FW"
|
||||
fi
|
||||
if [ "$1" = "xzonly" ]; then
|
||||
fwfile="${fwfile}-orig"
|
||||
fi
|
||||
for i in $(seq 0 3); do
|
||||
config_set_read_fw_idx $i
|
||||
# Verify the contents are what we expect.
|
||||
@ -194,6 +207,18 @@ test_batched_request_firmware_nofile()
|
||||
echo "OK"
|
||||
}
|
||||
|
||||
test_batched_request_firmware_into_buf_nofile()
|
||||
{
|
||||
echo -n "Batched request_firmware_into_buf() nofile try #$1: "
|
||||
config_reset
|
||||
config_set_name nope-test-firmware.bin
|
||||
config_set_into_buf
|
||||
config_trigger_sync
|
||||
read_firmwares_expect_nofile
|
||||
release_all_firmware
|
||||
echo "OK"
|
||||
}
|
||||
|
||||
test_batched_request_firmware_direct_nofile()
|
||||
{
|
||||
echo -n "Batched request_firmware_direct() nofile try #$1: "
|
||||
@ -259,6 +284,18 @@ test_batched_request_firmware()
|
||||
echo "OK"
|
||||
}
|
||||
|
||||
test_batched_request_firmware_into_buf()
|
||||
{
|
||||
echo -n "Batched request_firmware_into_buf() $2 try #$1: "
|
||||
config_reset
|
||||
config_set_name $TEST_FIRMWARE_INTO_BUF_FILENAME
|
||||
config_set_into_buf
|
||||
config_trigger_sync
|
||||
read_firmwares $2
|
||||
release_all_firmware
|
||||
echo "OK"
|
||||
}
|
||||
|
||||
test_batched_request_firmware_direct()
|
||||
{
|
||||
echo -n "Batched request_firmware_direct() $2 try #$1: "
|
||||
@ -307,6 +344,10 @@ for i in $(seq 1 5); do
|
||||
test_batched_request_firmware $i normal
|
||||
done
|
||||
|
||||
for i in $(seq 1 5); do
|
||||
test_batched_request_firmware_into_buf $i normal
|
||||
done
|
||||
|
||||
for i in $(seq 1 5); do
|
||||
test_batched_request_firmware_direct $i normal
|
||||
done
|
||||
@ -327,6 +368,10 @@ for i in $(seq 1 5); do
|
||||
test_batched_request_firmware_nofile $i
|
||||
done
|
||||
|
||||
for i in $(seq 1 5); do
|
||||
test_batched_request_firmware_into_buf_nofile $i
|
||||
done
|
||||
|
||||
for i in $(seq 1 5); do
|
||||
test_batched_request_firmware_direct_nofile $i
|
||||
done
|
||||
@ -350,6 +395,10 @@ for i in $(seq 1 5); do
|
||||
test_batched_request_firmware $i both
|
||||
done
|
||||
|
||||
for i in $(seq 1 5); do
|
||||
test_batched_request_firmware_into_buf $i both
|
||||
done
|
||||
|
||||
for i in $(seq 1 5); do
|
||||
test_batched_request_firmware_direct $i both
|
||||
done
|
||||
@ -370,6 +419,10 @@ for i in $(seq 1 5); do
|
||||
test_batched_request_firmware $i xzonly
|
||||
done
|
||||
|
||||
for i in $(seq 1 5); do
|
||||
test_batched_request_firmware_into_buf $i xzonly
|
||||
done
|
||||
|
||||
for i in $(seq 1 5); do
|
||||
test_batched_request_firmware_direct $i xzonly
|
||||
done
|
||||
|
@ -9,6 +9,12 @@ DIR=/sys/devices/virtual/misc/test_firmware
|
||||
PROC_CONFIG="/proc/config.gz"
|
||||
TEST_DIR=$(dirname $0)
|
||||
|
||||
# We need to load a different file to test request_firmware_into_buf
|
||||
# I believe the issue is firmware loaded cached vs. non-cached
|
||||
# with same filename is bungled.
|
||||
# To reproduce rename this to test-firmware.bin
|
||||
TEST_FIRMWARE_INTO_BUF_FILENAME=test-firmware-into-buf.bin
|
||||
|
||||
# Kselftest framework requirement - SKIP code is 4.
|
||||
ksft_skip=4
|
||||
|
||||
@ -108,6 +114,8 @@ setup_tmp_file()
|
||||
FWPATH=$(mktemp -d)
|
||||
FW="$FWPATH/test-firmware.bin"
|
||||
echo "ABCD0123" >"$FW"
|
||||
FW_INTO_BUF="$FWPATH/$TEST_FIRMWARE_INTO_BUF_FILENAME"
|
||||
echo "EFGH4567" >"$FW_INTO_BUF"
|
||||
NAME=$(basename "$FW")
|
||||
if [ "$TEST_REQS_FW_SET_CUSTOM_PATH" = "yes" ]; then
|
||||
echo -n "$FWPATH" >/sys/module/firmware_class/parameters/path
|
||||
@ -175,6 +183,9 @@ test_finish()
|
||||
if [ -f $FW ]; then
|
||||
rm -f "$FW"
|
||||
fi
|
||||
if [ -f $FW_INTO_BUF ]; then
|
||||
rm -f "$FW_INTO_BUF"
|
||||
fi
|
||||
if [ -d $FWPATH ]; then
|
||||
rm -rf "$FWPATH"
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user