From: Dietmar Eggemann Date: Wed, 20 May 2020 13:42:39 +0000 (+0200) Subject: sched/deadline: Optimize dl_bw_cpus() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=c81b89329933c6c0be809d4c0d2cb57c49153ee3;p=linux.git sched/deadline: Optimize dl_bw_cpus() Return the weight of the root domain (rd) span in case it is a subset of the cpu_active_mask. Continue to compute the number of CPUs over rd span and cpu_active_mask when in hotplug. Signed-off-by: Dietmar Eggemann Signed-off-by: Peter Zijlstra (Intel) Acked-by: Juri Lelli Link: https://lkml.kernel.org/r/20200520134243.19352-2-dietmar.eggemann@arm.com --- diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index f31964ad9c2ef..ec90265e9d8ed 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -54,10 +54,16 @@ static inline struct dl_bw *dl_bw_of(int i) static inline int dl_bw_cpus(int i) { struct root_domain *rd = cpu_rq(i)->rd; - int cpus = 0; + int cpus; RCU_LOCKDEP_WARN(!rcu_read_lock_sched_held(), "sched RCU must be held"); + + if (cpumask_subset(rd->span, cpu_active_mask)) + return cpumask_weight(rd->span); + + cpus = 0; + for_each_cpu_and(i, rd->span, cpu_active_mask) cpus++;