From: Jan Beulich Date: Fri, 23 Aug 2013 13:05:39 +0000 (+0200) Subject: credit2: replace cpumask_first() uses X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~6465 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a6aed7607de96904a96b8800b454511cf8334979;p=xen.git credit2: replace cpumask_first() uses ... with cpumask_any() or cpumask_cycle(). In one case this also allows elimination of a cpumask_empty() call, and while doing this I also spotted a redundant use of cpumask_weight(). (When running on big systems, operations on CPU masks aren't cheap enough to use them carelessly.) Signed-off-by: Jan Beulich Acked-by: Keir Fraser Reviewed-by: George Dunlap --- diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c index 825ec986e5..ae0abc2ab9 100644 --- a/xen/common/sched_credit2.c +++ b/xen/common/sched_credit2.c @@ -515,9 +515,10 @@ runq_tickle(const struct scheduler *ops, unsigned int cpu, struct csched_vcpu *n cpumask_andnot(&mask, &rqd->idle, &rqd->tickled); /* If it's not empty, choose one */ - if ( !cpumask_empty(&mask) ) + i = cpumask_cycle(cpu, &mask); + if ( i < nr_cpu_ids ) { - ipid = cpumask_first(&mask); + ipid = i; goto tickle; } @@ -1091,7 +1092,7 @@ choose_cpu(const struct scheduler *ops, struct vcpu *vc) else { d2printk("d%dv%d +\n", svc->vcpu->domain->domain_id, svc->vcpu->vcpu_id); - new_cpu = cpumask_first(&svc->migrate_rqd->active); + new_cpu = cpumask_cycle(vc->processor, &svc->migrate_rqd->active); goto out_up; } } @@ -1138,8 +1139,8 @@ choose_cpu(const struct scheduler *ops, struct vcpu *vc) new_cpu = vc->processor; else { - BUG_ON(cpumask_empty(&prv->rqd[min_rqi].active)); - new_cpu = cpumask_first(&prv->rqd[min_rqi].active); + new_cpu = cpumask_cycle(vc->processor, &prv->rqd[min_rqi].active); + BUG_ON(new_cpu >= nr_cpu_ids); } out_up: @@ -1219,7 +1220,7 @@ void migrate(const struct scheduler *ops, on_runq=1; } __runq_deassign(svc); - svc->vcpu->processor = cpumask_first(&trqd->active); + svc->vcpu->processor = cpumask_any(&trqd->active); __runq_assign(svc, trqd); if ( on_runq ) { @@ -1299,8 +1300,9 @@ retry: load_max = st.orqd->b_avgload; cpus_max = cpumask_weight(&st.lrqd->active); - if ( cpumask_weight(&st.orqd->active) > cpus_max ) - cpus_max = cpumask_weight(&st.orqd->active); + i = cpumask_weight(&st.orqd->active); + if ( i > cpus_max ) + cpus_max = i; /* If we're under 100% capacaty, only shift if load difference * is > 1. otherwise, shift if under 12.5% */