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>
This commit is contained in:
Chris Redpath
2014-05-09 14:36:51 +01:00
committed by Jon Medhurst
parent 1ade57e54e
commit 84efcd0cc5

View File

@@ -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;