Skip to content

Commit

Permalink
thermal: devfreq_cooling: Fix perf state when calculate dfc res_util
Browse files Browse the repository at this point in the history
commit a26de34 upstream.

The issue occurs when the devfreq cooling device uses the EM power model
and the get_real_power() callback is provided by the driver.

The EM power table is sorted ascending,can't index the table by cooling
device state,so convert cooling state to performance state by
dfc->max_state - dfc->capped_state.

Fixes: 615510f ("thermal: devfreq_cooling: remove old power model and use EM")
Cc: 5.11+ <stable@vger.kernel.org> # 5.11+
Signed-off-by: Ye Zhang <ye.zhang@rock-chips.com>
Reviewed-by: Dhruva Gole <d-gole@ti.com>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Ye Zhang authored and gregkh committed Apr 3, 2024
1 parent 82bc721 commit 696c6c8
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion drivers/thermal/devfreq_cooling.c
Expand Up @@ -201,7 +201,7 @@ static int devfreq_cooling_get_requested_power(struct thermal_cooling_device *cd

res = dfc->power_ops->get_real_power(df, power, freq, voltage);
if (!res) {
state = dfc->capped_state;
state = dfc->max_state - dfc->capped_state;

/* Convert EM power into milli-Watts first */
dfc->res_util = dfc->em_pd->table[state].power;
Expand Down

0 comments on commit 696c6c8

Please sign in to comment.