From: "Zqiang" <qiang.zhang@linux.dev>
To: "Kunwu Chan" <kunwu.chan@gmail.com>, paulmck@kernel.org
Cc: rostedt@goodmis.org, mathieu.desnoyers@efficios.com,
rcu@vger.kernel.org, linux-kernel@vger.kernel.org,
"Kunwu Chan" <kunwu.chan@gmail.com>,
jiangshanlai@gmail.com, josh@joshtriplett.org
Subject: Re: [PATCH 00/13] srcu: Round out atomic SRCU support
Date: Thu, 10 Sep 2026 12:16:43 +0000 [thread overview]
Message-ID: <c201584b58aec856342e0f23f8df9f81baccba1d@linux.dev> (raw)
In-Reply-To: <20260907075829.2073224-1-kunwu.chan@linux.dev>
>
> From: Kunwu Chan <kunwu.chan@gmail.com>
>
> This series rounds out atomic SRCU support with a reader-free fastpath,
> some atomic-context fixes, and additional test coverage.
>
> The core change is a reader-free fastpath for synchronize_srcu_atomic().
> Atomic SRCU's read-side critical sections disable preemption, so when
> the summed lock and unlock counts match for both ranks,
> synchronize_srcu_atomic() can end the grace period immediately, without
> the index flip or the srcu_advance_state() scans. Correctness depends
> on the grace-period anchor written by srcu_gp_start() preceding the
> lock-count scan; two LKMM litmus tests (patches 1-2) verify that
> ordering.
For synchronize_srcu_atomic(), the following items maybe also
need to be added:
srcu_lock_sync(&ssp->dep_map);
RCU_LOCKDEP_WARN(lockdep_is_held(ssp),
"Illegal synchronize_srcu() in same-type SRCU read-side critical section");
if (rcu_scheduler_active == RCU_SCHEDULER_INACTIVE)
return;
Thanks
Zqiang
>
> The series is:
>
> 1-2 LKMM litmus tests for the reader-free fastpath ordering.
> 3 srcutree: add the reader-free fastpath.
> 4 rcutorture: add --do-atomic-srcu to torture.sh.
> 5-7 srcutree: honor and propagate is_atomic so atomic SRCU never
> transitions to big.
> 8 srcutree: forbid srcu_expedite_current() on atomic SRCU.
> 9 rcutorture: disable srcu_expedite_current() for atomic SRCU.
> 10 srcutree: skip callback scheduling for atomic SRCU grace periods.
> 11 srcutree: drop the srcu_barrier() sleep for atomic SRCU.
> 12 srcutree: remove leftover debug pr_alert()s.
> 13 srcu: restrict the non_block annotation to task context, fixing a
> KCSAN data race.
>
> The KCSAN race in patch 13 is a data race on the interrupted task's
> ->non_block_count when a timer callback runs atomic-SRCU readers in
> inline softirq context.
>
> Tested with herd7 7.58 (litmus tests), torture.sh --do-atomic-srcu, and
> torture.sh --do-atomic-srcu --do-kcsan (KCSAN+PROVE_LOCKING).
>
> Kunwu Chan (13):
> litmus: Add SRCU fastpath anchor-before-scan test
> litmus: Add SRCU fastpath scan-before-anchor test
> srcutree: Add reader-free fastpath to synchronize_srcu_atomic()
> rcutorture: Add atomic-SRCU support to torture.sh
> srcutree: Honor is_atomic in check_init_srcu_struct()
> srcutree: Make init_srcu_struct_atomic() prevent transition to big
> srcutree: Don't transition atomic SRCU to big in srcu_gp_end()
> srcutree: Forbid srcu_expedite_current() on atomic SRCU
> rcutorture: Disable srcu_expedite_current() for atomic SRCU
> srcutree: Skip callback scheduling for atomic SRCU grace periods
> srcutree: Remove srcu_barrier() sleep for atomic SRCU
> srcutree: Remove debug pr_alert()s
> srcu: Restrict atomic-SRCU non_block annotation to task context
>
> include/linux/srcu.h | 10 +-
> kernel/rcu/rcutorture.c | 1 +
> kernel/rcu/srcutree.c | 95 ++++++++++++++-----
> tools/memory-model/litmus-tests/README | 16 ++++
> .../SRCU-fastpath-anchor-before-scan.litmus | 56 +++++++++++
> .../SRCU-fastpath-scan-before-anchor.litmus | 53 +++++++++++
> .../selftests/rcutorture/bin/torture.sh | 24 +++++
> 7 files changed, 229 insertions(+), 26 deletions(-)
> create mode 100644 tools/memory-model/litmus-tests/SRCU-fastpath-anchor-before-scan.litmus
> create mode 100644 tools/memory-model/litmus-tests/SRCU-fastpath-scan-before-anchor.litmus
>
> base-commit: ef15070f96c5f07de3a9b593c36f6e83bc9e3d58
> --
> 2.43.0
>
prev parent reply other threads:[~2026-09-10 12:16 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-07 7:58 [PATCH 00/13] srcu: Round out atomic SRCU support Kunwu Chan
2026-09-07 7:58 ` [PATCH 01/13] litmus: Add SRCU fastpath anchor-before-scan test Kunwu Chan
2026-09-08 23:58 ` Paul E. McKenney
2026-09-09 3:02 ` Kunwu Chan
2026-09-07 7:58 ` [PATCH 02/13] litmus: Add SRCU fastpath scan-before-anchor test Kunwu Chan
2026-09-07 7:58 ` [PATCH 03/13] srcutree: Add reader-free fastpath to synchronize_srcu_atomic() Kunwu Chan
2026-09-08 20:29 ` Paul E. McKenney
2026-09-08 21:13 ` David Woodhouse
2026-09-08 21:54 ` Paul E. McKenney
2026-09-08 22:09 ` David Woodhouse
2026-09-08 22:55 ` Paul E. McKenney
2026-09-08 22:26 ` David Woodhouse
2026-09-08 22:53 ` Paul E. McKenney
2026-09-08 22:56 ` David Woodhouse
2026-09-08 23:34 ` Paul E. McKenney
2026-09-09 3:35 ` Kunwu Chan
2026-09-07 7:58 ` [PATCH 04/13] rcutorture: Add atomic-SRCU support to torture.sh Kunwu Chan
2026-09-08 23:34 ` Paul E. McKenney
2026-09-09 22:35 ` Paul E. McKenney
2026-09-10 1:30 ` KunWu Chan
2026-09-10 3:47 ` Paul E. McKenney
2026-09-10 4:31 ` KunWu Chan
2026-09-07 7:58 ` [PATCH 05/13] srcutree: Honor is_atomic in check_init_srcu_struct() Kunwu Chan
2026-09-08 20:27 ` Paul E. McKenney
2026-09-07 7:58 ` [PATCH 06/13] srcutree: Make init_srcu_struct_atomic() prevent transition to big Kunwu Chan
2026-09-08 23:36 ` Paul E. McKenney
2026-09-09 2:34 ` Kunwu Chan
2026-09-10 0:08 ` Paul E. McKenney
2026-09-07 7:58 ` [PATCH 07/13] srcutree: Don't transition atomic SRCU to big in srcu_gp_end() Kunwu Chan
2026-09-08 23:38 ` Paul E. McKenney
2026-09-09 2:45 ` Kunwu Chan
2026-09-10 0:13 ` Paul E. McKenney
2026-09-10 3:18 ` KunWu Chan
2026-09-10 3:46 ` Paul E. McKenney
2026-09-10 4:27 ` KunWu Chan
2026-09-07 7:58 ` [PATCH 08/13] srcutree: Forbid srcu_expedite_current() on atomic SRCU Kunwu Chan
2026-09-08 23:43 ` Paul E. McKenney
2026-09-07 7:58 ` [PATCH 09/13] rcutorture: Disable srcu_expedite_current() for " Kunwu Chan
2026-09-08 23:48 ` Paul E. McKenney
2026-09-07 7:58 ` [PATCH 10/13] srcutree: Skip callback scheduling for atomic SRCU grace periods Kunwu Chan
2026-09-09 0:01 ` Paul E. McKenney
2026-09-07 7:58 ` [PATCH 11/13] srcutree: Remove srcu_barrier() sleep for atomic SRCU Kunwu Chan
2026-09-09 0:05 ` Paul E. McKenney
2026-09-07 7:58 ` [PATCH 12/13] srcutree: Remove debug pr_alert()s Kunwu Chan
2026-09-09 0:06 ` Paul E. McKenney
2026-09-07 7:58 ` [PATCH 13/13] srcu: Restrict atomic-SRCU non_block annotation to task context Kunwu Chan
2026-09-09 0:11 ` Paul E. McKenney
2026-09-10 12:16 ` Zqiang [this message]
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=c201584b58aec856342e0f23f8df9f81baccba1d@linux.dev \
--to=qiang.zhang@linux.dev \
--cc=jiangshanlai@gmail.com \
--cc=josh@joshtriplett.org \
--cc=kunwu.chan@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=paulmck@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.