Re: [PATCH 28/28] torture.sh: Add hazptr torturing
From: Bradley Morgan
Date: Sat Sep 19 2026 - 07:18:40 EST
On 19 September 2026 01:00:56 BST, "Paul E. McKenney" <paulmck@xxxxxxxxxx>
wrote:
>This commit adds hazard-pointer torturing to the torture.sh script
>as a default-on option. This uses the same duration as rcutorture.
>While in the area, change kvm.sh to tolerate the empty-string arguments
>that torture.sh can generate, for example, if a given test needs no
>boot arguments.
>
>Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxx>
>Cc: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>
>Cc: Boqun Feng <boqun@xxxxxxxxxx>
>Cc: Bradley Morgan <brads@xxxxxxxxxxxxxx>
Why CC? Well thanks, this'll benefit my new PowerPC box :) (manifesting!)
Reviewed-by: Bradley Morgan <brads@xxxxxxxxxxxxxx>
>---
> tools/testing/selftests/rcutorture/bin/kvm.sh | 4 +++
> .../selftests/rcutorture/bin/torture.sh | 26 ++++++++++++++++++-
> 2 files changed, 29 insertions(+), 1 deletion(-)
>
>diff --git a/tools/testing/selftests/rcutorture/bin/kvm.sh b/tools/testing/selftests/rcutorture/bin/kvm.sh
>index 32c319997638..2f386cf536e3 100755
>--- a/tools/testing/selftests/rcutorture/bin/kvm.sh
>+++ b/tools/testing/selftests/rcutorture/bin/kvm.sh
>@@ -98,6 +98,7 @@ usage () {
>
> while test $# -gt 0
> do
>+ echo Argument: :$1:
> case "$1" in
> --allcpus)
> cpus=$TORTURE_ALLOTED_CPUS
>@@ -271,6 +272,9 @@ do
> --trust-make)
> TORTURE_TRUST_MAKE="y"
> ;;
>+ "")
>+ # torture.sh can pass empty arguments. Ignore them.
>+ ;;
> *)
> echo Unknown argument $1
> usage
>diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
>index f0083891ee81..2824dab14d41 100755
>--- a/tools/testing/selftests/rcutorture/bin/torture.sh
>+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
>@@ -43,6 +43,7 @@ fi
> configs_rcutorture=
> configs_locktorture=
> configs_scftorture=
>+configs_hazptr=
> kcsan_kmake_args=
>
> # Default compression, duration, and apportionment.
>@@ -69,6 +70,7 @@ do_rt=yes
> do_rcutasksflavors="${ifnotaarch64}" # FIXME: Back to "yes" when SMP=n
> auto-avoided
> do_srcu_lockdep=yes
> do_rcu_rust=no
>+do_hazptr=yes
>
> # doyesno - Helper function for yes/no arguments
> function doyesno () {
>@@ -89,6 +91,7 @@ usage () {
> echo " --do-all"
> echo " --do-allmodconfig / --do-no-allmodconfig / --no-allmodconfig"
> echo " --do-clocksourcewd / --do-no-clocksourcewd / --no-clocksourcewd"
>+ echo " --do-hazptr / --do-no-hazptr / --no-hazptr"
> echo " --do-kasan / --do-no-kasan / --no-kasan"
> echo " --do-kcsan / --do-no-kcsan / --no-kcsan"
> echo " --do-kvfree / --do-no-kvfree / --no-kvfree"
>@@ -117,6 +120,11 @@ do
> compress_concurrency=$2
> shift
> ;;
>+ --config-hazptr|--configs-hazptr)
>+ checkarg --configs-hazptr "(list of config files)" "$#" "$2" '^[^/]\+$' '^--'
>+ configs_hazptr="$configs_hazptr $2"
>+ shift
>+ ;;
> --config-rcutorture|--configs-rcutorture)
> checkarg --configs-rcutorture "(list of config files)" "$#" "$2" '^[^/]\+$' '^--'
> configs_rcutorture="$configs_rcutorture $2"
>@@ -147,6 +155,7 @@ do
> do_kasan=yes
> do_kcsan=yes
> do_clocksourcewd="${ifnotaarch64}"
>+ do_hazptr=yes
> do_srcu_lockdep=yes
> ;;
> --do-allmodconfig|--do-no-allmodconfig|--no-allmodconfig)
>@@ -155,6 +164,9 @@ do
> --do-clocksourcewd|--do-no-clocksourcewd|--no-clocksourcewd)
> do_clocksourcewd=`doyesno "$1" --do-clocksourcewd`
> ;;
>+ --do-hazptr|--do-no-hazptr|--no-hazptr)
>+ do_hazptr=`doyesno "$1" --do-hazptr`
>+ ;;
> --do-kasan|--do-no-kasan|--no-kasan)
> do_kasan=`doyesno "$1" --do-kasan`
> ;;
>@@ -182,6 +194,7 @@ do
> do_kasan=no
> do_kcsan=no
> do_clocksourcewd=no
>+ do_hazptr=no
> do_srcu_lockdep=no
> ;;
> --do-normal|--do-norm|--do-no-normal|--do-no-norm|--no-normal|--no-norm)
>@@ -343,7 +356,7 @@ function torture_one {
> boottag="--bootargs"
> cur_bootargs="$torture_bootargs"
> fi
>- "$@" $boottag "$cur_bootargs" --datestamp "$ds/results-$curflavor" > $T/$curflavor.out 2>&1
>+ "$@" "${boottag}" "$cur_bootargs" --datestamp "$ds/results-$curflavor" > $T/$curflavor.out 2>&1
> retcode=$?
> resdir="`grep '^Results directory: ' $T/$curflavor.out | tail -1 | sed -e 's/^Results directory: //'`"
> if test -z "$resdir"
>@@ -704,6 +717,17 @@ then
> fi
> fi
>
>+# Calculate hazptr defaults and apportion time
>+if test -z "$configs_hazptr"
>+then
>+ configs_hazptr=CFLIST
>+fi
>+if test "$do_hazptr" = "yes"
>+then
>+ torture_bootargs=""
>+ torture_set "hazptr" tools/testing/selftests/rcutorture/bin/kvm.sh --torture hazptr --allcpus --duration "$duration_rcutorture" --configs "$configs_hazptr" --trust-make
>+fi
>+
> echo " --- " $scriptname $args
> echo " --- " Done `date` | tee -a $T/log
> ret=0
>
--- Thanks!
https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@xxxxxxxxx/