aboutsummaryrefslogtreecommitdiffstats
path: root/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5450-drm-amdgpu-Halt-rlc-cp-in-rlc_safe_mode.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5450-drm-amdgpu-Halt-rlc-cp-in-rlc_safe_mode.patch')
-rw-r--r--meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5450-drm-amdgpu-Halt-rlc-cp-in-rlc_safe_mode.patch130
1 files changed, 0 insertions, 130 deletions
diff --git a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5450-drm-amdgpu-Halt-rlc-cp-in-rlc_safe_mode.patch b/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5450-drm-amdgpu-Halt-rlc-cp-in-rlc_safe_mode.patch
deleted file mode 100644
index 6e8eec12..00000000
--- a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5450-drm-amdgpu-Halt-rlc-cp-in-rlc_safe_mode.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From c1018454bdefbf260d083e897f846e8b4bdcbc90 Mon Sep 17 00:00:00 2001
-From: Rex Zhu <Rex.Zhu@amd.com>
-Date: Tue, 11 Sep 2018 10:33:38 +0800
-Subject: [PATCH 5450/5725] drm/amdgpu: Halt rlc/cp in rlc_safe_mode
-
-before halt rlc/cp, need to
-1. enter rlc safe mode
-2. wait rlc/cp idle
-
-Acked-by: Alex Deucher <alexander.deucher@amd.com>
-Signed-off-by: Hang Zhou <hang.zhou@amd.com>
-Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 86 ++++++++++++++++++++++++-----------
- 1 file changed, 59 insertions(+), 27 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
-index d1c8311..a632c8d 100644
---- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
-+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
-@@ -5079,6 +5079,55 @@ static int gfx_v8_0_kcq_disable(struct amdgpu_device *adev)
- return r;
- }
-
-+static bool gfx_v8_0_is_idle(void *handle)
-+{
-+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-+
-+ if (REG_GET_FIELD(RREG32(mmGRBM_STATUS), GRBM_STATUS, GUI_ACTIVE)
-+ || RREG32(mmGRBM_STATUS2) != 0x8)
-+ return false;
-+ else
-+ return true;
-+}
-+
-+static bool gfx_v8_0_rlc_is_idle(void *handle)
-+{
-+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-+
-+ if (RREG32(mmGRBM_STATUS2) != 0x8)
-+ return false;
-+ else
-+ return true;
-+}
-+
-+static int gfx_v8_0_wait_for_rlc_idle(void *handle)
-+{
-+ unsigned int i;
-+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-+
-+ for (i = 0; i < adev->usec_timeout; i++) {
-+ if (gfx_v8_0_rlc_is_idle(handle))
-+ return 0;
-+
-+ udelay(1);
-+ }
-+ return -ETIMEDOUT;
-+}
-+
-+static int gfx_v8_0_wait_for_idle(void *handle)
-+{
-+ unsigned int i;
-+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-+
-+ for (i = 0; i < adev->usec_timeout; i++) {
-+ if (gfx_v8_0_is_idle(handle))
-+ return 0;
-+
-+ udelay(1);
-+ }
-+ return -ETIMEDOUT;
-+}
-+
- static int gfx_v8_0_hw_fini(void *handle)
- {
- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-@@ -5097,9 +5146,16 @@ static int gfx_v8_0_hw_fini(void *handle)
- pr_debug("For SRIOV client, shouldn't do anything.\n");
- return 0;
- }
-- gfx_v8_0_cp_enable(adev, false);
-- gfx_v8_0_rlc_stop(adev);
--
-+ adev->gfx.rlc.funcs->enter_safe_mode(adev);
-+ if (!gfx_v8_0_wait_for_idle(adev))
-+ gfx_v8_0_cp_enable(adev, false);
-+ else
-+ pr_err("cp is busy, skip halt cp\n");
-+ if (!gfx_v8_0_wait_for_rlc_idle(adev))
-+ gfx_v8_0_rlc_stop(adev);
-+ else
-+ pr_err("rlc is busy, skip halt rlc\n");
-+ adev->gfx.rlc.funcs->exit_safe_mode(adev);
- return 0;
- }
-
-@@ -5120,30 +5176,6 @@ static int gfx_v8_0_resume(void *handle)
- return r;
- }
-
--static bool gfx_v8_0_is_idle(void *handle)
--{
-- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
--
-- if (REG_GET_FIELD(RREG32(mmGRBM_STATUS), GRBM_STATUS, GUI_ACTIVE))
-- return false;
-- else
-- return true;
--}
--
--static int gfx_v8_0_wait_for_idle(void *handle)
--{
-- unsigned i;
-- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
--
-- for (i = 0; i < adev->usec_timeout; i++) {
-- if (gfx_v8_0_is_idle(handle))
-- return 0;
--
-- udelay(1);
-- }
-- return -ETIMEDOUT;
--}
--
- static bool gfx_v8_0_check_soft_reset(void *handle)
- {
- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
---
-2.7.4
-