Commit 6a2c1d45 authored by Yury Norov's avatar Yury Norov Committed by Paul E. McKenney
Browse files

rcu: Replace cpumask_weight with cpumask_empty where appropriate



In some places, RCU code calls cpumask_weight() to check if any bit of a
given cpumask is set. We can do it more efficiently with cpumask_empty()
because cpumask_empty() stops traversing the cpumask as soon as it finds
first set bit, while cpumask_weight() counts all bits unconditionally.

Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
Acked-by: default avatarFrederic Weisbecker <frederic@kernel.org>
Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent e6339d3b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1169,7 +1169,7 @@ void __init rcu_init_nohz(void)
	struct rcu_data *rdp;

#if defined(CONFIG_NO_HZ_FULL)
	if (tick_nohz_full_running && cpumask_weight(tick_nohz_full_mask))
	if (tick_nohz_full_running && !cpumask_empty(tick_nohz_full_mask))
		need_rcu_nocb_mask = true;
#endif /* #if defined(CONFIG_NO_HZ_FULL) */

@@ -1348,7 +1348,7 @@ static void __init rcu_organize_nocb_kthreads(void)
 */
void rcu_bind_current_to_nocb(void)
{
	if (cpumask_available(rcu_nocb_mask) && cpumask_weight(rcu_nocb_mask))
	if (cpumask_available(rcu_nocb_mask) && !cpumask_empty(rcu_nocb_mask))
		WARN_ON(sched_setaffinity(current->pid, rcu_nocb_mask));
}
EXPORT_SYMBOL_GPL(rcu_bind_current_to_nocb);
+1 −1
Original line number Diff line number Diff line
@@ -1220,7 +1220,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
		    cpu != outgoingcpu)
			cpumask_set_cpu(cpu, cm);
	cpumask_and(cm, cm, housekeeping_cpumask(HK_FLAG_RCU));
	if (cpumask_weight(cm) == 0)
	if (cpumask_empty(cm))
		cpumask_copy(cm, housekeeping_cpumask(HK_FLAG_RCU));
	set_cpus_allowed_ptr(t, cm);
	mutex_unlock(&rnp->boost_kthread_mutex);