Lines Matching refs:vctx

95 	struct nvkm_vctx *vctx = *pvctx;  in nvkm_cgrp_vctx_put()  local
97 if (vctx) { in nvkm_cgrp_vctx_put()
98 struct nvkm_engn *engn = vctx->ectx->engn; in nvkm_cgrp_vctx_put()
100 if (refcount_dec_and_test(&vctx->refs)) { in nvkm_cgrp_vctx_put()
102 nvkm_vmm_put(vctx->vmm, &vctx->vma); in nvkm_cgrp_vctx_put()
103 nvkm_gpuobj_del(&vctx->inst); in nvkm_cgrp_vctx_put()
105 nvkm_cgrp_ectx_put(cgrp, &vctx->ectx); in nvkm_cgrp_vctx_put()
106 if (vctx->vmm) { in nvkm_cgrp_vctx_put()
107 atomic_dec(&vctx->vmm->engref[engn->engine->subdev.type]); in nvkm_cgrp_vctx_put()
108 nvkm_vmm_unref(&vctx->vmm); in nvkm_cgrp_vctx_put()
110 list_del(&vctx->head); in nvkm_cgrp_vctx_put()
111 kfree(vctx); in nvkm_cgrp_vctx_put()
123 struct nvkm_vctx *vctx; in nvkm_cgrp_vctx_get() local
127 vctx = nvkm_list_find(vctx, &cgrp->vctxs, head, in nvkm_cgrp_vctx_get()
128 vctx->ectx->engn == engn && vctx->vmm == chan->vmm); in nvkm_cgrp_vctx_get()
129 if (vctx) { in nvkm_cgrp_vctx_get()
130 refcount_inc(&vctx->refs); in nvkm_cgrp_vctx_get()
131 *pvctx = vctx; in nvkm_cgrp_vctx_get()
144 if (!(vctx = *pvctx = kzalloc(sizeof(*vctx), GFP_KERNEL))) { in nvkm_cgrp_vctx_get()
149 vctx->ectx = ectx; in nvkm_cgrp_vctx_get()
150 vctx->vmm = nvkm_vmm_ref(chan->vmm); in nvkm_cgrp_vctx_get()
151 refcount_set(&vctx->refs, 1); in nvkm_cgrp_vctx_get()
152 list_add_tail(&vctx->head, &cgrp->vctxs); in nvkm_cgrp_vctx_get()
155 if (vctx->vmm) in nvkm_cgrp_vctx_get()
156 atomic_inc(&vctx->vmm->engref[engn->engine->subdev.type]); in nvkm_cgrp_vctx_get()
160 ret = nvkm_object_bind(vctx->ectx->object, NULL, 0, &vctx->inst); in nvkm_cgrp_vctx_get()
162 ret = engn->func->ctor(engn, vctx); in nvkm_cgrp_vctx_get()