diff options
| author | Ingo Molnar <mingo@kernel.org> | 2013-10-18 06:46:14 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2013-10-18 06:46:14 -0400 |
| commit | 0e95c69bde1a5bf22acd53b356fe10d7bec6e2be (patch) | |
| tree | 28c27057fc02a87b5e058b8cb17b2186f86fc95c | |
| parent | 04919afb85c8f007b7326c4da5eb61c52e91b9c7 (diff) | |
| parent | 4102adab9189c8ea2f0cdd2f88345fd25d2790f1 (diff) | |
Merge branch 'rcu/next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu
Pull RCU updates from Paul E. McKenney.
Major changes:
" 1. Update RCU documentation. These were posted to LKML at
http://article.gmane.org/gmane.linux.kernel/1566994.
2. Miscellaneous fixes. These were posted to LKML at
http://article.gmane.org/gmane.linux.kernel/1567027.
3. Grace-period-related changes, primarily to aid in debugging,
inspired by a -rt debugging session. These were posted to
LKML at http://article.gmane.org/gmane.linux.kernel/1567076.
4. Idle entry/exit changes, primarily to address issues located
by Tibor Billes. These were posted to LKML at
http://article.gmane.org/gmane.linux.kernel/1567096.
5. Code reorganization moving RCU's source files from kernel
to kernel/rcu. This was posted to LKML at
http://article.gmane.org/gmane.linux.kernel/1577344."
Signed-off-by: Ingo Molnar <mingo@kernel.org>
| -rw-r--r-- | Documentation/DocBook/device-drivers.tmpl | 5 | ||||
| -rw-r--r-- | Documentation/RCU/checklist.txt | 4 | ||||
| -rw-r--r-- | Documentation/RCU/stallwarn.txt | 22 | ||||
| -rw-r--r-- | Documentation/kernel-parameters.txt | 95 | ||||
| -rw-r--r-- | Documentation/kernel-per-CPU-kthreads.txt | 17 | ||||
| -rw-r--r-- | MAINTAINERS | 11 | ||||
| -rw-r--r-- | include/linux/rculist.h | 23 | ||||
| -rw-r--r-- | include/linux/rcupdate.h | 24 | ||||
| -rw-r--r-- | include/linux/rcutiny.h | 17 | ||||
| -rw-r--r-- | include/linux/rcutree.h | 2 | ||||
| -rw-r--r-- | include/trace/events/rcu.h | 80 | ||||
| -rw-r--r-- | kernel/Makefile | 11 | ||||
| -rw-r--r-- | kernel/lockdep.c | 4 | ||||
| -rw-r--r-- | kernel/rcu/Makefile | 6 | ||||
| -rw-r--r-- | kernel/rcu/rcu.h (renamed from kernel/rcu.h) | 7 | ||||
| -rw-r--r-- | kernel/rcu/srcu.c (renamed from kernel/srcu.c) | 0 | ||||
| -rw-r--r-- | kernel/rcu/tiny.c (renamed from kernel/rcutiny.c) | 37 | ||||
| -rw-r--r-- | kernel/rcu/tiny_plugin.h (renamed from kernel/rcutiny_plugin.h) | 0 | ||||
| -rw-r--r-- | kernel/rcu/torture.c (renamed from kernel/rcutorture.c) | 6 | ||||
| -rw-r--r-- | kernel/rcu/tree.c (renamed from kernel/rcutree.c) | 185 | ||||
| -rw-r--r-- | kernel/rcu/tree.h (renamed from kernel/rcutree.h) | 2 | ||||
| -rw-r--r-- | kernel/rcu/tree_plugin.h (renamed from kernel/rcutree_plugin.h) | 84 | ||||
| -rw-r--r-- | kernel/rcu/tree_trace.c (renamed from kernel/rcutree_trace.c) | 2 | ||||
| -rw-r--r-- | kernel/rcu/update.c (renamed from kernel/rcupdate.c) | 10 |
24 files changed, 464 insertions, 190 deletions
diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl index fe397f90a34f..6c9d9d37c83a 100644 --- a/Documentation/DocBook/device-drivers.tmpl +++ b/Documentation/DocBook/device-drivers.tmpl | |||
| @@ -87,7 +87,10 @@ X!Iinclude/linux/kobject.h | |||
| 87 | !Ekernel/printk/printk.c | 87 | !Ekernel/printk/printk.c |
| 88 | !Ekernel/panic.c | 88 | !Ekernel/panic.c |
| 89 | !Ekernel/sys.c | 89 | !Ekernel/sys.c |
| 90 | !Ekernel/rcupdate.c | 90 | !Ekernel/rcu/srcu.c |
| 91 | !Ekernel/rcu/tree.c | ||
| 92 | !Ekernel/rcu/tree_plugin.h | ||
| 93 | !Ekernel/rcu/update.c | ||
| 91 | </sect1> | 94 | </sect1> |
| 92 | 95 | ||
| 93 | <sect1><title>Device Resource Management</title> | 96 | <sect1><title>Device Resource Management</title> |
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt index 7703ec73a9bb..91266193b8f4 100644 --- a/Documentation/RCU/checklist.txt +++ b/Documentation/RCU/checklist.txt | |||
| @@ -202,8 +202,8 @@ over a rather long period of time, but improvements are always welcome! | |||
| 202 | updater uses call_rcu_sched() or synchronize_sched(), then | 202 | updater uses call_rcu_sched() or synchronize_sched(), then |
| 203 | the corresponding readers must disable preemption, possibly | 203 | the corresponding readers must disable preemption, possibly |
| 204 | by calling rcu_read_lock_sched() and rcu_read_unlock_sched(). | 204 | by calling rcu_read_lock_sched() and rcu_read_unlock_sched(). |
| 205 | If the updater uses synchronize_srcu() or call_srcu(), | 205 | If the updater uses synchronize_srcu() or call_srcu(), then |
| 206 | the the corresponding readers must use srcu_read_lock() and | 206 | the corresponding readers must use srcu_read_lock() and |
| 207 | srcu_read_unlock(), and with the same srcu_struct. The rules for | 207 | srcu_read_unlock(), and with the same srcu_struct. The rules for |
| 208 | the expedited primitives are the same as for their non-expedited | 208 | the expedited primitives are the same as for their non-expedited |
| 209 | counterparts. Mixing things up will result in confusion and | 209 | counterparts. Mixing things up will result in confusion and |
diff --git a/Documentation/RCU/stallwarn.txt b/Documentation/RCU/stallwarn.txt index 8e9359de1d28..6f3a0057548e 100644 --- a/Documentation/RCU/stallwarn.txt +++ b/Documentation/RCU/stallwarn.txt | |||
| @@ -12,12 +12,12 @@ CONFIG_RCU_CPU_STALL_TIMEOUT | |||
| 12 | This kernel configuration parameter defines the period of time | 12 | This kernel configuration parameter defines the period of time |
| 13 | that RCU will wait from the beginning of a grace period until it | 13 | that RCU will wait from the beginning of a grace period until it |
| 14 | issues an RCU CPU stall warning. This time period is normally | 14 | issues an RCU CPU stall warning. This time period is normally |
| 15 | sixty seconds. | 15 | 21 seconds. |
| 16 | 16 | ||
| 17 | This configuration parameter may be changed at runtime via the | 17 | This configuration parameter may be changed at runtime via the |
| 18 | /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however | 18 | /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however |
| 19 | this parameter is checked only at the beginning of a cycle. | 19 | this parameter is checked only at the beginning of a cycle. |
| 20 | So if you are 30 seconds into a 70-second stall, setting this | 20 | So if you are 10 seconds into a 40-second stall, setting this |
| 21 | sysfs parameter to (say) five will shorten the timeout for the | 21 | sysfs parameter to (say) five will shorten the timeout for the |
| 22 | -next- stall, or the following warning for the current stall | 22 | -next- stall, or the following warning for the current stall |
| 23 | (assuming the stall lasts long enough). It will not affect the | 23 | (assuming the stall lasts long enough). It will not affect the |
| @@ -32,7 +32,7 @@ CONFIG_RCU_CPU_STALL_VERBOSE | |||
| 32 | also dump the stacks of any tasks that are blocking the current | 32 | also dump the stacks of any tasks that are blocking the current |
| 33 | RCU-preempt grace period. | 33 | RCU-preempt grace period. |
| 34 | 34 | ||
| 35 | RCU_CPU_STALL_INFO | 35 | CONFIG_RCU_CPU_STALL_INFO |
| 36 | 36 | ||
| 37 | This kernel configuration parameter causes the stall warning to | 37 | This kernel configuration parameter causes the stall warning to |
| 38 | print out additional per-CPU diagnostic information, including | 38 | print out additional per-CPU diagnostic information, including |
| @@ -43,7 +43,8 @@ RCU_STALL_DELAY_DELTA | |||
| 43 | Although the lockdep facility is extremely useful, it does add | 43 | Although the lockdep facility is extremely useful, it does add |
| 44 | some overhead. Therefore, under CONFIG_PROVE_RCU, the | 44 | some overhead. Therefore, under CONFIG_PROVE_RCU, the |
| 45 | RCU_STALL_DELAY_DELTA macro allows five extra seconds before | 45 | RCU_STALL_DELAY_DELTA macro allows five extra seconds before |
| 46 | giving an RCU CPU stall warning message. | 46 | giving an RCU CPU stall warning message. (This is a cpp |
| 47 | macro, not a kernel configuration parameter.) | ||
| 47 | 48 | ||
| 48 | RCU_STALL_RAT_DELAY | 49 | RCU_STALL_RAT_DELAY |
| 49 | 50 | ||
| @@ -52,7 +53,8 @@ RCU_STALL_RAT_DELAY | |||
| 52 | However, if the offending CPU does not detect its own stall in | 53 | However, if the offending CPU does not detect its own stall in |
| 53 | the number of jiffies specified by RCU_STALL_RAT_DELAY, then | 54 | the number of jiffies specified by RCU_STALL_RAT_DELAY, then |
| 54 | some other CPU will complain. This delay is normally set to | 55 | some other CPU will complain. This delay is normally set to |
| 55 | two jiffies. | 56 | two jiffies. (This is a cpp macro, not a kernel configuration |
| 57 | parameter.) | ||
| 56 | 58 | ||
| 57 | When a CPU detects that it is stalling, it will print a message similar | 59 | When a CPU detects that it is stalling, it will print a message similar |
| 58 | to the following: | 60 | to the following: |
| @@ -86,7 +88,12 @@ printing, there will be a spurious stall-warning message: | |||
| 86 | 88 | ||
| 87 | INFO: rcu_bh_state detected stalls on CPUs/tasks: { } (detected by 4, 2502 jiffies) | 89 | INFO: rcu_bh_state detected stalls on CPUs/tasks: { } (detected by 4, 2502 jiffies) |
| 88 | 90 | ||
| 89 | This is rare, but does happen from time to time in real life. | 91 | This is rare, but does happen from time to time in real life. It is also |
| 92 | possible for a zero-jiffy stall to be flagged in this case, depending | ||
| 93 | on how the stall warning and the grace-period initialization happen to | ||
| 94 | interact. Please note that it is not possible to entirely eliminate this | ||
| 95 | sort of false positive without resorting to things like stop_machine(), | ||
| 96 | which is overkill for this sort of problem. | ||
| 90 | 97 | ||
| 91 | If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set, | 98 | If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set, |
| 92 | more information is printed with the stall-warning message, for example: | 99 | more information is printed with the stall-warning message, for example: |
| @@ -216,4 +223,5 @@ that portion of the stack which remains the same from trace to trace. | |||
| 216 | If you can reliably trigger the stall, ftrace can be quite helpful. | 223 | If you can reliably trigger the stall, ftrace can be quite helpful. |
| 217 | 224 | ||
| 218 | RCU bugs can often be debugged with the help of CONFIG_RCU_TRACE | 225 | RCU bugs can often be debugged with the help of CONFIG_RCU_TRACE |
| 219 | and with RCU's event tracing. | 226 | and with RCU's event tracing. For information on RCU's event tracing, |
| 227 | see include/trace/events/rcu.h. | ||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index fcbb736d55fe..203f4a9d9efe 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -2599,7 +2599,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 2599 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes | 2599 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes |
| 2600 | See Documentation/blockdev/ramdisk.txt. | 2600 | See Documentation/blockdev/ramdisk.txt. |
| 2601 | 2601 | ||
| 2602 | rcu_nocbs= [KNL,BOOT] | 2602 | rcu_nocbs= [KNL] |
| 2603 | In kernels built with CONFIG_RCU_NOCB_CPU=y, set | 2603 | In kernels built with CONFIG_RCU_NOCB_CPU=y, set |
| 2604 | the specified list of CPUs to be no-callback CPUs. | 2604 | the specified list of CPUs to be no-callback CPUs. |
| 2605 | Invocation of these CPUs' RCU callbacks will | 2605 | Invocation of these CPUs' RCU callbacks will |
| @@ -2612,7 +2612,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 2612 | real-time workloads. It can also improve energy | 2612 | real-time workloads. It can also improve energy |
| 2613 | efficiency for asymmetric multiprocessors. | 2613 | efficiency for asymmetric multiprocessors. |
| 2614 | 2614 | ||
| 2615 | rcu_nocb_poll [KNL,BOOT] | 2615 | rcu_nocb_poll [KNL] |
| 2616 | Rather than requiring that offloaded CPUs | 2616 | Rather than requiring that offloaded CPUs |
| 2617 | (specified by rcu_nocbs= above) explicitly | 2617 | (specified by rcu_nocbs= above) explicitly |
| 2618 | awaken the corresponding "rcuoN" kthreads, | 2618 | awaken the corresponding "rcuoN" kthreads, |
| @@ -2623,126 +2623,145 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 2623 | energy efficiency by requiring that the kthreads | 2623 | energy efficiency by requiring that the kthreads |
| 2624 | periodically wake up to do the polling. | 2624 | periodically wake up to do the polling. |
| 2625 | 2625 | ||
| 2626 | rcutree.blimit= [KNL,BOOT] | 2626 | rcutree.blimit= [KNL] |
| 2627 | Set maximum number of finished RCU callbacks to process | 2627 | Set maximum number of finished RCU callbacks to process |
| 2628 | in one batch. | 2628 | in one batch. |
| 2629 | 2629 | ||
| 2630 | rcutree.fanout_leaf= [KNL,BOOT] | 2630 | rcutree.rcu_fanout_leaf= [KNL] |
| 2631 | Increase the number of CPUs assigned to each | 2631 | Increase the number of CPUs assigned to each |
| 2632 | leaf rcu_node structure. Useful for very large | ||
