Hello!

This series contains the RCU flavor consolidation, along with some initial
cleanup work enabled by that consolidation (and some that became apparent
while cleaning up):

1.      Refactor rcu_{nmi,irq}_{enter,exit}(), saving a branch on the
        idle entry/exit hotpaths, courtesy of Byungchul Park,

2.      Defer reporting RCU-preempt quiescent states when disabled.
        This is the key commit that consolidates the RCU-bh and RCU-sched
        flavors into RCU, however, the RCU-bh and RCU-sched flavors
        still exist independently as well at this point.

3.      Test extended "rcu" read-side critical sections.  This commit
        causes rcutorture to test RCU's new-found ability to act as
        the combination of RCU, RCU-bh, and RCU-sched.

4.      Allow processing deferred QSes for exiting RCU-preempt readers.
        This is a optimization.

5.      Remove now-unused ->b.exp_need_qs field from the rcu_special union.

6.      Add warning to detect half-interrupts.  Test the claim that
        the Linux kernel no longer does half-interrupts.

7.      Apply RCU-bh QSes to RCU-sched and RCU-preempt when safe, that is,
        make the consolidated RCU inherit RCU-bh's denial-of-service
        avoidance mechanism.

8.      Report expedited grace periods at context-switch time.  This is
        an optimization enabled by the RCU flavor consolidation.

9.      Define RCU-bh update API in terms of RCU.  This commit gets rid
        of the RCU-bh update mechanism.

10.     Update comments and help text to account for the removal of
        the RCU-bh update mechanism.

11.     Drop "wake" parameter from rcu_report_exp_rdp().

12.     Fix typo in rcu_get_gp_kthreads_prio() header comment.

13.     Define RCU-sched API in terms of RCU for Tree RCU PREEMPT builds.
        Although this commit gets rid of the RCU-sched update mechanism
        from PREEMPT builds, it of course remains as the sole RCU flavor
        for !PREEMPT && !SMP builds.

14.     Express Tiny RCU updates in terms of RCU rather than RCU-sched.
        This will enable additional cleanups and code savings.

15.     Remove RCU_STATE_INITIALIZER() in favor of just using an open-coded
        initializer for the sole remaining rcu_state structure.

16.     Eliminate rcu_state structure's ->call field, as it is now always
        just call_rcu().

17.     Remove rcu_state structure's ->rda field, as there is now only one
        set of per-CPU rcu_data structures.

                                                        Thanx, Paul

------------------------------------------------------------------------

 Documentation/RCU/Design/Requirements/Requirements.html |   50 -
 include/linux/rcupdate.h                                |   48 -
 include/linux/rcupdate_wait.h                           |    6 
 include/linux/rcutiny.h                                 |   61 +
 include/linux/rcutree.h                                 |   31 
 include/linux/sched.h                                   |    6 
 kernel/rcu/Kconfig                                      |   10 
 kernel/rcu/rcutorture.c                                 |    1 
 kernel/rcu/tiny.c                                       |  163 +--
 kernel/rcu/tree.c                                       |  655 +++++-----------
 kernel/rcu/tree.h                                       |   44 -
 kernel/rcu/tree_exp.h                                   |  256 +++---
 kernel/rcu/tree_plugin.h                                |  523 ++++++------
 kernel/rcu/update.c                                     |    2 
 kernel/softirq.c                                        |    3 
 15 files changed, 836 insertions(+), 1023 deletions(-)

Reply via email to