aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/5401-drm-amdgpu-add-amdgpu_vm_update_func.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/5401-drm-amdgpu-add-amdgpu_vm_update_func.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/5401-drm-amdgpu-add-amdgpu_vm_update_func.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/5401-drm-amdgpu-add-amdgpu_vm_update_func.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/5401-drm-amdgpu-add-amdgpu_vm_update_func.patch
new file mode 100644
index 00000000..bb17d4e6
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/5401-drm-amdgpu-add-amdgpu_vm_update_func.patch
@@ -0,0 +1,84 @@
+From c84fa23aef19e5674b09b849e69da16b505d7da3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Thu, 30 Aug 2018 15:55:54 +0200
+Subject: [PATCH 5401/5725] drm/amdgpu: add amdgpu_vm_update_func
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add helper to call the update function for both BO and shadow.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 32 +++++++++++++++++++++-----------
+ 1 file changed, 21 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index 90e959d..fc1bd7d 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -1042,6 +1042,22 @@ static int amdgpu_vm_wait_pd(struct amdgpu_device *adev, struct amdgpu_vm *vm,
+ return r;
+ }
+
++/**
++ * amdgpu_vm_update_func - helper to call update function
++ *
++ * Calls the update function for both the given BO as well as its shadow.
++ */
++static void amdgpu_vm_update_func(struct amdgpu_pte_update_params *params,
++ struct amdgpu_bo *bo,
++ uint64_t pe, uint64_t addr,
++ unsigned count, uint32_t incr,
++ uint64_t flags)
++{
++ if (bo->shadow)
++ params->func(params, bo->shadow, pe, addr, count, incr, flags);
++ params->func(params, bo, pe, addr, count, incr, flags);
++}
++
+ /*
+ * amdgpu_vm_update_pde - update a single level in the hierarchy
+ *
+@@ -1071,9 +1087,7 @@ static void amdgpu_vm_update_pde(struct amdgpu_pte_update_params *params,
+ level += params->adev->vm_manager.root_level;
+ amdgpu_gmc_get_pde_for_bo(entry->base.bo, level, &pt, &flags);
+ pde = (entry - parent->entries) * 8;
+- if (bo->shadow)
+- params->func(params, bo->shadow, pde, pt, 1, 0, flags);
+- params->func(params, bo, pde, pt, 1, 0, flags);
++ amdgpu_vm_update_func(params, bo, pde, pt, 1, 0, flags);
+ }
+
+ /*
+@@ -1280,9 +1294,7 @@ static void amdgpu_vm_handle_huge_pages(struct amdgpu_pte_update_params *p,
+ amdgpu_gmc_get_vm_pde(p->adev, AMDGPU_VM_PDB0, &dst, &flags);
+
+ pde = (entry - parent->entries) * 8;
+- if (parent->base.bo->shadow)
+- p->func(p, parent->base.bo->shadow, pde, dst, 1, 0, flags);
+- p->func(p, parent->base.bo, pde, dst, 1, 0, flags);
++ amdgpu_vm_update_func(p, parent->base.bo, pde, dst, 1, 0, flags);
+ }
+
+ /**
+@@ -1332,11 +1344,9 @@ static int amdgpu_vm_update_ptes(struct amdgpu_pte_update_params *params,
+
+ pt = entry->base.bo;
+ pe_start = (addr & mask) * 8;
+- if (pt->shadow)
+- params->func(params, pt->shadow, pe_start, dst, nptes,
+- AMDGPU_GPU_PAGE_SIZE, flags);
+- params->func(params, pt, pe_start, dst, nptes,
+- AMDGPU_GPU_PAGE_SIZE, flags);
++ amdgpu_vm_update_func(params, pt, pe_start, dst, nptes,
++ AMDGPU_GPU_PAGE_SIZE, flags);
++
+ }
+
+ return 0;
+--
+2.7.4
+