diff options
author | Paul E. McKenney <paulmck@kernel.org> | 2022-05-18 16:06:55 -0700 |
---|---|---|
committer | Paul E. McKenney <paulmck@kernel.org> | 2022-06-20 09:22:29 -0700 |
commit | 7460ade1fc6e3f62d5c0006c972755f0aefd41b2 (patch) | |
tree | e4f7da681c9e996dacf70d252ecaf73c9e9b440a /kernel/irq_work.c | |
parent | 19415004d5221ba59be6ef566fdbb52c44808f7e (diff) |
rcu-tasks: Scan running tasks for RCU Tasks Trace readers
A running task might be within an RCU Tasks Trace read-side critical
section for any length of time, but will not be placed on any of the
per-CPU rcu_tasks_percpu structure's ->rtp_blkd_tasks lists. Therefore
any RCU Tasks Trace grace-period processing that does not scan the full
task list must interact with the running tasks.
This commit therefore causes the rcu_tasks_trace_pregp_step() function
to IPI each CPU in order to place the corresponding task on the holdouts
list and to record whether or not it was in an RCU Tasks Trace read-side
critical section. Yes, it is possible to avoid adding it to that list
if it is not a reader, but that would prevent the system from remembering
that this task was in a quiescent state. Which is why the running tasks
are unconditionally added to the holdout list.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Neeraj Upadhyay <quic_neeraju@quicinc.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: Martin KaFai Lau <kafai@fb.com>
Cc: KP Singh <kpsingh@kernel.org>
Diffstat (limited to 'kernel/irq_work.c')
0 files changed, 0 insertions, 0 deletions