ANDROID: sched: Add vendor hook for uclamp_eff_value

Vendor may have their own behavior for determing uclamp value.

Bug: 170507972
Signed-off-by: Rick Yiu <rickyiu@google.com>
Change-Id: I33f8adc7240f6a44f16446421536047db2794989
This commit is contained in:
Rick Yiu
2021-01-07 13:55:19 +08:00
parent 9291f4b8d3
commit 4b88cf8524
3 changed files with 14 additions and 0 deletions

View File

@@ -167,3 +167,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_command);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_compl_command);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_wake_up_sync);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_wake_flags);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_uclamp_eff_value);

View File

@@ -268,6 +268,13 @@ DECLARE_HOOK(android_vh_set_wake_flags,
TP_PROTO(int *wake_flags, unsigned int *mode),
TP_ARGS(wake_flags, mode));
enum uclamp_id;
struct uclamp_se;
DECLARE_RESTRICTED_HOOK(android_rvh_uclamp_eff_value,
TP_PROTO(struct task_struct *p, enum uclamp_id clamp_id,
struct uclamp_se *uclamp_default, unsigned long *ret),
TP_ARGS(p, clamp_id, uclamp_default, ret), 1);
/* macro versions of hooks are no longer required */
#endif /* _TRACE_HOOK_SCHED_H */

View File

@@ -1144,6 +1144,12 @@ unsigned long uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
{
struct uclamp_se uc_eff;
unsigned long ret = ULONG_MAX;
trace_android_rvh_uclamp_eff_value(p, clamp_id, &uclamp_default[clamp_id], &ret);
if (ret != ULONG_MAX)
return ret;
/* Task currently refcounted: use back-annotated (effective) value */
if (p->uclamp[clamp_id].active)
return (unsigned long)p->uclamp[clamp_id].value;