Commit 5bda4f63 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull RCU changes from Ingo Molar:
 "The main changes:

   - torture-test updates
   - callback-offloading changes
   - maintainership changes
   - update RCU documentation
   - miscellaneous fixes"

* 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (32 commits)
  rcu: Allow for NULL tick_nohz_full_mask when nohz_full= missing
  rcu: Fix a sparse warning in rcu_report_unblock_qs_rnp()
  rcu: Fix a sparse warning in rcu_initiate_boost()
  rcu: Fix __rcu_reclaim() to use true/false for bool
  rcu: Remove CONFIG_PROVE_RCU_DELAY
  rcu: Use __this_cpu_read() instead of per_cpu_ptr()
  rcu: Don't use NMIs to dump other CPUs' stacks
  rcu: Bind grace-period kthreads to non-NO_HZ_FULL CPUs
  rcu: Simplify priority boosting by putting rt_mutex in rcu_node
  rcu: Check both root and current rcu_node when setting up future grace period
  rcu: Allow post-unlock reference for rt_mutex
  rcu: Loosen __call_rcu()'s rcu_head alignment constraint
  rcu: Eliminate read-modify-write ACCESS_ONCE() calls
  rcu: Remove redundant ACCESS_ONCE() from tick_do_timer_cpu
  rcu: Make rcu node arrays static const char * const
  signal: Explain local_irq_save() call
  rcu: Handle obsolete references to TINY_PREEMPT_RCU
  rcu: Document deadlock-avoidance information for rcu_read_unlock()
  scripts: Teach get_maintainer.pl about the new "R:" tag
  rcu: Update rcu torture maintainership filename patterns
  ...
