On Sun, Mar 13, 2016 at 10:22:06PM -0700, Michael Turquette wrote: > @@ -2840,6 +2853,8 @@ static inline void update_load_avg(struct sched_entity > *se, int update_tg) > > if (cpu == smp_processor_id() && &rq->cfs == cfs_rq) { > unsigned long max = rq->cpu_capacity_orig; > + unsigned long cap = cfs_rq->avg.util_avg * > + cfs_capacity_margin / max; > > /* > * There are a few boundary cases this might miss but it should > @@ -2852,8 +2867,7 @@ static inline void update_load_avg(struct sched_entity > *se, int update_tg) > * thread is a different class (!fair), nor will the utilization > * number include things like RT tasks. > */ > - cpufreq_update_util(rq_clock(rq), > - min(cfs_rq->avg.util_avg, max), max); > + cpufreq_update_util(rq_clock(rq), min(cap, max), max); > } > }
I really don't see why that is here, and not inside whatever uses cpufreq_update_util().