aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0360-drm-amdgpu-use-the-DFS-iterator-in-amdgpu_vm_invalid.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0360-drm-amdgpu-use-the-DFS-iterator-in-amdgpu_vm_invalid.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0360-drm-amdgpu-use-the-DFS-iterator-in-amdgpu_vm_invalid.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0360-drm-amdgpu-use-the-DFS-iterator-in-amdgpu_vm_invalid.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0360-drm-amdgpu-use-the-DFS-iterator-in-amdgpu_vm_invalid.patch
new file mode 100644
index 00000000..3b9d0da7
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0360-drm-amdgpu-use-the-DFS-iterator-in-amdgpu_vm_invalid.patch
@@ -0,0 +1,83 @@
+From 6346f05b6c925671fbd2c70d09be96cff3be1b1b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Sat, 8 Sep 2018 13:05:34 +0200
+Subject: [PATCH 0360/2940] drm/amdgpu: use the DFS iterator in
+ amdgpu_vm_invalidate_pds v2
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Less code and easier to maintain.
+
+v2: rename the function as well
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Huang Rui <ray.huang@amd.com>
+Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 32 +++++++-------------------
+ 1 file changed, 8 insertions(+), 24 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index ae55630a0326..681583592804 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -1365,37 +1365,22 @@ static void amdgpu_vm_update_pde(struct amdgpu_pte_update_params *params,
+ }
+
+ /*
+- * amdgpu_vm_invalidate_level - mark all PD levels as invalid
++ * amdgpu_vm_invalidate_pds - mark all PDs as invalid
+ *
+ * @adev: amdgpu_device pointer
+ * @vm: related vm
+- * @parent: parent PD
+- * @level: VMPT level
+ *
+ * Mark all PD level as invalid after an error.
+ */
+-static void amdgpu_vm_invalidate_level(struct amdgpu_device *adev,
+- struct amdgpu_vm *vm,
+- struct amdgpu_vm_pt *parent,
+- unsigned level)
++static void amdgpu_vm_invalidate_pds(struct amdgpu_device *adev,
++ struct amdgpu_vm *vm)
+ {
+- unsigned pt_idx, num_entries;
+-
+- /*
+- * Recurse into the subdirectories. This recursion is harmless because
+- * we only have a maximum of 5 layers.
+- */
+- num_entries = amdgpu_vm_num_entries(adev, level);
+- for (pt_idx = 0; pt_idx < num_entries; ++pt_idx) {
+- struct amdgpu_vm_pt *entry = &parent->entries[pt_idx];
+-
+- if (!entry->base.bo)
+- continue;
++ struct amdgpu_vm_pt_cursor cursor;
++ struct amdgpu_vm_pt *entry;
+
+- if (!entry->base.moved)
++ for_each_amdgpu_vm_pt_dfs_safe(adev, vm, cursor, entry)
++ if (entry->base.bo && !entry->base.moved)
+ amdgpu_vm_bo_relocated(&entry->base);
+- amdgpu_vm_invalidate_level(adev, vm, entry, level + 1);
+- }
+ }
+
+ /*
+@@ -1492,8 +1477,7 @@ int amdgpu_vm_update_directories(struct amdgpu_device *adev,
+ return 0;
+
+ error:
+- amdgpu_vm_invalidate_level(adev, vm, &vm->root,
+- adev->vm_manager.root_level);
++ amdgpu_vm_invalidate_pds(adev, vm);
+ amdgpu_job_free(job);
+ return r;
+ }
+--
+2.17.1
+