Lines Matching full:job
67 * DRM_NOUVEAU_EXEC ioctl is called to submit an exec job.
69 * A VM_BIND job can be executed either synchronously or asynchronously. If
70 * executed asynchronously, userspace may provide a list of syncobjs this job
72 * VM_BIND job finished execution. If executed synchronously the ioctl will
73 * block until the bind job is finished. For synchronous jobs the kernel will
82 * Since VM_BIND jobs update the GPU's VA space on job submit, EXEC jobs do have
89 nouveau_exec_job_submit(struct nouveau_job *job, in nouveau_exec_job_submit() argument
92 struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job); in nouveau_exec_job_submit()
93 struct nouveau_cli *cli = job->cli; in nouveau_exec_job_submit()
120 nouveau_exec_job_armed_submit(struct nouveau_job *job, in nouveau_exec_job_armed_submit() argument
123 drm_gpuvm_exec_resv_add_fence(vme, job->done_fence, in nouveau_exec_job_armed_submit()
124 job->resv_usage, job->resv_usage); in nouveau_exec_job_armed_submit()
129 nouveau_exec_job_run(struct nouveau_job *job) in nouveau_exec_job_run() argument
131 struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job); in nouveau_exec_job_run()
138 NV_PRINTK(err, job->cli, "nv50cal_space: %d\n", ret); in nouveau_exec_job_run()
154 NV_PRINTK(err, job->cli, "error fencing pushbuf: %d\n", ret); in nouveau_exec_job_run()
159 /* The fence was emitted successfully, set the job's fence pointer to in nouveau_exec_job_run()
160 * NULL in order to avoid freeing it up when the job is cleaned up. in nouveau_exec_job_run()
168 nouveau_exec_job_free(struct nouveau_job *job) in nouveau_exec_job_free() argument
170 struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job); in nouveau_exec_job_free()
172 nouveau_job_done(job); in nouveau_exec_job_free()
173 nouveau_job_free(job); in nouveau_exec_job_free()
181 nouveau_exec_job_timeout(struct nouveau_job *job) in nouveau_exec_job_timeout() argument
183 struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job); in nouveau_exec_job_timeout()
189 NV_PRINTK(warn, job->cli, "job timeout, channel %d killed!\n", in nouveau_exec_job_timeout()
207 struct nouveau_exec_job *job; in nouveau_exec_job_init() local
222 job = *pjob = kzalloc(sizeof(*job), GFP_KERNEL); in nouveau_exec_job_init()
223 if (!job) in nouveau_exec_job_init()
226 job->push.count = __args->push.count; in nouveau_exec_job_init()
228 job->push.s = kmemdup(__args->push.s, in nouveau_exec_job_init()
232 if (!job->push.s) { in nouveau_exec_job_init()
239 job->chan = __args->chan; in nouveau_exec_job_init()
243 args.credits = job->push.count + 1; in nouveau_exec_job_init()
254 ret = nouveau_job_init(&job->base, &args); in nouveau_exec_job_init()
261 kfree(job->push.s); in nouveau_exec_job_init()
263 kfree(job); in nouveau_exec_job_init()
272 struct nouveau_exec_job *job; in nouveau_exec() local
275 ret = nouveau_exec_job_init(&job, args); in nouveau_exec()
279 ret = nouveau_job_submit(&job->base); in nouveau_exec()
286 nouveau_job_fini(&job->base); in nouveau_exec()