public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: mingo@elte.hu, laijs@cn.fujitsu.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@polymtl.ca,
	josh@joshtriplett.org, niv@us.ibm.com, tglx@linutronix.de,
	peterz@infradead.org, rostedt@goodmis.org,
	Valdis.Kletnieks@vt.edu, dhowells@redhat.com,
	eric.dumazet@gmail.com, darren@dvhart.com, patches@linaro.org
Subject: [PATCH RFC tip/core/rcu 0/28] Preview of RCU changes for 3.3
Date: Wed, 2 Nov 2011 13:30:17 -0700	[thread overview]
Message-ID: <20111102203017.GA3830@linux.vnet.ibm.com> (raw)

Hello!

This patchset permits idle tasks to use RCU read-side critical sections,
although they are still prohibited between tick_nohz_idle_exit_norcu()
and tick_nohz_idle_exit_norcu(); makes synchronize_sched_expedited()
better able to share work among concurrent callers, allows ftrace_dump()
to be invoked from modules, dumps tracing upon detection of an rcutorture
failure, detects illegal use of RCU read-side critical sections from
extended quiescent states, legitimizes the pre-existin use of RCU in the
idle notifiers, fixes a memory-barrier botch, introduces an SRCU-like bulk
reference count, improve dynticks entry/exit tracing, further improves
RCU's ability to allow a given CPU to enter dyntick-idle mode quickly,
fixes idle-task checks, updates documentation, and additional fixes
from a still-ongoing top-to-bottom inspection of RCU.  The patches are
as follows:

1.	Strengthen memory barriers used in PowerPC value-returning
	atomics and locking primitives.  It is likely that this
	commit will be superseded by something from the powerpc
	maintainers.  The need for this strengthening was validated
	by tooling from Peter Sewell's group at the University of
	Cambridge.
2.	Rename ->signaled to ->fqs_state to clarify the code.
3.	Fix a race that could permit RCU-preempt expedited grace
	periods to complete too soon.
4.	Improve synchronize_sched_expedited()'s ability to share work
	among concurrent callers.
5.	Document the troubleshooting of lockdep lock-class leaks.
6.	Explicitly track idleness, which is a step towards permitting
	the idle tasks to contain RCU read-side critical sections
	(but only outside the body of the idle loop).
7,8.	Add an EXPORT_SYMBOL_GPL() for ftrace_dump() so that
	rcutorture can dump the trace buffer upon detection of
	an error, and then make rcutorture do the dumping.
9.	Document a failing scheduling-clock tick as yet another
	possible cause of RCU CPU stall warnings.
10.	Disable preemption in rcu_is_cpu_idle() in order to prevent
	spurious lockdep-RCU splats.
11.	Remove a useless self-awaken when setting up expedited grace
	periods, courtesy of Thomas Gleixner and the -rt effort.
12-17.	Make lockdep-RCU warn when RCU read-side primitives are
	invoked from an idle RCU extended quiescent state, mostly
	courtesy of Frederic Weisbecker.
18-23.	Separate out the scheduler-clock tick's idea of dyntick
	idle from RCU's notion of an idle extended quiescent state, mostly
	courtesy of Frederic Weisbecker.  These commits are needed for
	Frederic's work to suppress the scheduler-clock tick when there
	is but one runnable task on a given CPU.
24.	Introduce a bulk reference count, which is related to SRCU,
	but which allows a reference to be acquired in an irq handler
	and released by the task that was interrupted.
25-26.	Improve dyntick-idle tracing and diagnostics.
27.	Allow CPUs with pending RCU callbacks to enter dyntick-idle
	mode.  Beware this commit, as it compiled and passed rcutorture
	on the first try, which historically has indicated the presence
	of subtle and highly destructive bugs.
28.	Fix RCU's determination of whether or not it is running in the
	context of an idle task.

For a testing-only version of this patchset from git, please see the
following subject-to-rebase branch:

