diff options
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.patch | 83 |
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 + |