doc: Eliminate cond_resched_rcu_qs() in favor of cond_resched()

Now that cond_resched() also provides RCU quiescent states when
needed, it can be used in place of cond_resched_rcu_qs().  This
commit therefore documents this change.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
Paul E. McKenney 2017-10-24 08:42:41 -07:00
parent 388a4c8806
commit f2b1760aed
3 changed files with 8 additions and 9 deletions

View File

@ -1097,7 +1097,8 @@ will cause the CPU to disregard the values of its counters on
its next exit from idle. its next exit from idle.
Finally, the <tt>rcu_qs_ctr_snap</tt> field is used to detect Finally, the <tt>rcu_qs_ctr_snap</tt> field is used to detect
cases where a given operation has resulted in a quiescent state cases where a given operation has resulted in a quiescent state
for all flavors of RCU, for example, <tt>cond_resched_rcu_qs()</tt>. for all flavors of RCU, for example, <tt>cond_resched()</tt>
when RCU has indicated a need for quiescent states.
<h5>RCU Callback Handling</h5> <h5>RCU Callback Handling</h5>

View File

@ -2797,7 +2797,7 @@ RCU must avoid degrading real-time response for CPU-bound threads, whether
executing in usermode (which is one use case for executing in usermode (which is one use case for
<tt>CONFIG_NO_HZ_FULL=y</tt>) or in the kernel. <tt>CONFIG_NO_HZ_FULL=y</tt>) or in the kernel.
That said, CPU-bound loops in the kernel must execute That said, CPU-bound loops in the kernel must execute
<tt>cond_resched_rcu_qs()</tt> at least once per few tens of milliseconds <tt>cond_resched()</tt> at least once per few tens of milliseconds
in order to avoid receiving an IPI from RCU. in order to avoid receiving an IPI from RCU.
<p> <p>
@ -3128,7 +3128,7 @@ The solution, in the form of
is to have implicit is to have implicit
read-side critical sections that are delimited by voluntary context read-side critical sections that are delimited by voluntary context
switches, that is, calls to <tt>schedule()</tt>, switches, that is, calls to <tt>schedule()</tt>,
<tt>cond_resched_rcu_qs()</tt>, and <tt>cond_resched()</tt>, and
<tt>synchronize_rcu_tasks()</tt>. <tt>synchronize_rcu_tasks()</tt>.
In addition, transitions to and from userspace execution also delimit In addition, transitions to and from userspace execution also delimit
tasks-RCU read-side critical sections. tasks-RCU read-side critical sections.

View File

@ -23,12 +23,10 @@ o A CPU looping with preemption disabled. This condition can
o A CPU looping with bottom halves disabled. This condition can o A CPU looping with bottom halves disabled. This condition can
result in RCU-sched and RCU-bh stalls. result in RCU-sched and RCU-bh stalls.
o For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the o For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the kernel
kernel without invoking schedule(). Note that cond_resched() without invoking schedule(). If the looping in the kernel is
does not necessarily prevent RCU CPU stall warnings. Therefore, really expected and desirable behavior, you might need to add
if the looping in the kernel is really expected and desirable some calls to cond_resched().
behavior, you might need to replace some of the cond_resched()
calls with calls to cond_resched_rcu_qs().
o Booting Linux using a console connection that is too slow to o Booting Linux using a console connection that is too slow to
keep up with the boot-time console-message rate. For example, keep up with the boot-time console-message rate. For example,