Hello!

This series includes simplifications of RCU's dyntick-idle processing,
most importantly making use of the the NMI style of processing for
interrupts as well as NMIs.  This series provides a net decrease of more
than 100 lines of code.

1.      Avoid ->dynticks_nmi_nesting store tearing.

2.      Reduce dyntick-idle state space by carefully ordering adjustments
        of nesting and overall state.

3.      Move rcu_nmi_{enter,exit}() to prepare for consolidation.

4.      Clamp ->dynticks_nmi_nesting at eqs entry/exit.  This is required
        to handle the half-interrupts featured by some architectures.
        It used to be handled by the interrupt portion of RCU's
        dyntick-idle processing, which this series is eliminating.
        Thus the clamping must move.

5.      Define rcu_irq_{enter,exit}() in terms of rcu_nmi_{enter,exit}().

6.      Make ->dynticks_nesting be a simple counter, given that it now
        handles only process-level reasons why RCU should be watching.

7.      Eliminate rcu_irq_enter_disabled() because the NMI handling
        already handles the possibility of interruption at any point.

8.      Add tracing to irq/NMI dyntick-idle transitions.

9.      Shrink ->dynticks_{nmi_,}nesting from long long to long because
        there had better not be more than a billion process-level reasons
        why RCU should be watching a given CPU.

10.     Add ->dynticks field to rcu_dyntick trace event.

11.     Stop duplicating lockdep checks in RCU's idle-entry code.

12.     Avoid ->dynticks_nesting store tearing.

13.     Fold rcu_eqs_enter_common() into rcu_eqs_enter() because it is
        now only invoked from that one place.

14.     Fold rcu_eqs_exit_common() into rcu_eqs_exit() because it is now
        only invoked from that one place.

15.     Simplify rcu_eqs_{enter,exit}() non-idle task debug code.

16.     Update dyntick-idle design documentation to reflect NMI/irq
        consolidation.

17.     Remove no longer used trace event rcu_prep_idle, courtesy of
        Steven Rostedt.

                                                                Thanx, Paul

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

 Documentation/RCU/Design/Data-Structures/Data-Structures.html |   46 
 include/linux/rcutiny.h                                       |    1 
 include/linux/rcutree.h                                       |    1 
 include/linux/tracepoint.h                                    |    5 
 include/trace/events/rcu.h                                    |   87 -
 kernel/rcu/rcu.h                                              |   31 
 kernel/rcu/tree.c                                             |  466 ++++------
 kernel/rcu/tree.h                                             |    5 
 kernel/rcu/tree_plugin.h                                      |    2 
 kernel/trace/trace.c                                          |   11 
 10 files changed, 256 insertions(+), 399 deletions(-)

Reply via email to