All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: mingo@kernel.org, jiangshanlai@gmail.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org,
	rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com,
	fweisbec@gmail.com, oleg@redhat.com
Subject: [PATCH tip/core/rcu 0/17] RCU dyntick updates for v4.16
Date: Fri, 1 Dec 2017 11:36:25 -0800	[thread overview]
Message-ID: <20171201193625.GA20681@linux.vnet.ibm.com> (raw)

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	other threads:[~2017-12-01 19:36 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-01 19:36 Paul E. McKenney [this message]
2017-12-01 19:36 ` [PATCH tip/core/rcu 01/17] rcu: Avoid ->dynticks_nmi_nesting store tearing Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 02/17] rcu: Reduce dyntick-idle state space Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 03/17] rcu: Move rcu_nmi_{enter,exit}() to prepare for consolidation Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 04/17] rcu: Clamp ->dynticks_nmi_nesting at eqs entry/exit Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 05/17] rcu: Define rcu_irq_{enter,exit}() in terms of rcu_nmi_{enter,exit}() Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 06/17] rcu: Make ->dynticks_nesting be a simple counter Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 07/17] rcu: Eliminate rcu_irq_enter_disabled() Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 08/17] rcu: Add tracing to irq/NMI dyntick-idle transitions Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 09/17] rcu: Shrink ->dynticks_{nmi_,}nesting from long long to long Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 10/17] rcu: Add ->dynticks field to rcu_dyntick trace event Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 11/17] rcu: Stop duplicating lockdep checks in RCU's idle-entry code Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 12/17] rcu: Avoid ->dynticks_nesting store tearing Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 13/17] rcu: Fold rcu_eqs_enter_common() into rcu_eqs_enter() Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 14/17] rcu: Fold rcu_eqs_exit_common() into rcu_eqs_exit() Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 15/17] rcu: Simplify rcu_eqs_{enter,exit}() non-idle task debug code Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 16/17] doc: Update dyntick-idle design documentation for NMI/irq consolidation Paul E. McKenney
2017-12-01 19:36 ` [PATCH tip/core/rcu 17/17] tracing, rcu: Remove no longer used trace event rcu_prep_idle Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171201193625.GA20681@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=jiangshanlai@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.