Skip to content

Commit 3d811b6

Browse files
committed
Merge branch 'rcu/next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
2 parents 7ed478f + 5df1009 commit 3d811b6

66 files changed

Lines changed: 1088 additions & 463 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ operations is carried out at several levels:
181181
of this wait (or series of waits, as the case may be) is to permit a
182182
concurrent CPU-hotplug operation to complete.
183183
#. In the case of RCU-sched, one of the last acts of an outgoing CPU is
184-
to invoke ``rcu_report_dead()``, which reports a quiescent state for
184+
to invoke ``rcutree_report_cpu_dead()``, which reports a quiescent state for
185185
that CPU. However, this is likely paranoia-induced redundancy.
186186

187187
+-----------------------------------------------------------------------+

Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg

Lines changed: 0 additions & 9 deletions
Loading

Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-fqs.svg

Lines changed: 2 additions & 2 deletions
Loading

Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg

Lines changed: 2 additions & 11 deletions
Loading

Documentation/RCU/Design/Memory-Ordering/TreeRCU-hotplug.svg

Lines changed: 2 additions & 2 deletions
Loading

Documentation/RCU/Design/Requirements/Requirements.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1955,12 +1955,12 @@ if offline CPUs block an RCU grace period for too long.
19551955

19561956
An offline CPU's quiescent state will be reported either:
19571957

1958-
1. As the CPU goes offline using RCU's hotplug notifier (rcu_report_dead()).
1958+
1. As the CPU goes offline using RCU's hotplug notifier (rcutree_report_cpu_dead()).
19591959
2. When grace period initialization (rcu_gp_init()) detects a
19601960
race either with CPU offlining or with a task unblocking on a leaf
19611961
``rcu_node`` structure whose CPUs are all offline.
19621962

1963-
The CPU-online path (rcu_cpu_starting()) should never need to report
1963+
The CPU-online path (rcutree_report_cpu_starting()) should never need to report
19641964
a quiescent state for an offline CPU. However, as a debugging measure,
19651965
it does emit a warning if a quiescent state was not already reported
19661966
for that CPU.

Documentation/RCU/checklist.rst

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -241,15 +241,22 @@ over a rather long period of time, but improvements are always welcome!
241241
srcu_struct. The rules for the expedited RCU grace-period-wait
242242
primitives are the same as for their non-expedited counterparts.
243243

244-
If the updater uses call_rcu_tasks() or synchronize_rcu_tasks(),
245-
then the readers must refrain from executing voluntary
246-
context switches, that is, from blocking. If the updater uses
247-
call_rcu_tasks_trace() or synchronize_rcu_tasks_trace(), then
248-
the corresponding readers must use rcu_read_lock_trace() and
249-
rcu_read_unlock_trace(). If an updater uses call_rcu_tasks_rude()
250-
or synchronize_rcu_tasks_rude(), then the corresponding readers
251-
must use anything that disables preemption, for example,
252-
preempt_disable() and preempt_enable().
244+
Similarly, it is necssary to correctly use the RCU Tasks flavors:
245+
246+
a. If the updater uses synchronize_rcu_tasks() or
247+
call_rcu_tasks(), then the readers must refrain from
248+
executing voluntary context switches, that is, from
249+
blocking.
250+
251+
b. If the updater uses call_rcu_tasks_trace()
252+
or synchronize_rcu_tasks_trace(), then the
253+
corresponding readers must use rcu_read_lock_trace()
254+
and rcu_read_unlock_trace().
255+
256+
c. If an updater uses call_rcu_tasks_rude() or
257+
synchronize_rcu_tasks_rude(), then the corresponding
258+
readers must use anything that disables preemption,
259+
for example, preempt_disable() and preempt_enable().
253260

254261
Mixing things up will result in confusion and broken kernels, and
255262
has even resulted in an exploitable security issue. Therefore,

Documentation/RCU/listRCU.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@ One of the most common uses of RCU is protecting read-mostly linked lists
88
that all of the required memory ordering is provided by the list macros.
99
This document describes several list-based RCU use cases.
1010

11+
When iterating a list while holding the rcu_read_lock(), writers may
12+
modify the list. The reader is guaranteed to see all of the elements
13+
which were added to the list before they acquired the rcu_read_lock()
14+
and are still on the list when they drop the rcu_read_unlock().
15+
Elements which are added to, or removed from the list may or may not
16+
be seen. If the writer calls list_replace_rcu(), the reader may see
17+
either the old element or the new element; they will not see both,
18+
nor will they see neither.
19+
1120

1221
Example 1: Read-mostly list: Deferred Destruction
1322
-------------------------------------------------

Documentation/RCU/torture.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ argument.
185185
Not all changes require that all scenarios be run. For example, a change
186186
to Tree SRCU might run only the SRCU-N and SRCU-P scenarios using the
187187
--configs argument to kvm.sh as follows: "--configs 'SRCU-N SRCU-P'".
188-
Large systems can run multiple copies of of the full set of scenarios,
188+
Large systems can run multiple copies of the full set of scenarios,
189189
for example, a system with 448 hardware threads can run five instances
190190
of the full set concurrently. To make this happen::
191191

Documentation/RCU/whatisRCU.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ experiment with should focus on Section 2. People who prefer to start
5959
with example uses should focus on Sections 3 and 4. People who need to
6060
understand the RCU implementation should focus on Section 5, then dive
6161
into the kernel source code. People who reason best by analogy should
62-
focus on Section 6. Section 7 serves as an index to the docbook API
63-
documentation, and Section 8 is the traditional answer key.
62+
focus on Section 6 and 7. Section 8 serves as an index to the docbook
63+
API documentation, and Section 9 is the traditional answer key.
6464

6565
So, start with the section that makes the most sense to you and your
6666
preferred method of learning. If you need to know everything about

0 commit comments

Comments
 (0)