mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v3] rcutorture: kvm-again.sh: Fix re-run failure on ppc64
@ 2026-09-19  1:06 Zhouyi Zhou
  2026-09-19  2:13 ` Paul E. McKenney
  0 siblings, 1 reply; 2+ messages in thread
From: Zhouyi Zhou @ 2026-09-19  1:06 UTC (permalink / raw)
  To: paulmck, rcu, linux-kernel, lance; +Cc: Zhouyi Zhou

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 unconditional
   list, and instead conditionally delete it only when the boot image
   basename is not vmlinux.

In addition, identify qemu_binary before the copy step so that on
non-PowerPC systems (where vmlinux is not the boot image) the vmlinux
file can be removed immediately after the run directory is copied,
saving storage before any tests run.  This also eliminates the
per-iteration re-computation of qemu_binary and boot_image inside
the qemu-cmd transform loop.

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 <zhouzhouyi@gmail.com>
---
Changes in v3:
 - Identify qemu_binary and boot_image earlier, before the copy step,
   so that vmlinux can be removed right after copying the run directory
   on non-PowerPC systems, saving storage.  This also eliminates the
   per-iteration re-computation of qemu_binary and boot_image inside
   the qemu-cmd transform loop.
Suggested-by: Paul E. McKenney <paulmck@kernel.org>
---
 tools/testing/selftests/rcutorture/bin/kvm-again.sh | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/bin/kvm-again.sh b/tools/testing/selftests/rcutorture/bin/kvm-again.sh
index b5239b52cb5d..9060b3dc8926 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-again.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-again.sh
@@ -180,6 +180,9 @@ fi
 
 echo ---- Re-run results directory: $rundir
 
+qemu_binary="$(find "$oldrun" -maxdepth 2 -name 'qemu-cmd' -type f 2>/dev/null | head -1 | xargs -r grep -v '^#' 2>/dev/null | awk 'NF { print $1; exit }')"
+boot_image="`identify_boot_image "$qemu_binary"`"
+
 if test "$oldrun" != "$rundir"
 then
 	# Copy old run directory tree over and adjust.
@@ -189,7 +192,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"
@@ -197,6 +200,10 @@ then
 	then
 		$arg_link "$oldrun/../../bin" "$rundir/../.."
 	fi
+	if test "`basename "$boot_image"`" != vmlinux
+	then
+		rm -f "$rundir"/*/vmlinux
+	fi
 else
 	# Check for a run having already happened.
 	find "$rundir" -name console.log -print > $T/oldrun-console.log
@@ -217,7 +224,7 @@ 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
+	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


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH v3] rcutorture: kvm-again.sh: Fix re-run failure on ppc64
  2026-09-19  1:06 [PATCH v3] rcutorture: kvm-again.sh: Fix re-run failure on ppc64 Zhouyi Zhou
@ 2026-09-19  2:13 ` Paul E. McKenney
  0 siblings, 0 replies; 2+ messages in thread
From: Paul E. McKenney @ 2026-09-19  2:13 UTC (permalink / raw)
  To: Zhouyi Zhou; +Cc: rcu, linux-kernel, lance

On Sat, Sep 19, 2026 at 01:06:06AM +0000, Zhouyi Zhou wrote:
> 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 unconditional
>    list, and instead conditionally delete it only when the boot image
>    basename is not vmlinux.
> 
> In addition, identify qemu_binary before the copy step so that on
> non-PowerPC systems (where vmlinux is not the boot image) the vmlinux
> file can be removed immediately after the run directory is copied,
> saving storage before any tests run.  This also eliminates the
> per-iteration re-computation of qemu_binary and boot_image inside
> the qemu-cmd transform loop.
> 
> 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 <zhouzhouyi@gmail.com>

Queued for review and testing, thank you!

							Thanx, Paul

> ---
> Changes in v3:
>  - Identify qemu_binary and boot_image earlier, before the copy step,
>    so that vmlinux can be removed right after copying the run directory
>    on non-PowerPC systems, saving storage.  This also eliminates the
>    per-iteration re-computation of qemu_binary and boot_image inside
>    the qemu-cmd transform loop.
> Suggested-by: Paul E. McKenney <paulmck@kernel.org>
> ---
>  tools/testing/selftests/rcutorture/bin/kvm-again.sh | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/testing/selftests/rcutorture/bin/kvm-again.sh b/tools/testing/selftests/rcutorture/bin/kvm-again.sh
> index b5239b52cb5d..9060b3dc8926 100755
> --- a/tools/testing/selftests/rcutorture/bin/kvm-again.sh
> +++ b/tools/testing/selftests/rcutorture/bin/kvm-again.sh
> @@ -180,6 +180,9 @@ fi
>  
>  echo ---- Re-run results directory: $rundir
>  
> +qemu_binary="$(find "$oldrun" -maxdepth 2 -name 'qemu-cmd' -type f 2>/dev/null | head -1 | xargs -r grep -v '^#' 2>/dev/null | awk 'NF { print $1; exit }')"
> +boot_image="`identify_boot_image "$qemu_binary"`"
> +
>  if test "$oldrun" != "$rundir"
>  then
>  	# Copy old run directory tree over and adjust.
> @@ -189,7 +192,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"
> @@ -197,6 +200,10 @@ then
>  	then
>  		$arg_link "$oldrun/../../bin" "$rundir/../.."
>  	fi
> +	if test "`basename "$boot_image"`" != vmlinux
> +	then
> +		rm -f "$rundir"/*/vmlinux
> +	fi
>  else
>  	# Check for a run having already happened.
>  	find "$rundir" -name console.log -print > $T/oldrun-console.log
> @@ -217,7 +224,7 @@ 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
> +	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
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-09-19  2:13 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-19  1:06 [PATCH v3] rcutorture: kvm-again.sh: Fix re-run failure on ppc64 Zhouyi Zhou
2026-09-19  2:13 ` Paul E. McKenney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®