aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2848-drm-amdgpu-stop-joining-PDEs.patch
diff options
context:
space:
mode:
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.patch81
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(&params,
+- last_shadow,
+- last_pt, count,
+- incr,
+- AMDGPU_PTE_VALID);
+-
+- params.func(&params, 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(&params, pde, pt, 1, incr,
++ AMDGPU_PTE_VALID);
+ }
+- }
+
+- if (count) {
+- if (vm->root.base.bo->shadow)
+- params.func(&params, last_shadow, last_pt,
+- count, incr, AMDGPU_PTE_VALID);
+-
+- params.func(&params, last_pde, last_pt,
+- count, incr, AMDGPU_PTE_VALID);
++ pde = pd_addr + pt_idx * 8;
++ params.func(&params, pde, pt, 1, incr, AMDGPU_PTE_VALID);
+ }
+
+ if (!vm->use_cpu_for_update) {
+--
+2.7.4
+