Commit ec0e5542 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/core: object.engine is always a nouveau_engine now



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 8000fb21
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -102,7 +102,7 @@ nouveau_engctx_create_(struct nouveau_object *parent,
	}

	if (client->vm)
		atomic_inc(&client->vm->engref[nv_engidx(engobj)]);
		atomic_inc(&client->vm->engref[nv_engidx(engine)]);
	list_add(&nv_engctx(engctx)->head, &engine->contexts);
	nv_engctx(engctx)->addr = ~0ULL;
	spin_unlock_irqrestore(&engine->lock, save);
@@ -112,8 +112,7 @@ nouveau_engctx_create_(struct nouveau_object *parent,
void
nouveau_engctx_destroy(struct nouveau_engctx *engctx)
{
	struct nouveau_object *engobj = nv_object(engctx)->engine;
	struct nouveau_engine *engine = nv_engine(engobj);
	struct nouveau_engine *engine = engctx->gpuobj.object.engine;
	struct nouveau_client *client = nouveau_client(engctx);
	unsigned long save;

@@ -123,7 +122,7 @@ nouveau_engctx_destroy(struct nouveau_engctx *engctx)
	spin_unlock_irqrestore(&engine->lock, save);

	if (client->vm)
		atomic_dec(&client->vm->engref[nv_engidx(engobj)]);
		atomic_dec(&client->vm->engref[nv_engidx(engine)]);

	if (engctx->gpuobj.size)
		nouveau_gpuobj_destroy(&engctx->gpuobj);
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ nouveau_engine_create_(struct nouveau_object *parent,

	if (parent) {
		struct nouveau_device *device = nv_device(parent);
		int engidx = nv_engidx(nv_object(engine));
		int engidx = nv_engidx(engine);

		if (device->disable_mask & (1ULL << engidx)) {
			if (!nouveau_boolopt(device->cfgopt, iname, false)) {
+2 −2
Original line number Diff line number Diff line
@@ -229,7 +229,7 @@ nouveau_gpuobj_new(struct nouveau_object *parent, struct nouveau_object *pargpu,
	};

	if (!nv_iclass(engine, NV_SUBDEV_CLASS))
		engine = engine->engine;
		engine = &engine->engine->subdev.object;
	BUG_ON(engine == NULL);

	return nouveau_object_ctor(parent, engine, &_nouveau_gpuobj_oclass,
@@ -310,7 +310,7 @@ nouveau_gpuobj_dup(struct nouveau_object *parent, struct nouveau_gpuobj *base,
	struct nouveau_gpuobj *gpuobj;
	int ret;

	ret = nouveau_object_create(parent, parent->engine,
	ret = nouveau_object_create(parent, &parent->engine->subdev.object,
				   &nouveau_gpudup_oclass, 0, &gpuobj);
	*pgpuobj = gpuobj;
	if (ret)
+7 −7
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ nouveau_object_create_(struct nouveau_object *parent,
		return -ENOMEM;

	nouveau_object_ref(parent, &object->parent);
	nouveau_object_ref(engine, &object->engine);
	nouveau_object_ref(engine, (struct nouveau_object **)&object->engine);
	object->oclass = oclass;
	object->oclass->handle |= pclass;
	atomic_set(&object->refcount, 1);
@@ -77,7 +77,7 @@ nouveau_object_destroy(struct nouveau_object *object)
	list_del(&object->list);
	spin_unlock(&_objlist_lock);
#endif
	nouveau_object_ref(NULL, &object->engine);
	nouveau_object_ref(NULL, (struct nouveau_object **)&object->engine);
	nouveau_object_ref(NULL, &object->parent);
	kfree(object);
}
@@ -182,7 +182,7 @@ nouveau_object_inc(struct nouveau_object *object)

	if (object->engine) {
		mutex_lock(&nv_subdev(object->engine)->mutex);
		ret = nouveau_object_inc(object->engine);
		ret = nouveau_object_inc(&object->engine->subdev.object);
		mutex_unlock(&nv_subdev(object->engine)->mutex);
		if (ret) {
			nv_error(object, "engine failed, %d\n", ret);
@@ -203,7 +203,7 @@ nouveau_object_inc(struct nouveau_object *object)
fail_self:
	if (object->engine) {
		mutex_lock(&nv_subdev(object->engine)->mutex);
		nouveau_object_dec(object->engine, false);
		nouveau_object_dec(&object->engine->subdev.object, false);
		mutex_unlock(&nv_subdev(object->engine)->mutex);
	}
fail_engine:
@@ -228,7 +228,7 @@ nouveau_object_decf(struct nouveau_object *object)

	if (object->engine) {
		mutex_lock(&nv_subdev(object->engine)->mutex);
		nouveau_object_dec(object->engine, false);
		nouveau_object_dec(&object->engine->subdev.object, false);
		mutex_unlock(&nv_subdev(object->engine)->mutex);
	}

@@ -255,7 +255,7 @@ nouveau_object_decs(struct nouveau_object *object)

	if (object->engine) {
		mutex_lock(&nv_subdev(object->engine)->mutex);
		ret = nouveau_object_dec(object->engine, true);
		ret = nouveau_object_dec(&object->engine->subdev.object, true);
		mutex_unlock(&nv_subdev(object->engine)->mutex);
		if (ret) {
			nv_warn(object, "engine failed suspend, %d\n", ret);
@@ -277,7 +277,7 @@ nouveau_object_decs(struct nouveau_object *object)
fail_parent:
	if (object->engine) {
		mutex_lock(&nv_subdev(object->engine)->mutex);
		rret = nouveau_object_inc(object->engine);
		rret = nouveau_object_inc(&object->engine->subdev.object);
		mutex_unlock(&nv_subdev(object->engine)->mutex);
		if (rret)
			nv_fatal(object, "engine failed to reinit, %d\n", rret);
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ nouveau_parent_sclass(struct nouveau_object *parent, u16 handle,
	sclass = nv_parent(parent)->sclass;
	while (sclass) {
		if ((sclass->oclass->handle & 0xffff) == handle) {
			*pengine = parent->engine;
			*pengine = &parent->engine->subdev.object;
			*poclass = sclass->oclass;
			return 0;
		}
Loading