diff options
| author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2018-05-14 16:52:27 -0400 |
|---|---|---|
| committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2018-07-12 18:39:15 -0400 |
| commit | 6f56f714db067056c80f5d71510118f82872e34c (patch) | |
| tree | 831ac61392c65e088ed1ae8856b5f42de30fcd8d /kernel | |
| parent | a7538352da722fae5cc95ae6656ea2013f5b8b21 (diff) | |
rcu: Improve RCU-tasks naming and comments
The naming and comments associated with some RCU-tasks code make
the faulty assumption that context switches due to cond_resched()
are voluntary. As several people pointed out, this is not the case.
This commit therefore updates function names and comments to better
reflect current reality.
Reported-by: Byungchul Park <byungchul.park@lge.com>
Reported-by: Joel Fernandes <joel@joelfernandes.org>
Reported-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/rcu/tree.c | 2 | ||||
| -rw-r--r-- | kernel/rcu/update.c | 27 |
2 files changed, 15 insertions, 14 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 6f2922168216..ccc061acf887 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
| @@ -457,7 +457,7 @@ void rcu_note_context_switch(bool preempt) | |||
| 457 | rcu_momentary_dyntick_idle(); | 457 | rcu_momentary_dyntick_idle(); |
| 458 | this_cpu_inc(rcu_dynticks.rcu_qs_ctr); | 458 | this_cpu_inc(rcu_dynticks.rcu_qs_ctr); |
| 459 | if (!preempt) | 459 | if (!preempt) |
| 460 | rcu_note_voluntary_context_switch_lite(current); | 460 | rcu_tasks_qs(current); |
| 461 | out: | 461 | out: |
| 462 | trace_rcu_utilization(TPS("End context switch")); | 462 | trace_rcu_utilization(TPS("End context switch")); |
| 463 | barrier(); /* Avoid RCU read-side critical sections leaking up. */ | 463 | barrier(); /* Avoid RCU read-side critical sections leaking up. */ |
diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c index 4c230a60ece4..5783bdf86e5a 100644 --- a/kernel/rcu/update.c +++ b/kernel/rcu/update.c | |||
| @@ -507,14 +507,15 @@ early_initcall(check_cpu_stall_init); | |||
| 507 | #ifdef CONFIG_TASKS_RCU | 507 | #ifdef CONFIG_TASKS_RCU |
| 508 | 508 | ||
| 509 | /* | 509 | /* |
| 510 | * Simple variant of RCU whose quiescent states are voluntary context switch, | 510 | * Simple variant of RCU whose quiescent states are voluntary context |
| 511 | * user-space execution, and idle. As such, grace periods can take one good | 511 | * switch, cond_resched_rcu_qs(), user-space execution, and idle. |
| 512 | * long time. There are no read-side primitives similar to rcu_read_lock() | 512 | * As such, grace periods can take one good long time. There are no |
| 513 | * and rcu_read_unlock() because this implementation is intended to get | 513 | * read-side primitives similar to rcu_read_lock() and rcu_read_unlock() |
| 514 | * the system into a safe state for some of the manipulations involved in | 514 | * because this implementation is intended to get the system into a safe |
| 515 | * tracing and the like. Finally, this implementation does not support | 515 | * state for some of the manipulations involved in tracing and the like. |
| 516 | * high call_rcu_tasks() rates from multiple CPUs. If this is required, | 516 | * Finally, this implementation does not support high call_rcu_tasks() |
| 517 | * per-CPU callback lists will be needed. | 517 | * rates from multiple CPUs. If this is required, per-CPU callback lists |
| 518 | * will be needed. | ||
| 518 | */ | 519 | */ |
| 519 | 520 | ||
| 520 | /* Global list of callbacks and associated lock. */ | 521 | /* Global list of callbacks and associated lock. */ |
| @@ -542,11 +543,11 @@ static struct task_struct *rcu_tasks_kthread_ptr; | |||
| 542 | * period elapses, in other words after all currently executing RCU | 543 | * period elapses, in other words after all currently executing RCU |
| 543 | * read-side critical sections have completed. call_rcu_tasks() assumes | 544 | * read-side critical sections have completed. call_rcu_tasks() assumes |
| 544 | * that the read-side critical sections end at a voluntary context | 545 | * that the read-side critical sections end at a voluntary context |
| 545 | * switch (not a preemption!), entry into idle, or transition to usermode | 546 | * switch (not a preemption!), cond_resched_rcu_qs(), entry into idle, |
| 546 | * execution. As such, there are no read-side primitives analogous to | 547 | * or transition to usermode execution. As such, there are no read-side |
| 547 | * rcu_read_lock() and rcu_read_unlock() because this primitive is intended | 548 | * primitives analogous to rcu_read_lock() and rcu_read_unlock() because |
| 548 | * to determine that all tasks have passed through a safe state, not so | 549 | * this primitive is intended to determine that all tasks have passed |
| 549 | * much for data-strcuture synchronization. | 550 | * through a safe state, not so much for data-strcuture synchronization. |
| 550 | * | 551 | * |
| 551 | * See the description of call_rcu() for more detailed information on | 552 | * See the description of call_rcu() for more detailed information on |
| 552 | * memory ordering guarantees. | 553 | * memory ordering guarantees. |
