sched/walt: Update cpu capacity during thermal pressure

Ensure that all thermal pressure gets accounted in capacity_orig
as soon as it is set, rather than during the window rollover period.

Change-Id: Ia22cb87f0d1fcb23f1a932f9b70637861b56ae33
Signed-off-by: Shaleen Agrawal <quic_shalagra@quicinc.com>
This commit is contained in:
Shaleen Agrawal 2022-10-03 14:18:52 -07:00 committed by Sai Harshini Nimmala
parent 5ca19b7ae1
commit c15a0101ac

View File

@ -3808,11 +3808,6 @@ static void walt_irq_work(struct irq_work *irq_work)
level++;
}
if (!is_migration) {
for_each_cpu(cpu, &lock_cpus)
update_cpu_capacity_helper(cpu);
}
__walt_irq_work_locked(is_migration, &lock_cpus);
for_each_cpu(cpu, &lock_cpus)
@ -4440,6 +4435,13 @@ static void android_rvh_build_perf_domains(void *unused, bool *eas_check)
*eas_check = true;
}
static void android_rvh_update_thermal_stats(void *unused, int cpu)
{
if (unlikely(walt_disabled))
return;
update_cpu_capacity_helper(cpu);
}
static DECLARE_COMPLETION(rebuild_domains_completion);
static void rebuild_sd_workfn(struct work_struct *work)
{
@ -4492,6 +4494,7 @@ static void register_walt_hooks(void)
register_trace_android_rvh_build_perf_domains(android_rvh_build_perf_domains, NULL);
register_trace_cpu_frequency_limits(walt_cpu_frequency_limits, NULL);
register_trace_android_rvh_do_sched_yield(walt_do_sched_yield, NULL);
register_trace_android_rvh_update_thermal_stats(android_rvh_update_thermal_stats, NULL);
}
atomic64_t walt_irq_work_lastq_ws;