Re: [kvm-unit-tests PATCH 2/2] s390x: Fix is_pv check in run script

Claudio Imbrenda
2024-04-08T11:39:09Z

On Sat, 6 Apr 2024 22:24:54 +1000
Nicholas Piggin <npiggin@gmail.com> wrote:

> Shellcheck reports "is_pv references arguments, but none are ever
> passed." and suggests "use is_pv "$@" if function's $1 should mean
> script's $1."
>
> The is_pv test does not evaluate to true for .pv.bin file names, only
> for _PV suffix test names. The arch_cmd_s390x() function appends
> .pv.bin to the file name AND _PV to the test name, so this does not
> affect run_tests.sh runs, but it might prevent PV tests from being
> run directly with the s390x-run command.
>
> Reported-by: shellcheck SC2119, SC2120
> Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Fixes: bcedc5a2 ("s390x: run PV guests with confidential guest enabled")

although tbh I would rewrite it to check a variable, something like:

IS_PV=no
[ "${1: -7}" = ".pv.bin" -o "${TESTNAME: -3}" = "_PV" ] && IS_PV=yes

> ---
> s390x/run | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/s390x/run b/s390x/run
> index e58fa4af9..34552c274 100755
> --- a/s390x/run
> +++ b/s390x/run
> @@ -21,12 +21,12 @@ is_pv() {
> return 1
> }
>
> -if is_pv && [ "$ACCEL" = "tcg" ]; then
> +if is_pv "$@" && [ "$ACCEL" = "tcg" ]; then

if [ "$IS_PV" = "yes" -a "$ACCEL" = "tcg" ]; then

etc...

> echo "Protected Virtualization isn't supported under TCG"
> exit 2
> fi
>
> -if is_pv && [ "$MIGRATION" = "yes" ]; then
> +if is_pv "$@" && [ "$MIGRATION" = "yes" ]; then
> echo "Migration isn't supported under Protected Virtualization"
> exit 2
> fi
> @@ -34,12 +34,12 @@ fi
> M='-machine s390-ccw-virtio'
> M+=",accel=$ACCEL$ACCEL_PROPS"
>
> -if is_pv; then
> +if is_pv "$@"; then
> M+=",confidential-guest-support=pv0"
> fi
>
> command="$qemu -nodefaults -nographic $M"
> -if is_pv; then
> +if is_pv "$@"; then
> command+=" -object s390-pv-guest,id=pv0"
> fi
> command+=" -chardev stdio,id=con0 -device sclpconsole,chardev=con0"