lkml.org 
[lkml]   [2017]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    Subject[PATCH tip/core/rcu 0/17] RCU dyntick updates for v4.16
    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(-)

    \
     
     \ /
      Last update: 2017-12-01 20:37    [W:4.333 / U:0.812 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site