diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2848-drm-amdgpu-stop-joining-PDEs.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2848-drm-amdgpu-stop-joining-PDEs.patch | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2848-drm-amdgpu-stop-joining-PDEs.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2848-drm-amdgpu-stop-joining-PDEs.patch new file mode 100644 index 00000000..9609fff1 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2848-drm-amdgpu-stop-joining-PDEs.patch @@ -0,0 +1,81 @@ +From b24cf7826e6d0ce02c0543f062e3c28ed1e6bce4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Thu, 30 Nov 2017 14:12:53 +0100 +Subject: [PATCH 2848/4131] drm/amdgpu: stop joining PDEs +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +That doesn't hit any more most of the time anyway. + +Signed-off-by: Christian König <christian.koenig@amd.com> +Reviewed-by: Chunming Zhou <david1.zhou@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 41 ++++++---------------------------- + 1 file changed, 7 insertions(+), 34 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +index 90a3bdb..cdf3fbb 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +@@ -1085,8 +1085,7 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev, + struct amdgpu_bo *shadow; + struct amdgpu_ring *ring = NULL; + uint64_t pd_addr, shadow_addr = 0; +- uint64_t last_pde = ~0, last_pt = ~0, last_shadow = ~0; +- unsigned count = 0, pt_idx, ndw = 0; ++ unsigned pt_idx, ndw = 0; + struct amdgpu_job *job; + struct amdgpu_pte_update_params params; + struct dma_fence *fence = NULL; +@@ -1158,41 +1157,15 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev, + + parent->entries[pt_idx].addr = pt | AMDGPU_PTE_VALID; + +- pde = pd_addr + pt_idx * 8; + incr = amdgpu_bo_size(bo); +- if (((last_pde + 8 * count) != pde) || +- ((last_pt + incr * count) != pt) || +- (count == AMDGPU_VM_MAX_UPDATE_SIZE)) { +- +- if (count) { +- if (shadow) +- params.func(¶ms, +- last_shadow, +- last_pt, count, +- incr, +- AMDGPU_PTE_VALID); +- +- params.func(¶ms, last_pde, +- last_pt, count, incr, +- AMDGPU_PTE_VALID); +- } +- +- count = 1; +- last_pde = pde; +- last_shadow = shadow_addr + pt_idx * 8; +- last_pt = pt; +- } else { +- ++count; ++ if (shadow) { ++ pde = shadow_addr + pt_idx * 8; ++ params.func(¶ms, pde, pt, 1, incr, ++ AMDGPU_PTE_VALID); + } +- } + +- if (count) { +- if (vm->root.base.bo->shadow) +- params.func(¶ms, last_shadow, last_pt, +- count, incr, AMDGPU_PTE_VALID); +- +- params.func(¶ms, last_pde, last_pt, +- count, incr, AMDGPU_PTE_VALID); ++ pde = pd_addr + pt_idx * 8; ++ params.func(¶ms, pde, pt, 1, incr, AMDGPU_PTE_VALID); + } + + if (!vm->use_cpu_for_update) { +-- +2.7.4 + |