Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3e9f5c70 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

rcu: Don't spawn rcub kthreads on root rcu_node structure



Now that offlining CPUs no longer moves leaf rcu_node structures'
->blkd_tasks lists to the root, there is no way for the root rcu_node
structure's ->blkd_task list to be nonempty, unless the root node is also
the sole leaf node.  This commit therefore refrains from creating an rcub
kthread for the root rcu_node structure unless it is also the sole leaf.

Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent 96e92021
Loading
Loading
Loading
Loading
+2 −6
Original line number Original line Diff line number Diff line
@@ -1352,13 +1352,9 @@ static void __init rcu_spawn_boost_kthreads(void)
	for_each_possible_cpu(cpu)
	for_each_possible_cpu(cpu)
		per_cpu(rcu_cpu_has_work, cpu) = 0;
		per_cpu(rcu_cpu_has_work, cpu) = 0;
	BUG_ON(smpboot_register_percpu_thread(&rcu_cpu_thread_spec));
	BUG_ON(smpboot_register_percpu_thread(&rcu_cpu_thread_spec));
	rnp = rcu_get_root(rcu_state_p);
	(void)rcu_spawn_one_boost_kthread(rcu_state_p, rnp);
	if (NUM_RCU_NODES > 1) {
	rcu_for_each_leaf_node(rcu_state_p, rnp)
	rcu_for_each_leaf_node(rcu_state_p, rnp)
		(void)rcu_spawn_one_boost_kthread(rcu_state_p, rnp);
		(void)rcu_spawn_one_boost_kthread(rcu_state_p, rnp);
}
}
}


static void rcu_prepare_kthreads(int cpu)
static void rcu_prepare_kthreads(int cpu)
{
{