drm/amdgpu/pm: look up current_level for asics without pm callback
For asics without a callback, use the current level rather than 0xff. This can avoid an unnecesary forced level set on older asics when set by the user. Reviewed-by: Kevin Wang <kevinyang.wang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
3ce51649cd
commit
9fac5799c8
1 changed files with 3 additions and 1 deletions
|
@ -310,7 +310,7 @@ static ssize_t amdgpu_set_power_dpm_force_performance_level(struct device *dev,
|
||||||
struct amdgpu_device *adev = drm_to_adev(ddev);
|
struct amdgpu_device *adev = drm_to_adev(ddev);
|
||||||
const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
|
const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
|
||||||
enum amd_dpm_forced_level level;
|
enum amd_dpm_forced_level level;
|
||||||
enum amd_dpm_forced_level current_level = 0xff;
|
enum amd_dpm_forced_level current_level;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (amdgpu_in_reset(adev))
|
if (amdgpu_in_reset(adev))
|
||||||
|
@ -350,6 +350,8 @@ static ssize_t amdgpu_set_power_dpm_force_performance_level(struct device *dev,
|
||||||
|
|
||||||
if (pp_funcs->get_performance_level)
|
if (pp_funcs->get_performance_level)
|
||||||
current_level = amdgpu_dpm_get_performance_level(adev);
|
current_level = amdgpu_dpm_get_performance_level(adev);
|
||||||
|
else
|
||||||
|
current_level = adev->pm.dpm.forced_level;
|
||||||
|
|
||||||
if (current_level == level) {
|
if (current_level == level) {
|
||||||
pm_runtime_mark_last_busy(ddev->dev);
|
pm_runtime_mark_last_busy(ddev->dev);
|
||||||
|
|
Loading…
Add table
Reference in a new issue