Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: firmware: Add ZSTD compressed file tests

It's similar like XZ compressed files. For the simplicity, both XZ
and ZSTD tests are done in a single function. The format is specified
via $COMPRESS_FORMAT and the compression function is pre-defined.

Link: https://lore.kernel.org/r/20210127154939.13288-5-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20220421152908.4718-6-tiwai@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Takashi Iwai and committed by
Greg Kroah-Hartman
bc67cac1 f18b45ff

+65 -23
+56 -20
tools/testing/selftests/firmware/fw_filesystem.sh
··· 12 12 source $TEST_DIR/fw_lib.sh 13 13 14 14 RUN_XZ="xz -C crc32 --lzma2=dict=2MiB" 15 + RUN_ZSTD="zstd -q" 15 16 16 17 check_mods 17 18 check_setup ··· 214 213 else 215 214 fwfile="$FW" 216 215 fi 217 - if [ "$1" = "xzonly" ]; then 216 + if [ "$1" = "componly" ]; then 218 217 fwfile="${fwfile}-orig" 219 218 fi 220 219 for i in $(seq 0 3); do ··· 238 237 fwfile="${FW}" 239 238 fi 240 239 241 - if [ "$1" = "xzonly" ]; then 240 + if [ "$1" = "componly" ]; then 242 241 fwfile="${fwfile}-orig" 243 242 fi 244 243 ··· 412 411 config_unset_uevent 413 412 RANDOM_FILE_PATH=$(setup_random_file) 414 413 RANDOM_FILE="$(basename $RANDOM_FILE_PATH)" 415 - if [ "$2" = "both" ]; then 416 - $RUN_XZ -k $RANDOM_FILE_PATH 417 - elif [ "$2" = "xzonly" ]; then 418 - $RUN_XZ $RANDOM_FILE_PATH 414 + if [ -n "$2" -a "$2" != "normal" ]; then 415 + compress_"$2"_"$COMPRESS_FORMAT" $RANDOM_FILE_PATH 419 416 fi 420 417 config_set_name $RANDOM_FILE 421 418 config_trigger_async ··· 489 490 test_request_partial_firmware_into_buf_nofile 1 6 490 491 test_request_partial_firmware_into_buf_nofile 2 10 491 492 492 - test "$HAS_FW_LOADER_COMPRESS" != "yes" && exit 0 493 + test_request_firmware_compressed () 494 + { 495 + export COMPRESS_FORMAT="$1" 493 496 494 - # test with both files present 495 - $RUN_XZ -k $FW 496 - $RUN_XZ -k $FW_INTO_BUF 497 - config_set_name $NAME 498 - echo 499 - echo "Testing with both plain and xz files present..." 500 - do_tests both 497 + # test with both files present 498 + compress_both_"$COMPRESS_FORMAT" $FW 499 + compress_both_"$COMPRESS_FORMAT" $FW_INTO_BUF 501 500 502 - # test with only xz file present 503 - mv "$FW" "${FW}-orig" 504 - mv "$FW_INTO_BUF" "${FW_INTO_BUF}-orig" 505 - echo 506 - echo "Testing with only xz file present..." 507 - do_tests xzonly 501 + config_set_name $NAME 502 + echo 503 + echo "Testing with both plain and $COMPRESS_FORMAT files present..." 504 + do_tests both 505 + 506 + # test with only compressed file present 507 + mv "$FW" "${FW}-orig" 508 + mv "$FW_INTO_BUF" "${FW_INTO_BUF}-orig" 509 + 510 + config_set_name $NAME 511 + echo 512 + echo "Testing with only $COMPRESS_FORMAT file present..." 513 + do_tests componly 514 + 515 + mv "${FW}-orig" "$FW" 516 + mv "${FW_INTO_BUF}-orig" "$FW_INTO_BUF" 517 + } 518 + 519 + compress_both_XZ () 520 + { 521 + $RUN_XZ -k "$@" 522 + } 523 + 524 + compress_componly_XZ () 525 + { 526 + $RUN_XZ "$@" 527 + } 528 + 529 + compress_both_ZSTD () 530 + { 531 + $RUN_ZSTD -k "$@" 532 + } 533 + 534 + compress_componly_ZSTD () 535 + { 536 + $RUN_ZSTD --rm "$@" 537 + } 538 + 539 + if test "$HAS_FW_LOADER_COMPRESS_XZ" = "yes"; then 540 + test_request_firmware_compressed XZ 541 + fi 542 + 543 + if test "$HAS_FW_LOADER_COMPRESS_ZSTD" = "yes"; then 544 + test_request_firmware_compressed ZSTD 545 + fi 508 546 509 547 exit 0
+9 -3
tools/testing/selftests/firmware/fw_lib.sh
··· 62 62 { 63 63 HAS_FW_LOADER_USER_HELPER="$(kconfig_has CONFIG_FW_LOADER_USER_HELPER=y)" 64 64 HAS_FW_LOADER_USER_HELPER_FALLBACK="$(kconfig_has CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y)" 65 - HAS_FW_LOADER_COMPRESS="$(kconfig_has CONFIG_FW_LOADER_COMPRESS=y)" 65 + HAS_FW_LOADER_COMPRESS_XZ="$(kconfig_has CONFIG_FW_LOADER_COMPRESS_XZ=y)" 66 + HAS_FW_LOADER_COMPRESS_ZSTD="$(kconfig_has CONFIG_FW_LOADER_COMPRESS_ZSTD=y)" 66 67 PROC_FW_IGNORE_SYSFS_FALLBACK="0" 67 68 PROC_FW_FORCE_SYSFS_FALLBACK="0" 68 69 ··· 99 98 100 99 OLD_FWPATH="$(cat /sys/module/firmware_class/parameters/path)" 101 100 102 - if [ "$HAS_FW_LOADER_COMPRESS" = "yes" ]; then 101 + if [ "$HAS_FW_LOADER_COMPRESS_XZ" = "yes" ]; then 103 102 if ! which xz 2> /dev/null > /dev/null; then 104 - HAS_FW_LOADER_COMPRESS="" 103 + HAS_FW_LOADER_COMPRESS_XZ="" 104 + fi 105 + fi 106 + if [ "$HAS_FW_LOADER_COMPRESS_ZSTD" = "yes" ]; then 107 + if ! which zstd 2> /dev/null > /dev/null; then 108 + HAS_FW_LOADER_COMPRESS_ZSTD="" 105 109 fi 106 110 fi 107 111 }