aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Guittot <vincent.guittot@linaro.org>2012-10-06 12:31:48 +0200
committerVincent Guittot <vincent.guittot@linaro.org>2013-03-22 13:38:36 +0100
commitd737f110373eb6201ee01eaaf8773bbc85ebaa1a (patch)
treee0b7b1dcaf9ae09e66ef7d81250b6cfdb0edfc63
parent404051fb7718a8914f1a19083c5f10534e419954 (diff)
ARM: sched: clear SD_SHARE_POWERDOMAIN
The ARM platforms take advantage of packing small tasks on few cores. This is true even when the cores of a cluster can't be power gated independantly. So we clear SD_SHARE_POWERDOMAIN at MC and CPU level. Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org> Reviewed-by: Morten Rasmussen <morten.rasmussen@arm.com>
-rw-r--r--arch/arm/kernel/topology.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/arm/kernel/topology.c b/arch/arm/kernel/topology.c
index 79282ebcd93..f89a4a2b6ed 100644
--- a/arch/arm/kernel/topology.c
+++ b/arch/arm/kernel/topology.c
@@ -201,6 +201,15 @@ static inline void update_cpu_power(unsigned int cpuid, unsigned int mpidr) {}
*/
struct cputopo_arm cpu_topology[NR_CPUS];
+int arch_sd_local_flags(int level)
+{
+ /* Powergate at threading level doesn't make sense */
+ if (level & SD_SHARE_CPUPOWER)
+ return 1*SD_SHARE_POWERDOMAIN;
+
+ return 0*SD_SHARE_POWERDOMAIN;
+}
+
const struct cpumask *cpu_coregroup_mask(int cpu)
{
return &cpu_topology[cpu].core_sibling;