[PATCH 0/19] Add atomic SRCU
From: Paul E. McKenney
Date: Fri Sep 18 2026 - 20:35:38 EST
Hello!
This series adds an atomic SRCU and some additional adjustments:
1. Make a Tiny SRCU grace period imply an RCU grace period.
2. Suppress srcu_advance_state() mutex_lock in atomic.
3. Suppress to-big transition for atomic SRCU.
4. Add an atomic Tree SRCU.
5. Add an atomic Tiny SRCU.
6. Add support for testing synchronize_srcu_atomic().
7. Disable preemption across synchronize_srcu_atomic().
8. Use IRQ_WORK_INIT_HARD for srcu's irq_work, courtesy of Sebastian
Andrzej Siewior.
9. Fix WARN_ON() for rcu_segcblist_n_cbs() in cleanup_srcu_struct(),
courtesy of Sunho Park.
10. Warn if Tiny SRCU readers are preempted.
11. Explicitly note DEFINE_SRCU() needs for srcu_barrier().
12. Add atomic-SRCU support to torture.sh, courtesy of Kunwu Chan.
13. Add reader-free fastpath to synchronize_srcu_atomic(), courtesy
of Kunwu Chan.
14. Skip callback scheduling for atomic SRCU grace periods, courtesy
of Kunwu Chan.
15. Remove srcu_barrier() sleep for atomic SRCU, courtesy of Kunwu
Chan.
16. Restrict atomic-SRCU non_block annotation to task context,
courtesy of Kunwu Chan.
17. Make init_srcu_struct_atomic() prevent transition to big,
courtesy of Kunwu Chan.
18. Don't transition atomic SRCU to big in srcu_gp_end(), courtesy
of Kunwu Chan.
19. Skip torture to-big transition for atomic SRCU, courtesy of
Kunwu Chan.
Thanx, Paul
------------------------------------------------------------------------
b/include/linux/srcu.h | 81 +++++
b/include/linux/srcutiny.h | 6
b/include/linux/srcutree.h | 9
b/kernel/rcu/rcutorture.c | 46 ++-
b/kernel/rcu/srcutiny.c | 2
b/kernel/rcu/srcutree.c | 23 +
b/tools/testing/selftests/rcutorture/bin/torture.sh | 24 +
include/linux/srcu.h | 10
include/linux/srcutree.h | 6
kernel/rcu/srcutiny.c | 87 ++++++
kernel/rcu/srcutree.c | 285 +++++++++++++++++---
11 files changed, 511 insertions(+), 68 deletions(-)