hmp: sched: Clean up hmp_up_threshold checks into a utility fn
authorChris Redpath <chris.redpath@arm.com>
Mon, 24 Mar 2014 13:47:27 +0000 (13:47 +0000)
committerRobin Murphy <robin.murphy@arm.com>
Wed, 20 Aug 2014 14:04:06 +0000 (15:04 +0100)
In anticipation of modifying the up_threshold handling, make all
instances use the same utility fn to check if a task is eligible
for up-migration. This also removes the previous difference in
threshold comparison where up-migration used '!<threshold' and
idle pull used '>threshold' to decide up-migration eligibility.
Make them both use '!<threshold' instead for consistency, although
this is unlikely to change any results.

Signed-off-by: Chris Redpath <chris.redpath@arm.com>
Signed-off-by: Jon Medhurst <tixy@linaro.org>
kernel/sched/fair.c

index 348962a..8b77102 100644 (file)
@@ -8212,6 +8212,14 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) { }
 #endif
 
 #ifdef CONFIG_SCHED_HMP
+static unsigned int hmp_task_eligible_for_up_migration(struct sched_entity *se)
+{
+       /* below hmp_up_threshold, never eligible */
+       if (se->avg.load_avg_ratio < hmp_up_threshold)
+               return 0;
+       return 1;
+}
+
 /* Check if task should migrate to a faster cpu */
 static unsigned int hmp_up_migration(int cpu, int *target_cpu, struct sched_entity *se)
 {
@@ -8227,7 +8235,7 @@ static unsigned int hmp_up_migration(int cpu, int *target_cpu, struct sched_enti
        if (p->prio >= hmp_up_prio)
                return 0;
 #endif
-       if (se->avg.load_avg_ratio < hmp_up_threshold)
+       if (!hmp_task_eligible_for_up_migration(se))
                return 0;
 
        /* Let the task load settle before doing another up migration */
@@ -8714,7 +8722,10 @@ static unsigned int hmp_idle_pull(int this_cpu)
                }
                orig = curr;
                curr = hmp_get_heaviest_task(curr, 1);
-               if (curr->avg.load_avg_ratio > hmp_up_threshold &&
+               /* check if heaviest eligible task on this
+                * CPU is heavier than previous task
+                */
+               if (hmp_task_eligible_for_up_migration(curr) &&
                        curr->avg.load_avg_ratio > ratio) {
                        p = task_of(curr);
                        target = rq;