aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2016-03-08 11:52:01 -0500
committerAlex Deucher <alexander.deucher@amd.com>2016-03-09 13:04:01 -0500
commite17841b97587adfbe96f48c488fd0873ddfcaff0 (patch)
tree13698ebf264d016a1e2ed99142d192e4aaf208b0 /drivers/gpu/drm/amd/amdgpu
parentb5a5ec55041bf129b767e7a2d282887226f4fae1 (diff)
drm/amdgpu: Revert "add spin lock to protect freed list in vm (v3)"
Not needed any more because we need to protect the elements on the list anyway. This reverts commit dae6ecf9e6c9b677e577826c3ac665c6dd9c490b. 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>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 330e307c36ed..7e73e54eadb9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -971,22 +971,18 @@ int amdgpu_vm_clear_freed(struct amdgpu_device *adev,
971 struct amdgpu_bo_va_mapping *mapping; 971 struct amdgpu_bo_va_mapping *mapping;
972 int r; 972 int r;
973 973
974 spin_lock(&vm->freed_lock);
975 while (!list_empty(&vm->freed)) { 974 while (!list_empty(&vm->freed)) {
976 mapping = list_first_entry(&vm->freed, 975 mapping = list_first_entry(&vm->freed,
977 struct amdgpu_bo_va_mapping, list); 976 struct amdgpu_bo_va_mapping, list);
978 list_del(&mapping->list); 977 list_del(&mapping->list);
979 spin_unlock(&vm->freed_lock); 978
980 r = amdgpu_vm_bo_split_mapping(adev, NULL, 0, vm, mapping, 979 r = amdgpu_vm_bo_split_mapping(adev, NULL, 0, vm, mapping,
981 0, NULL); 980 0, NULL);
982 kfree(mapping); 981 kfree(mapping);
983 if (r) 982 if (r)
984 return r; 983 return r;
985 984
986 spin_lock(&vm->freed_lock);
987 } 985 }
988 spin_unlock(&vm->freed_lock);
989
990 return 0; 986 return 0;
991 987
992} 988}
@@ -1252,13 +1248,10 @@ int amdgpu_vm_bo_unmap(struct amdgpu_device *adev,
1252 spin_unlock(&vm->it_lock); 1248 spin_unlock(&vm->it_lock);
1253 trace_amdgpu_vm_bo_unmap(bo_va, mapping); 1249 trace_amdgpu_vm_bo_unmap(bo_va, mapping);
1254 1250
1255 if (valid) { 1251 if (valid)
1256 spin_lock(&vm->freed_lock);
1257 list_add(&mapping->list, &vm->freed); 1252 list_add(&mapping->list, &vm->freed);
1258 spin_unlock(&vm->freed_lock); 1253 else
1259 } else {
1260 kfree(mapping); 1254 kfree(mapping);
1261 }
1262 1255
1263 return 0; 1256 return 0;
1264} 1257}
@@ -1291,9 +1284,7 @@ void amdgpu_vm_bo_rmv(struct amdgpu_device *adev,
1291 interval_tree_remove(&mapping->it, &vm->va); 1284 interval_tree_remove(&mapping->it, &vm->va);
1292 spin_unlock(&vm->it_lock); 1285 spin_unlock(&vm->it_lock);
1293 trace_amdgpu_vm_bo_unmap(bo_va, mapping); 1286 trace_amdgpu_vm_bo_unmap(bo_va, mapping);
1294 spin_lock(&vm->freed_lock);
1295 list_add(&mapping->list, &vm->freed); 1287 list_add(&mapping->list, &vm->freed);
1296 spin_unlock(&vm->freed_lock);
1297 } 1288 }
1298 list_for_each_entry_safe(mapping, next, &bo_va->invalids, list) { 1289 list_for_each_entry_safe(mapping, next, &bo_va->invalids, list) {
1299 list_del(&mapping->list); 1290 list_del(&mapping->list);
@@ -1357,7 +1348,6 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm)
1357 INIT_LIST_HEAD(&vm->cleared); 1348 INIT_LIST_HEAD(&vm->cleared);
1358 INIT_LIST_HEAD(&vm->freed); 1349 INIT_LIST_HEAD(&vm->freed);
1359 spin_lock_init(&vm->it_lock); 1350 spin_lock_init(&vm->it_lock);
1360 spin_lock_init(&vm->freed_lock);
1361 pd_size = amdgpu_vm_directory_size(adev); 1351 pd_size = amdgpu_vm_directory_size(adev);
1362 pd_entries = amdgpu_vm_num_pdes(adev); 1352 pd_entries = amdgpu_vm_num_pdes(adev);
1363 1353