Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e98c1b0d authored by Chunming Zhou's avatar Chunming Zhou Committed by Alex Deucher
Browse files

drm/amdgpu: remove vm->mutex

parent 69b576a1
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -929,8 +929,6 @@ struct amdgpu_vm_id {
};

struct amdgpu_vm {
	struct mutex		mutex;

	struct rb_root		va;

	/* protecting invalidated */
+0 −4
Original line number Diff line number Diff line
@@ -784,8 +784,6 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
{
	struct amdgpu_device *adev = dev->dev_private;
	union drm_amdgpu_cs *cs = data;
	struct amdgpu_fpriv *fpriv = filp->driver_priv;
	struct amdgpu_vm *vm = &fpriv->vm;
	struct amdgpu_cs_parser parser = {};
	bool reserved_buffers = false;
	int i, r;
@@ -803,7 +801,6 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
		r = amdgpu_cs_handle_lockup(adev, r);
		return r;
	}
	mutex_lock(&vm->mutex);
	r = amdgpu_cs_parser_relocs(&parser);
	if (r == -ENOMEM)
		DRM_ERROR("Not enough memory for command submission!\n");
@@ -888,7 +885,6 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)

out:
	amdgpu_cs_parser_fini(&parser, r, reserved_buffers);
	mutex_unlock(&vm->mutex);
	r = amdgpu_cs_handle_lockup(adev, r);
	return r;
}
+2 −12
Original line number Diff line number Diff line
@@ -115,12 +115,9 @@ int amdgpu_gem_object_open(struct drm_gem_object *obj, struct drm_file *file_pri
	struct amdgpu_vm *vm = &fpriv->vm;
	struct amdgpu_bo_va *bo_va;
	int r;
	mutex_lock(&vm->mutex);
	r = amdgpu_bo_reserve(rbo, false);
	if (r) {
		mutex_unlock(&vm->mutex);
	if (r)
		return r;
	}

	bo_va = amdgpu_vm_bo_find(vm, rbo);
	if (!bo_va) {
@@ -129,7 +126,6 @@ int amdgpu_gem_object_open(struct drm_gem_object *obj, struct drm_file *file_pri
		++bo_va->ref_count;
	}
	amdgpu_bo_unreserve(rbo);
	mutex_unlock(&vm->mutex);
	return 0;
}

@@ -142,10 +138,8 @@ void amdgpu_gem_object_close(struct drm_gem_object *obj,
	struct amdgpu_vm *vm = &fpriv->vm;
	struct amdgpu_bo_va *bo_va;
	int r;
	mutex_lock(&vm->mutex);
	r = amdgpu_bo_reserve(rbo, true);
	if (r) {
		mutex_unlock(&vm->mutex);
		dev_err(adev->dev, "leaking bo va because "
			"we fail to reserve bo (%d)\n", r);
		return;
@@ -157,7 +151,6 @@ void amdgpu_gem_object_close(struct drm_gem_object *obj,
		}
	}
	amdgpu_bo_unreserve(rbo);
	mutex_unlock(&vm->mutex);
}

static int amdgpu_gem_handle_lockup(struct amdgpu_device *adev, int r)
@@ -553,7 +546,6 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
	gobj = drm_gem_object_lookup(dev, filp, args->handle);
	if (gobj == NULL)
		return -ENOENT;
	mutex_lock(&fpriv->vm.mutex);
	rbo = gem_to_amdgpu_bo(gobj);
	INIT_LIST_HEAD(&list);
	INIT_LIST_HEAD(&duplicates);
@@ -568,7 +560,6 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
	}
	r = ttm_eu_reserve_buffers(&ticket, &list, true, &duplicates);
	if (r) {
		mutex_unlock(&fpriv->vm.mutex);
		drm_gem_object_unreference_unlocked(gobj);
		return r;
	}
@@ -577,7 +568,6 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
	if (!bo_va) {
		ttm_eu_backoff_reservation(&ticket, &list);
		drm_gem_object_unreference_unlocked(gobj);
		mutex_unlock(&fpriv->vm.mutex);
		return -ENOENT;
	}

@@ -602,7 +592,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
	ttm_eu_backoff_reservation(&ticket, &list);
	if (!r && !(args->flags & AMDGPU_VM_DELAY_UPDATE))
		amdgpu_gem_va_update_vm(adev, bo_va, args->operation);
	mutex_unlock(&fpriv->vm.mutex);

	drm_gem_object_unreference_unlocked(gobj);
	return r;
}
+0 −2
Original line number Diff line number Diff line
@@ -1241,7 +1241,6 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm)
		vm->ids[i].id = 0;
		vm->ids[i].flushed_updates = NULL;
	}
	mutex_init(&vm->mutex);
	vm->va = RB_ROOT;
	spin_lock_init(&vm->status_lock);
	INIT_LIST_HEAD(&vm->invalidated);
@@ -1325,7 +1324,6 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)
		fence_put(vm->ids[i].flushed_updates);
	}

	mutex_destroy(&vm->mutex);
}

/**