Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf868a6f authored by Pavankumar Kondeti's avatar Pavankumar Kondeti Committed by Satya Durga Srinivasu Prabhala
Browse files

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: default avatarPavankumar Kondeti <pkondeti@codeaurora.org>
parent 79785b91
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -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);
}