| Date | Tue, 21 Jul 2020 13:50:53 +0200 | From | Pavel Machek <> | Subject | Re: [PATCH 4.19 123/133] thermal/drivers/cpufreq_cooling: Fix wrong frequency converted from power |
| |
Hi!
> From: Finley Xiao <finley.xiao@rock-chips.com> > > commit 371a3bc79c11b707d7a1b7a2c938dc3cc042fffb upstream. > > The function cpu_power_to_freq is used to find a frequency and set the > cooling device to consume at most the power to be converted. For example, > if the power to be converted is 80mW, and the em table is as follow. > struct em_cap_state table[] = { > /* KHz mW */ > { 1008000, 36, 0 }, > { 1200000, 49, 0 }, > { 1296000, 59, 0 }, > { 1416000, 72, 0 }, > { 1512000, 86, 0 }, > }; > The target frequency should be 1416000KHz, not 1512000KHz.
It is possible that table is always sorted in the opposite direction in 4.19...
@@ -86,7 +72,7 @@ struct cpufreq_cooling_device { - struct freq_table *freq_table; /* In descending order */
(This was changed by a4e893e802e6a807df2e2f3f660f7399bc7e104e).
> --- a/drivers/thermal/cpu_cooling.c > +++ b/drivers/thermal/cpu_cooling.c > @@ -278,11 +278,11 @@ static u32 cpu_power_to_freq(struct cpuf > int i; > struct freq_table *freq_table = cpufreq_cdev->freq_table; > > - for (i = 1; i <= cpufreq_cdev->max_level; i++) > - if (power > freq_table[i].power) > + for (i = 0; i < cpufreq_cdev->max_level; i++) > + if (power >= freq_table[i].power) > break; > > - return freq_table[i - 1].frequency; > + return freq_table[i].frequency; > }
In that case the patch makes some sense.
Best regards, Pavel -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany [unhandled content-type:application/pgp-signature] |