Lines Matching defs:chan

114 nouveau_abi16_ntfy_fini(struct nouveau_abi16_chan *chan,
118 nvkm_mm_free(&chan->heap, &ntfy->node);
125 struct nouveau_abi16_chan *chan)
131 if (chan->chan && chan->ntfy)
132 nouveau_channel_idle(chan->chan);
135 list_for_each_entry_safe(ntfy, temp, &chan->notifiers, head) {
136 nouveau_abi16_ntfy_fini(chan, ntfy);
139 if (chan->ntfy) {
140 nouveau_vma_del(&chan->ntfy_vma);
141 nouveau_bo_unpin(chan->ntfy);
142 drm_gem_object_put(&chan->ntfy->bo.base);
145 if (chan->heap.block_size)
146 nvkm_mm_fini(&chan->heap);
149 if (chan->chan) {
150 nouveau_channel_idle(chan->chan);
151 nouveau_channel_del(&chan->chan);
154 list_del(&chan->head);
155 kfree(chan);
162 struct nouveau_abi16_chan *chan, *temp;
165 list_for_each_entry_safe(chan, temp, &abi16->channels, head) {
166 nouveau_abi16_chan_fini(abi16, chan);
254 struct nouveau_abi16_chan *chan;
295 chan = kzalloc(sizeof(*chan), GFP_KERNEL);
296 if (!chan)
299 INIT_LIST_HEAD(&chan->notifiers);
300 list_add(&chan->head, &abi16->channels);
304 init->tt_ctxdma_handle, false, &chan->chan);
308 init->channel = chan->chan->chid;
314 if (chan->chan->push.buffer->bo.mem.mem_type == TTM_PL_VRAM)
322 init->subchan[1].handle = chan->chan->nvsw.handle;
329 0, 0, &chan->ntfy);
331 ret = nouveau_bo_pin(chan->ntfy, NOUVEAU_GEM_DOMAIN_GART,
337 ret = nouveau_vma_new(chan->ntfy, chan->chan->vmm,
338 &chan->ntfy_vma);
343 ret = drm_gem_handle_create(file_priv, &chan->ntfy->bo.base,
348 ret = nvkm_mm_init(&chan->heap, 0, 0, PAGE_SIZE, 1);
351 nouveau_abi16_chan_fini(abi16, chan);
358 struct nouveau_abi16_chan *chan;
360 list_for_each_entry(chan, &abi16->channels, head) {
361 if (chan->chan->chid == channel)
362 return chan;
374 struct nouveau_abi16_chan *chan;
394 if (!(chan = nouveau_abi16_chan(abi16, args->v0.token)))
396 args->v0.object = nvif_handle(&chan->chan->user);
411 struct nouveau_abi16_chan *chan;
416 chan = nouveau_abi16_chan(abi16, req->channel);
417 if (!chan)
419 nouveau_abi16_chan_fini(abi16, chan);
428 struct nouveau_abi16_chan *chan;
442 chan = nouveau_abi16_chan(abi16, init->channel);
443 if (!chan)
446 ret = nvif_object_sclass_get(&chan->chan->user, &sclass);
503 list_add(&ntfy->head, &chan->notifiers);
506 ret = nvif_object_ctor(&chan->chan->user, "abi16EngObj", init->handle,
511 nouveau_abi16_ntfy_fini(chan, ntfy);
521 struct nouveau_abi16_chan *chan;
536 chan = nouveau_abi16_chan(abi16, info->channel);
537 if (!chan)
544 list_add(&ntfy->head, &chan->notifiers);
546 ret = nvkm_mm_head(&chan->heap, 0, 1, info->size, info->size, 1,
556 args.start += chan->ntfy_vma->addr;
557 args.limit += chan->ntfy_vma->addr;
562 args.start += drm->agp.base + chan->ntfy->offset;
563 args.limit += drm->agp.base + chan->ntfy->offset;
567 args.start += chan->ntfy->offset;
568 args.limit += chan->ntfy->offset;
573 ret = nvif_object_ctor(&chan->chan->user, "abi16Ntfy", info->handle,
584 nouveau_abi16_ntfy_fini(chan, ntfy);
593 struct nouveau_abi16_chan *chan;
600 chan = nouveau_abi16_chan(abi16, fini->channel);
601 if (!chan)
605 nouveau_channel_idle(chan->chan);
607 list_for_each_entry(ntfy, &chan->notifiers, head) {
609 nouveau_abi16_ntfy_fini(chan, ntfy);