diff options
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.patch | 122 |
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 - |