diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 2a3e04b9125e..962a4879e745 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -117,6 +117,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_cpu_starting); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_cpu_dying); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_account_irq); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_place_entity); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_build_perf_domains); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_cpu_capacity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_misfit_status); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_cgroup_attach); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 71d425a5e05e..71555cc46748 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -177,6 +177,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_place_entity, TP_PROTO(struct sched_entity *se, u64 vruntime), TP_ARGS(se, vruntime), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_build_perf_domains, + TP_PROTO(bool *eas_check), + TP_ARGS(eas_check), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_update_cpu_capacity, TP_PROTO(int cpu, unsigned long *capacity), TP_ARGS(cpu, capacity), 1); diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index 617be3d428ef..93e3794f9b33 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -4,6 +4,8 @@ */ #include "sched.h" +#include + DEFINE_MUTEX(sched_domains_mutex); /* Protected by sched_domains_mutex: */ @@ -353,12 +355,17 @@ static bool build_perf_domains(const struct cpumask *cpu_map) struct perf_domain *pd = NULL, *tmp; int cpu = cpumask_first(cpu_map); struct root_domain *rd = cpu_rq(cpu)->rd; + bool eas_check = false; if (!sysctl_sched_energy_aware) goto free; - /* EAS is enabled for asymmetric CPU capacity topologies. */ - if (!per_cpu(sd_asym_cpucapacity, cpu)) { + /* + * EAS is enabled for asymmetric CPU capacity topologies. + * Allow vendor to override if desired. + */ + trace_android_rvh_build_perf_domains(&eas_check); + if (!per_cpu(sd_asym_cpucapacity, cpu) && !eas_check) { if (sched_debug()) { pr_info("rd %*pbl: CPUs do not have asymmetric capacities\n", cpumask_pr_args(cpu_map));