Skip to content

Commit 371a3bc

Browse files
finley1226dlezcano
authored andcommitted
thermal/drivers/cpufreq_cooling: Fix wrong frequency converted from power
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. Fixes: 349d39d ("thermal: cpu_cooling: merge frequency and power tables") Cc: <[email protected]> # v4.13+ Signed-off-by: Finley Xiao <[email protected]> Acked-by: Viresh Kumar <[email protected]> Reviewed-by: Amit Kucheria <[email protected]> Signed-off-by: Daniel Lezcano <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 3ecc829 commit 371a3bc

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

drivers/thermal/cpufreq_cooling.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,12 @@ static u32 cpu_power_to_freq(struct cpufreq_cooling_device *cpufreq_cdev,
123123
{
124124
int i;
125125

126-
for (i = cpufreq_cdev->max_level - 1; i >= 0; i--) {
127-
if (power > cpufreq_cdev->em->table[i].power)
126+
for (i = cpufreq_cdev->max_level; i >= 0; i--) {
127+
if (power >= cpufreq_cdev->em->table[i].power)
128128
break;
129129
}
130130

131-
return cpufreq_cdev->em->table[i + 1].frequency;
131+
return cpufreq_cdev->em->table[i].frequency;
132132
}
133133

134134
/**

0 commit comments

Comments
 (0)