diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-04 18:55:08 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-04 18:55:08 -0400 |
commit | 5bda4f638f36ef4c4e3b1397b02affc3db94356e (patch) | |
tree | d1bde148cde9981c31941382b2076084c7f5796c /Documentation | |
parent | a45c657f28f82b056173d1afc2e7ed1f1f68829f (diff) | |
parent | 01c9db827146ce321562a992a5dbc1a49b1a99ce (diff) |
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
...
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/RCU/RTFP.txt | 4 | ||||
-rw-r--r-- | Documentation/RCU/rcuref.txt | 9 | ||||
-rw-r--r-- | Documentation/kernel-parameters.txt | 7 | ||||
-rw-r--r-- | Documentation/memory-barriers.txt | 27 |
4 files changed, 41 insertions, 6 deletions
diff --git a/Documentation/RCU/RTFP.txt b/Documentation/RCU/RTFP.txt index 2f0fcb2112d2..f29bcbc463e7 100644 --- a/Documentation/RCU/RTFP.txt +++ b/Documentation/RCU/RTFP.txt | |||
@@ -2451,8 +2451,8 @@ lot of {Linux} into your technology!!!" | |||
2451 | ,month="February" | 2451 | ,month="February" |
2452 | ,year="2010" | 2452 | ,year="2010" |
2453 | ,note="Available: | 2453 | ,note="Available: |
2454 | \url{http://kerneltrap.com/mailarchive/linux-netdev/2010/2/26/6270589} | 2454 | \url{http://thread.gmane.org/gmane.linux.network/153338} |
2455 | [Viewed March 20, 2011]" | 2455 | [Viewed June 9, 2014]" |
2456 | ,annotation={ | 2456 | ,annotation={ |
2457 | Use a pair of list_head structures to support RCU-protected | 2457 | Use a pair of list_head structures to support RCU-protected |
2458 | resizable hash tables. | 2458 | resizable hash tables. |
diff --git a/Documentation/RCU/rcuref.txt b/Documentation/RCU/rcuref.txt index 141d531aa14b..613033ff2b9b 100644 --- a/Documentation/RCU/rcuref.txt +++ b/Documentation/RCU/rcuref.txt | |||
@@ -1,5 +1,14 @@ | |||
1 | Reference-count design for elements of lists/arrays protected by RCU. | 1 | Reference-count design for elements of lists/arrays protected by RCU. |
2 | 2 | ||
3 | |||
4 | Please note that the percpu-ref feature is likely your first | ||
5 | stop if you need to combine reference counts and RCU. Please see | ||
6 | include/linux/percpu-refcount.h for more information. However, in | ||
7 | those unusual cases where percpu-ref would consume too much memory, | ||
8 | please read on. | ||
9 | |||
10 | ------------------------------------------------------------------------ | ||
11 | |||
3 | Reference counting on elements of lists which are protected by traditional | 12 | Reference counting on elements of lists which are protected by traditional |
4 | reader/writer spinlocks or semaphores are straightforward: | 13 | reader/writer spinlocks or semaphores are straightforward: |
5 | 14 | ||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 45fbea7c329b..90f6139608ff 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -2813,6 +2813,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2813 | quiescent states. Units are jiffies, minimum | 2813 | quiescent states. Units are jiffies, minimum |
2814 | value is one, and maximum value is HZ. | 2814 | value is one, and maximum value is HZ. |
2815 | 2815 | ||
2816 | rcutree.rcu_nocb_leader_stride= [KNL] | ||
2817 | Set the number of NOCB kthread groups, which | ||
2818 | defaults to the square root of the number of | ||
2819 | CPUs. Larger numbers reduces the wakeup overhead | ||
2820 | on the per-CPU grace-period kthreads, but increases | ||
2821 | that same overhead on each group's leader. | ||
2822 | |||
2816 | rcutree.qhimark= [KNL] | 2823 | rcutree.qhimark= [KNL] |
2817 | Set threshold of queued RCU callbacks beyond which | 2824 | Set threshold of queued RCU callbacks beyond which |
2818 | batch limiting is disabled. | 2825 | batch limiting is disabled. |
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt index f1dc4a215593..a4de88fb55f0 100644 --- a/Documentation/memory-barriers.txt +++ b/Documentation/memory-barriers.txt | |||
@@ -757,10 +757,14 @@ SMP BARRIER PAIRING | |||
757 | When dealing with CPU-CPU interactions, certain types of memory barrier should | 757 | When dealing with CPU-CPU interactions, certain types of memory barrier should |
758 | always be paired. A lack of appropriate pairing is almost certainly an error. | 758 | always be paired. A lack of appropriate pairing is almost certainly an error. |
759 | 759 | ||
760 | A write barrier should always be paired with a data dependency barrier or read | 760 | General barriers pair with each other, though they also pair with |
761 | barrier, though a general barrier would also be viable. Similarly a read | 761 | most other types of barriers, albeit without transitivity. An acquire |
762 | barrier or a data dependency barrier should always be paired with at least an | 762 | barrier pairs with a release barrier, but both may also pair with other |
763 | write barrier, though, again, a general barrier is viable: | 763 | barriers, including of course general barriers. A write barrier pairs |
764 | with a data dependency barrier, an acquire barrier, a release barrier, | ||
765 | a read barrier, or a general barrier. Similarly a read barrier or a | ||
766 | data dependency barrier pairs with a write barrier, an acquire barrier, | ||
767 | a release barrier, or a general barrier: | ||
764 | 768 | ||
765 | CPU 1 CPU 2 | 769 | CPU 1 CPU 2 |
766 | =============== =============== | 770 | =============== =============== |
@@ -1893,6 +1897,21 @@ between the STORE to indicate the event and the STORE to set TASK_RUNNING: | |||
1893 | <general barrier> STORE current->state | 1897 | <general barrier> STORE current->state |
1894 | LOAD event_indicated | 1898 | LOAD event_indicated |
1895 | 1899 | ||
1900 | To repeat, this write memory barrier is present if and only if something | ||
1901 | is actually awakened. To see this, consider the following sequence of | ||
1902 | events, where X and Y are both initially zero: | ||
1903 | |||
1904 | CPU 1 CPU 2 | ||
1905 | =============================== =============================== | ||
1906 | X = 1; STORE event_indicated | ||
1907 | smp_mb(); wake_up(); | ||
1908 | Y = 1; wait_event(wq, Y == 1); | ||
1909 | wake_up(); load from Y sees 1, no memory barrier | ||
1910 | load from X might see 0 | ||
1911 | |||
1912 | In contrast, if a wakeup does occur, CPU 2's load from X would be guaranteed | ||
1913 | to see 1. | ||
1914 | |||
1896 | The available waker functions include: | 1915 | The available waker functions include: |
1897 | 1916 | ||
1898 | complete(); | 1917 | complete(); |