git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/dev

							Thanx, Paul

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

 arch/arm/kernel/process.c                  |    4 
 arch/avr32/kernel/process.c                |    4 
 arch/blackfin/kernel/process.c             |    4 
 arch/microblaze/kernel/process.c           |    4 
 arch/mips/kernel/process.c                 |    4 
 arch/openrisc/kernel/idle.c                |    4 
 arch/powerpc/kernel/idle.c                 |   20 +
 arch/powerpc/platforms/iseries/setup.c     |    8 
 arch/s390/kernel/process.c                 |    4 
 arch/sh/kernel/idle.c                      |    4 
 arch/sparc/kernel/process_64.c             |    4 
 arch/tile/kernel/process.c                 |    4 
 arch/um/kernel/process.c                   |    4 
 arch/unicore32/kernel/process.c            |    4 
 arch/x86/kernel/process_32.c               |    4 
 arch/x86/kernel/process_64.c               |   14 -
 b/Documentation/RCU/stallwarn.txt          |    5 
 b/Documentation/RCU/trace.txt              |    4 
 b/Documentation/lockdep-design.txt         |   61 +++++
 b/arch/arm/kernel/process.c                |    4 
 b/arch/avr32/kernel/process.c              |    4 
 b/arch/blackfin/kernel/process.c           |    4 
 b/arch/microblaze/kernel/process.c         |    4 
 b/arch/mips/kernel/process.c               |    4 
 b/arch/openrisc/kernel/idle.c              |    4 
 b/arch/powerpc/include/asm/synch.h         |    6 
 b/arch/powerpc/kernel/idle.c               |    4 
 b/arch/powerpc/platforms/iseries/setup.c   |    8 
 b/arch/powerpc/platforms/pseries/lpar.c    |    4 
 b/arch/s390/kernel/process.c               |    4 
 b/arch/sh/kernel/idle.c                    |    4 
 b/arch/sparc/kernel/process_64.c           |    4 
 b/arch/tile/kernel/process.c               |    4 
 b/arch/um/kernel/process.c                 |    4 
 b/arch/unicore32/kernel/process.c          |    4 
 b/arch/x86/kernel/apic/apic.c              |    6 
 b/arch/x86/kernel/apic/io_apic.c           |    2 
 b/arch/x86/kernel/cpu/mcheck/therm_throt.c |    2 
 b/arch/x86/kernel/cpu/mcheck/threshold.c   |    2 
 b/arch/x86/kernel/irq.c                    |    6 
 b/arch/x86/kernel/process_32.c             |    4 
 b/arch/x86/kernel/process_64.c             |    4 
 b/include/linux/hardirq.h                  |   21 --
 b/include/linux/rcupdate.h                 |   21 --
 b/include/linux/srcu.h                     |   36 ++-
 b/include/linux/tick.h                     |   11 -
 b/include/trace/events/rcu.h               |   10 
 b/kernel/lockdep.c                         |   22 ++
 b/kernel/rcu.h                             |    7 
 b/kernel/rcupdate.c                        |   10 
 b/kernel/rcutiny.c                         |  124 ++++++++++--
 b/kernel/rcutorture.c                      |   18 +
 b/kernel/rcutree.c                         |   16 -
 b/kernel/rcutree.h                         |    4 
 b/kernel/rcutree_plugin.h                  |    7 
 b/kernel/rcutree_trace.c                   |    2 
 b/kernel/softirq.c                         |    2 
 b/kernel/srcu.c                            |    3 
 b/kernel/time/tick-sched.c                 |    6 
 b/kernel/trace/trace.c                     |    1 
 include/linux/rcupdate.h                   |  139 ++++++++-----
 include/linux/srcu.h                       |   55 +++++
 include/linux/tick.h                       |   59 ++++-
 include/trace/events/rcu.h                 |   41 +++
 kernel/rcupdate.c                          |    2 
 kernel/rcutiny.c                           |   45 ++--
 kernel/rcutree.c                           |  298 ++++++++++++++++++++---------
 kernel/rcutree.h                           |   22 --
 kernel/rcutree_plugin.h                    |  175 +++++++++++++----
 kernel/rcutree_trace.c                     |   10 
 kernel/softirq.c                           |    2 
 kernel/time/tick-sched.c                   |  118 ++++++-----
 72 files changed, 1080 insertions(+), 467 deletions(-)


             reply	other threads:[~2011-11-02 20:31 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-02 20:30 Paul E. McKenney [this message]
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 01/28] powerpc: Strengthen value-returning-atomics memory barriers Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 02/28] rcu: ->signaled better named ->fqs_state Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 03/28] rcu: Avoid RCU-preempt expedited grace-period botch Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 04/28] rcu: Make synchronize_sched_expedited() better at work sharing Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 05/28] lockdep: Update documentation for lock-class leak detection Paul E. McKenney
2011-11-03  2:57   ` Josh Triplett
2011-11-03 19:42     ` Paul E. McKenney
2011-11-09 14:02       ` Peter Zijlstra
2011-11-10 17:22         ` Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 06/28] rcu: Track idleness independent of idle tasks Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 07/28] trace: Allow ftrace_dump() to be called from modules Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 08/28] rcu: Add failure tracing to rcutorture Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 09/28] rcu: Document failing tick as cause of RCU CPU stall warning Paul E. McKenney
2011-11-03  3:07   ` Josh Triplett
2011-11-03 13:25     ` Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 10/28] rcu: Disable preemption in rcu_is_cpu_idle() Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 11/28] rcu: Omit self-awaken when setting up expedited grace period Paul E. McKenney
2011-11-03  3:16   ` Josh Triplett
2011-11-03 19:43     ` Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 12/28] rcu: Detect illegal rcu dereference in extended quiescent state Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 13/28] rcu: Inform the user about extended quiescent state on PROVE_RCU warning Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 14/28] rcu: Warn when rcu_read_lock() is used in extended quiescent state Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 15/28] rcu: Remove one layer of abstraction from PROVE_RCU checking Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 16/28] rcu: Warn when srcu_read_lock() is used in an extended quiescent state Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 17/28] rcu: Make srcu_read_lock_held() call common lockdep-enabled function Paul E. McKenney
2011-11-03  3:48   ` Josh Triplett
2011-11-03 11:14     ` Frederic Weisbecker
2011-11-03 13:19       ` Steven Rostedt
2011-11-03 13:30         ` Paul E. McKenney
2011-11-03 13:29       ` Paul E. McKenney
2011-11-03 13:59         ` Steven Rostedt
2011-11-03 20:14           ` Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 18/28] nohz: Separate out irq exit and idle loop dyntick logic Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 19/28] nohz: Allow rcu extended quiescent state handling seperately from tick stop Paul E. McKenney
2011-11-03  4:00   ` Josh Triplett
2011-11-03 11:54     ` Frederic Weisbecker
2011-11-03 13:32       ` Paul E. McKenney
2011-11-03 15:31         ` Josh Triplett
2011-11-03 16:06           ` Paul E. McKenney
2011-11-09 14:28             ` Peter Zijlstra
2011-11-09 16:48             ` Frederic Weisbecker
2011-11-10 10:52               ` Peter Zijlstra
2011-11-10 17:22               ` Paul E. McKenney
2011-11-15 18:30                 ` Frederic Weisbecker
2011-11-16 19:41                   ` Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 20/28] x86: Enter rcu extended qs after idle notifier call Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 21/28] x86: Call idle notifier after irq_enter() Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 22/28] rcu: Fix early call to rcu_idle_enter() Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 23/28] powerpc: Tell RCU about idle after hcall tracing Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 24/28] rcu: Introduce bulk reference count Paul E. McKenney
2011-11-03  4:34   ` Josh Triplett
2011-11-03 13:34     ` Paul E. McKenney
2011-11-03 20:19       ` Paul E. McKenney
2011-11-28 12:41   ` Peter Zijlstra
2011-11-28 17:15     ` Paul E. McKenney
2011-11-28 18:17       ` Peter Zijlstra
2011-11-28 18:31         ` Paul E. McKenney
2011-11-28 18:35           ` Peter Zijlstra
2011-11-29 13:33             ` Peter Zijlstra
2011-11-29 17:41               ` Paul E. McKenney
2011-11-28 18:36           ` Peter Zijlstra
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 25/28] rcu: Deconfuse dynticks entry-exit tracing Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 26/28] rcu: Add more information to the wrong-idle-task complaint Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 27/28] rcu: Allow dyntick-idle mode for CPUs with callbacks Paul E. McKenney
2011-11-03  4:47   ` Josh Triplett
2011-11-03 19:53     ` Paul E. McKenney
2011-11-02 20:30 ` [PATCH RFC tip/core/rcu 28/28] rcu: Fix idle-task checks Paul E. McKenney
2011-11-03  4:55   ` Josh Triplett
2011-11-03 21:00     ` Paul E. McKenney
2011-11-03 23:05       ` Josh Triplett
2011-11-09 14:52     ` Peter Zijlstra
2011-11-03  4:55 ` [PATCH RFC tip/core/rcu 0/28] Preview of RCU changes for 3.3 Josh Triplett
2011-11-03 21:45   ` 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=20111102203017.GA3830@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=akpm@linux-foundation.org \
    --cc=darren@dvhart.com \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=eric.dumazet@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@polymtl.ca \
    --cc=mingo@elte.hu \
    --cc=niv@us.ibm.com \
    --cc=patches@linaro.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox