summaryrefslogtreecommitdiff
path: root/kernel/sched/sched.h
diff options
context:
space:
mode:
authorJoonwoo Park <joonwoop@codeaurora.org>2017-01-20 11:10:15 -0800
committerJoonwoo Park <joonwoop@codeaurora.org>2017-09-01 17:23:31 -0700
commitc8b8c92bbc8954ae18cba7eb0c1f3a06a244129c (patch)
tree9be56fa0981eeb132497b8b788fb0599f0f9f394 /kernel/sched/sched.h
parent2d7da09705d6560c61676376be3ae05a5019600a (diff)
sched: WALT: fix potential overflow
Task demand and CPU util are in u64. Change-Id: If7ec1623e723026d3346201122aab0303a6d2ba2 Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
Diffstat (limited to 'kernel/sched/sched.h')
-rw-r--r--kernel/sched/sched.h14
1 files changed, 6 insertions, 8 deletions
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 73077f535e95..d4613c5be81d 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -1591,10 +1591,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_LOAD_SHIFT;
- do_div(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_LOAD_SHIFT);
#endif
delta += util;
if (delta < 0)
@@ -1614,10 +1613,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_LOAD_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_LOAD_SHIFT);
#endif
return (util >= capacity) ? capacity : util;
}