aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/1097-drm-amdgpu-modify-sdma-start-sequence.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/1097-drm-amdgpu-modify-sdma-start-sequence.patch')
-rw-r--r--common/recipes-kernel/linux/files/1097-drm-amdgpu-modify-sdma-start-sequence.patch122
1 files changed, 0 insertions, 122 deletions
diff --git a/common/recipes-kernel/linux/files/1097-drm-amdgpu-modify-sdma-start-sequence.patch b/common/recipes-kernel/linux/files/1097-drm-amdgpu-modify-sdma-start-sequence.patch
deleted file mode 100644
index 8f574d81..00000000
--- a/common/recipes-kernel/linux/files/1097-drm-amdgpu-modify-sdma-start-sequence.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From ba897ff2f4fa5c0123a4a38623f155838affeed5 Mon Sep 17 00:00:00 2001
-From: Monk Liu <Monk.Liu@amd.com>
-Date: Wed, 25 May 2016 16:57:14 +0800
-Subject: [PATCH 1097/1110] drm/amdgpu:modify sdma start sequence
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-should fist halt engine, and then doing the register
-programing, and later unhalt engine, and finally run
-ring_test.
-
-this help fix reloading driver hang issue of SDMA
-ring
-
-original sequence is wrong for it programing engine
-after unhalt, which will lead to fault behavior when
-doing driver reloading after unloaded.
-
-Change-Id: Iaccc65f6783dc40cc55714508ac907c0c70ccc2b
-Signed-off-by: Monk Liu <Monk.Liu@amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-Reviewed-by: Christian König <christian.koenig@amd.com>
-Signed-off-by: Kalyan Alle <kalyan.alle@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 9 +++++++--
- drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 8 ++++++--
- drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 15 +++++++++++----
- 3 files changed, 24 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
-index 223212f..03e89d2 100644
---- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
-+++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
-@@ -445,7 +445,12 @@ static int cik_sdma_gfx_resume(struct amdgpu_device *adev)
- WREG32(mmSDMA0_GFX_IB_CNTL + sdma_offsets[i], ib_cntl);
-
- ring->ready = true;
-+ }
-+
-+ cik_sdma_enable(adev, true);
-
-+ for (i = 0; i < adev->sdma.num_instances; i++) {
-+ ring = &adev->sdma.instance[i].ring;
- r = amdgpu_ring_test_ring(ring);
- if (r) {
- ring->ready = false;
-@@ -528,8 +533,8 @@ static int cik_sdma_start(struct amdgpu_device *adev)
- if (r)
- return r;
-
-- /* unhalt the MEs */
-- cik_sdma_enable(adev, true);
-+ /* halt the engine before programing */
-+ cik_sdma_enable(adev, false);
-
- /* start the gfx rings and rlc compute queues */
- r = cik_sdma_gfx_resume(adev);
-diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
-index a25df59..f462549 100644
---- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
-+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
-@@ -488,7 +488,11 @@ static int sdma_v2_4_gfx_resume(struct amdgpu_device *adev)
- WREG32(mmSDMA0_GFX_IB_CNTL + sdma_offsets[i], ib_cntl);
-
- ring->ready = true;
-+ }
-
-+ sdma_v2_4_enable(adev, true);
-+ for (i = 0; i < adev->sdma.num_instances; i++) {
-+ ring = &adev->sdma.instance[i].ring;
- r = amdgpu_ring_test_ring(ring);
- if (r) {
- ring->ready = false;
-@@ -579,8 +583,8 @@ static int sdma_v2_4_start(struct amdgpu_device *adev)
- return -EINVAL;
- }
-
-- /* unhalt the MEs */
-- sdma_v2_4_enable(adev, true);
-+ /* halt the engine before programing */
-+ sdma_v2_4_enable(adev, false);
-
- /* start the gfx rings and rlc compute queues */
- r = sdma_v2_4_gfx_resume(adev);
-diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
-index 313d90a..9c30f9a 100644
---- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
-+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
-@@ -708,7 +708,15 @@ static int sdma_v3_0_gfx_resume(struct amdgpu_device *adev)
- WREG32(mmSDMA0_GFX_IB_CNTL + sdma_offsets[i], ib_cntl);
-
- ring->ready = true;
-+ }
-
-+ /* unhalt the MEs */
-+ sdma_v3_0_enable(adev, true);
-+ /* enable sdma ring preemption */
-+ sdma_v3_0_ctx_switch_enable(adev, true);
-+
-+ for (i = 0; i < adev->sdma.num_instances; i++) {
-+ ring = &adev->sdma.instance[i].ring;
- r = amdgpu_ring_test_ring(ring);
- if (r) {
- ring->ready = false;
-@@ -801,10 +809,9 @@ static int sdma_v3_0_start(struct amdgpu_device *adev)
- }
- }
-
-- /* unhalt the MEs */
-- sdma_v3_0_enable(adev, true);
-- /* enable sdma ring preemption */
-- sdma_v3_0_ctx_switch_enable(adev, true);
-+ /* disble sdma engine before programing it */
-+ sdma_v3_0_ctx_switch_enable(adev, false);
-+ sdma_v3_0_enable(adev, false);
-
- /* start the gfx rings and rlc compute queues */
- r = sdma_v3_0_gfx_resume(adev);
---
-2.7.4
-