Discovered in the Open Source Lab of Oregon State University when running
torture.sh on a ppc64le VM.  Two bugs were exposed:

1. The kvm-transform.sh call hard-coded "bzImage" as the kernel image
   name.  On ppc64, the boot image is vmlinux, not bzImage, so the
   re-run failed to find the image.  Fix this by extracting the QEMU
   binary from the qemu-cmd file and passing it to identify_boot_image()
   to obtain the correct architecture-specific image name, the same way
   kvm.sh already does.

2. The rm -f invocation on re-run listed vmlinux among the files to
   delete.  On ppc64 vmlinux is the boot image, so deleting it broke
   the re-run on that architecture.  Drop vmlinux from the list.

Tested on a local x86_64 machine and on a PPC VM of the Open Source Lab
of Oregon State University.

Signed-off-by: Zhouyi Zhou <[email protected]>
---
Changes in v2:
 - Remove blank line between qemu_binary and boot_image assignments
   for cleaner style.

 tools/testing/selftests/rcutorture/bin/kvm-again.sh | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/bin/kvm-again.sh 
b/tools/testing/selftests/rcutorture/bin/kvm-again.sh
index b5239b52cb5d..cacc9f2b230d 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-again.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-again.sh
@@ -189,7 +189,7 @@ then
                echo "Cannot copy from $oldrun to $rundir."
                usage
        fi
-       rm -f 
"$rundir"/*/{console.log,console.log.diags,qemu_pid,qemu-pid,qemu-retval,Warnings,kvm-test-1-run.sh.out,kvm-test-1-run-qemu.sh.out,vmlinux}
 "$rundir"/log
+       rm -f 
"$rundir"/*/{console.log,console.log.diags,qemu_pid,qemu-pid,qemu-retval,Warnings,kvm-test-1-run.sh.out,kvm-test-1-run-qemu.sh.out}
 "$rundir"/log
        touch "$rundir/log"
        echo $scriptname $args | tee -a "$rundir/log"
        echo $oldrun > "$rundir/re-run"
@@ -217,7 +217,10 @@ do
        qemu_cmd_dir="`dirname "$i"`"
        kernel_dir="`echo $qemu_cmd_dir | sed -e 's/\.[0-9]\+$//'`"
        jitter_dir="`dirname "$kernel_dir"`"
-       kvm-transform.sh "$kernel_dir/bzImage" "$qemu_cmd_dir/console.log" 
"$jitter_dir" "$dur" "$bootargs" < $T/qemu-cmd > $i
+       qemu_binary="`grep -v '^#' $T/qemu-cmd | awk 'NF { print $1; exit }'`"
+       boot_image="`identify_boot_image "$qemu_binary"`"
+       kvm-transform.sh "$kernel_dir/`basename $boot_image`" 
"$qemu_cmd_dir/console.log" "$jitter_dir" "$dur" "$bootargs" < $T/qemu-cmd > $i
        if test -n "$arg_remote"
        then
                echo "# TORTURE_KCONFIG_GDB_ARG=''" >> $i
--
2.43.0

Reply via email to