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

Commit cc103426 authored by Joonwoo Park's avatar Joonwoo Park Committed by Todd Kjos
Browse files

sched: WALT: fix potential overflow



Task demand and CPU util are in u64.

Change-Id: If7ec1623e723026d3346201122aab0303a6d2ba2
Signed-off-by: default avatarJoonwoo Park <joonwoop@codeaurora.org>
(cherry picked from commit c8b8c92bbc8954ae18cba7eb0c1f3a06a244129c)
[trivial cherry-pick issues]
Signed-off-by: default avatarQuentin Perret <quentin.perret@arm.com>
parent 77ba2b9f
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -1638,10 +1638,9 @@ static inline unsigned long __cpu_util(int cpu, int delta)
	unsigned long capacity = capacity_orig_of(cpu);

#ifdef CONFIG_SCHED_WALT
	if (!walt_disabled && sysctl_sched_use_walt_cpu_util) {
		util = cpu_rq(cpu)->cumulative_runnable_avg << SCHED_CAPACITY_SHIFT;
		util = div_u64(util, walt_ravg_window);
	}
	if (!walt_disabled && sysctl_sched_use_walt_cpu_util) 
		util = div64_u64(cpu_rq(cpu)->cumulative_runnable_avg,
			       walt_ravg_window >> SCHED_CAPACITY_SHIFT);
#endif
	delta += util;
	if (delta < 0)
@@ -1661,10 +1660,9 @@ static inline unsigned long cpu_util_freq(int cpu)
	unsigned long capacity = capacity_orig_of(cpu);

#ifdef CONFIG_SCHED_WALT
	if (!walt_disabled && sysctl_sched_use_walt_cpu_util) {
		util = cpu_rq(cpu)->prev_runnable_sum << SCHED_CAPACITY_SHIFT;
		do_div(util, walt_ravg_window);
	}
	if (!walt_disabled && sysctl_sched_use_walt_cpu_util)
		util = div64_u64(cpu_rq(cpu)->prev_runnable_sum,
				 walt_ravg_window >> SCHED_CAPACITY_SHIFT);
#endif
	return (util >= capacity) ? capacity : util;
}