Lines Matching defs:chan

115 nouveau_abi16_ntfy_fini(struct nouveau_abi16_chan *chan,
119 nvkm_mm_free(&chan->heap, &ntfy->node);
126 struct nouveau_abi16_chan *chan)
139 nouveau_sched_entity_fini(&chan->sched_entity);
142 if (chan->chan)
143 nouveau_channel_idle(chan->chan);
146 list_for_each_entry_safe(ntfy, temp, &chan->notifiers, head) {
147 nouveau_abi16_ntfy_fini(chan, ntfy);
150 if (chan->ntfy) {
151 nouveau_vma_del(&chan->ntfy_vma);
152 nouveau_bo_unpin(chan->ntfy);
153 drm_gem_object_put(&chan->ntfy->bo.base);
156 if (chan->heap.block_size)
157 nvkm_mm_fini(&chan->heap);
160 if (chan->chan) {
161 nvif_object_dtor(&chan->ce);
162 nouveau_channel_del(&chan->chan);
165 list_del(&chan->head);
166 kfree(chan);
173 struct nouveau_abi16_chan *chan, *temp;
176 list_for_each_entry_safe(chan, temp, &abi16->channels, head) {
177 nouveau_abi16_chan_fini(abi16, chan);
286 struct nouveau_abi16_chan *chan;
334 chan = kzalloc(sizeof(*chan), GFP_KERNEL);
335 if (!chan)
338 INIT_LIST_HEAD(&chan->notifiers);
339 list_add(&chan->head, &abi16->channels);
343 init->tt_ctxdma_handle, &chan->chan);
347 ret = nouveau_sched_entity_init(&chan->sched_entity, &drm->sched,
352 init->channel = chan->chan->chid;
358 if (chan->chan->push.buffer->bo.resource->mem_type == TTM_PL_VRAM)
366 init->subchan[1].handle = chan->chan->nvsw.handle;
381 ret = nvif_object_ctor(&chan->chan->user, "abi16CeWar", 0, VOLTA_DMA_COPY_A,
382 NULL, 0, &chan->ce);
387 ret = nvif_object_ctor(&chan->chan->user, "abi16CeWar", 0, TURING_DMA_COPY_A,
388 NULL, 0, &chan->ce);
398 0, 0, &chan->ntfy);
400 ret = nouveau_bo_pin(chan->ntfy, NOUVEAU_GEM_DOMAIN_GART,
406 ret = nouveau_vma_new(chan->ntfy, chan->chan->vmm,
407 &chan->ntfy_vma);
412 ret = drm_gem_handle_create(file_priv, &chan->ntfy->bo.base,
417 ret = nvkm_mm_init(&chan->heap, 0, 0, PAGE_SIZE, 1);
420 nouveau_abi16_chan_fini(abi16, chan);
427 struct nouveau_abi16_chan *chan;
429 list_for_each_entry(chan, &abi16->channels, head) {
430 if (chan->chan->chid == channel)
431 return chan;
443 struct nouveau_abi16_chan *chan;
463 if (!(chan = nouveau_abi16_chan(abi16, args->v0.token)))
465 args->v0.object = nvif_handle(&chan->chan->user);
480 struct nouveau_abi16_chan *chan;
485 chan = nouveau_abi16_chan(abi16, req->channel);
486 if (!chan)
488 nouveau_abi16_chan_fini(abi16, chan);
497 struct nouveau_abi16_chan *chan;
511 chan = nouveau_abi16_chan(abi16, init->channel);
512 if (!chan)
515 ret = nvif_object_sclass_get(&chan->chan->user, &sclass);
572 list_add(&ntfy->head, &chan->notifiers);
575 ret = nvif_object_ctor(&chan->chan->user, "abi16EngObj", init->handle,
580 nouveau_abi16_ntfy_fini(chan, ntfy);
590 struct nouveau_abi16_chan *chan;
605 chan = nouveau_abi16_chan(abi16, info->channel);
606 if (!chan)
613 list_add(&ntfy->head, &chan->notifiers);
615 ret = nvkm_mm_head(&chan->heap, 0, 1, info->size, info->size, 1,
625 args.start += chan->ntfy_vma->addr;
626 args.limit += chan->ntfy_vma->addr;
631 args.start += drm->agp.base + chan->ntfy->offset;
632 args.limit += drm->agp.base + chan->ntfy->offset;
636 args.start += chan->ntfy->offset;
637 args.limit += chan->ntfy->offset;
641 ret = nvif_object_ctor(&chan->chan->user, "abi16Ntfy", info->handle,
651 nouveau_abi16_ntfy_fini(chan, ntfy);
660 struct nouveau_abi16_chan *chan;
667 chan = nouveau_abi16_chan(abi16, fini->channel);
668 if (!chan)
672 nouveau_channel_idle(chan->chan);
674 list_for_each_entry(ntfy, &chan->notifiers, head) {
676 nouveau_abi16_ntfy_fini(chan, ntfy);