Lines Matching full:fifo
44 nvkm_runl_foreach(runl, engine->subdev.device->fifo) { in nvkm_fifo_ctxsw_in_progress()
55 nvkm_fifo_pause(struct nvkm_fifo *fifo, unsigned long *flags) in nvkm_fifo_pause() argument
57 return fifo->func->pause(fifo, flags); in nvkm_fifo_pause()
61 nvkm_fifo_start(struct nvkm_fifo *fifo, unsigned long *flags) in nvkm_fifo_start() argument
63 return fifo->func->start(fifo, flags); in nvkm_fifo_start()
67 nvkm_fifo_fault(struct nvkm_fifo *fifo, struct nvkm_fault_data *info) in nvkm_fifo_fault() argument
69 return fifo->func->mmu_fault->recover(fifo, info); in nvkm_fifo_fault()
76 struct nvkm_fifo *fifo = nvkm_fifo(oclass->engine); in nvkm_fifo_class_new() local
78 if (oclass->engn == &fifo->func->cgrp.user) in nvkm_fifo_class_new()
79 return nvkm_ucgrp_new(fifo, oclass, argv, argc, pobject); in nvkm_fifo_class_new()
81 if (oclass->engn == &fifo->func->chan.user) in nvkm_fifo_class_new()
82 return nvkm_uchan_new(fifo, NULL, oclass, argv, argc, pobject); in nvkm_fifo_class_new()
96 struct nvkm_fifo *fifo = nvkm_fifo(oclass->engine); in nvkm_fifo_class_get() local
97 const struct nvkm_fifo_func_cgrp *cgrp = &fifo->func->cgrp; in nvkm_fifo_class_get()
98 const struct nvkm_fifo_func_chan *chan = &fifo->func->chan; in nvkm_fifo_class_get()
105 oclass->engn = &fifo->func->cgrp.user; in nvkm_fifo_class_get()
115 oclass->engn = &fifo->func->chan.user; in nvkm_fifo_class_get()
127 struct nvkm_fifo *fifo = nvkm_fifo(engine); in nvkm_fifo_fini() local
130 nvkm_inth_block(&fifo->engine.subdev.inth); in nvkm_fifo_fini()
132 nvkm_runl_foreach(runl, fifo) in nvkm_fifo_fini()
141 struct nvkm_fifo *fifo = nvkm_fifo(engine); in nvkm_fifo_init() local
146 if (fifo->func->init_pbdmas) { in nvkm_fifo_init()
147 nvkm_runq_foreach(runq, fifo) in nvkm_fifo_init()
150 fifo->func->init_pbdmas(fifo, mask); in nvkm_fifo_init()
152 nvkm_runq_foreach(runq, fifo) in nvkm_fifo_init()
156 nvkm_runl_foreach(runl, fifo) { in nvkm_fifo_init()
161 if (fifo->func->init) in nvkm_fifo_init()
162 fifo->func->init(fifo); in nvkm_fifo_init()
164 nvkm_inth_allow(&fifo->engine.subdev.inth); in nvkm_fifo_init()
171 struct nvkm_fifo *fifo = nvkm_fifo(engine); in nvkm_fifo_info() local
176 ret = nvkm_subdev_oneinit(&fifo->engine.subdev); in nvkm_fifo_info()
181 case NV_DEVICE_HOST_CHANNELS: *data = fifo->chid ? fifo->chid->nr : 0; return 0; in nvkm_fifo_info()
184 nvkm_runl_foreach(runl, fifo) in nvkm_fifo_info()
188 runl = nvkm_runl_get(fifo, *data, 0); in nvkm_fifo_info()
223 if (!fifo->chid) { in nvkm_fifo_info()
224 runl = nvkm_runl_get(fifo, *data, 0); in nvkm_fifo_info()
243 struct nvkm_fifo *fifo = nvkm_fifo(engine); in nvkm_fifo_oneinit() local
249 if (fifo->func->chid_nr) { in nvkm_fifo_oneinit()
250 ret = fifo->func->chid_ctor(fifo, fifo->func->chid_nr(fifo)); in nvkm_fifo_oneinit()
256 if (fifo->func->runq_nr) { in nvkm_fifo_oneinit()
257 for (nr = fifo->func->runq_nr(fifo), i = 0; i < nr; i++) { in nvkm_fifo_oneinit()
258 if (!nvkm_runq_new(fifo, i)) in nvkm_fifo_oneinit()
264 ret = fifo->func->runl_ctor(fifo); in nvkm_fifo_oneinit()
268 nvkm_runl_foreach(runl, fifo) { in nvkm_fifo_oneinit()
276 if (fifo->func->intr) { in nvkm_fifo_oneinit()
278 subdev, fifo->func->intr, &subdev->inth); in nvkm_fifo_oneinit()
286 if (fifo->func->nonstall) { in nvkm_fifo_oneinit()
287 if (fifo->func->nonstall_ctor) { in nvkm_fifo_oneinit()
288 ret = fifo->func->nonstall_ctor(fifo); in nvkm_fifo_oneinit()
297 ret = nvkm_event_init(fifo->func->nonstall, &fifo->engine.subdev, 1, ret, in nvkm_fifo_oneinit()
298 &fifo->nonstall.event); in nvkm_fifo_oneinit()
304 if (fifo->func->chan.func->userd->bar == 1) { in nvkm_fifo_oneinit()
307 ret = nvkm_memory_new(device, NVKM_MEM_TARGET_INST, fifo->chid->nr * in nvkm_fifo_oneinit()
308 fifo->func->chan.func->userd->size, 0, true, in nvkm_fifo_oneinit()
309 &fifo->userd.mem); in nvkm_fifo_oneinit()
313 ret = nvkm_vmm_get(bar1, 12, nvkm_memory_size(fifo->userd.mem), &fifo->userd.bar1); in nvkm_fifo_oneinit()
317 ret = nvkm_memory_map(fifo->userd.mem, 0, bar1, fifo->userd.bar1, NULL, 0); in nvkm_fifo_oneinit()
334 struct nvkm_fifo *fifo = nvkm_fifo(engine); in nvkm_fifo_dtor() local
338 if (fifo->userd.bar1) in nvkm_fifo_dtor()
339 nvkm_vmm_put(nvkm_bar_bar1_vmm(engine->subdev.device), &fifo->userd.bar1); in nvkm_fifo_dtor()
340 nvkm_memory_unref(&fifo->userd.mem); in nvkm_fifo_dtor()
342 list_for_each_entry_safe(runl, runt, &fifo->runls, head) in nvkm_fifo_dtor()
344 list_for_each_entry_safe(runq, rtmp, &fifo->runqs, head) in nvkm_fifo_dtor()
347 nvkm_chid_unref(&fifo->cgid); in nvkm_fifo_dtor()
348 nvkm_chid_unref(&fifo->chid); in nvkm_fifo_dtor()
350 nvkm_event_fini(&fifo->nonstall.event); in nvkm_fifo_dtor()
351 mutex_destroy(&fifo->mutex); in nvkm_fifo_dtor()
352 return fifo; in nvkm_fifo_dtor()
370 struct nvkm_fifo *fifo; in nvkm_fifo_new_() local
372 if (!(fifo = *pfifo = kzalloc(sizeof(*fifo), GFP_KERNEL))) in nvkm_fifo_new_()
375 fifo->func = func; in nvkm_fifo_new_()
376 INIT_LIST_HEAD(&fifo->runqs); in nvkm_fifo_new_()
377 INIT_LIST_HEAD(&fifo->runls); in nvkm_fifo_new_()
382 fifo->timeout.chan_msec = 10000; in nvkm_fifo_new_()
383 spin_lock_init(&fifo->lock); in nvkm_fifo_new_()
384 mutex_init(&fifo->mutex); in nvkm_fifo_new_()
386 return nvkm_engine_ctor(&nvkm_fifo, device, type, inst, true, &fifo->engine); in nvkm_fifo_new_()