diff options
Diffstat (limited to 'kernel/sched/hmp.c')
| -rw-r--r-- | kernel/sched/hmp.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/sched/hmp.c b/kernel/sched/hmp.c index 5337ac7fcba1..598656b42203 100644 --- a/kernel/sched/hmp.c +++ b/kernel/sched/hmp.c @@ -3217,6 +3217,13 @@ void sched_get_cpus_busy(struct sched_load *busy, update_task_ravg(rq->curr, rq, TASK_UPDATE, sched_ktime_clock(), 0); + /* + * Ensure that we don't report load for 'cpu' again via the + * cpufreq_update_util path in the window that started at + * rq->window_start + */ + rq->load_reported_window = rq->window_start; + account_load_subtractions(rq); load[i] = rq->prev_runnable_sum; nload[i] = rq->nt_prev_runnable_sum; @@ -3649,6 +3656,11 @@ void fixup_busy_time(struct task_struct *p, int new_cpu) migrate_top_tasks(p, src_rq, dest_rq); + if (!same_freq_domain(new_cpu, task_cpu(p))) { + cpufreq_update_util(dest_rq, SCHED_CPUFREQ_INTERCLUSTER_MIG); + cpufreq_update_util(src_rq, SCHED_CPUFREQ_INTERCLUSTER_MIG); + } + if (p == src_rq->ed_task) { src_rq->ed_task = NULL; if (!dest_rq->ed_task) |
