RCU dyntick updates for v4.16
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest17 patches 0 repliesNew
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/17 | rcu: Avoid ->dynticks_nmi_nesting store tearingkernel/ | +5 | 0 replies | |
| 2/17 | rcu: Reduce dyntick-idle state spacekernel/ | +11 | 0 replies | |
| 3/17 | rcu: Move rcu_nmi_{enter,exit}() to prepare for consolidationkernel/ | +75 | 0 replies | |
| 4/17 | rcu: Clamp ->dynticks_nmi_nesting at eqs entry/exitkernel/ kernel/ | +4 | 0 replies | |
| 5/17 | rcu: Define rcu_irq_{enter,exit}() in terms of rcu_nmi_{enter,exit}()kernel/ | +21 | 0 replies | |
| 6/17 | rcu: Make ->dynticks_nesting be a simple counterkernel/ kernel/ kernel/ | +21 | 0 replies | |
| 7/17 | rcu: Eliminate rcu_irq_enter_disabled()include/ include/ include/ +2 more | +3 | 0 replies | |
| 8/17 | rcu: Add tracing to irq/NMI dyntick-idle transitionsinclude/ kernel/ | +14 | 0 replies | |
| 9/17 | rcu: Shrink ->dynticks_{nmi_,}nesting from long long to longinclude/ kernel/ kernel/ +2 more | +11 | 0 replies | |
| 10/17 | rcu: Add ->dynticks field to rcu_dyntick trace eventinclude/ kernel/ | +15 | 0 replies | |
| 11/17 | rcu: Stop duplicating lockdep checks in RCU's idle-entry codekernel/ | +0 | 0 replies | |
| 12/17 | rcu: Avoid ->dynticks_nesting store tearingkernel/ | +3 | 0 replies | |
| 13/17 | rcu: Fold rcu_eqs_enter_common() into rcu_eqs_enter()kernel/ | +16 | 0 replies | |
| 14/17 | rcu: Fold rcu_eqs_exit_common() into rcu_eqs_exit()kernel/ | +18 | 0 replies | |
| 15/17 | rcu: Simplify rcu_eqs_{enter,exit}() non-idle task debug codeinclude/ kernel/ | +7 | 0 replies | |
| 16/17 | doc: Update dyntick-idle design documentation for NMI/irq consolidationDocumentation/ | +32 | 0 replies | |
| 17/17 | tracing, rcu: Remove no longer used trace event rcu_prep_idleinclude/ | +0 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
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(-)