sched/topology: Enable EAS on SMP systems also

Currently EAS gets disabled when the system has only symmetric CPUs.
For example, either the system is SMP or all big or little CPUs are
hotplugged out on a b.L system. EAS features are required for better
power and performance on systems with symmetric CPUs. So don't disable
EAS on symmetric systems. This is done by assigning sd_asym_cpucapacity
per-cpu pointer to the only available sched domain.

Change-Id: If08a162f652a6a73884481ebc60e940373dbf9e2
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
This commit is contained in:
Pavankumar Kondeti 2019-07-03 13:54:04 +05:30 • committed by Satya Durga Srinivasu Prabhala
commit bf868a6f04

View file

@ -653,6 +653,22 @@ static void update_top_cache_domain(int cpu)
rcu_assign_pointer(per_cpu(sd_asym_packing, cpu), sd);
sd = lowest_flag_domain(cpu, SD_ASYM_CPUCAPACITY);
/*
* EAS gets disabled when there are no asymmetric capacity
* CPUs in the system. For example, all big CPUs are
* hotplugged out on a b.L system. We want EAS enabled
* all the time to get both power and perf benefits. So,
* lets assign sd_asym_cpucapacity to the only available
* sched domain. This is also important for a single cluster
* systems which wants to use EAS.
*
* Setting sd_asym_cpucapacity() to a sched domain which
* has all symmetric capacity CPUs is technically incorrect but
* works well for us in getting EAS enabled all the time.
*/
if (!sd)
sd = cpu_rq(cpu)->sd;
rcu_assign_pointer(per_cpu(sd_asym_cpucapacity, cpu), sd);
}