All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@kernel.org>
To: rcu@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com,
	rostedt@goodmis.org, Kunwu Chan <kunwu.chan@gmail.com>,
	"Paul E . McKenney" <paulmck@kernel.org>
Subject: [PATCH v2 11/21] rcutorture: Add atomic-SRCU support to torture.sh
Date: Wed,  7 Oct 2026 13:59:14 -0700	[thread overview]
Message-ID: <20261007205924.1983367-11-paulmck@kernel.org> (raw)
In-Reply-To: <546c81a7-f677-4d8e-a304-746b227058b0@paulmck-laptop>

From: Kunwu Chan <kunwu.chan@gmail.com>

Add the --do-atomic-srcu argument to torture.sh, which runs the
SRCU-N, SRCU-P, and SRCU-T scenarios, thus covering both Tree SRCU
(SRCU-N and SRCU-P) and Tiny SRCU (SRCU-T), with
rcutorture.reader_flavor=0x10 appended to the boot parameters so
that it takes precedence over each scenario's own reader-flavor
setting.  This exercises srcu_read_lock_atomic(),
srcu_read_unlock_atomic(), and synchronize_srcu_atomic().

As with other torture.sh tests, the --do-kcsan argument runs a
KCSAN+PROVE_LOCKING variant of this test.

[ paulmck: Make --do-atomic-srcu be default-on. ]

Signed-off-by: Kunwu Chan <kunwu.chan@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 .../selftests/rcutorture/bin/torture.sh       | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index f0083891ee814..e7b578ec152f1 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -68,6 +68,7 @@ do_clocksourcewd="${ifnotaarch64}"
 do_rt=yes
 do_rcutasksflavors="${ifnotaarch64}" # FIXME: Back to "yes" when SMP=n auto-avoided
 do_srcu_lockdep=yes
+do_atomic_srcu=yes
 do_rcu_rust=no
 
 # doyesno - Helper function for yes/no arguments
@@ -103,6 +104,7 @@ usage () {
 	echo "       --do-rcu-rust / --do-no-rcu-rust / --no-rcu-rust"
 	echo "       --do-scftorture / --do-no-scftorture / --no-scftorture"
 	echo "       --do-srcu-lockdep / --do-no-srcu-lockdep / --no-srcu-lockdep"
+	echo "       --do-atomic-srcu / --do-no-atomic-srcu / --no-atomic-srcu"
 	echo "       --duration [ <minutes> | <hours>h | <days>d ]"
 	echo "       --guest-cpu-limit N"
 	echo "       --kcsan-kmake-arg kernel-make-arguments"
@@ -148,6 +150,7 @@ do
 		do_kcsan=yes
 		do_clocksourcewd="${ifnotaarch64}"
 		do_srcu_lockdep=yes
+		do_atomic_srcu=yes
 		;;
 	--do-allmodconfig|--do-no-allmodconfig|--no-allmodconfig)
 		do_allmodconfig=`doyesno "$1" --do-allmodconfig`
@@ -183,6 +186,7 @@ do
 		do_kcsan=no
 		do_clocksourcewd=no
 		do_srcu_lockdep=no
+		do_atomic_srcu=no
 		;;
 	--do-normal|--do-norm|--do-no-normal|--do-no-norm|--no-normal|--no-norm)
 		do_normal=`doyesno "$1" --do-normal`
@@ -212,6 +216,9 @@ do
 	--do-srcu-lockdep|--do-no-srcu-lockdep|--no-srcu-lockdep)
 		do_srcu_lockdep=`doyesno "$1" --do-srcu-lockdep`
 		;;
+	--do-atomic-srcu|--do-no-atomic-srcu|--no-atomic-srcu)
+		do_atomic_srcu=`doyesno "$1" --do-atomic-srcu`
+		;;
 	--duration)
 		checkarg --duration "(minutes)" $# "$2" '^[0-9][0-9]*\(m\|h\|d\|\)$' '^error'
 		mult=1
