if (new_util > capacity_orig)
continue;
- /*
- * According to the criteria determined by the LBT(Load
- * Balance trigger), the cpu that becomes overutilized
- * when the task is assigned is skipped.
- */
- if (lbt_bring_overutilize(i, p))
- continue;
-
/*
* Best target) lowest utilization among lowest-cap cpu
*
extern int select_perf_cpu(struct task_struct *p);
extern int global_boosting(struct task_struct *p);
extern int global_boosted(void);
-extern bool lbt_bring_overutilize(int cpu, struct task_struct *p);
extern int select_energy_cpu(struct task_struct *p, int prev_cpu, int sd_flag, int sync);
extern int band_play_cpu(struct task_struct *p);
if (new_util > capacity_orig)
continue;
- /*
- * According to the criteria determined by the LBT(Load
- * Balance trigger), the cpu that becomes overutilized when
- * the task is assigned is skipped.
- */
- if (lbt_bring_overutilize(cpu, p))
- continue;
-
/*
* Backup target) shallowest idle cpu among min-cap cpu
*
return overutilized;
}
-bool lbt_bring_overutilize(int cpu, struct task_struct *p)
-{
- struct sched_domain *sd;
- struct lbt_overutil *ou = per_cpu(lbt_overutil, cpu);
- unsigned long util_sum = cpu_util_wake(cpu, p) + task_util(p);
-
- if (!ou)
- return false;
-
- for_each_domain(cpu, sd) {
- if (util_sum > ou[sd->level].capacity)
- return true;
- }
-
- return false;
-}
-
void update_lbt_overutil(int cpu, unsigned long capacity)
{
struct lbt_overutil *ou = per_cpu(lbt_overutil, cpu);