HMP: Check the system has little cpus before forcing rt tasks onto them
authorJon Medhurst (Tixy) <tixy@linaro.org>
Fri, 2 Aug 2013 17:45:33 +0000 (18:45 +0100)
committerMark Brown <broonie@linaro.org>
Sun, 4 Aug 2013 12:15:46 +0000 (13:15 +0100)
It is sometimes desirable to run a kernel with HMP scheduling enabled
on a system which is not big.LITTLE, e.g. when building a multi-platform
kernel, or when testing a big.LITTLE system with one cluster disabled.

We should therefore allow for the situation where is no little domain.

Signed-off-by: Jon Medhurst <tixy@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
kernel/sched/core.c

index 50d9e9849ce75ae89ae9fb46fa7a1f4674035477..fb9b7b74a836d8497dccda7c5701ce064dc98ac0 100644 (file)
@@ -3841,8 +3841,9 @@ __setscheduler(struct rq *rq, struct task_struct *p, int policy, int prio)
        if (rt_prio(p->prio)) {
                p->sched_class = &rt_sched_class;
 #ifdef CONFIG_SCHED_HMP
-               if (cpumask_equal(&p->cpus_allowed, cpu_all_mask))
-                       do_set_cpus_allowed(p, &hmp_slow_cpu_mask);
+               if (!cpumask_empty(&hmp_slow_cpu_mask))
+                       if (cpumask_equal(&p->cpus_allowed, cpu_all_mask))
+                               do_set_cpus_allowed(p, &hmp_slow_cpu_mask);
 #endif
        }
        else