* [PATCH rcu 01/13] torture: Suppress torture.sh "Zero time" messages for disabled tests
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 02/13] torture: Permit multiple space characters in kvm.sh --kconfig argument neeraj.upadhyay
` (11 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
The torture.sh script prints " --- Zero time for locktorture, disabling"
when the --duration parameter is too short to allow the test to run
even when locktorture has been disabled, for example, via --do-none.
The same is true for scftorture and rcutorture.
This commit therefore suppresses this message when the corresponding
test has been disabled.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Joel Fernandes <joelagnelf@nvidia.com>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/torture.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index e03fdaca89b3..c518de296871 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -274,7 +274,7 @@ then
configs_rcutorture=CFLIST
fi
duration_rcutorture=$((duration_base*duration_rcutorture_frac/10))
-if test "$duration_rcutorture" -eq 0
+if test "$duration_rcutorture" -eq 0 && test "$do_locktorture" = "yes"
then
echo " --- Zero time for rcutorture, disabling" | tee -a $T/log
do_rcutorture=no
@@ -286,7 +286,7 @@ then
configs_locktorture=CFLIST
fi
duration_locktorture=$((duration_base*duration_locktorture_frac/10))
-if test "$duration_locktorture" -eq 0
+if test "$duration_locktorture" -eq 0 && test "$do_locktorture" = "yes"
then
echo " --- Zero time for locktorture, disabling" | tee -a $T/log
do_locktorture=no
@@ -298,7 +298,7 @@ then
configs_scftorture=CFLIST
fi
duration_scftorture=$((duration_base*duration_scftorture_frac/10))
-if test "$duration_scftorture" -eq 0
+if test "$duration_scftorture" -eq 0 && test "$do_scftorture" = "yes"
then
echo " --- Zero time for scftorture, disabling" | tee -a $T/log
do_scftorture=no
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 02/13] torture: Permit multiple space characters in kvm.sh --kconfig argument
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 01/13] torture: Suppress torture.sh "Zero time" messages for disabled tests neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 03/13] torture: Make torture.sh KCSAN runs set CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y neeraj.upadhyay
` (10 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
The straightforward way of doing bash substitution for optional strings
leaves a pair of space characters, which the kvm.sh --kconfig option
rejects as ill-formed. This commit therefore changes the corresponding
regular expression to accommodate more than one space character between
successive Kconfig options.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/kvm.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/rcutorture/bin/kvm.sh b/tools/testing/selftests/rcutorture/bin/kvm.sh
index 42e5e8597a1a..9c1b850b3227 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm.sh
@@ -199,7 +199,7 @@ do
fi
;;
--kconfig|--kconfigs)
- checkarg --kconfig "(Kconfig options)" $# "$2" '^\(#CHECK#\)\?CONFIG_[A-Z0-9_]\+=\([ynm]\|[0-9]\+\|"[^"]*"\)\( \(#CHECK#\)\?CONFIG_[A-Z0-9_]\+=\([ynm]\|[0-9]\+\|"[^"]*"\)\)*$' '^error$'
+ checkarg --kconfig "(Kconfig options)" $# "$2" '^\(#CHECK#\)\?CONFIG_[A-Z0-9_]\+=\([ynm]\|[0-9]\+\|"[^"]*"\)\( \+\(#CHECK#\)\?CONFIG_[A-Z0-9_]\+=\([ynm]\|[0-9]\+\|"[^"]*"\)\)* *$' '^error$'
TORTURE_KCONFIG_ARG="`echo "$TORTURE_KCONFIG_ARG $2" | sed -e 's/^ *//' -e 's/ *$//'`"
shift
;;
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 03/13] torture: Make torture.sh KCSAN runs set CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 01/13] torture: Suppress torture.sh "Zero time" messages for disabled tests neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 02/13] torture: Permit multiple space characters in kvm.sh --kconfig argument neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 04/13] torture: Default --no-rcutasksflavors on arm64 neeraj.upadhyay
` (9 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD),
kernel test robot
From: "Paul E. McKenney" <paulmck@kernel.org>
The RCU_TORTURE_TEST_CHK_RDR_STATE Kconfig option is used for low-level
debugging of rcutorture's generation of overlapping and nested RCU
readers. It incurs significant overhead, and is thus not to be used
lightly. But if it is not tested regularly, it won't be there when it
is needed, for example, it would have found an rcutorture bug in the
testing of srcu_up_read().
This commit therefore uses CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y when
building KCSAN kernels, but only for the --do-rcutorture case.
Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/torture.sh | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index c518de296871..53f61f278fd7 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -378,7 +378,12 @@ function torture_set {
kcsan_kmake_tag="--kmake-args"
cur_kcsan_kmake_args="$kcsan_kmake_args"
fi
- torture_one "$@" --kconfig "CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y" $kcsan_kmake_tag $cur_kcsan_kmake_args --kcsan
+ chk_rdr_state=
+ if test "${flavor}" = rcutorture
+ then
+ chk_rdr_state="CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y"
+ fi
+ torture_one "$@" --kconfig "CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y ${chk_rdr_state}" $kcsan_kmake_tag $cur_kcsan_kmake_args --kcsan
mv $T/last-resdir $T/last-resdir-kcsan || :
fi
}
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 04/13] torture: Default --no-rcutasksflavors on arm64
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
` (2 preceding siblings ...)
2025-07-09 10:44 ` [PATCH rcu 03/13] torture: Make torture.sh KCSAN runs set CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 05/13] torture: Default --no-clocksourcewd " neeraj.upadhyay
` (8 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
Because arm64 does not support CONFIG_SMP=n kernels, --do-rcutasksflavors
gets Kconfig errors when running the TINY01 rcutorture scenario.
This commit therefore makes --no-rcutasksflavors be the default on
arm64. Once kvm.sh automatically deselects CONFIG_SMP=n rcutorture
scenarios on arm64, the two lines marked "FIXME" can be changed back
from "${ifnotaarch64}" to "yes".
Note that arm64 users can still specify --do-rcutasksflavors in order
to override this default.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/torture.sh | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index 53f61f278fd7..584d57b48036 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -30,6 +30,15 @@ then
VERBOSE_BATCH_CPUS=0
fi
+# Machine architecture? ("uname -p" is said to be less portable.)1
+thisarch="`uname -m`"
+if test "${thisarch}" = aarch64
+then
+ ifnotaarch64=no
+else
+ ifnotaarch64=yes
+fi
+
# Configurations/scenarios.
configs_rcutorture=
configs_locktorture=
@@ -57,7 +66,7 @@ do_kasan=yes
do_kcsan=no
do_clocksourcewd=yes
do_rt=yes
-do_rcutasksflavors=yes
+do_rcutasksflavors="${ifnotaarch64}" # FIXME: Back to "yes" when SMP=n auto-avoided
do_srcu_lockdep=yes
do_rcu_rust=no
@@ -124,7 +133,7 @@ do
;;
--do-all|--doall)
do_allmodconfig=yes
- do_rcutasksflavor=yes
+ do_rcutasksflavors="${ifnotaarch64}" # FIXME: Back to "yes" when SMP=n auto-avoided
do_rcutorture=yes
do_locktorture=yes
do_scftorture=yes
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 05/13] torture: Default --no-clocksourcewd on arm64
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
` (3 preceding siblings ...)
2025-07-09 10:44 ` [PATCH rcu 04/13] torture: Default --no-rcutasksflavors on arm64 neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 06/13] torture: Provide EXPERT Kconfig option for arm64 KCSAN torture.sh runs neeraj.upadhyay
` (7 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
Because arm64 does not support CONFIG_CLOCKSOURCE_WATCHDOG=n kernels,
--do-clocksourcewd gets Kconfig errors. This commit therefore makes
--do-no-clocksourcewd be the default on arm64.
Note that arm64 users can still specify --do-clocksourcewd in order to
override this default.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/torture.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index 584d57b48036..25847042e30e 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -64,7 +64,7 @@ do_normal=yes
explicit_normal=no
do_kasan=yes
do_kcsan=no
-do_clocksourcewd=yes
+do_clocksourcewd="${ifnotaarch64}"
do_rt=yes
do_rcutasksflavors="${ifnotaarch64}" # FIXME: Back to "yes" when SMP=n auto-avoided
do_srcu_lockdep=yes
@@ -145,7 +145,7 @@ do
explicit_normal=no
do_kasan=yes
do_kcsan=yes
- do_clocksourcewd=yes
+ do_clocksourcewd="${ifnotaarch64}"
do_srcu_lockdep=yes
;;
--do-allmodconfig|--do-no-allmodconfig|--no-allmodconfig)
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 06/13] torture: Provide EXPERT Kconfig option for arm64 KCSAN torture.sh runs
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
` (4 preceding siblings ...)
2025-07-09 10:44 ` [PATCH rcu 05/13] torture: Default --no-clocksourcewd " neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-11 15:42 ` Will Deacon
2025-07-09 10:44 ` [PATCH rcu 07/13] torture: Suppress "find" diagnostics from torture.sh --do-none run neeraj.upadhyay
` (6 subsequent siblings)
12 siblings, 1 reply; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD),
Marco Elver, Dmitry Vyukov, Catalin Marinas, Will Deacon,
kasan-dev, linux-arm-kernel
From: "Paul E. McKenney" <paulmck@kernel.org>
The arm64 architecture requires that KCSAN-enabled kernels be built with
the CONFIG_EXPERT=y Kconfig option. This commit therefore causes the
torture.sh script to provide this option, but only for --kcsan runs on
arm64 systems.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Marco Elver <elver@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: <kasan-dev@googlegroups.com>
Cc: <linux-arm-kernel@lists.infradead.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/torture.sh | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index 25847042e30e..420c551b824b 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -313,6 +313,13 @@ then
do_scftorture=no
fi
+# CONFIG_EXPERT=y is currently required for arm64 KCSAN runs.
+kcsan_expert=
+if test "${thisarch}" = aarch64
+then
+ kcsan_expert="CONFIG_EXPERT=y"
+fi
+
touch $T/failures
touch $T/successes
@@ -392,7 +399,7 @@ function torture_set {
then
chk_rdr_state="CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y"
fi
- torture_one "$@" --kconfig "CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y ${chk_rdr_state}" $kcsan_kmake_tag $cur_kcsan_kmake_args --kcsan
+ torture_one "$@" --kconfig "CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y ${kcsan_expert} ${chk_rdr_state}" $kcsan_kmake_tag $cur_kcsan_kmake_args --kcsan
mv $T/last-resdir $T/last-resdir-kcsan || :
fi
}
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH rcu 06/13] torture: Provide EXPERT Kconfig option for arm64 KCSAN torture.sh runs
2025-07-09 10:44 ` [PATCH rcu 06/13] torture: Provide EXPERT Kconfig option for arm64 KCSAN torture.sh runs neeraj.upadhyay
@ 2025-07-11 15:42 ` Will Deacon
0 siblings, 0 replies; 15+ messages in thread
From: Will Deacon @ 2025-07-11 15:42 UTC (permalink / raw)
To: neeraj.upadhyay
Cc: rcu, linux-kernel, paulmck, joelagnelf, frederic, boqun.feng,
urezki, rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Marco Elver, Dmitry Vyukov,
Catalin Marinas, kasan-dev, linux-arm-kernel
On Wed, Jul 09, 2025 at 04:14:07PM +0530, neeraj.upadhyay@kernel.org wrote:
> From: "Paul E. McKenney" <paulmck@kernel.org>
>
> The arm64 architecture requires that KCSAN-enabled kernels be built with
> the CONFIG_EXPERT=y Kconfig option. This commit therefore causes the
> torture.sh script to provide this option, but only for --kcsan runs on
> arm64 systems.
>
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> Cc: Marco Elver <elver@google.com>
> Cc: Dmitry Vyukov <dvyukov@google.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: <kasan-dev@googlegroups.com>
> Cc: <linux-arm-kernel@lists.infradead.org>
> Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
> ---
> tools/testing/selftests/rcutorture/bin/torture.sh | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
> index 25847042e30e..420c551b824b 100755
> --- a/tools/testing/selftests/rcutorture/bin/torture.sh
> +++ b/tools/testing/selftests/rcutorture/bin/torture.sh
> @@ -313,6 +313,13 @@ then
> do_scftorture=no
> fi
>
> +# CONFIG_EXPERT=y is currently required for arm64 KCSAN runs.
> +kcsan_expert=
> +if test "${thisarch}" = aarch64
> +then
> + kcsan_expert="CONFIG_EXPERT=y"
> +fi
Acked-by: Will Deacon <will@kernel.org>
Will
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH rcu 07/13] torture: Suppress "find" diagnostics from torture.sh --do-none run
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
` (5 preceding siblings ...)
2025-07-09 10:44 ` [PATCH rcu 06/13] torture: Provide EXPERT Kconfig option for arm64 KCSAN torture.sh runs neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 08/13] torture: Extract testid.txt generation to separate script neeraj.upadhyay
` (5 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
When torture.sh is told to do nothing, it produces a couple of distracting
diagnostics from the "find" command:
find: ‘’: No such file or directory
find: ‘’: No such file or directory
This is pointless chatter and could cause confusion. This commit therefore
suppresses these diagnostics when there is nothing to find.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/torture.sh | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index 420c551b824b..ed59bd43d4f8 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -719,8 +719,11 @@ fi
echo Started at $startdate, ended at `date`, duration `get_starttime_duration $starttime`. | tee -a $T/log
echo Summary: Successes: $nsuccesses Failures: $nfailures. | tee -a $T/log
tdir="`cat $T/successes $T/failures | head -1 | awk '{ print $NF }' | sed -e 's,/[^/]\+/*$,,'`"
-find "$tdir" -name 'ConfigFragment.diags' -print > $T/configerrors
-find "$tdir" -name 'Make.out.diags' -print > $T/builderrors
+if test -n "$tdir"
+then
+ find "$tdir" -name 'ConfigFragment.diags' -print > $T/configerrors
+ find "$tdir" -name 'Make.out.diags' -print > $T/builderrors
+fi
if test -s "$T/configerrors"
then
echo " Scenarios with .config errors: `wc -l "$T/configerrors" | awk '{ print $1 }'`"
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 08/13] torture: Extract testid.txt generation to separate script
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
` (6 preceding siblings ...)
2025-07-09 10:44 ` [PATCH rcu 07/13] torture: Suppress "find" diagnostics from torture.sh --do-none run neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 09/13] torture: Add textid.txt file to --do-allmodconfig and --do-rcu-rust runs neeraj.upadhyay
` (4 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
The kvm.sh script places a testid.txt file in the top-level results
directory in order to identify the tree and commit that was tested.
This works well, but there are scripts other than kvm.sh that also create
results directories, and it would be good for them to also identify
exactly what was tested.
This commit therefore extracts the testid.txt generation to a new
mktestid.sh script so that it can be easily used elsewhere.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/kvm.sh | 13 +--------
.../selftests/rcutorture/bin/mktestid.sh | 29 +++++++++++++++++++
2 files changed, 30 insertions(+), 12 deletions(-)
create mode 100755 tools/testing/selftests/rcutorture/bin/mktestid.sh
diff --git a/tools/testing/selftests/rcutorture/bin/kvm.sh b/tools/testing/selftests/rcutorture/bin/kvm.sh
index 9c1b850b3227..617cba339d28 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm.sh
@@ -442,18 +442,7 @@ echo $scriptname $args
touch $resdir/$ds/log
echo $scriptname $args >> $resdir/$ds/log
echo ${TORTURE_SUITE} > $resdir/$ds/torture_suite
-echo Build directory: `pwd` > $resdir/$ds/testid.txt
-if test -d .git
-then
- echo Current commit: `git rev-parse HEAD` >> $resdir/$ds/testid.txt
- echo >> $resdir/$ds/testid.txt
- echo ' ---' Output of "'"git status"'": >> $resdir/$ds/testid.txt
- git status >> $resdir/$ds/testid.txt
- echo >> $resdir/$ds/testid.txt
- echo >> $resdir/$ds/testid.txt
- echo ' ---' Output of "'"git diff HEAD"'": >> $resdir/$ds/testid.txt
- git diff HEAD >> $resdir/$ds/testid.txt
-fi
+mktestid.sh $resdir/$ds
___EOF___
kvm-assign-cpus.sh /sys/devices/system/node > $T/cpuarray.awk
kvm-get-cpus-script.sh $T/cpuarray.awk $T/dumpbatches.awk
diff --git a/tools/testing/selftests/rcutorture/bin/mktestid.sh b/tools/testing/selftests/rcutorture/bin/mktestid.sh
new file mode 100755
index 000000000000..16f9907a4dae
--- /dev/null
+++ b/tools/testing/selftests/rcutorture/bin/mktestid.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Create a testid.txt file in the specified directory.
+#
+# Usage: mktestid.sh dirpath
+#
+# Copyright (C) Meta Platforms, Inc. 2025
+#
+# Author: Paul E. McKenney <paulmck@kernel.org>
+
+resdir="$1"
+if test -z "${resdir}" || ! test -d "${resdir}" || ! test -w "${resdir}"
+then
+ echo Path '"'${resdir}'"' not writeable directory, no ${resdir}/testid.txt.
+ exit 1
+fi
+echo Build directory: `pwd` > ${resdir}/testid.txt
+if test -d .git
+then
+ echo Current commit: `git rev-parse HEAD` >> ${resdir}/testid.txt
+ echo >> ${resdir}/testid.txt
+ echo ' ---' Output of "'"git status"'": >> ${resdir}/testid.txt
+ git status >> ${resdir}/testid.txt
+ echo >> ${resdir}/testid.txt
+ echo >> ${resdir}/testid.txt
+ echo ' ---' Output of "'"git diff HEAD"'": >> ${resdir}/testid.txt
+ git diff HEAD >> ${resdir}/testid.txt
+fi
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 09/13] torture: Add textid.txt file to --do-allmodconfig and --do-rcu-rust runs
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
` (7 preceding siblings ...)
2025-07-09 10:44 ` [PATCH rcu 08/13] torture: Extract testid.txt generation to separate script neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 10/13] torture: Make torture.sh tolerate runs having bad kvm.sh arguments neeraj.upadhyay
` (3 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
This commit causes the torture.sh --do-allmodconfig and --do-rcu-rust
parameters to add testid.txt files to their results directories, thus
allowing easier analysis of the results of a series of runs kicked off by
"git bisect".
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/torture.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index ed59bd43d4f8..a7a8e801283d 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -410,6 +410,7 @@ then
echo " --- allmodconfig:" Start `date` | tee -a $T/log
amcdir="tools/testing/selftests/rcutorture/res/$ds/allmodconfig"
mkdir -p "$amcdir"
+ mktestid.sh "$amcdir"
echo " --- make clean" | tee $amcdir/log > "$amcdir/Make.out" 2>&1
make -j$MAKE_ALLOTED_CPUS clean >> "$amcdir/Make.out" 2>&1
retcode=$?
@@ -516,6 +517,7 @@ then
echo " --- do-rcu-rust:" Start `date` | tee -a $T/log
rrdir="tools/testing/selftests/rcutorture/res/$ds/results-rcu-rust"
mkdir -p "$rrdir"
+ mktestid.sh "$rrdir"
echo " --- make LLVM=1 rustavailable " | tee -a $rrdir/log > $rrdir/rustavailable.out
make LLVM=1 rustavailable > $T/rustavailable.out 2>&1
retcode=$?
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 10/13] torture: Make torture.sh tolerate runs having bad kvm.sh arguments
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
` (8 preceding siblings ...)
2025-07-09 10:44 ` [PATCH rcu 09/13] torture: Add textid.txt file to --do-allmodconfig and --do-rcu-rust runs neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 11/13] torture: Add "ERROR" diagnostic for testing kernel-build output neeraj.upadhyay
` (2 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
Currently, torture.sh assumes excessive levels of reviewer competence
and thus fails to gracefully handle cases where it is tricked into giving
kvm.sh invalid arguments. This commit therefore upgrades error handling
to more gracefully handle this situation.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
.../selftests/rcutorture/bin/torture.sh | 28 +++++++++++++++----
1 file changed, 22 insertions(+), 6 deletions(-)
diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index a7a8e801283d..39844d213da5 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -378,13 +378,19 @@ function torture_set {
then
curflavor=$flavor
torture_one "$@"
- mv $T/last-resdir $T/last-resdir-nodebug || :
+ if test -e $T/last-resdir
+ then
+ mv $T/last-resdir $T/last-resdir-nodebug || :
+ fi
fi
if test "$do_kasan" = "yes"
then
curflavor=${flavor}-kasan
torture_one "$@" --kasan
- mv $T/last-resdir $T/last-resdir-kasan || :
+ if test -e $T/last-resdir
+ then
+ mv $T/last-resdir $T/last-resdir-kasan || :
+ fi
fi
if test "$do_kcsan" = "yes"
then
@@ -400,7 +406,10 @@ function torture_set {
chk_rdr_state="CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y"
fi
torture_one "$@" --kconfig "CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y ${kcsan_expert} ${chk_rdr_state}" $kcsan_kmake_tag $cur_kcsan_kmake_args --kcsan
- mv $T/last-resdir $T/last-resdir-kcsan || :
+ if test -e $T/last-resdir
+ then
+ mv $T/last-resdir $T/last-resdir-kcsan || :
+ fi
fi
}
@@ -704,7 +713,14 @@ nfailures=0
echo FAILURES: | tee -a $T/log
if test -s "$T/failures"
then
- awk < "$T/failures" -v sq="'" '{ print "echo " sq $0 sq; print "sed -e " sq "1,/^ --- .* Test summary:$/d" sq " " $2 "/log | grep Summary: | sed -e " sq "s/^[^S]*/ /" sq; }' | sh | tee -a $T/log | tee "$T/failuresum"
+ awk < "$T/failures" -v sq="'" '
+ {
+ print "echo " sq $0 sq;
+ if ($2 != "")
+ print "sed -e " sq "1,/^ --- .* Test summary:$/d" sq " " $2 "/log | grep Summary: | sed -e " sq "s/^[^S]*/ /" sq;
+ else
+ print "echo " sq " " sq "Run failed to produce results directory.";
+ }' | sh | tee -a $T/log | tee "$T/failuresum"
nfailures="`wc -l "$T/failures" | awk '{ print $1 }'`"
grep "^ Summary: " "$T/failuresum" |
grep -v '^ Summary: Bugs: [0-9]* (all bugs kcsan)$' > "$T/nonkcsan"
@@ -714,13 +730,13 @@ then
fi
ret=2
fi
-if test "$do_kcsan" = "yes"
+if test "$do_kcsan" = "yes" && test -e tools/testing/selftests/rcutorture/res/$ds
then
TORTURE_KCONFIG_KCSAN_ARG=1 tools/testing/selftests/rcutorture/bin/kcsan-collapse.sh tools/testing/selftests/rcutorture/res/$ds > tools/testing/selftests/rcutorture/res/$ds/kcsan.sum
fi
echo Started at $startdate, ended at `date`, duration `get_starttime_duration $starttime`. | tee -a $T/log
echo Summary: Successes: $nsuccesses Failures: $nfailures. | tee -a $T/log
-tdir="`cat $T/successes $T/failures | head -1 | awk '{ print $NF }' | sed -e 's,/[^/]\+/*$,,'`"
+tdir="`cat $T/successes $T/failures | awk 'NF > 1 { print $NF }' | head -1 | sed -e 's,/[^/]\+/*$,,'`"
if test -n "$tdir"
then
find "$tdir" -name 'ConfigFragment.diags' -print > $T/configerrors
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 11/13] torture: Add "ERROR" diagnostic for testing kernel-build output
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
` (9 preceding siblings ...)
2025-07-09 10:44 ` [PATCH rcu 10/13] torture: Make torture.sh tolerate runs having bad kvm.sh arguments neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 12/13] torture: Make torture.sh --allmodconfig testing fail on warnings neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 13/13] torture: Remove support for SRCU-lite neeraj.upadhyay
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
Some recent kernel-build failures have featured "ERROR", so this commit
adds it to the list checked by kvm-build.sh.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/kvm-build.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/rcutorture/bin/kvm-build.sh b/tools/testing/selftests/rcutorture/bin/kvm-build.sh
index 11f8d232b0ee..3edfd064ef81 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-build.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-build.sh
@@ -44,7 +44,7 @@ fi
ncpus="`getconf _NPROCESSORS_ONLN`"
make -j$((2 * ncpus)) $TORTURE_KMAKE_ARG > $resdir/Make.out 2>&1
retval=$?
-if test $retval -ne 0 || grep "rcu[^/]*": < $resdir/Make.out | grep -E -q "Stop|Error|error:|warning:" || grep -E -q "Stop|Error|error:" < $resdir/Make.out
+if test $retval -ne 0 || grep "rcu[^/]*": < $resdir/Make.out | grep -E -q "Stop|ERROR|Error|error:|warning:" || grep -E -q "Stop|ERROR|Error|error:" < $resdir/Make.out
then
echo Kernel build error
grep -E "Stop|Error|error:|warning:" < $resdir/Make.out
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 12/13] torture: Make torture.sh --allmodconfig testing fail on warnings
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
` (10 preceding siblings ...)
2025-07-09 10:44 ` [PATCH rcu 11/13] torture: Add "ERROR" diagnostic for testing kernel-build output neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
2025-07-09 10:44 ` [PATCH rcu 13/13] torture: Remove support for SRCU-lite neeraj.upadhyay
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
Currently, the torture.sh --allmodconfig testing looks solely at the
exit code from the kernel build, and thus fails to flag many compiler
warnings. This commit therefore checks the kernel-build output for
compiler diagnostics.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
tools/testing/selftests/rcutorture/bin/torture.sh | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index 39844d213da5..611bc03a8dc7 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -438,6 +438,10 @@ then
make -j$MAKE_ALLOTED_CPUS >> "$amcdir/Make.out" 2>&1
retcode="$?"
echo $retcode > "$amcdir/Make.exitcode"
+ if grep -E -q "Stop|ERROR|Error|error:|warning:" < "$amcdir/Make.out"
+ then
+ retcode=99
+ fi
buildphase='"make"'
fi
if test "$retcode" -eq 0
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH rcu 13/13] torture: Remove support for SRCU-lite
2025-07-09 10:44 [PATCH rcu 00/13] Torture script changes for v6.17 neeraj.upadhyay
` (11 preceding siblings ...)
2025-07-09 10:44 ` [PATCH rcu 12/13] torture: Make torture.sh --allmodconfig testing fail on warnings neeraj.upadhyay
@ 2025-07-09 10:44 ` neeraj.upadhyay
12 siblings, 0 replies; 15+ messages in thread
From: neeraj.upadhyay @ 2025-07-09 10:44 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, paulmck, joelagnelf, frederic, boqun.feng, urezki,
rostedt, mathieu.desnoyers, jiangshanlai, qiang.zhang1211,
neeraj.iitr10, neeraj.upadhyay, Neeraj Upadhyay (AMD)
From: "Paul E. McKenney" <paulmck@kernel.org>
Because SRCU-lite is being replaced by SRCU-fast, this commit removes
support for SRCU-lite from refscale.c.
Signed-off-by: "Paul E. McKenney" <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
---
kernel/rcu/refscale.c | 32 +-------------------------------
1 file changed, 1 insertion(+), 31 deletions(-)
diff --git a/kernel/rcu/refscale.c b/kernel/rcu/refscale.c
index f11a7c2af778..f4b2cea1cce5 100644
--- a/kernel/rcu/refscale.c
+++ b/kernel/rcu/refscale.c
@@ -246,36 +246,6 @@ static const struct ref_scale_ops srcu_fast_ops = {
.name = "srcu-fast"
};
-static void srcu_lite_ref_scale_read_section(const int nloops)
-{
- int i;
- int idx;
-
- for (i = nloops; i >= 0; i--) {
- idx = srcu_read_lock_lite(srcu_ctlp);
- srcu_read_unlock_lite(srcu_ctlp, idx);
- }
-}
-
-static void srcu_lite_ref_scale_delay_section(const int nloops, const int udl, const int ndl)
-{
- int i;
- int idx;
-
- for (i = nloops; i >= 0; i--) {
- idx = srcu_read_lock_lite(srcu_ctlp);
- un_delay(udl, ndl);
- srcu_read_unlock_lite(srcu_ctlp, idx);
- }
-}
-
-static const struct ref_scale_ops srcu_lite_ops = {
- .init = rcu_sync_scale_init,
- .readsection = srcu_lite_ref_scale_read_section,
- .delaysection = srcu_lite_ref_scale_delay_section,
- .name = "srcu-lite"
-};
-
#ifdef CONFIG_TASKS_RCU
// Definitions for RCU Tasks ref scale testing: Empty read markers.
@@ -1193,7 +1163,7 @@ ref_scale_init(void)
long i;
int firsterr = 0;
static const struct ref_scale_ops *scale_ops[] = {
- &rcu_ops, &srcu_ops, &srcu_fast_ops, &srcu_lite_ops, RCU_TRACE_OPS RCU_TASKS_OPS
+ &rcu_ops, &srcu_ops, &srcu_fast_ops, RCU_TRACE_OPS RCU_TASKS_OPS
&refcnt_ops, &rwlock_ops, &rwsem_ops, &lock_ops, &lock_irq_ops,
&acqrel_ops, &sched_clock_ops, &clock_ops, &jiffies_ops,
&typesafe_ref_ops, &typesafe_lock_ops, &typesafe_seqlock_ops,
--
2.40.1
^ permalink raw reply related [flat|nested] 15+ messages in thread