| /linux/drivers/gpu/drm/nouveau/nvkm/engine/fifo/ |
| H A D | runl.c | 46 chan = nvkm_runl_chan_get_chid(engn->runl, id, pirqflags); in nvkm_engn_cgrp_get() 50 cgrp = nvkm_runl_cgrp_get_cgid(engn->runl, id, pirqflags); in nvkm_engn_cgrp_get() 58 nvkm_runl_rc(struct nvkm_runl *runl) in nvkm_runl_rc() argument 60 struct nvkm_fifo *fifo = runl->fifo; in nvkm_runl_rc() 69 BUG_ON(!mutex_is_locked(&runl->mutex)); in nvkm_runl_rc() 70 rc = atomic_xchg(&runl->rc_pending, 0); in nvkm_runl_rc() 75 nvkm_runl_foreach_cgrp_safe(cgrp, gtmp, runl) { in nvkm_runl_rc() 87 if (runl->func->preempt) { in nvkm_runl_rc() 88 for (i = 0; i < runl->runq_nr; i++) { in nvkm_runl_rc() 89 struct nvkm_runq *runq = runl->runq[i]; in nvkm_runl_rc() [all …]
|
| H A D | ga100.c | 39 return (chan->cgrp->runl->doorbell << 16) | chan->id; in ga100_chan_doorbell_handle() 45 struct nvkm_runl *runl = chan->cgrp->runl; in ga100_chan_stop() local 47 nvkm_wr32(runl->fifo->engine.subdev.device, runl->chan + (chan->id * 4), 0x00000003); in ga100_chan_stop() 53 struct nvkm_runl *runl = chan->cgrp->runl; in ga100_chan_start() local 54 struct nvkm_device *device = runl->fifo->engine.subdev.device; in ga100_chan_start() 57 nvkm_wr32(device, runl->chan + (chan->id * 4), 0x00000002); in ga100_chan_start() 58 nvkm_wr32(device, runl->addr + 0x0090, (gfid << 16) | chan->id); /* INTERNAL_DOORBELL. */ in ga100_chan_start() 64 struct nvkm_runl *runl = chan->cgrp->runl; in ga100_chan_unbind() local 66 nvkm_wr32(runl->fifo->engine.subdev.device, runl->chan + (chan->id * 4), 0xffffffff); in ga100_chan_unbind() 84 nvkm_wo32(chan->inst, 0x0f8, 0x80000000 | chan->cgrp->runl->nonstall.vector); in ga100_chan_ramfc_write() [all …]
|
| H A D | chan.c | 44 struct nvkm_runl *runl = cgrp->runl; in nvkm_chan_cctx_bind() local 56 nvkm_runl_block(runl); in nvkm_chan_cctx_bind() 66 nvkm_runl_allow(runl); in nvkm_chan_cctx_bind() 138 struct nvkm_runl *runl = chan->cgrp->runl; in nvkm_chan_preempt_locked() local 145 return nvkm_runl_preempt_wait(runl); in nvkm_chan_preempt_locked() 156 mutex_lock(&chan->cgrp->runl->mutex); in nvkm_chan_preempt() 158 mutex_unlock(&chan->cgrp->runl->mutex); in nvkm_chan_preempt() 166 struct nvkm_runl *runl = cgrp->runl; in nvkm_chan_remove_locked() local 173 runl->cgrp_nr--; in nvkm_chan_remove_locked() 176 runl->chan_nr--; in nvkm_chan_remove_locked() [all …]
|
| H A D | g98.c | 31 struct nvkm_runl *runl; in g98_fifo_runl_ctor() local 33 runl = nvkm_runl_new(fifo, 0, 0, 0); in g98_fifo_runl_ctor() 34 if (IS_ERR(runl)) in g98_fifo_runl_ctor() 35 return PTR_ERR(runl); in g98_fifo_runl_ctor() 37 nvkm_runl_add(runl, 0, fifo->func->engn_sw, NVKM_ENGINE_SW, 0); in g98_fifo_runl_ctor() 38 nvkm_runl_add(runl, 0, fifo->func->engn_sw, NVKM_ENGINE_DMAOBJ, 0); in g98_fifo_runl_ctor() 39 nvkm_runl_add(runl, 1, fifo->func->engn, NVKM_ENGINE_GR, 0); in g98_fifo_runl_ctor() 40 nvkm_runl_add(runl, 2, fifo->func->engn, NVKM_ENGINE_MSPPP, 0); in g98_fifo_runl_ctor() 41 nvkm_runl_add(runl, 3, fifo->func->engn, NVKM_ENGINE_CE, 0); in g98_fifo_runl_ctor() 42 nvkm_runl_add(runl, 4, fifo->func->engn, NVKM_ENGINE_MSPDEC, 0); in g98_fifo_runl_ctor() [all …]
|
| H A D | base.c | 41 struct nvkm_runl *runl; in nvkm_fifo_ctxsw_in_progress() local 44 nvkm_runl_foreach(runl, engine->subdev.device->fifo) { in nvkm_fifo_ctxsw_in_progress() 45 nvkm_runl_foreach_engn(engn, runl) { in nvkm_fifo_ctxsw_in_progress() 128 struct nvkm_runl *runl; in nvkm_fifo_fini() local 132 nvkm_runl_foreach(runl, fifo) in nvkm_fifo_fini() 133 nvkm_runl_fini(runl); in nvkm_fifo_fini() 143 struct nvkm_runl *runl; in nvkm_fifo_init() local 156 nvkm_runl_foreach(runl, fifo) { in nvkm_fifo_init() 157 if (runl->func->init) in nvkm_fifo_init() 158 runl->func->init(runl); in nvkm_fifo_init() [all …]
|
| H A D | runl.h | 25 struct nvkm_runl *runl; member 41 RUNL_PRINT((e)->runl, l, p, "%02d[%8s]:"f, (e)->id, (e)->engine->subdev.name, ##a) 120 #define nvkm_runl_find_engn(engn,runl,cond) nvkm_list_find(engn, &(runl)->engns, head, (cond)) argument 123 #define nvkm_runl_foreach(runl,fifo) list_for_each_entry((runl), &(fifo)->runls, head) argument 124 #define nvkm_runl_foreach_cond(runl,fifo,cond) nvkm_list_foreach(runl, &(fifo)->runls, head, (cond)) argument 125 #define nvkm_runl_foreach_engn(engn,runl) list_for_each_entry((engn), &(runl)->engns, head) argument 126 #define nvkm_runl_foreach_engn_cond(engn,runl,cond) \ argument 127 nvkm_list_foreach(engn, &(runl)->engns, head, (cond)) 128 #define nvkm_runl_foreach_cgrp(cgrp,runl) list_for_each_entry((cgrp), &(runl)->cgrps, head) argument 129 #define nvkm_runl_foreach_cgrp_safe(cgrp,gtmp,runl) \ argument [all …]
|
| H A D | g84.c | 37 struct nvkm_device *device = chan->cgrp->runl->fifo->engine.subdev.device; in g84_chan_bind() 45 struct nvkm_device *device = chan->cgrp->runl->fifo->engine.subdev.device; in g84_chan_ramfc_write() 108 struct nvkm_subdev *subdev = &chan->cgrp->runl->fifo->engine.subdev; in g84_ectx_bind() 192 struct nvkm_runl *runl; in g84_fifo_runl_ctor() local 194 runl = nvkm_runl_new(fifo, 0, 0, 0); in g84_fifo_runl_ctor() 195 if (IS_ERR(runl)) in g84_fifo_runl_ctor() 196 return PTR_ERR(runl); in g84_fifo_runl_ctor() 198 nvkm_runl_add(runl, 0, fifo->func->engn_sw, NVKM_ENGINE_SW, 0); in g84_fifo_runl_ctor() 199 nvkm_runl_add(runl, 0, fifo->func->engn_sw, NVKM_ENGINE_DMAOBJ, 0); in g84_fifo_runl_ctor() 200 nvkm_runl_add(runl, 1, fifo->func->engn, NVKM_ENGINE_GR, 0); in g84_fifo_runl_ctor() [all …]
|
| H A D | cgrp.c | 178 struct nvkm_runl *runl = cgrp->runl; in nvkm_cgrp_del() local 180 if (runl->cgid) in nvkm_cgrp_del() 181 nvkm_chid_put(runl->cgid, cgrp->id, &cgrp->lock); in nvkm_cgrp_del() 222 nvkm_cgrp_new(struct nvkm_runl *runl, const char *name, struct nvkm_vmm *vmm, bool hw, in nvkm_cgrp_new() argument 230 cgrp->func = runl->fifo->func->cgrp.func; in nvkm_cgrp_new() 232 cgrp->runl = runl; in nvkm_cgrp_new() 245 if (runl->cgid) { in nvkm_cgrp_new() 246 cgrp->id = nvkm_chid_get(runl->cgid, cgrp); in nvkm_cgrp_new() 248 RUNL_ERROR(runl, "!cgids"); in nvkm_cgrp_new()
|
| H A D | ucgrp.c | 42 return nvkm_uchan_new(cgrp->runl->fifo, cgrp, oclass, argv, argc, pobject); in nvkm_ucgrp_chan_new() 49 struct nvkm_fifo *fifo = cgrp->runl->fifo; in nvkm_ucgrp_sclass() 85 struct nvkm_runl *runl; in nvkm_ucgrp_new() local 98 runl = nvkm_runl_get(fifo, args->v0.runlist, 0); in nvkm_ucgrp_new() 99 if (!runl) in nvkm_ucgrp_new() 115 ret = nvkm_cgrp_new(runl, args->v0.name, vmm, true, &ucgrp->cgrp); in nvkm_ucgrp_new()
|
| H A D | uchan.c | 45 struct nvkm_runl *runl = chan->cgrp->runl; in nvkm_uchan_uevent() local 55 return nvkm_uevent_add(uevent, &runl->fifo->nonstall.event, runl->id, in nvkm_uchan_uevent() 58 return nvkm_uevent_add(uevent, &runl->chid->event, chan->id, in nvkm_uchan_uevent() 164 engn = nvkm_runl_find_engn(engn, cgrp->runl, engn->engine == oclass->engine); in nvkm_uchan_object_new() 210 nvkm_runl_foreach_engn(engn, chan->cgrp->runl) { in nvkm_uchan_sclass() 215 if (engn->runl->func->runqs) { in nvkm_uchan_sclass() 259 struct nvkm_device *device = chan->cgrp->runl->fifo->engine.subdev.device; in nvkm_uchan_map() 334 struct nvkm_runl *runl; in nvkm_uchan_new() local 350 runl = nvkm_runl_get(fifo, args->v0.runlist, 0); in nvkm_uchan_new() 351 if (!runl) in nvkm_uchan_new() [all …]
|
| H A D | cgrp.h | 34 struct nvkm_runl *runl; member 71 #define CGRP_PRCLI(c,l,p,f,a...) RUNL_PRINT((c)->runl, l, p, "%04x:[%s]"f, (c)->id, (c)->name, ##a) 72 #define CGRP_PRINT(c,l,p,f,a...) RUNL_PRINT((c)->runl, l, p, "%04x:"f, (c)->id, ##a)
|
| H A D | nv10.c | 39 struct nvkm_memory *ramfc = chan->cgrp->runl->fifo->engine.subdev.device->imem->ramfc; in nv10_chan_ramfc_write() 101 .runl = &nv04_runl,
|
| H A D | gk110.c | 63 nvkm_wr32(cgrp->runl->fifo->engine.subdev.device, 0x002634, 0x01000000 | cgrp->id); in gk110_cgrp_preempt() 119 .runl = &gk110_runl,
|
| H A D | nv17.c | 40 struct nvkm_memory *ramfc = chan->cgrp->runl->fifo->engine.subdev.device->imem->ramfc; in nv17_chan_ramfc_write() 130 .runl = &nv04_runl,
|
| H A D | gk20a.c | 39 .runl = &gk110_runl,
|
| H A D | ga102.c | 35 .runl = &ga100_runl,
|
| H A D | gm200.c | 53 .runl = &gm107_runl,
|
| H A D | gk208.c | 64 .runl = &gk110_runl,
|
| H A D | gp100.c | 126 .runl = &gp100_runl,
|
| H A D | gm107.c | 143 .runl = &gm107_runl,
|
| H A D | priv.h | 47 const struct nvkm_runl_func *runl; member
|
| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/ |
| H A D | fifo.c | 62 struct nvkm_fifo *fifo = chan->cgrp->runl->fifo; in r535_chan_ramfc_clear() 156 struct nvkm_fifo *fifo = chan->cgrp->runl->fifo; in r535_chan_ramfc_write() 169 nvkm_runl_foreach_engn(engn, chan->cgrp->runl) { in r535_chan_ramfc_write() 329 r535_runl_allow(struct nvkm_runl *runl, u32 engm) in r535_runl_allow() argument 334 r535_runl_block(struct nvkm_runl *runl, u32 engm) in r535_runl_block() argument 431 struct nvkm_runl *runl; in r535_fifo_ectx_size() local 441 nvkm_runl_foreach(runl, fifo) { in r535_fifo_ectx_size() 442 nvkm_runl_foreach_engn(engn, runl) { in r535_fifo_ectx_size() 463 struct nvkm_runl *runl; in r535_fifo_runl_ctor() local 484 runl = nvkm_runl_get(fifo, id, addr); in r535_fifo_runl_ctor() [all …]
|
| /linux/drivers/gpu/drm/nouveau/ |
| H A D | nouveau_chan.c | 522 kfree(drm->runl); in nouveau_channels_fini() 548 drm->runl = kzalloc_objs(*drm->runl, drm->runl_nr); in nouveau_channels_init() 549 if (!drm->runl) in nouveau_channels_init() 565 drm->runl[i].chan_nr = channels->data; in nouveau_channels_init() 566 drm->runl[i].chan_id_base = drm->chan_total; in nouveau_channels_init() 567 drm->runl[i].context_base = dma_fence_context_alloc(drm->runl[i].chan_nr); in nouveau_channels_init() 569 drm->chan_total += drm->runl[i].chan_nr; in nouveau_channels_init() 572 drm->runl[0].context_base = dma_fence_context_alloc(drm->chan_nr); in nouveau_channels_init() 574 drm->runl[i].context_base = drm->runl[0].context_base; in nouveau_channels_init()
|
| H A D | nv84_fence.c | 82 return chan->cli->drm->runl[chan->runlist].chan_id_base + chan->chid; in nv84_fence_chid()
|
| H A D | nouveau_fence.c | 183 fctx->context = drm->runl[chan->runlist].context_base + chan->chid; in nouveau_fence_context_new()
|