diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0781-drm-amdgpu-sdma4-use-paging-queue-for-buffer-funcs.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0781-drm-amdgpu-sdma4-use-paging-queue-for-buffer-funcs.patch | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0781-drm-amdgpu-sdma4-use-paging-queue-for-buffer-funcs.patch b/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0781-drm-amdgpu-sdma4-use-paging-queue-for-buffer-funcs.patch new file mode 100644 index 00000000..77dbf299 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0781-drm-amdgpu-sdma4-use-paging-queue-for-buffer-funcs.patch @@ -0,0 +1,59 @@ +From fe67da3a8fc2d00d1623b3fe430cc78622f9abad Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexander.deucher@amd.com> +Date: Wed, 7 Nov 2018 12:25:30 -0500 +Subject: [PATCH 0781/2940] drm/amdgpu/sdma4: use paging queue for buffer funcs +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Use the paging queue for buffer functions to avoid contention +with the other queues. + +Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> +Reviewed-by: Christian König <christian.koenig@amd.com> +Tested-by: Chen Gong <Curry.Gong@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +index 324c7785604d..da862601b404 100644 +--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +@@ -662,6 +662,10 @@ static void sdma_v4_0_page_stop(struct amdgpu_device *adev) + u32 rb_cntl, ib_cntl; + int i; + ++ if ((adev->mman.buffer_funcs_ring == sdma0) || ++ (adev->mman.buffer_funcs_ring == sdma1)) ++ amdgpu_ttm_set_buffer_funcs_status(adev, false); ++ + for (i = 0; i < adev->sdma.num_instances; i++) { + rb_cntl = RREG32_SDMA(i, mmSDMA0_PAGE_RB_CNTL); + rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_PAGE_RB_CNTL, +@@ -1152,6 +1156,9 @@ static int sdma_v4_0_start(struct amdgpu_device *adev) + r = amdgpu_ring_test_helper(page); + if (r) + return r; ++ ++ if (adev->mman.buffer_funcs_ring == page) ++ amdgpu_ttm_set_buffer_funcs_status(adev, true); + } + + if (adev->mman.buffer_funcs_ring == ring) +@@ -2057,7 +2064,10 @@ static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = { + static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev) + { + adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs; +- adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring; ++ if (adev->sdma.has_page_queue) ++ adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page; ++ else ++ adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring; + } + + static const struct amdgpu_vm_pte_funcs sdma_v4_0_vm_pte_funcs = { +-- +2.17.1 + |