aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0712-drm-amdgpu-add-spin-lock-to-protect-freed-list-in-vm.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0712-drm-amdgpu-add-spin-lock-to-protect-freed-list-in-vm.patch')
-rw-r--r--common/recipes-kernel/linux/files/0712-drm-amdgpu-add-spin-lock-to-protect-freed-list-in-vm.patch98
1 files changed, 0 insertions, 98 deletions
diff --git a/common/recipes-kernel/linux/files/0712-drm-amdgpu-add-spin-lock-to-protect-freed-list-in-vm.patch b/common/recipes-kernel/linux/files/0712-drm-amdgpu-add-spin-lock-to-protect-freed-list-in-vm.patch
deleted file mode 100644
index 70f61c75..00000000
--- a/common/recipes-kernel/linux/files/0712-drm-amdgpu-add-spin-lock-to-protect-freed-list-in-vm.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 81d75a30c6ed006a314f5c760196d04758660ca6 Mon Sep 17 00:00:00 2001
-From: jimqu <Jim.Qu@amd.com>
-Date: Fri, 4 Dec 2015 17:17:00 +0800
-Subject: [PATCH 0712/1565] drm/amdgpu: add spin lock to protect freed list in
- vm (v2)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-there is a protection fault about freed list when OCL test.
-add a spin lock to protect it.
-
-v2: drop changes in vm_fini
-
-Signed-off-by: JimQu <jim.qu@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 | 16 +++++++++++++---
- 2 files changed, 15 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-index 670fefb..5a5f04d 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-@@ -956,6 +956,8 @@ struct amdgpu_vm {
- struct amdgpu_vm_id ids[AMDGPU_MAX_RINGS];
- /* for interval tree */
- spinlock_t it_lock;
-+ /* protecting freed */
-+ spinlock_t freed_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 a582ef5..b53d273 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-@@ -885,17 +885,21 @@ int amdgpu_vm_clear_freed(struct amdgpu_device *adev,
- struct amdgpu_bo_va_mapping *mapping;
- int r;
-
-+ spin_lock(&vm->freed_lock);
- while (!list_empty(&vm->freed)) {
- mapping = list_first_entry(&vm->freed,
- struct amdgpu_bo_va_mapping, list);
- list_del(&mapping->list);
--
-+ spin_unlock(&vm->freed_lock);
- r = amdgpu_vm_bo_update_mapping(adev, vm, mapping, 0, 0, NULL);
- kfree(mapping);
- if (r)
- return r;
-
-+ spin_lock(&vm->freed_lock);
- }
-+ spin_unlock(&vm->freed_lock);
-+
- return 0;
-
- }
-@@ -1155,10 +1159,13 @@ int amdgpu_vm_bo_unmap(struct amdgpu_device *adev,
- spin_unlock(&vm->it_lock);
- trace_amdgpu_vm_bo_unmap(bo_va, mapping);
-
-- if (valid)
-+ if (valid) {
-+ spin_lock(&vm->freed_lock);
- list_add(&mapping->list, &vm->freed);
-- else
-+ spin_unlock(&vm->freed_lock);
-+ } else {
- kfree(mapping);
-+ }
-
- return 0;
- }
-@@ -1191,7 +1198,9 @@ void amdgpu_vm_bo_rmv(struct amdgpu_device *adev,
- interval_tree_remove(&mapping->it, &vm->va);
- spin_unlock(&vm->it_lock);
- trace_amdgpu_vm_bo_unmap(bo_va, mapping);
-+ spin_lock(&vm->freed_lock);
- list_add(&mapping->list, &vm->freed);
-+ spin_unlock(&vm->freed_lock);
- }
- list_for_each_entry_safe(mapping, next, &bo_va->invalids, list) {
- list_del(&mapping->list);
-@@ -1252,6 +1261,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm)
- INIT_LIST_HEAD(&vm->cleared);
- INIT_LIST_HEAD(&vm->freed);
- spin_lock_init(&vm->it_lock);
-+ spin_lock_init(&vm->freed_lock);
- pd_size = amdgpu_vm_directory_size(adev);
- pd_entries = amdgpu_vm_num_pdes(adev);
-
---
-1.9.1
-