On 19-11-18, 14:18, Quentin Perret wrote: > @@ -223,20 +222,33 @@ static unsigned long sugov_get_util(struct sugov_cpu > *sg_cpu)
> - if ((util + cpu_util_dl(rq)) >= max) > - return max; > + if (type == FREQUENCY_UTIL) { > + /* > + * For frequency selection we do not make cpu_util_dl() a > + * permanent part of this sum because we want to use > + * cpu_bw_dl() later on, but we need to check if the > + * CFS+RT+DL sum is saturated (ie. no idle time) such > + * that we select f_max when there is no idle time. > + * > + * NOTE: numerical errors or stop class might cause us > + * to not quite hit saturation when we should -- > + * something for later. > + */ > + > + if ((util + cpu_util_dl(rq)) >= max) > + return max; > + } else { > + /* > + * OTOH, for energy computation we need the estimated > + * running time, so include util_dl and ignore dl_bw. > + */ > + util += cpu_util_dl(rq); > + if (util >= max) > + return max; > + } Maybe write above as: dl_util = cpu_util_dl(rq); if ((util + dl_util) >= max) return max; if (type != FREQUENCY_UTIL) util += dl_util; as both the if/else parts were doing almost the same thing. -- viresh