ANDROID: schedutil: add vendor hook for adjusting util to freq calculation
Currently, the frequency is calculated by max freq * 1.25 * util / max cap. Add a vendor hook to adjust the frequency when the calculation overestimate. android_vh_map_util_freq adjust util to freq calculation Bug: 177854431 Signed-off-by: Yun Hsiang <yun.hsiang@mediatek.com> Change-Id: I9aa9079f00af7d3380b19f2fe21b75cddd107d15 (cherry picked from commit 3122e3ec9672036384304fdeaa1b1815f60ba817)
This commit is contained in:
@@ -129,3 +129,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_allow_domain_state);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_allow_domain_state);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_map_util_freq);
|
||||||
|
@@ -222,6 +222,11 @@ DECLARE_RESTRICTED_HOOK(android_rvh_sched_exec,
|
|||||||
TP_PROTO(bool *cond),
|
TP_PROTO(bool *cond),
|
||||||
TP_ARGS(cond), 1);
|
TP_ARGS(cond), 1);
|
||||||
|
|
||||||
|
DECLARE_HOOK(android_vh_map_util_freq,
|
||||||
|
TP_PROTO(unsigned long util, unsigned long freq,
|
||||||
|
unsigned long cap, unsigned long *next_freq),
|
||||||
|
TP_ARGS(util, freq, cap, next_freq));
|
||||||
|
|
||||||
/* macro versions of hooks are no longer required */
|
/* macro versions of hooks are no longer required */
|
||||||
|
|
||||||
#endif /* _TRACE_HOOK_SCHED_H */
|
#endif /* _TRACE_HOOK_SCHED_H */
|
||||||
|
@@ -168,8 +168,14 @@ static unsigned int get_next_freq(struct sugov_policy *sg_policy,
|
|||||||
struct cpufreq_policy *policy = sg_policy->policy;
|
struct cpufreq_policy *policy = sg_policy->policy;
|
||||||
unsigned int freq = arch_scale_freq_invariant() ?
|
unsigned int freq = arch_scale_freq_invariant() ?
|
||||||
policy->cpuinfo.max_freq : policy->cur;
|
policy->cpuinfo.max_freq : policy->cur;
|
||||||
|
unsigned long next_freq = 0;
|
||||||
|
|
||||||
|
trace_android_vh_map_util_freq(util, freq, max, &next_freq);
|
||||||
|
if (next_freq)
|
||||||
|
freq = next_freq;
|
||||||
|
else
|
||||||
|
freq = map_util_freq(util, freq, max);
|
||||||
|
|
||||||
freq = map_util_freq(util, freq, max);
|
|
||||||
trace_sugov_next_freq_tp(policy->cpu, util, max, freq);
|
trace_sugov_next_freq_tp(policy->cpu, util, max, freq);
|
||||||
|
|
||||||
if (freq == sg_policy->cached_raw_freq && !sg_policy->need_freq_update)
|
if (freq == sg_policy->cached_raw_freq && !sg_policy->need_freq_update)
|
||||||
|
Reference in New Issue
Block a user