From: Jonathan Kim Date: Wed, 6 Nov 2019 13:20:21 +0000 (-0500) Subject: drm/amdgpu: fix vega20 pstate status change X-Git-Tag: v5.5-rc1~128^2~11^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb5932f866f50ea4a95459f0b6ebe93882d0aac6;p=thirdparty%2Flinux.git drm/amdgpu: fix vega20 pstate status change vega20 only requires all devices be set to same pstate level for low pstate and not high. Signed-off-by: Jonathan Kim Reviewed-by: Evan Quan Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c index de20a9a1c444c..61d13d8b7b20d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c @@ -276,6 +276,7 @@ int amdgpu_xgmi_set_pstate(struct amdgpu_device *adev, int pstate) struct amdgpu_hive_info *hive = amdgpu_get_xgmi_hive(adev, 0); struct amdgpu_device *tmp_adev; bool update_hive_pstate = true; + bool is_high_pstate = pstate && adev->asic_type == CHIP_VEGA20; if (!hive) return 0; @@ -283,8 +284,8 @@ int amdgpu_xgmi_set_pstate(struct amdgpu_device *adev, int pstate) mutex_lock(&hive->hive_lock); if (hive->pstate == pstate) { - mutex_unlock(&hive->hive_lock); - return 0; + adev->pstate = is_high_pstate ? pstate : adev->pstate; + goto out; } dev_dbg(adev->dev, "Set xgmi pstate %d.\n", pstate); @@ -317,7 +318,7 @@ int amdgpu_xgmi_set_pstate(struct amdgpu_device *adev, int pstate) break; } } - if (update_hive_pstate) + if (update_hive_pstate || is_high_pstate) hive->pstate = pstate; out: