Lines Matching defs:job

28 		"%s: job submission failed: " fmt "\n", \
327 static int submit_get_syncpt(struct tegra_drm_context *context, struct host1x_job *job,
337 /* Syncpt ref will be dropped on job release */
344 job->syncpt = host1x_syncpt_get(sp);
345 job->syncpt_incrs = args->syncpt.increments;
350 static int submit_job_add_gather(struct host1x_job *job, struct tegra_drm_context *context,
370 SUBMIT_ERR(context, "too many total words in job");
381 SUBMIT_ERR(context, "job was rejected by firewall");
385 host1x_job_add_gather(job, &bo->base, cmd->words, *offset * 4);
399 struct host1x_job *job;
412 job = host1x_job_alloc(context->channel, args->num_cmds, 0, true);
413 if (!job) {
414 SUBMIT_ERR(context, "failed to allocate memory for job");
415 job = ERR_PTR(-ENOMEM);
419 err = submit_get_syncpt(context, job, syncpoints, args);
423 job->client = &context->client->base;
424 job->class = context->client->base.class;
425 job->serialize = true;
437 err = submit_job_add_gather(job, context, &cmd->gather_uptr, bo,
448 host1x_job_add_wait(job, cmd->wait_syncpt.id, cmd->wait_syncpt.value,
458 SUBMIT_ERR(context, "syncpoint ID in CMD_WAIT_SYNCPT_RELATIVE is not used by the job");
463 host1x_job_add_wait(job, cmd->wait_syncpt.id, cmd->wait_syncpt.value,
473 SUBMIT_ERR(context, "job must have at least one gather");
481 host1x_job_put(job);
482 job = ERR_PTR(err);
487 return job;
490 static void release_job(struct host1x_job *job)
492 struct tegra_drm_client *client = container_of(job->client, struct tegra_drm_client, base);
493 struct tegra_drm_submit_data *job_data = job->user_data;
496 if (job->memory_context)
497 host1x_memory_context_put(job->memory_context);
517 struct host1x_job *job;
565 SUBMIT_ERR(context, "failed to allocate memory for job data");
576 job = submit_create_job(context, bo, args, job_data, &fpriv->syncpoints);
577 if (IS_ERR(job)) {
578 err = PTR_ERR(job);
583 err = host1x_job_pin(job, context->client->base.dev);
585 SUBMIT_ERR(context, "failed to pin job: %d", err);
591 context->client, &job->engine_streamid_offset);
608 job->memory_context = context->memory_context;
609 host1x_memory_context_get(job->memory_context);
617 &job->engine_fallback_streamid))
618 job->engine_fallback_streamid = TEGRA_STREAM_ID_BYPASS;
628 job->user_data = job_data;
629 job->release = release_job;
630 job->timeout = 10000;
633 * job_data is now part of job reference counting, so don't release
638 /* Submit job to hardware. */
639 err = host1x_job_submit(job);
641 SUBMIT_ERR(context, "host1x job submission failed: %d", err);
646 args->syncpt.value = job->syncpt_end;
649 struct dma_fence *fence = host1x_fence_create(job->syncpt, job->syncpt_end, true);
661 if (job->memory_context)
662 host1x_memory_context_put(job->memory_context);
664 host1x_job_unpin(job);
666 host1x_job_put(job);