aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0381-drm-amdgpu-Revert-add-mutex-for-ba_va-valids-invalid.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0381-drm-amdgpu-Revert-add-mutex-for-ba_va-valids-invalid.patch')
-rw-r--r--common/recipes-kernel/linux/files/0381-drm-amdgpu-Revert-add-mutex-for-ba_va-valids-invalid.patch105
1 files changed, 105 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0381-drm-amdgpu-Revert-add-mutex-for-ba_va-valids-invalid.patch b/common/recipes-kernel/linux/files/0381-drm-amdgpu-Revert-add-mutex-for-ba_va-valids-invalid.patch
new file mode 100644
index 00000000..edeef8a0
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0381-drm-amdgpu-Revert-add-mutex-for-ba_va-valids-invalid.patch
@@ -0,0 +1,105 @@
+From 7f3e7b0ea58ae3b4189b61dbf9c468929ef861d4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Tue, 8 Mar 2016 18:03:27 +0100
+Subject: [PATCH 0381/1110] drm/amdgpu: Revert "add mutex for
+ ba_va->valids/invalids"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Not needed any more because we need to protect the elements on the list anyway.
+
+This reverts commit 38bf516c75b4ef0f5c716e05fa9baab7c52d6c39.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 -
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 17 ++++++-----------
+ 2 files changed, 6 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+index 929bf7f..7fc816a 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+@@ -445,7 +445,6 @@ struct amdgpu_bo_va_mapping {
+
+ /* bo virtual addresses in a specific vm */
+ struct amdgpu_bo_va {
+- struct mutex mutex;
+ /* protected by bo being reserved */
+ struct list_head bo_list;
+ struct fence *last_pt_update;
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index f6d7d3f..e2effcf 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -1014,9 +1014,8 @@ int amdgpu_vm_clear_invalids(struct amdgpu_device *adev,
+ bo_va = list_first_entry(&vm->invalidated,
+ struct amdgpu_bo_va, vm_status);
+ spin_unlock(&vm->status_lock);
+- mutex_lock(&bo_va->mutex);
++
+ r = amdgpu_vm_bo_update(adev, bo_va, NULL);
+- mutex_unlock(&bo_va->mutex);
+ if (r)
+ return r;
+
+@@ -1060,7 +1059,7 @@ struct amdgpu_bo_va *amdgpu_vm_bo_add(struct amdgpu_device *adev,
+ INIT_LIST_HEAD(&bo_va->valids);
+ INIT_LIST_HEAD(&bo_va->invalids);
+ INIT_LIST_HEAD(&bo_va->vm_status);
+- mutex_init(&bo_va->mutex);
++
+ list_add_tail(&bo_va->bo_list, &bo->va);
+
+ return bo_va;
+@@ -1136,9 +1135,7 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev,
+ mapping->offset = offset;
+ mapping->flags = flags;
+
+- mutex_lock(&bo_va->mutex);
+ list_add(&mapping->list, &bo_va->invalids);
+- mutex_unlock(&bo_va->mutex);
+ interval_tree_insert(&mapping->it, &vm->va);
+
+ /* Make sure the page tables are allocated */
+@@ -1220,7 +1217,7 @@ int amdgpu_vm_bo_unmap(struct amdgpu_device *adev,
+ bool valid = true;
+
+ saddr /= AMDGPU_GPU_PAGE_SIZE;
+- mutex_lock(&bo_va->mutex);
++
+ list_for_each_entry(mapping, &bo_va->valids, list) {
+ if (mapping->it.start == saddr)
+ break;
+@@ -1234,12 +1231,10 @@ int amdgpu_vm_bo_unmap(struct amdgpu_device *adev,
+ break;
+ }
+
+- if (&mapping->list == &bo_va->invalids) {
+- mutex_unlock(&bo_va->mutex);
++ if (&mapping->list == &bo_va->invalids)
+ return -ENOENT;
+- }
+ }
+- mutex_unlock(&bo_va->mutex);
++
+ list_del(&mapping->list);
+ interval_tree_remove(&mapping->it, &vm->va);
+ trace_amdgpu_vm_bo_unmap(bo_va, mapping);
+@@ -1285,8 +1280,8 @@ void amdgpu_vm_bo_rmv(struct amdgpu_device *adev,
+ interval_tree_remove(&mapping->it, &vm->va);
+ kfree(mapping);
+ }
++
+ fence_put(bo_va->last_pt_update);
+- mutex_destroy(&bo_va->mutex);
+ kfree(bo_va);
+ }
+
+--
+2.7.4
+