On Wed, Aug 10, 2016 at 03:11:17AM +0200, Rafael J. Wysocki wrote: > Index: linux-pm/kernel/sched/fair.c > =================================================================== > --- linux-pm.orig/kernel/sched/fair.c > +++ linux-pm/kernel/sched/fair.c > @@ -2876,8 +2876,6 @@ static inline void update_tg_load_avg(st > static inline void cfs_rq_util_change(struct cfs_rq *cfs_rq) > { > if (&this_rq()->cfs == cfs_rq) { > - struct rq *rq = rq_of(cfs_rq); > - > /* > * There are a few boundary cases this might miss but it should > * get called often enough that that should (hopefully) not be > @@ -2894,8 +2892,7 @@ static inline void cfs_rq_util_change(st > * > * See cpu_util(). > */ > - if (cpu_of(rq) == smp_processor_id()) > - cpufreq_update_util(rq_clock(rq), 0); > + cpufreq_update_util(rq_of(cfs_rq), 0); > } ... > +static inline void cpufreq_update_util(struct rq *rq, unsigned int flags) > { > struct update_util_data *data; > > + if (cpu_of(rq) != smp_processor_id()) > + return;
This test is unecessary in the CFS (most common) path due to the check on this_rq in cfs_rq_util_change(). I think instead of bringing the test into cpufreq_update_util it should be left at the call sites for RT and DL, and removed from CFS as part of the first patch. thanks, Steve