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. Warn if Tiny SRCU readers are preempted.
10. Explicitly note DEFINE_SRCU() needs for srcu_barrier().
11. Add atomic-SRCU support to torture.sh, courtesy of Kunwu Chan.
12. Add reader-free fastpath to synchronize_srcu_atomic(), courtesy
of Kunwu Chan.
13. Skip callback scheduling for atomic SRCU grace periods, courtesy
of Kunwu Chan.
14. Remove srcu_barrier() sleep for atomic SRCU, courtesy of Kunwu
Chan.
15. Restrict atomic-SRCU non_block annotation to task context,
courtesy of Kunwu Chan.
16. Make init_srcu_struct_atomic() prevent transition to big,
courtesy of Kunwu Chan.
17. Don't transition atomic SRCU to big in srcu_gp_end(), courtesy
of Kunwu Chan.
18. Skip torture to-big transition for atomic SRCU, courtesy of
Kunwu Chan.
19. Add lockdep and early-boot checks to synchronize_srcu_atomic(),
courtesy of Kunwu Chan.
20. Add lockdep and early-boot checks to synchronize_srcu_atomic(),
courtesy of Kunwu Chan.
21. Preserve IRQ state in synchronize_srcu_atomic() callchain,
courtesy of Kunwu Chan.
Changes since v1:
https://lore.kernel.org/all/13d6be93-8d9d-47a2-beb0-99c8a90938d4@paulmck-laptop/
o Added patches 19-21.
o Dropped old patch 9 in favor of an urgent RFC pull request.
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 | 94 +++++
kernel/rcu/srcutree.c | 333 ++++++++++++++++----
11 files changed, 548 insertions(+), 86 deletions(-)