| From 77a7799e6a2ec1d29e92df069cbd43289b90684c Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 7 Apr 2020 20:21:26 +0800 |
| Subject: drm/amdgpu: fix gfx hang during suspend with video playback (v2) |
| |
| From: Prike Liang <Prike.Liang@amd.com> |
| |
| [ Upstream commit 487eca11a321ef33bcf4ca5adb3c0c4954db1b58 ] |
| |
| The system will be hang up during S3 suspend because of SMU is pending |
| for GC not respose the register CP_HQD_ACTIVE access request.This issue |
| root cause of accessing the GC register under enter GFX CGGPG and can |
| be fixed by disable GFX CGPG before perform suspend. |
| |
| v2: Use disable the GFX CGPG instead of RLC safe mode guard. |
| |
| Signed-off-by: Prike Liang <Prike.Liang@amd.com> |
| Tested-by: Mengbing Wang <Mengbing.Wang@amd.com> |
| Reviewed-by: Huang Rui <ray.huang@amd.com> |
| Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |
| index b8975857d60d6..48e2863461b7f 100644 |
| --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |
| +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |
| @@ -2285,8 +2285,6 @@ static int amdgpu_device_ip_suspend_phase1(struct amdgpu_device *adev) |
| { |
| int i, r; |
| |
| - amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE); |
| - amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE); |
| |
| for (i = adev->num_ip_blocks - 1; i >= 0; i--) { |
| if (!adev->ip_blocks[i].status.valid) |
| @@ -3309,6 +3307,9 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon) |
| } |
| } |
| |
| + amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE); |
| + amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE); |
| + |
| amdgpu_amdkfd_suspend(adev); |
| |
| amdgpu_ras_suspend(adev); |
| -- |
| 2.20.1 |
| |