Lines Matching refs:job

327 static int submit_get_syncpt(struct tegra_drm_context *context, struct host1x_job *job,  in submit_get_syncpt()  argument
344 job->syncpt = host1x_syncpt_get(sp); in submit_get_syncpt()
345 job->syncpt_incrs = args->syncpt.increments; in submit_get_syncpt()
350 static int submit_job_add_gather(struct host1x_job *job, struct tegra_drm_context *context, in submit_job_add_gather() argument
385 host1x_job_add_gather(job, &bo->base, cmd->words, *offset * 4); in submit_job_add_gather()
399 struct host1x_job *job; in submit_create_job() local
412 job = host1x_job_alloc(context->channel, args->num_cmds, 0, true); in submit_create_job()
413 if (!job) { in submit_create_job()
415 job = ERR_PTR(-ENOMEM); in submit_create_job()
419 err = submit_get_syncpt(context, job, syncpoints, args); in submit_create_job()
423 job->client = &context->client->base; in submit_create_job()
424 job->class = context->client->base.class; in submit_create_job()
425 job->serialize = true; in submit_create_job()
437 err = submit_job_add_gather(job, context, &cmd->gather_uptr, bo, in submit_create_job()
448 host1x_job_add_wait(job, cmd->wait_syncpt.id, cmd->wait_syncpt.value, in submit_create_job()
463 host1x_job_add_wait(job, cmd->wait_syncpt.id, cmd->wait_syncpt.value, in submit_create_job()
481 host1x_job_put(job); in submit_create_job()
482 job = ERR_PTR(err); in submit_create_job()
487 return job; in submit_create_job()
490 static void release_job(struct host1x_job *job) in release_job() argument
492 struct tegra_drm_client *client = container_of(job->client, struct tegra_drm_client, base); in release_job()
493 struct tegra_drm_submit_data *job_data = job->user_data; in release_job()
496 if (job->memory_context) in release_job()
497 host1x_memory_context_put(job->memory_context); in release_job()
517 struct host1x_job *job; in tegra_drm_ioctl_channel_submit() local
576 job = submit_create_job(context, bo, args, job_data, &fpriv->syncpoints); in tegra_drm_ioctl_channel_submit()
577 if (IS_ERR(job)) { in tegra_drm_ioctl_channel_submit()
578 err = PTR_ERR(job); in tegra_drm_ioctl_channel_submit()
583 err = host1x_job_pin(job, context->client->base.dev); in tegra_drm_ioctl_channel_submit()
591 context->client, &job->engine_streamid_offset); in tegra_drm_ioctl_channel_submit()
608 job->memory_context = context->memory_context; in tegra_drm_ioctl_channel_submit()
609 host1x_memory_context_get(job->memory_context); in tegra_drm_ioctl_channel_submit()
617 &job->engine_fallback_streamid)) in tegra_drm_ioctl_channel_submit()
618 job->engine_fallback_streamid = TEGRA_STREAM_ID_BYPASS; in tegra_drm_ioctl_channel_submit()
628 job->user_data = job_data; in tegra_drm_ioctl_channel_submit()
629 job->release = release_job; in tegra_drm_ioctl_channel_submit()
630 job->timeout = 10000; in tegra_drm_ioctl_channel_submit()
639 err = host1x_job_submit(job); in tegra_drm_ioctl_channel_submit()
646 args->syncpt.value = job->syncpt_end; in tegra_drm_ioctl_channel_submit()
649 struct dma_fence *fence = host1x_fence_create(job->syncpt, job->syncpt_end, true); in tegra_drm_ioctl_channel_submit()
661 if (job->memory_context) in tegra_drm_ioctl_channel_submit()
662 host1x_memory_context_put(job->memory_context); in tegra_drm_ioctl_channel_submit()
664 host1x_job_unpin(job); in tegra_drm_ioctl_channel_submit()
666 host1x_job_put(job); in tegra_drm_ioctl_channel_submit()