aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2015-03-27 05:04:06 -0400
committerIngo Molnar <mingo@kernel.org>2015-03-27 05:04:06 -0400
commit4bfe186dbe0a058680e4bfb0d673194f0ceaffd4 (patch)
tree5e374857dcd979d50f51c7091505784cb053d078
parent3c435c1e472ba344ee25f795f4807d4457e61f6c (diff)
parent42528795ac1c8d7ba021797ec004904168956d64 (diff)
Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu
Pull RCU updates from Paul E. McKenney: - Documentation updates. - Changes permitting use of call_rcu() and friends very early in boot, for example, before rcu_init() is invoked. - Miscellaneous fixes. - Add in-kernel API to enable and disable expediting of normal RCU grace periods. - Improve RCU's handling of (hotplug-) outgoing CPUs. Note: ARM support is lagging a bit here, and these improved diagnostics might generate (harmless) splats. - NO_HZ_FULL_SYSIDLE fixes. - Tiny RCU updates to make it more tiny. Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--Documentation/atomic_ops.txt45
-rw-r--r--Documentation/kernel-parameters.txt20
-rw-r--r--Documentation/kernel-per-CPU-kthreads.txt34
-rw-r--r--Documentation/memory-barriers.txt42
-rw-r--r--Documentation/timers/NO_HZ.txt10
-rw-r--r--arch/blackfin/mach-common/smp.c6
-rw-r--r--arch/metag/kernel/smp.c5
-rw-r--r--arch/x86/include/asm/cpu.h2
-rw-r--r--arch/x86/include/asm/smp.h2
-rw-r--r--arch/x86/kernel/smpboot.c39
-rw-r--r--arch/x86/xen/smp.c46
-rw-r--r--include/linux/cpu.h14
-rw-r--r--include/linux/lockdep.h7
-rw-r--r--include/linux/rcupdate.h40
-rw-r--r--include/linux/srcu.h2
-rw-r--r--init/Kconfig13
-rw-r--r--kernel/cpu.c4
-rw-r--r--kernel/rcu/rcutorture.c27
-rw-r--r--kernel/rcu/srcu.c19
-rw-r--r--kernel/rcu/tiny.c14
-rw-r--r--kernel/rcu/tree.c437
-rw-r--r--kernel/rcu/tree.h11
-rw-r--r--kernel/rcu/tree_plugin.h267
-rw-r--r--kernel/rcu/tree_trace.c4
-rw-r--r--kernel/rcu/update.c72
-rw-r--r--kernel/sched/idle.c9
-rw-r--r--kernel/smpboot.c156
-rw-r--r--lib/Kconfig.debug35
-rwxr-xr-xtools/testing/selftests/rcutorture/bin/kvm.sh2
-rw-r--r--tools/testing/selftests/rcutorture/configs/rcu/CFcommon1
30 files changed, 948 insertions, 437 deletions
diff --git a/Documentation/atomic_ops.txt b/Documentation/atomic_ops.txt
index 183e41bdcb69..dab6da3382d9 100644
--- a/Documentation/atomic_ops.txt
+++ b/Documentation/atomic_ops.txt
@@ -201,11 +201,11 @@ These routines add 1 and subtract 1, respectively, from the given
201atomic_t and return the new counter value after the operation is 201atomic_t and return the new counter value after the operation is
202performed. 202performed.
203 203
204Unlike the above routines, it is required that explicit memory 204Unlike the above routines, it is required that these primitives
205barriers are performed before and after the operation. It must be 205include explicit memory barriers that are performed before and after
206done such that all memory operations before and after the atomic 206the operation. It must be done such that all memory operations before
207operation calls are strongly ordered with respect to the atomic 207and after the atomic operation calls are strongly ordered with respect
208operation itself. 208to the atomic operation itself.
209 209
210For example, it should behave as if a smp_mb() call existed both 210For example, it should behave as if a smp_mb() call existed both
211before and after the atomic operation. 211before and after the atomic operation.
@@ -233,21 +233,21 @@ These two routines increment and decrement by 1, respectively, the
233given atomic counter. They return a boolean indicating whether the 233given atomic counter. They return a boolean indicating whether the
234resulting counter value was zero or not. 234resulting counter value was zero or not.
235 235
236It requires explicit memory barrier semantics around the operation as 236Again, these primitives provide explicit memory barrier semantics around
237above. 237the atomic operation.
238 238
239 int atomic_sub_and_test(int i, atomic_t *v); 239 int atomic_sub_and_test(int i, atomic_t *v);
240 240
241This is identical to atomic_dec_and_test() except that an explicit 241This is identical to atomic_dec_and_test() except that an explicit
242decrement is given instead of the implicit "1". It requires explicit 242decrement is given instead of the implicit "1". This primitive must
243memory barrier semantics around the operation. 243provide explicit memory barrier semantics around the operation.
244 244
245 int atomic_add_negative(int i, atomic_t *v); 245 int atomic_add_negative(int i, atomic_t *v);
246 246
247The given increment is added to the given atomic counter value. A 247The given increment is added to the given atomic counter value. A boolean
248boolean is return which indicates whether the resulting counter value 248is return which indicates whether the resulting counter value is negative.
249is negative. It requires explicit memory barrier semantics around the 249This primitive must provide explicit memory barrier semantics around
250operation. 250the operation.
251 251
252Then: 252Then:
253 253
@@ -257,7 +257,7 @@ This performs an atomic exchange operation on the atomic variable v, setting
257the given new value. It returns the old value that the atomic variable v had 257the given new value. It returns the old value that the atomic variable v had
258just before the operation. 258just before the operation.
259 259
260atomic_xchg requires explicit memory barriers around the operation. 260atomic_xchg must provide explicit memory barriers around the operation.
261 261
262 int atomic_cmpxchg(atomic_t *v, int old, int new); 262 int atomic_cmpxchg(atomic_t *v, int old, int new);
263 263
@@ -266,7 +266,7 @@ with the given old and new values. Like all atomic_xxx operations,
266atomic_cmpxchg will only satisfy its atomicity semantics as long as all 266atomic_cmpxchg will only satisfy its atomicity semantics as long as all
267other accesses of *v are performed through atomic_xxx operations. 267other accesses of *v are performed through atomic_xxx operations.
268 268
269atomic_cmpxchg requires explicit memory barriers around the operation. 269atomic_cmpxchg must provide explicit memory barriers around the operation.
270 270
271The semantics for atomic_cmpxchg are the same as those defined for 'cas' 271The semantics for atomic_cmpxchg are the same as those defined for 'cas'
272below. 272below.
@@ -279,8 +279,8 @@ If the atomic value v is not equal to u, this function adds a to v, and
279returns non zero. If v is equal to u then it returns zero. This is done as 279returns non zero. If v is equal to u then it returns zero. This is done as
280an atomic operation. 280an atomic operation.
281 281
282atomic_add_unless requires explicit memory barriers around the operation 282atomic_add_unless must provide explicit memory barriers around the
283unless it fails (returns 0). 283operation unless it fails (returns 0).
284 284
285atomic_inc_not_zero, equivalent to atomic_add_unless(v, 1, 0) 285atomic_inc_not_zero, equivalent to atomic_add_unless(v, 1, 0)
286 286
@@ -460,9 +460,9 @@ the return value into an int. There are other places where things
460like this occur as well. 460like this occur as well.
461 461
462These routines, like the atomic_t counter operations returning values, 462These routines, like the atomic_t counter operations returning values,
463require explicit memory barrier semantics around their execution. All 463must provide explicit memory barrier semantics around their execution.
464memory operations before the atomic bit operation call must be made 464All memory operations before the atomic bit operation call must be
465visible globally before the atomic bit operation is made visible. 465made visible globally before the atomic bit operation is made visible.
466Likewise, the atomic bit operation must be visible globally before any 466Likewise, the atomic bit operation must be visible globally before any
467subsequent memory operation is made visible. For example: 467subsequent memory operation is made visible. For example:
468 468
@@ -536,8 +536,9 @@ except that two underscores are prefixed to the interface name.
536These non-atomic variants also do not require any special memory 536These non-atomic variants also do not require any special memory
537barrier semantics. 537barrier semantics.
538 538
539The routines xchg() and cmpxchg() need the same exact memory barriers 539The routines xchg() and cmpxchg() must provide the same exact
540as the atomic and bit operations returning values. 540memory-barrier semantics as the atomic and bit operations returning
541values.
541 542
542Spinlocks and rwlocks have memory barrier expectations as well. 543Spinlocks and rwlocks have memory barrier expectations as well.
543The rule to follow is simple: 544The rule to follow is simple:
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index bfcb1a62a7b4..5368ba701de2 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -2968,6 +2968,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2968 Set maximum number of finished RCU callbacks to 2968 Set maximum number of finished RCU callbacks to
2969 process in one batch. 2969 process in one batch.
2970 2970
2971 rcutree.gp_init_delay= [KNL]
2972 Set the number of jiffies to delay each step of
2973 RCU grace-period initialization. This only has
2974 effect when CONFIG_RCU_TORTURE_TEST_SLOW_INIT is
2975 set.
2976
2971 rcutree.rcu_fanout_leaf= [KNL] 2977 rcutree.rcu_fanout_leaf= [KNL]
2972 Increase the number of CPUs assigned to each 2978 Increase the number of CPUs assigned to each
2973 leaf rcu_node structure. Useful for very large 2979 leaf rcu_node structure. Useful for very large
@@ -2991,11 +2997,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2991 value is one, and maximum value is HZ. 2997 value is one, and maximum value is HZ.
2992 2998
2993 rcutree.kthread_prio= [KNL,BOOT] 2999 rcutree.kthread_prio= [KNL,BOOT]
2994 Set the SCHED_FIFO priority of the RCU 3000 Set the SCHED_FIFO priority of the RCU per-CPU
2995 per-CPU kthreads (rcuc/N). This value is also 3001 kthreads (rcuc/N). This value is also used for
2996 used for the priority of the RCU boost threads 3002 the priority of the RCU boost threads (rcub/N)
2997 (rcub/N). Valid values are 1-99 and the default 3003 and for the RCU grace-period kthreads (rcu_bh,
2998