Commit e0ec4506 authored by Felix Kuehling's avatar Felix Kuehling Committed by Alex Deucher

drm/amd/powerplay: Fix Vega10 power profile switching

Clock index 0 is a valid index that is needed to restore the default
graphics power profile. Use ~0 to indicate a failure to find a clock
index. This fixes the clocks getting stuck in the compute power
profile after running a compute application on Vega10.
Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarEric Huang <JinHuiEric.Huang@amd.com>
Reviewed-by: default avatarTom St Denis <tom.stdenis@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 2d2e5e7e
...@@ -4583,7 +4583,7 @@ static int vega10_set_power_profile_state(struct pp_hwmgr *hwmgr, ...@@ -4583,7 +4583,7 @@ static int vega10_set_power_profile_state(struct pp_hwmgr *hwmgr,
struct amd_pp_profile *request) struct amd_pp_profile *request)
{ {
struct vega10_hwmgr *data = (struct vega10_hwmgr *)(hwmgr->backend); struct vega10_hwmgr *data = (struct vega10_hwmgr *)(hwmgr->backend);
uint32_t sclk_idx = 0, mclk_idx = 0; uint32_t sclk_idx = ~0, mclk_idx = ~0;
if (hwmgr->dpm_level != AMD_DPM_FORCED_LEVEL_AUTO) if (hwmgr->dpm_level != AMD_DPM_FORCED_LEVEL_AUTO)
return -EINVAL; return -EINVAL;
...@@ -4591,7 +4591,7 @@ static int vega10_set_power_profile_state(struct pp_hwmgr *hwmgr, ...@@ -4591,7 +4591,7 @@ static int vega10_set_power_profile_state(struct pp_hwmgr *hwmgr,
vega10_find_min_clock_index(hwmgr, &sclk_idx, &mclk_idx, vega10_find_min_clock_index(hwmgr, &sclk_idx, &mclk_idx,
request->min_sclk, request->min_mclk); request->min_sclk, request->min_mclk);
if (sclk_idx) { if (sclk_idx != ~0) {
if (!data->registry_data.sclk_dpm_key_disabled) if (!data->registry_data.sclk_dpm_key_disabled)
PP_ASSERT_WITH_CODE( PP_ASSERT_WITH_CODE(
!smum_send_msg_to_smc_with_parameter( !smum_send_msg_to_smc_with_parameter(
...@@ -4602,7 +4602,7 @@ static int vega10_set_power_profile_state(struct pp_hwmgr *hwmgr, ...@@ -4602,7 +4602,7 @@ static int vega10_set_power_profile_state(struct pp_hwmgr *hwmgr,
return -EINVAL); return -EINVAL);
} }
if (mclk_idx) { if (mclk_idx != ~0) {
if (!data->registry_data.mclk_dpm_key_disabled) if (!data->registry_data.mclk_dpm_key_disabled)
PP_ASSERT_WITH_CODE( PP_ASSERT_WITH_CODE(
!smum_send_msg_to_smc_with_parameter( !smum_send_msg_to_smc_with_parameter(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment