drm/amd/powerplay: Fix Vega10 power profile switching
authorFelix Kuehling <Felix.Kuehling@amd.com>
Mon, 15 May 2017 08:08:28 +0000 (04:08 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 24 May 2017 22:09:48 +0000 (18:09 -0400)
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: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Eric Huang <JinHuiEric.Huang@amd.com>
Reviewed-by: Tom St Denis <tom.stdenis@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c

index 825178b5c284c0ca010cc8393eb90c7d9758ad0b..f0c3a8bc1e116e4a959aaf418989ba56028fbacb 100644 (file)
@@ -4583,7 +4583,7 @@ static int vega10_set_power_profile_state(struct pp_hwmgr *hwmgr,
                struct amd_pp_profile *request)
 {
        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)
                return -EINVAL;
@@ -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,
                        request->min_sclk, request->min_mclk);
 
-       if (sclk_idx) {
+       if (sclk_idx != ~0) {
                if (!data->registry_data.sclk_dpm_key_disabled)
                        PP_ASSERT_WITH_CODE(
                                        !smum_send_msg_to_smc_with_parameter(
@@ -4602,7 +4602,7 @@ static int vega10_set_power_profile_state(struct pp_hwmgr *hwmgr,
                                        return -EINVAL);
        }
 
-       if (mclk_idx) {
+       if (mclk_idx != ~0) {
                if (!data->registry_data.mclk_dpm_key_disabled)
                        PP_ASSERT_WITH_CODE(
                                        !smum_send_msg_to_smc_with_parameter(