diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 73b487115268..bcb27fe175d7 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -105,6 +105,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_energy_efficient_cpu); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_sugov_sched_attr); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_sugov_update); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_overutilized); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_setaffinity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_cpus_allowed); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_skip_swapcache_flags); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 5dfecc295340..77b97216fa9d 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -120,17 +120,25 @@ DECLARE_RESTRICTED_HOOK(android_rvh_migrate_queued_task, DECLARE_RESTRICTED_HOOK(android_rvh_find_energy_efficient_cpu, TP_PROTO(struct task_struct *p, int prev_cpu, int sync, int *new_cpu), TP_ARGS(p, prev_cpu, sync, new_cpu), 1); + struct sched_attr; DECLARE_HOOK(android_vh_set_sugov_sched_attr, TP_PROTO(struct sched_attr *attr), TP_ARGS(attr)); + DECLARE_RESTRICTED_HOOK(android_rvh_set_iowait, TP_PROTO(struct task_struct *p, struct rq *rq, int *should_iowait_boost), TP_ARGS(p, rq, should_iowait_boost), 1); + struct sugov_policy; DECLARE_RESTRICTED_HOOK(android_rvh_set_sugov_update, TP_PROTO(struct sugov_policy *sg_policy, unsigned int next_freq, bool *should_update), TP_ARGS(sg_policy, next_freq, should_update), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_cpu_overutilized, + TP_PROTO(int cpu, int *overutilized), + TP_ARGS(cpu, overutilized), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_sched_setaffinity, TP_PROTO(struct task_struct *p, const struct cpumask *in_mask, int *retval), TP_ARGS(p, in_mask, retval), 1); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 1673b6f102d4..6fbee038ae85 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5588,6 +5588,12 @@ static inline unsigned long cpu_util(int cpu); static inline bool cpu_overutilized(int cpu) { + int overutilized = -1; + + trace_android_rvh_cpu_overutilized(cpu, &overutilized); + if (overutilized != -1) + return overutilized; + return !fits_capacity(cpu_util(cpu), capacity_of(cpu)); }