parents a45c657f 01c9db82
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -2451,8 +2451,8 @@ lot of {Linux} into your technology!!!"
,month="February"
,month="February"
,year="2010"
,year="2010"
,note="Available:
,note="Available:
\url{http://kerneltrap.com/mailarchive/linux-netdev/2010/2/26/6270589}
\url{http://thread.gmane.org/gmane.linux.network/153338}
[Viewed March 20, 2011]"
[Viewed June 9, 2014]"
,annotation={
,annotation={
	Use a pair of list_head structures to support RCU-protected
	Use a pair of list_head structures to support RCU-protected
	resizable hash tables.
	resizable hash tables.
+9 −0
Original line number Original line Diff line number Diff line
Reference-count design for elements of lists/arrays protected by RCU.
Reference-count design for elements of lists/arrays protected by RCU.



Please note that the percpu-ref feature is likely your first
stop if you need to combine reference counts and RCU.  Please see
include/linux/percpu-refcount.h for more information.  However, in
those unusual cases where percpu-ref would consume too much memory,
please read on.

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

Reference counting on elements of lists which are protected by traditional
Reference counting on elements of lists which are protected by traditional
reader/writer spinlocks or semaphores are straightforward:
reader/writer spinlocks or semaphores are straightforward:


+7 −0
Original line number Original line Diff line number Diff line
@@ -2813,6 +2813,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
			quiescent states.  Units are jiffies, minimum
			quiescent states.  Units are jiffies, minimum
			value is one, and maximum value is HZ.
			value is one, and maximum value is HZ.


	rcutree.rcu_nocb_leader_stride= [KNL]
			Set the number of NOCB kthread groups, which
			defaults to the square root of the number of
			CPUs.  Larger numbers reduces the wakeup overhead
			on the per-CPU grace-period kthreads, but increases
			that same overhead on each group's leader.

	rcutree.qhimark= [KNL]
	rcutree.qhimark= [KNL]
			Set threshold of queued RCU callbacks beyond which
			Set threshold of queued RCU callbacks beyond which
			batch limiting is disabled.
			batch limiting is disabled.
+23 −4
Original line number Original line Diff line number Diff line
@@ -757,10 +757,14 @@ SMP BARRIER PAIRING
When dealing with CPU-CPU interactions, certain types of memory barrier should
When dealing with CPU-CPU interactions, certain types of memory barrier should
always be paired.  A lack of appropriate pairing is almost certainly an error.
always be paired.  A lack of appropriate pairing is almost certainly an error.


A write barrier should always be paired with a data dependency barrier or read
General barriers pair with each other, though they also pair with
barrier, though a general barrier would also be viable.  Similarly a read
most other types of barriers, albeit without transitivity.  An acquire
barrier or a data dependency barrier should always be paired with at least an
barrier pairs with a release barrier, but both may also pair with other
write barrier, though, again, a general barrier is viable:
barriers, including of course general barriers.  A write barrier pairs
with a data dependency barrier, an acquire barrier, a release barrier,
a read barrier, or a general barrier.  Similarly a read barrier or a
data dependency barrier pairs with a write barrier, an acquire barrier,
a release barrier, or a general barrier:


	CPU 1		      CPU 2
	CPU 1		      CPU 2
	===============	      ===============
	===============	      ===============
@@ -1893,6 +1897,21 @@ between the STORE to indicate the event and the STORE to set TASK_RUNNING:
	    <general barrier>		  STORE current->state
	    <general barrier>		  STORE current->state
	LOAD event_indicated
	LOAD event_indicated


To repeat, this write memory barrier is present if and only if something
is actually awakened.  To see this, consider the following sequence of
events, where X and Y are both initially zero:

	CPU 1				CPU 2
	===============================	===============================
	X = 1;				STORE event_indicated
	smp_mb();			wake_up();
	Y = 1;				wait_event(wq, Y == 1);
	wake_up();			  load from Y sees 1, no memory barrier
					load from X might see 0

In contrast, if a wakeup does occur, CPU 2's load from X would be guaranteed
to see 1.

The available waker functions include:
The available waker functions include:


	complete();
	complete();
+15 −3
Original line number Original line Diff line number Diff line
@@ -70,6 +70,8 @@ Descriptions of section entries:


	P: Person (obsolete)
	P: Person (obsolete)
	M: Mail patches to: FullName <address@domain>
	M: Mail patches to: FullName <address@domain>
	R: Designated reviewer: FullName <address@domain>
	   These reviewers should be CCed on patches.
	L: Mailing list that is relevant to this area
	L: Mailing list that is relevant to this area
	W: Web-page with status/info
	W: Web-page with status/info
	Q: Patchwork web based patch tracking system site
	Q: Patchwork web based patch tracking system site
@@ -7443,10 +7445,14 @@ L: linux-kernel@vger.kernel.org
S:	Supported
S:	Supported
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
F:	Documentation/RCU/torture.txt
F:	Documentation/RCU/torture.txt
F:	kernel/rcu/torture.c
F:	kernel/rcu/rcutorture.c


RCUTORTURE TEST FRAMEWORK
RCUTORTURE TEST FRAMEWORK
M:	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
M:	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
M:	Josh Triplett <josh@joshtriplett.org>
R:	Steven Rostedt <rostedt@goodmis.org>
R:	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
R:	Lai Jiangshan <laijs@cn.fujitsu.com>
L:	linux-kernel@vger.kernel.org
L:	linux-kernel@vger.kernel.org
S:	Supported
S:	Supported
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
@@ -7469,8 +7475,11 @@ S: Supported
F:	net/rds/
F:	net/rds/


READ-COPY UPDATE (RCU)
READ-COPY UPDATE (RCU)
M:	Dipankar Sarma <dipankar@in.ibm.com>
M:	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
M:	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
M:	Josh Triplett <josh@joshtriplett.org>
R:	Steven Rostedt <rostedt@goodmis.org>
R:	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
R:	Lai Jiangshan <laijs@cn.fujitsu.com>
L:	linux-kernel@vger.kernel.org
L:	linux-kernel@vger.kernel.org
W:	http://www.rdrop.com/users/paulmck/RCU/
W:	http://www.rdrop.com/users/paulmck/RCU/
S:	Supported
S:	Supported
@@ -7480,7 +7489,7 @@ X: Documentation/RCU/torture.txt
F:	include/linux/rcu*
F:	include/linux/rcu*
X:	include/linux/srcu.h
X:	include/linux/srcu.h
F:	kernel/rcu/
F:	kernel/rcu/
X:	kernel/rcu/torture.c
X:	kernel/torture.c


REAL TIME CLOCK (RTC) SUBSYSTEM
REAL TIME CLOCK (RTC) SUBSYSTEM
M:	Alessandro Zummo <a.zummo@towertech.it>
M:	Alessandro Zummo <a.zummo@towertech.it>
@@ -8263,6 +8272,9 @@ F: mm/sl?b*
SLEEPABLE READ-COPY UPDATE (SRCU)
SLEEPABLE READ-COPY UPDATE (SRCU)
M:	Lai Jiangshan <laijs@cn.fujitsu.com>
M:	Lai Jiangshan <laijs@cn.fujitsu.com>
M:	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
M:	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
M:	Josh Triplett <josh@joshtriplett.org>
R:	Steven Rostedt <rostedt@goodmis.org>
R:	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
L:	linux-kernel@vger.kernel.org
L:	linux-kernel@vger.kernel.org
W:	http://www.rdrop.com/users/paulmck/RCU/
W:	http://www.rdrop.com/users/paulmck/RCU/
S:	Supported
S:	Supported
Loading