diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 19b1a3675981..98894a573693 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -99,6 +99,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 b06a408b4722..0bd080fcb00f 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -112,17 +112,25 @@ DECLARE_RESTRICTED_HOOK(android_rvh_resume_cpus, 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, int *should_iowait_boost), TP_ARGS(p, 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 1fcf27734ffa..1c255fd60b49 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5451,6 +5451,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)); }