@@ -497,6 +504,23 @@ then
 	torture_set "rcutorture" tools/testing/selftests/rcutorture/bin/kvm.sh --allcpus --duration "$duration_rcutorture" --configs "$configs_rcutorture" --trust-make
 fi
 
+# Test atomic SRCU across Tree SRCU (SRCU-N and SRCU-P) and Tiny SRCU
+# (SRCU-T).  The reader flavor selects srcu_read_lock_atomic() and
+# synchronize_srcu_atomic().  Tiny SRCU requires SMP=n, which aarch64
+# does not support.
+if test "$do_atomic_srcu" = "yes"
+then
+	torture_bootargs="rcutorture.reader_flavor=0x10"
+	configs_atomic_srcu="SRCU-N SRCU-P"
+	if test "$ifnotaarch64" = yes
+	then
+		configs_atomic_srcu="$configs_atomic_srcu SRCU-T"
+	fi
+	torture_set "atomic-srcu" tools/testing/selftests/rcutorture/bin/kvm.sh \
+		--allcpus --duration "$duration_rcutorture" \
+		--configs "$configs_atomic_srcu" --trust-make
+fi
+
 if test "$do_locktorture" = "yes"
 then
 	torture_bootargs="torture.disable_onoff_at_boot"
-- 
2.40.1


  parent reply	other threads:[~2026-10-07 20:59 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-07 20:59 [PATCH v2 0/21] Add atomic SRCU &c for v7.4 Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 01/21] srcutiny: Make a Tiny SRCU grace period imply an RCU grace period Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 02/21] srcutree: Suppress srcu_advance_state() mutex_lock in atomic Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 03/21] srcutree: Suppress to-big transition for atomic SRCU Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 04/21] srcutree: Add an atomic Tree SRCU Paul E. McKenney
2026-10-08  7:39   ` David Woodhouse
2026-10-08 15:51     ` Paul E. McKenney
2026-10-12 12:49       ` David Woodhouse
2026-10-14 21:14         ` Paul E. McKenney
2026-10-14 21:31           ` David Woodhouse
2026-10-14 22:02             ` Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 05/21] srcutiny: Add an atomic Tiny SRCU Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 06/21] rcutorture: Add support for testing synchronize_srcu_atomic() Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 07/21] srcutree: Disable preemption across synchronize_srcu_atomic() Paul E. McKenney
2026-10-23  0:19   ` Joel Fernandes
2026-10-23  2:22     ` Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 08/21] srcu: Use IRQ_WORK_INIT_HARD for srcu's irq_work Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 09/21] srcutree: Warn if Tiny SRCU readers are preempted Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 10/21] srcutree: Explicitly note DEFINE_SRCU() needs for srcu_barrier() Paul E. McKenney
2026-10-07 20:59 ` Paul E. McKenney [this message]
2026-10-07 20:59 ` [PATCH v2 12/21] srcutree: Add reader-free fastpath to synchronize_srcu_atomic() Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 13/21] srcutree: Skip callback scheduling for atomic SRCU grace periods Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 14/21] srcutree: Remove srcu_barrier() sleep for atomic SRCU Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 15/21] srcu: Restrict atomic-SRCU non_block annotation to task context Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 16/21] srcutree: Make init_srcu_struct_atomic() prevent transition to big Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 17/21] srcutree: Don't transition atomic SRCU to big in srcu_gp_end() Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 18/21] srcutree: Skip torture to-big transition for atomic SRCU Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 19/21] srcutree: Add lockdep and early-boot checks to synchronize_srcu_atomic() Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 20/21] srcutiny: " Paul E. McKenney
2026-10-07 20:59 ` [PATCH v2 21/21] srcutree: Preserve IRQ state in synchronize_srcu_atomic() callchain Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261007205924.1983367-11-paulmck@kernel.org \
    --to=paulmck@kernel.org \
    --cc=kernel-team@meta.com \
    --cc=kunwu.chan@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rcu@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.