Lines Matching refs:context

26 #define SUBMIT_ERR(context, fmt, ...) \  argument
27 dev_err_ratelimited(context->client->base.dev, \
117 tegra_drm_mapping_get(struct tegra_drm_context *context, u32 id) in tegra_drm_mapping_get() argument
121 xa_lock(&context->mappings); in tegra_drm_mapping_get()
123 mapping = xa_load(&context->mappings, id); in tegra_drm_mapping_get()
127 xa_unlock(&context->mappings); in tegra_drm_mapping_get()
156 struct tegra_drm_context *context, in submit_copy_gather_data() argument
163 SUBMIT_ERR(context, "gather_data_words cannot be zero"); in submit_copy_gather_data()
168 SUBMIT_ERR(context, "gather_data_words is too large"); in submit_copy_gather_data()
174 SUBMIT_ERR(context, "failed to allocate memory for bo info"); in submit_copy_gather_data()
185 SUBMIT_ERR(context, "failed to allocate memory for gather data"); in submit_copy_gather_data()
191 SUBMIT_ERR(context, "failed to copy gather data from userspace"); in submit_copy_gather_data()
204 static int submit_write_reloc(struct tegra_drm_context *context, struct gather_bo *bo, in submit_write_reloc() argument
219 SUBMIT_ERR(context, in submit_write_reloc()
233 static int submit_process_bufs(struct tegra_drm_context *context, struct gather_bo *bo, in submit_process_bufs() argument
245 SUBMIT_ERR(context, "failed to copy bufs array from userspace"); in submit_process_bufs()
251 SUBMIT_ERR(context, "failed to allocate memory for mapping info"); in submit_process_bufs()
261 SUBMIT_ERR(context, "invalid flag specified for buffer"); in submit_process_bufs()
266 mapping = tegra_drm_mapping_get(context, buf->mapping); in submit_process_bufs()
268 SUBMIT_ERR(context, "invalid mapping ID '%u' for buffer", buf->mapping); in submit_process_bufs()
273 err = submit_write_reloc(context, bo, buf, mapping); in submit_process_bufs()
303 static int submit_get_syncpt(struct tegra_drm_context *context, struct host1x_job *job, in submit_get_syncpt() argument
309 SUBMIT_ERR(context, "invalid flag specified for syncpt"); in submit_get_syncpt()
316 SUBMIT_ERR(context, "syncpoint specified in syncpt was not allocated"); in submit_get_syncpt()
326 static int submit_job_add_gather(struct host1x_job *job, struct tegra_drm_context *context, in submit_job_add_gather() argument
335 SUBMIT_ERR(context, "non-zero reserved field in GATHER_UPTR command"); in submit_job_add_gather()
341 SUBMIT_ERR(context, "too many words in GATHER_UPTR command"); in submit_job_add_gather()
346 SUBMIT_ERR(context, "too many total words in job"); in submit_job_add_gather()
351 SUBMIT_ERR(context, "GATHER_UPTR command overflows gather data"); in submit_job_add_gather()
355 if (tegra_drm_fw_validate(context->client, bo->gather_data, *offset, in submit_job_add_gather()
357 SUBMIT_ERR(context, "job was rejected by firewall"); in submit_job_add_gather()
369 submit_create_job(struct tegra_drm_context *context, struct gather_bo *bo, in submit_create_job() argument
379 class = context->client->base.class; in submit_create_job()
384 SUBMIT_ERR(context, "failed to copy cmds array from userspace"); in submit_create_job()
388 job = host1x_job_alloc(context->channel, args->num_cmds, 0, true); in submit_create_job()
390 SUBMIT_ERR(context, "failed to allocate memory for job"); in submit_create_job()
395 err = submit_get_syncpt(context, job, syncpoints, args); in submit_create_job()
399 job->client = &context->client->base; in submit_create_job()
400 job->class = context->client->base.class; in submit_create_job()
407 SUBMIT_ERR(context, "unknown flags given for cmd"); in submit_create_job()
413 err = submit_job_add_gather(job, context, &cmd->gather_uptr, bo, in submit_create_job()
419 SUBMIT_ERR(context, "non-zero reserved value"); in submit_create_job()
428 SUBMIT_ERR(context, "non-zero reserved value"); in submit_create_job()
434 SUBMIT_ERR(context, "syncpoint ID in CMD_WAIT_SYNCPT_RELATIVE is not used by the job"); in submit_create_job()
442 SUBMIT_ERR(context, "unknown cmd type"); in submit_create_job()
449 SUBMIT_ERR(context, "job must have at least one gather"); in submit_create_job()
489 struct tegra_drm_context *context; in tegra_drm_ioctl_channel_submit() local
497 context = xa_load(&fpriv->contexts, args->context); in tegra_drm_ioctl_channel_submit()
498 if (!context) { in tegra_drm_ioctl_channel_submit()
501 current->comm, args->context); in tegra_drm_ioctl_channel_submit()
510 SUBMIT_ERR(context, "invalid syncobj_in '%#x'", args->syncobj_in); in tegra_drm_ioctl_channel_submit()
517 SUBMIT_ERR(context, "wait for syncobj_in timed out"); in tegra_drm_ioctl_channel_submit()
525 SUBMIT_ERR(context, "invalid syncobj_out '%#x'", args->syncobj_out); in tegra_drm_ioctl_channel_submit()
532 err = submit_copy_gather_data(&bo, drm->dev, context, args); in tegra_drm_ioctl_channel_submit()
538 SUBMIT_ERR(context, "failed to allocate memory for job data"); in tegra_drm_ioctl_channel_submit()
544 err = submit_process_bufs(context, bo, args, job_data); in tegra_drm_ioctl_channel_submit()
549 job = submit_create_job(context, bo, args, job_data, &fpriv->syncpoints); in tegra_drm_ioctl_channel_submit()
556 err = host1x_job_pin(job, context->client->base.dev); in tegra_drm_ioctl_channel_submit()
558 SUBMIT_ERR(context, "failed to pin job: %d", err); in tegra_drm_ioctl_channel_submit()
563 if (pm_runtime_enabled(context->client->base.dev)) { in tegra_drm_ioctl_channel_submit()
564 err = pm_runtime_resume_and_get(context->client->base.dev); in tegra_drm_ioctl_channel_submit()
566 SUBMIT_ERR(context, "could not power up engine: %d", err); in tegra_drm_ioctl_channel_submit()
584 SUBMIT_ERR(context, "host1x job submission failed: %d", err); in tegra_drm_ioctl_channel_submit()
595 SUBMIT_ERR(context, "failed to create postfence: %d", err); in tegra_drm_ioctl_channel_submit()