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

Reply via email to