[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(-)