aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch87
1 files changed, 87 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch
new file mode 100644
index 00000000..07b61d4a
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch
@@ -0,0 +1,87 @@
+From 74ef1e4691d5248fc4be024d4ecb11771ba260dd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Wed, 27 Mar 2019 11:34:24 +0100
+Subject: [PATCH 1693/2940] drm/amdgpu: don't put the root PD into the
+ relocated list
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Instead of skipping the root PD while processing the relocated list just never
+put it on the list in the first place.
+
+This avoids walking the list all together when the root PD is the only entry
+and so also avoids trying to submit a zero sized IB to the SDMA.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Tested-by: Michel Dänzer <michel.daenzer@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 18 ++++++++----------
+ 1 file changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index 530a42d914e7..9f5e3bf9c908 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -306,7 +306,7 @@ static void amdgpu_vm_bo_base_init(struct amdgpu_vm_bo_base *base,
+ return;
+
+ vm->bulk_moveable = false;
+- if (bo->tbo.type == ttm_bo_type_kernel)
++ if (bo->tbo.type == ttm_bo_type_kernel && bo->parent)
+ amdgpu_vm_bo_relocated(base);
+ else
+ amdgpu_vm_bo_idle(base);
+@@ -640,7 +640,10 @@ int amdgpu_vm_validate_pt_bos(struct amdgpu_device *adev, struct amdgpu_vm *vm,
+ amdgpu_vm_bo_moved(bo_base);
+ } else {
+ vm->update_funcs->map_table(bo);
+- amdgpu_vm_bo_relocated(bo_base);
++ if (bo->parent)
++ amdgpu_vm_bo_relocated(bo_base);
++ else
++ amdgpu_vm_bo_idle(bo_base);
+ }
+ }
+
+@@ -1141,16 +1144,15 @@ uint64_t amdgpu_vm_map_gart(const dma_addr_t *pages_addr, uint64_t addr)
+ *
+ * @param: parameters for the update
+ * @vm: requested vm
+- * @parent: parent directory
+ * @entry: entry to update
+ *
+ * Makes sure the requested entry in parent is up to date.
+ */
+ static int amdgpu_vm_update_pde(struct amdgpu_vm_update_params *params,
+ struct amdgpu_vm *vm,
+- struct amdgpu_vm_pt *parent,
+ struct amdgpu_vm_pt *entry)
+ {
++ struct amdgpu_vm_pt *parent = amdgpu_vm_pt_parent(entry);
+ struct amdgpu_bo *bo = parent->base.bo, *pbo;
+ uint64_t pde, pt, flags;
+ unsigned level;
+@@ -1212,17 +1214,13 @@ int amdgpu_vm_update_directories(struct amdgpu_device *adev,
+ return r;
+
+ while (!list_empty(&vm->relocated)) {
+- struct amdgpu_vm_pt *pt, *entry;
++ struct amdgpu_vm_pt *entry;
+
+ entry = list_first_entry(&vm->relocated, struct amdgpu_vm_pt,
+ base.vm_status);
+ amdgpu_vm_bo_idle(&entry->base);
+
+- pt = amdgpu_vm_pt_parent(entry);
+- if (!pt)
+- continue;
+-
+- r = amdgpu_vm_update_pde(&params, vm, pt, entry);
++ r = amdgpu_vm_update_pde(&params, vm, entry);
+ if (r)
+ goto error;
+ }
+--
+2.17.1
+