Lines Matching refs:cctx
41 nvkm_chan_cctx_bind(struct nvkm_chan *chan, struct nvkm_engn *engn, struct nvkm_cctx *cctx)
50 CHAN_TRACE(chan, "%sbind cctx %d[%s]", cctx ? "" : "un", engn->id, engine->subdev.name);
62 engn->func->bind(engn, cctx, chan);
74 struct nvkm_cctx *cctx = *pcctx;
76 if (cctx) {
77 struct nvkm_engn *engn = cctx->vctx->ectx->engn;
79 if (refcount_dec_and_mutex_lock(&cctx->refs, &chan->cgrp->mutex)) {
80 CHAN_TRACE(chan, "dtor cctx %d[%s]", engn->id, engn->engine->subdev.name);
81 nvkm_cgrp_vctx_put(chan->cgrp, &cctx->vctx);
82 list_del(&cctx->head);
83 kfree(cctx);
97 struct nvkm_cctx *cctx;
102 cctx = nvkm_list_find(cctx, &chan->cctxs, head,
103 cctx->vctx->ectx->engn == engn && cctx->vctx->vmm == chan->vmm);
104 if (cctx) {
105 refcount_inc(&cctx->refs);
106 *pcctx = cctx;
119 CHAN_TRACE(chan, "ctor cctx %d[%s]", engn->id, engn->engine->subdev.name);
120 if (!(cctx = *pcctx = kzalloc(sizeof(*cctx), GFP_KERNEL))) {
126 cctx->vctx = vctx;
127 refcount_set(&cctx->refs, 1);
128 refcount_set(&cctx->uses, 0);
129 list_add_tail(&cctx->head, &chan->cctxs);