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

Reply via email to