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