Takashi Iwai 57f36e
From dbd1003d1252db5973dddf20b24bb0106ac52aa2 Mon Sep 17 00:00:00 2001
Takashi Iwai 57f36e
From: Changfeng <Changfeng.Zhu@amd.com>
Takashi Iwai 57f36e
Date: Fri, 14 May 2021 15:28:25 +0800
Takashi Iwai 57f36e
Subject: [PATCH] drm/amdgpu: disable 3DCGCG on picasso/raven1 to avoid compute hang
Takashi Iwai 57f36e
Git-commit: dbd1003d1252db5973dddf20b24bb0106ac52aa2
Takashi Iwai 57f36e
Patch-mainline: v5.13-rc3
Takashi Iwai 57f36e
References: git-fixes
Takashi Iwai 57f36e
Takashi Iwai 57f36e
There is problem with 3DCGCG firmware and it will cause compute test
Takashi Iwai 57f36e
hang on picasso/raven1. It needs to disable 3DCGCG in driver to avoid
Takashi Iwai 57f36e
compute hang.
Takashi Iwai 57f36e
Takashi Iwai 57f36e
Signed-off-by: Changfeng <Changfeng.Zhu@amd.com>
Takashi Iwai 57f36e
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Takashi Iwai 57f36e
Reviewed-by: Huang Rui <ray.huang@amd.com>
Takashi Iwai 57f36e
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Takashi Iwai 57f36e
Cc: stable@vger.kernel.org
Takashi Iwai 57f36e
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 57f36e
Takashi Iwai 57f36e
---
Takashi Iwai 57f36e
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 10 +++++++---
Takashi Iwai 57f36e
 drivers/gpu/drm/amd/amdgpu/soc15.c    |  2 --
Takashi Iwai 57f36e
 2 files changed, 7 insertions(+), 5 deletions(-)
Takashi Iwai 57f36e
Takashi Iwai 57f36e
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
Takashi Iwai 57f36e
index a078a38c2cee..516467e962b7 100644
Takashi Iwai 57f36e
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
Takashi Iwai 57f36e
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
Takashi Iwai 57f36e
@@ -4943,7 +4943,7 @@ static void gfx_v9_0_update_3d_clock_gating(struct amdgpu_device *adev,
Takashi Iwai 57f36e
 	amdgpu_gfx_rlc_enter_safe_mode(adev);
Takashi Iwai 57f36e
 
Takashi Iwai 57f36e
 	/* Enable 3D CGCG/CGLS */
Takashi Iwai 57f36e
-	if (enable && (adev->cg_flags & AMD_CG_SUPPORT_GFX_3D_CGCG)) {
Takashi Iwai 57f36e
+	if (enable) {
Takashi Iwai 57f36e
 		/* write cmd to clear cgcg/cgls ov */
Takashi Iwai 57f36e
 		def = data = RREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE);
Takashi Iwai 57f36e
 		/* unset CGCG override */
Takashi Iwai 57f36e
@@ -4955,8 +4955,12 @@ static void gfx_v9_0_update_3d_clock_gating(struct amdgpu_device *adev,
Takashi Iwai 57f36e
 		/* enable 3Dcgcg FSM(0x0000363f) */
Takashi Iwai 57f36e
 		def = RREG32_SOC15(GC, 0, mmRLC_CGCG_CGLS_CTRL_3D);
Takashi Iwai 57f36e
 
Takashi Iwai 57f36e
-		data = (0x36 << RLC_CGCG_CGLS_CTRL_3D__CGCG_GFX_IDLE_THRESHOLD__SHIFT) |
Takashi Iwai 57f36e
-			RLC_CGCG_CGLS_CTRL_3D__CGCG_EN_MASK;
Takashi Iwai 57f36e
+		if (adev->cg_flags & AMD_CG_SUPPORT_GFX_3D_CGCG)
Takashi Iwai 57f36e
+			data = (0x36 << RLC_CGCG_CGLS_CTRL_3D__CGCG_GFX_IDLE_THRESHOLD__SHIFT) |
Takashi Iwai 57f36e
+				RLC_CGCG_CGLS_CTRL_3D__CGCG_EN_MASK;
Takashi Iwai 57f36e
+		else
Takashi Iwai 57f36e
+			data = 0x0 << RLC_CGCG_CGLS_CTRL_3D__CGCG_GFX_IDLE_THRESHOLD__SHIFT;
Takashi Iwai 57f36e
+
Takashi Iwai 57f36e
 		if (adev->cg_flags & AMD_CG_SUPPORT_GFX_3D_CGLS)
Takashi Iwai 57f36e
 			data |= (0x000F << RLC_CGCG_CGLS_CTRL_3D__CGLS_REP_COMPANSAT_DELAY__SHIFT) |
Takashi Iwai 57f36e
 				RLC_CGCG_CGLS_CTRL_3D__CGLS_EN_MASK;
Takashi Iwai 57f36e
diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
Takashi Iwai 57f36e
index 8e1b9a40839f..980675052b53 100644
Takashi Iwai 57f36e
--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
Takashi Iwai 57f36e
+++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
Takashi Iwai 57f36e
@@ -1392,7 +1392,6 @@ static int soc15_common_early_init(void *handle)
Takashi Iwai 57f36e
 			adev->cg_flags = AMD_CG_SUPPORT_GFX_MGCG |
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_MGLS |
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_CP_LS |
Takashi Iwai 57f36e
-				AMD_CG_SUPPORT_GFX_3D_CGCG |
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_3D_CGLS |
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_CGCG |
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_CGLS |
Takashi Iwai 57f36e
@@ -1412,7 +1411,6 @@ static int soc15_common_early_init(void *handle)
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_MGLS |
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_RLC_LS |
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_CP_LS |
Takashi Iwai 57f36e
-				AMD_CG_SUPPORT_GFX_3D_CGCG |
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_3D_CGLS |
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_CGCG |
Takashi Iwai 57f36e
 				AMD_CG_SUPPORT_GFX_CGLS |
Takashi Iwai 57f36e
-- 
Takashi Iwai 57f36e
2.26.2
Takashi Iwai 57f36e