diff options
author | Chris Redpath <chris.redpath@arm.com> | 2014-05-09 14:36:51 +0100 |
---|---|---|
committer | Jon Medhurst <tixy@linaro.org> | 2014-05-09 17:22:39 +0100 |
commit | 84efcd0cc59ece3d37feea85e459debc4efe2b5c (patch) | |
tree | 3bdfa0c3f840d39e2336b67cd387d58634c3f883 | |
parent | 1ade57e54ea2257ccf753dbd54144769439c3c70 (diff) |
hmp: sched: Clean up hmp_up_threshold checks into a utility fn
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>
-rw-r--r-- | kernel/sched/fair.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index ed976a4aa82..b948a032c05 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6721,6 +6721,14 @@ static void nohz_idle_balance(int this_cpu, 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) { @@ -6736,7 +6744,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 */ @@ -7224,7 +7232,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; |