Skip to content

RCU dyntick updates for v4.16

Paul E. McKenney lkml 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest17 patches 0 repliesNew

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/17rcu: Avoid ->dynticks_nmi_nesting store tearingkernel/rcu/tree.c+5 -30 replies
2/17rcu: Reduce dyntick-idle state spacekernel/rcu/tree.c+11 -120 replies
3/17rcu: Move rcu_nmi_{enter,exit}() to prepare for consolidationkernel/rcu/tree.c+75 -750 replies
4/17rcu: Clamp ->dynticks_nmi_nesting at eqs entry/exitkernel/rcu/rcu.h kernel/rcu/tree.c+4 -00 replies
5/17rcu: Define rcu_irq_{enter,exit}() in terms of rcu_nmi_{enter,exit}()kernel/rcu/tree.c+21 -380 replies
6/17rcu: Make ->dynticks_nesting be a simple counterkernel/rcu/rcu.h kernel/rcu/tree.c kernel/rcu/tree.h+21 -470 replies
7/17rcu: Eliminate rcu_irq_enter_disabled()include/linux/rcutiny.h include/linux/rcutree.h include/linux/tracepoint.h +2 more+3 -370 replies
8/17rcu: Add tracing to irq/NMI dyntick-idle transitionsinclude/trace/events/rcu.h kernel/rcu/tree.c+14 -60 replies
9/17rcu: Shrink ->dynticks_{nmi_,}nesting from long long to longinclude/trace/events/rcu.h kernel/rcu/rcu.h kernel/rcu/tree.c +2 more+11 -110 replies
10/17rcu: Add ->dynticks field to rcu_dyntick trace eventinclude/trace/events/rcu.h kernel/rcu/tree.c+15 -140 replies
11/17rcu: Stop duplicating lockdep checks in RCU's idle-entry codekernel/rcu/tree.c+0 -110 replies
12/17rcu: Avoid ->dynticks_nesting store tearingkernel/rcu/tree.c+3 -30 replies
13/17rcu: Fold rcu_eqs_enter_common() into rcu_eqs_enter()kernel/rcu/tree.c+16 -270 replies
14/17rcu: Fold rcu_eqs_exit_common() into rcu_eqs_exit()kernel/rcu/tree.c+18 -320 replies
15/17rcu: Simplify rcu_eqs_{enter,exit}() non-idle task debug codeinclude/trace/events/rcu.h kernel/rcu/tree.c+7 -290 replies
16/17doc: Update dyntick-idle design documentation for NMI/irq consolidationDocumentation/RCU/Design/Data-Structures/Data-Structures.html+32 -140 replies
17/17tracing, rcu: Remove no longer used trace event rcu_prep_idleinclude/trace/events/rcu.h+0 -400 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [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(-)