Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 750f9706 authored by Saravana Kannan's avatar Saravana Kannan
Browse files

cpufreq: schedutil: Use >= when aggregating CPU loads in a policy



When the normal utilization value for all the CPUs in a policy is 0, the
current aggregation scheme of using a > check will result in the aggregated
utilization being 0 and the max value being 1.

This is not a problem for upstream code. However, since we also use other
statistics provided by WALT to update the aggregated utilization value
across all CPUs in a policy, we can end up with a non-zero aggregated
utilization while the max remains as 1.

Then when get_next_freq() tries to compute the frequency using:
max-frequency * 1.25 * (util / max)
it ends up with a frequency that is greater than max-frequency. So the
policy frequency jumps to max-frequency.

By changing the aggregation check to >=, we make sure that the max value is
updated with something reported by the scheduler for a CPU in that policy.
With the correct max, we can continue using the WALT specific statistics
without spurious jumps to max-frequency.

Change-Id: I14996cd796191192ea112f949dc42450782105f7
Signed-off-by: default avatarSaravana Kannan <skannan@codeaurora.org>
parent 95e1d765
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -375,7 +375,7 @@ static unsigned int sugov_next_freq_shared(struct sugov_cpu *sg_cpu)

		j_util = j_sg_cpu->util;
		j_max = j_sg_cpu->max;
		if (j_util * max > j_max * util) {
		if (j_util * max >= j_max * util) {
			util = j_util;
			max = j_max;
		}