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

Commit 779de6ce authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

cpu: Wait for RCU grace periods concurrently



In kernels built with CONFIG_PREEMPT, _cpu_down() waits for RCU and
RCU-sched grace periods back-to-back, incurring quite a bit more latency
than required.  This commit therefore uses the new synchronize_rcu_mult()
to allow waiting for both grace periods concurrently.

Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent ec90a194
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -380,13 +380,13 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
	 * will observe it.
	 *
	 * For CONFIG_PREEMPT we have preemptible RCU and its sync_rcu() might
	 * not imply sync_sched(), so explicitly call both.
	 * not imply sync_sched(), so wait for both.
	 *
	 * Do sync before park smpboot threads to take care the rcu boost case.
	 */
#ifdef CONFIG_PREEMPT
	synchronize_sched();
#endif
	if (IS_ENABLED(CONFIG_PREEMPT))
		synchronize_rcu_mult(call_rcu, call_rcu_sched);
	else
		synchronize_rcu();

	smpboot_park_threads(cpu);