aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0694-drm-amdgpu-add-lock-for-interval-tree-in-vm.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0694-drm-amdgpu-add-lock-for-interval-tree-in-vm.patch')
-rw-r--r--common/recipes-kernel/linux/files/0694-drm-amdgpu-add-lock-for-interval-tree-in-vm.patch111
1 files changed, 0 insertions, 111 deletions
diff --git a/common/recipes-kernel/linux/files/0694-drm-amdgpu-add-lock-for-interval-tree-in-vm.patch b/common/recipes-kernel/linux/files/0694-drm-amdgpu-add-lock-for-interval-tree-in-vm.patch
deleted file mode 100644
index 76b1bb25..00000000
--- a/common/recipes-kernel/linux/files/0694-drm-amdgpu-add-lock-for-interval-tree-in-vm.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From c25867dfabf045a8148fd179fa759bb17f670e42 Mon Sep 17 00:00:00 2001
-From: Chunming Zhou <David1.Zhou@amd.com>
-Date: Fri, 13 Nov 2015 13:32:01 +0800
-Subject: [PATCH 0694/1565] drm/amdgpu: add lock for interval tree in vm
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Change-Id: I62b892a22af37b32e6b4aefca80a25cf45426ed2
-Signed-off-by: Chunming Zhou <David1.Zhou@amd.com>
-Reviewed-by: Christian König <christian.koenig@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 ++
- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 15 +++++++++++++--
- 2 files changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-index a569262..306f757 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-@@ -954,6 +954,8 @@ struct amdgpu_vm {
-
- /* for id and flush management per ring */
- struct amdgpu_vm_id ids[AMDGPU_MAX_RINGS];
-+ /* for interval tree */
-+ spinlock_t it_lock;
- };
-
- struct amdgpu_vm_manager {
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-index 0bdbb24..0513f3f 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-@@ -1028,7 +1028,9 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev,
- saddr /= AMDGPU_GPU_PAGE_SIZE;
- eaddr /= AMDGPU_GPU_PAGE_SIZE;
-
-+ spin_lock(&vm->it_lock);
- it = interval_tree_iter_first(&vm->va, saddr, eaddr - 1);
-+ spin_unlock(&vm->it_lock);
- if (it) {
- struct amdgpu_bo_va_mapping *tmp;
- tmp = container_of(it, struct amdgpu_bo_va_mapping, it);
-@@ -1055,7 +1057,9 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev,
- mapping->flags = flags;
-
- list_add(&mapping->list, &bo_va->invalids);
-+ spin_lock(&vm->it_lock);
- interval_tree_insert(&mapping->it, &vm->va);
-+ spin_unlock(&vm->it_lock);
- trace_amdgpu_vm_bo_map(bo_va, mapping);
-
- /* Make sure the page tables are allocated */
-@@ -1101,7 +1105,9 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev,
-
- error_free:
- list_del(&mapping->list);
-+ spin_lock(&vm->it_lock);
- interval_tree_remove(&mapping->it, &vm->va);
-+ spin_unlock(&vm->it_lock);
- trace_amdgpu_vm_bo_unmap(bo_va, mapping);
- kfree(mapping);
-
-@@ -1151,7 +1157,9 @@ int amdgpu_vm_bo_unmap(struct amdgpu_device *adev,
- }
-
- list_del(&mapping->list);
-+ spin_lock(&vm->it_lock);
- interval_tree_remove(&mapping->it, &vm->va);
-+ spin_unlock(&vm->it_lock);
- trace_amdgpu_vm_bo_unmap(bo_va, mapping);
-
- if (valid)
-@@ -1187,13 +1195,17 @@ void amdgpu_vm_bo_rmv(struct amdgpu_device *adev,
-
- list_for_each_entry_safe(mapping, next, &bo_va->valids, list) {
- list_del(&mapping->list);
-+ spin_lock(&vm->it_lock);
- interval_tree_remove(&mapping->it, &vm->va);
-+ spin_unlock(&vm->it_lock);
- trace_amdgpu_vm_bo_unmap(bo_va, mapping);
- list_add(&mapping->list, &vm->freed);
- }
- list_for_each_entry_safe(mapping, next, &bo_va->invalids, list) {
- list_del(&mapping->list);
-+ spin_lock(&vm->it_lock);
- interval_tree_remove(&mapping->it, &vm->va);
-+ spin_unlock(&vm->it_lock);
- kfree(mapping);
- }
-
-@@ -1248,7 +1260,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm)
- INIT_LIST_HEAD(&vm->invalidated);
- INIT_LIST_HEAD(&vm->cleared);
- INIT_LIST_HEAD(&vm->freed);
--
-+ spin_lock_init(&vm->it_lock);
- pd_size = amdgpu_vm_directory_size(adev);
- pd_entries = amdgpu_vm_num_pdes(adev);
-
-@@ -1312,7 +1324,6 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)
-
- amdgpu_bo_unref(&vm->page_directory);
- fence_put(vm->page_directory_fence);
--
- for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
- unsigned id = vm->ids[i].id;
-
---
-1.9.1
-