Hi! > From: Finley Xiao <finley.xiao@xxxxxxxxxxxxxx> > > 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
Attachment:
signature.asc
Description: PGP signature