On 14-07-20, 15:05, Rafael J. Wysocki wrote: > On Tue, Jul 14, 2020 at 8:37 AM Viresh Kumar <viresh.ku...@linaro.org> wrote: > > static u32 get_load(struct cpufreq_cooling_device *cpufreq_cdev, int cpu, > > int cpu_idx) > > { > > - u32 load; > > - u64 now, now_idle, delta_time, delta_idle; > > - struct time_in_idle *idle_time = &cpufreq_cdev->idle_time[cpu_idx]; > > - > > - now_idle = get_cpu_idle_time(cpu, &now, 0); > > - delta_idle = now_idle - idle_time->time; > > - delta_time = now - idle_time->timestamp; > > + unsigned long util = cpu_util_cfs(cpu_rq(cpu)); > > + unsigned long max = arch_scale_cpu_capacity(cpu); > > > > - if (delta_time <= delta_idle) > > - load = 0; > > - else > > - load = div64_u64(100 * (delta_time - delta_idle), > > delta_time); > > - > > - idle_time->time = now_idle; > > - idle_time->timestamp = now; > > - > > - return load; > > + util = effective_cpu_util(cpu, util, max, ENERGY_UTIL, NULL); > > Hmm. > > It doesn't look like cpufreq_cdev and cpu_idx are needed any more in > this function, so maybe drop them from the arg list?
Right. > And then there > won't be anything specific to CPU cooling in this function, so maybe > move it to sched and export it from there properly? There isn't a lot happening in this routine right now TBH and am not sure if it is really worth it to have a separate routine for this (unless we can get rid of something for all the callers, like avoiding a call to arch_scale_cpu_capacity() and then naming it effective_cpu_load(). > Also it looks like max could be passed to it along with the CPU number > instead of being always taken as arch_scale_cpu_capacity(cpu). I am not sure what you are suggesting here. What will be the value of max if not arch_scale_cpu_capacity() ? -- viresh