diff options
Diffstat (limited to 'drivers/gpu/drm/amd/pm/amdgpu_dpm.c')
| -rw-r--r-- | drivers/gpu/drm/amd/pm/amdgpu_dpm.c | 17 | 
1 files changed, 17 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c index 89fbee568be4..5504d81c77b7 100644 --- a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c +++ b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c @@ -173,6 +173,17 @@ bool amdgpu_dpm_is_baco_supported(struct amdgpu_device *adev)  	if (!pp_funcs || !pp_funcs->get_asic_baco_capability)  		return false; +	/* Don't use baco for reset in S3. +	 * This is a workaround for some platforms +	 * where entering BACO during suspend +	 * seems to cause reboots or hangs. +	 * This might be related to the fact that BACO controls +	 * power to the whole GPU including devices like audio and USB. +	 * Powering down/up everything may adversely affect these other +	 * devices.  Needs more investigation. +	 */ +	if (adev->in_s3) +		return false;  	mutex_lock(&adev->pm.mutex); @@ -500,6 +511,9 @@ int amdgpu_dpm_send_hbm_bad_pages_num(struct amdgpu_device *adev, uint32_t size)  	struct smu_context *smu = adev->powerplay.pp_handle;  	int ret = 0; +	if (!is_support_sw_smu(adev)) +		return -EOPNOTSUPP; +  	mutex_lock(&adev->pm.mutex);  	ret = smu_send_hbm_bad_pages_num(smu, size);  	mutex_unlock(&adev->pm.mutex); @@ -512,6 +526,9 @@ int amdgpu_dpm_send_hbm_bad_channel_flag(struct amdgpu_device *adev, uint32_t si  	struct smu_context *smu = adev->powerplay.pp_handle;  	int ret = 0; +	if (!is_support_sw_smu(adev)) +		return -EOPNOTSUPP; +  	mutex_lock(&adev->pm.mutex);  	ret = smu_send_hbm_bad_channel_flag(smu, size);  	mutex_unlock(&adev->pm.mutex); |