Messages in this thread | | | Subject | Re: [PATCH v3 4/5] cpufreq: qcom-cpufreq-hw: Use new thermal pressure update function | From | Thara Gopinath <> | Date | Fri, 5 Nov 2021 15:12:00 -0400 |
| |
Hi Lukasz,
On 11/3/21 12:10 PM, Lukasz Luba wrote: > Thermal pressure provides a new API, which allows to use CPU frequency > as an argument. That removes the need of local conversion to capacity. > Use this new API and remove old local conversion code. > > Signed-off-by: Lukasz Luba <lukasz.luba@arm.com> > --- > drivers/cpufreq/qcom-cpufreq-hw.c | 15 +++++---------- > 1 file changed, 5 insertions(+), 10 deletions(-) > > diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c > index 0138b2ec406d..425f351450ad 100644 > --- a/drivers/cpufreq/qcom-cpufreq-hw.c > +++ b/drivers/cpufreq/qcom-cpufreq-hw.c > @@ -275,10 +275,10 @@ static unsigned int qcom_lmh_get_throttle_freq(struct qcom_cpufreq_data *data) > > static void qcom_lmh_dcvs_notify(struct qcom_cpufreq_data *data) > { > - unsigned long max_capacity, capacity, freq_hz, throttled_freq; > struct cpufreq_policy *policy = data->policy; > int cpu = cpumask_first(policy->cpus); > struct device *dev = get_cpu_device(cpu); > + unsigned long freq_hz, throttled_freq; > struct dev_pm_opp *opp; > unsigned int freq; > > @@ -295,17 +295,12 @@ static void qcom_lmh_dcvs_notify(struct qcom_cpufreq_data *data) > > throttled_freq = freq_hz / HZ_PER_KHZ; > > - /* Update thermal pressure */ > - > - max_capacity = arch_scale_cpu_capacity(cpu); > - capacity = mult_frac(max_capacity, throttled_freq, policy->cpuinfo.max_freq); > - > /* Don't pass boost capacity to scheduler */ > - if (capacity > max_capacity) > - capacity = max_capacity;
So, I think this should go into the common topology_update_thermal_pressure in lieu of
+ if (WARN_ON(max_freq < capped_freq)) + return;
This will fix the issue Steev Klimaszewski has been reporting https://lore.kernel.org/linux-arm-kernel/3cba148a-7077-7b6b-f131-dc65045aa348@arm.com/
-- Warm Regards Thara (She/Her/Hers)
> + if (throttled_freq > policy->cpuinfo.max_freq) > + throttled_freq = policy->cpuinfo.max_freq; > > - arch_set_thermal_pressure(policy->related_cpus, > - max_capacity - capacity); > + /* Update thermal pressure */ > + arch_update_thermal_pressure(policy->related_cpus, throttled_freq); > > /* > * In the unlikely case policy is unregistered do not enable >
| |