|
@@ -493,29 +493,27 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
|
|
|
}
|
|
|
|
|
|
if (bo_va->it.start || bo_va->it.last) {
|
|
|
- spin_lock(&vm->status_lock);
|
|
|
- if (list_empty(&bo_va->vm_status)) {
|
|
|
- /* add a clone of the bo_va to clear the old address */
|
|
|
- struct radeon_bo_va *tmp;
|
|
|
- spin_unlock(&vm->status_lock);
|
|
|
- tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
|
|
|
- if (!tmp) {
|
|
|
- mutex_unlock(&vm->mutex);
|
|
|
- r = -ENOMEM;
|
|
|
- goto error_unreserve;
|
|
|
- }
|
|
|
- tmp->it.start = bo_va->it.start;
|
|
|
- tmp->it.last = bo_va->it.last;
|
|
|
- tmp->vm = vm;
|
|
|
- tmp->bo = radeon_bo_ref(bo_va->bo);
|
|
|
- spin_lock(&vm->status_lock);
|
|
|
- list_add(&tmp->vm_status, &vm->freed);
|
|
|
+ /* add a clone of the bo_va to clear the old address */
|
|
|
+ struct radeon_bo_va *tmp;
|
|
|
+ tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
|
|
|
+ if (!tmp) {
|
|
|
+ mutex_unlock(&vm->mutex);
|
|
|
+ r = -ENOMEM;
|
|
|
+ goto error_unreserve;
|
|
|
}
|
|
|
- spin_unlock(&vm->status_lock);
|
|
|
+ tmp->it.start = bo_va->it.start;
|
|
|
+ tmp->it.last = bo_va->it.last;
|
|
|
+ tmp->vm = vm;
|
|
|
+ tmp->bo = radeon_bo_ref(bo_va->bo);
|
|
|
|
|
|
interval_tree_remove(&bo_va->it, &vm->va);
|
|
|
bo_va->it.start = 0;
|
|
|
bo_va->it.last = 0;
|
|
|
+
|
|
|
+ spin_lock(&vm->status_lock);
|
|
|
+ list_del_init(&bo_va->vm_status);
|
|
|
+ list_add(&tmp->vm_status, &vm->freed);
|
|
|
+ spin_unlock(&vm->status_lock);
|
|
|
}
|
|
|
|
|
|
if (soffset || eoffset) {
|