rcu-tasks: Stop RCU Tasks Trace from scanning idle tasks
Now that RCU scans both running tasks and tasks that have blocked within their current RCU Tasks Trace read-side critical section, there is no need for it to scan the idle tasks. After all, an idle loop should not be remain within an RCU Tasks Trace read-side critical section across exit from idle, and from a BPF viewpoint, functions invoked from the idle loop should not sleep. So only running idle tasks can be within RCU Tasks Trace read-side critical sections. This commit therefore removes the scan of the idle tasks from the rcu_tasks_trace_postscan() function. 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>
This commit is contained in:
Родитель
dc7d54b451
Коммит
955a019208
|
@ -1533,16 +1533,10 @@ static void rcu_tasks_trace_pregp_step(struct list_head *hop)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do intermediate processing between task and holdout scans and
|
* Do intermediate processing between task and holdout scans.
|
||||||
* pick up the idle tasks.
|
|
||||||
*/
|
*/
|
||||||
static void rcu_tasks_trace_postscan(struct list_head *hop)
|
static void rcu_tasks_trace_postscan(struct list_head *hop)
|
||||||
{
|
{
|
||||||
int cpu;
|
|
||||||
|
|
||||||
for_each_online_cpu(cpu)
|
|
||||||
rcu_tasks_trace_pertask(idle_task(cpu), hop);
|
|
||||||
|
|
||||||
// Re-enable CPU hotplug now that the tasklist scan has completed.
|
// Re-enable CPU hotplug now that the tasklist scan has completed.
|
||||||
cpus_read_unlock();
|
cpus_read_unlock();
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче