diff options
| author | Scott Branden <scott.branden@broadcom.com> | 2019-08-22 11:40:05 -0700 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-09-04 13:31:28 +0200 | 
| commit | 1798045900b7fb24a2b9c37d8517bbcfc5d3eaa9 (patch) | |
| tree | 59ea48a3d8605a1996bca81371fc2ba7871ab5ee | |
| parent | 7feebfa487b929b3e085f4f11ae7ac9e2e92e848 (diff) | |
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>
| -rwxr-xr-x | tools/testing/selftests/firmware/fw_filesystem.sh | 57 | ||||
| -rwxr-xr-x | tools/testing/selftests/firmware/fw_lib.sh | 11 | 
2 files changed, 66 insertions, 2 deletions
diff --git a/tools/testing/selftests/firmware/fw_filesystem.sh b/tools/testing/selftests/firmware/fw_filesystem.sh index f901076aa2ea..56894477c8bd 100755 --- a/tools/testing/selftests/firmware/fw_filesystem.sh +++ b/tools/testing/selftests/firmware/fw_filesystem.sh @@ -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: " @@ -308,6 +345,10 @@ for i in $(seq 1 5); do  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 @@ -328,6 +369,10 @@ for i in $(seq 1 5); do  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 @@ -351,6 +396,10 @@ for i in $(seq 1 5); do  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 @@ -371,6 +420,10 @@ for i in $(seq 1 5); do  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 diff --git a/tools/testing/selftests/firmware/fw_lib.sh b/tools/testing/selftests/firmware/fw_lib.sh index f236cc295450..b879305a766d 100755 --- a/tools/testing/selftests/firmware/fw_lib.sh +++ b/tools/testing/selftests/firmware/fw_lib.sh @@ -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  | 
