rcu: Create per-cpu rcuc kthreads only when rcutree.use_softirq=0
authorZqiang <qiang1.zhang@intel.com>
Tue, 28 Dec 2021 16:05:10 +0000 (00:05 +0800)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 2 Feb 2022 01:19:02 +0000 (17:19 -0800)
The per-CPU "rcuc" kthreads are used only by kernels booted with
rcutree.use_softirq=0, but they are nevertheless unconditionally created
by kernels built with CONFIG_RCU_BOOST=y.  This results in "rcuc"
kthreads being created that are never actually used.  This commit
therefore refrains from creating these kthreads unless the kernel
is actually booted with rcutree.use_softirq=0.

Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Zqiang <qiang1.zhang@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree.c

index a4c25a6..4e5e37e 100644 (file)
@@ -2894,7 +2894,7 @@ static int __init rcu_spawn_core_kthreads(void)
 
        for_each_possible_cpu(cpu)
                per_cpu(rcu_data.rcu_cpu_has_work, cpu) = 0;
-       if (!IS_ENABLED(CONFIG_RCU_BOOST) && use_softirq)
+       if (use_softirq)
                return 0;
        WARN_ONCE(smpboot_register_percpu_thread(&rcu_cpu_thread_spec),
                  "%s: Could not start rcuc kthread, OOM is now expected behavior\n", __func__);