Lines Matching defs:push
748 struct drm_nouveau_gem_pushbuf_push *push;
783 NV_PRINTK(err, cli, "pushbuf push count exceeds limit: %d max %d\n",
800 push = u_memcpya(req->push, req->nr_push, sizeof(*push));
801 if (IS_ERR(push))
802 return nouveau_abi16_put(abi16, PTR_ERR(push));
806 u_free(push);
810 /* Ensure all push buffers are on validate list */
812 if (push[i].bo_index >= req->nr_buffers) {
813 NV_PRINTK(err, cli, "push %d buffer not in list\n", i);
858 bo[push[i].bo_index].user_priv;
859 u64 addr = vma->addr + push[i].offset;
860 u32 length = push[i].length & ~NOUVEAU_GEM_PUSHBUF_NO_PREFETCH;
861 bool no_prefetch = push[i].length & NOUVEAU_GEM_PUSHBUF_NO_PREFETCH;
867 ret = PUSH_WAIT(chan->chan.push, req->nr_push * 2);
875 bo[push[i].bo_index].user_priv;
877 PUSH_CALL(chan->chan.push, nvbo->offset + push[i].offset);
878 PUSH_DATA(chan->chan.push, 0);
881 ret = PUSH_WAIT(chan->chan.push, req->nr_push * (2 + NOUVEAU_DMA_SKIPS));
889 bo[push[i].bo_index].user_priv;
892 cmd = chan->push.addr + ((chan->dma.cur + 2) << 2);
906 nouveau_bo_wr32(nvbo, (push[i].offset +
907 push[i].length - 8) / 4, cmd);
910 PUSH_JUMP(chan->chan.push, nvbo->offset + push[i].offset);
911 PUSH_DATA(chan->chan.push, 0);
913 PUSH_DATA(chan->chan.push, 0);
954 u_free(push);
966 (chan->push.addr + ((chan->dma.cur + 2) << 2));