diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1453-drm-amdgpu-Fix-SDMA-RLC-queues-on-Hawaii.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1453-drm-amdgpu-Fix-SDMA-RLC-queues-on-Hawaii.patch | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1453-drm-amdgpu-Fix-SDMA-RLC-queues-on-Hawaii.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1453-drm-amdgpu-Fix-SDMA-RLC-queues-on-Hawaii.patch deleted file mode 100644 index 75107ae5..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1453-drm-amdgpu-Fix-SDMA-RLC-queues-on-Hawaii.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 140eca45c531ecd0787eca20a45dc5259633423e Mon Sep 17 00:00:00 2001 -From: Felix Kuehling <Felix.Kuehling@amd.com> -Date: Wed, 15 Jun 2016 16:33:15 -0400 -Subject: [PATCH 1453/4131] drm/amdgpu: Fix SDMA RLC queues on Hawaii - -Enable SDMA context switching on CIK (copied from sdma_v3_0.c). -Fix programming sequence for queueing and dequeueing RLC queues -(copied from gfx_v8). - -Change-Id: I97d0298ad91144ad7a683cd1c57470d359893dac -Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> - - Conflicts: - drivers/gpu/drm/amd/amdgpu/cik_sdma.c ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 37 ++++++++++++++++++++--- - 1 file changed, 32 insertions(+), 5 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c -index d48a859..b643f1d 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c -@@ -447,16 +447,44 @@ static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd) - struct cik_sdma_rlc_registers *m; - unsigned long end_jiffies; - uint32_t sdma_base_addr; -+ uint32_t temp, timeout = 2000; -+ uint32_t data; - - m = get_sdma_mqd(mqd); - sdma_base_addr = get_sdma_base_addr(m); - -+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_CNTL, -+ m->sdma_rlc_rb_cntl & (~SDMA0_RLC0_RB_CNTL__RB_ENABLE_MASK)); -+ -+ while (true) { -+ temp = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS); -+ if (temp & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK) -+ break; -+ if (timeout == 0) -+ return -ETIME; -+ msleep(10); -+ timeout -= 10; -+ } -+ if (m->sdma_engine_id) { -+ data = RREG32(mmSDMA1_GFX_CONTEXT_CNTL); -+ data = REG_SET_FIELD(data, SDMA1_GFX_CONTEXT_CNTL, -+ RESUME_CTX, 0); -+ WREG32(mmSDMA1_GFX_CONTEXT_CNTL, data); -+ } else { -+ data = RREG32(mmSDMA0_GFX_CONTEXT_CNTL); -+ data = REG_SET_FIELD(data, SDMA0_GFX_CONTEXT_CNTL, -+ RESUME_CTX, 0); -+ WREG32(mmSDMA0_GFX_CONTEXT_CNTL, data); -+ } -+ -+ WREG32(sdma_base_addr + mmSDMA0_RLC0_DOORBELL, m->sdma_rlc_doorbell); -+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR, 0); -+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_WPTR, 0); - WREG32(sdma_base_addr + mmSDMA0_RLC0_VIRTUAL_ADDR, m->sdma_rlc_virtual_addr); - WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE, m->sdma_rlc_rb_base); - WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE_HI, m->sdma_rlc_rb_base_hi); - WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_LO, m->sdma_rlc_rb_rptr_addr_lo); - WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_HI, m->sdma_rlc_rb_rptr_addr_hi); -- WREG32(sdma_base_addr + mmSDMA0_RLC0_DOORBELL, m->sdma_rlc_doorbell); - WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_CNTL, m->sdma_rlc_rb_cntl); - - return 0; -@@ -598,10 +626,9 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd, - } - - WREG32(sdma_base_addr + mmSDMA0_RLC0_DOORBELL, 0); -- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR, 0); -- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_WPTR, 0); -- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE, 0); -- -+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_CNTL, -+ RREG32(sdma_base_addr + mmSDMA0_RLC0_RB_CNTL) | -+ SDMA0_RLC0_RB_CNTL__RB_ENABLE_MASK); - return 0; - } - --- -2.7.4 - |