static int set_submit(struct nvhost_channel_userctx *ctx) { struct nvhost_device *ndev = ctx->ch->dev; struct nvhost_master *host = nvhost_get_host(ndev); /* submit should have at least 1 cmdbuf */ if (!ctx->hdr.num_cmdbufs || !nvhost_syncpt_is_valid(&host->syncpt, ctx->hdr.syncpt_id)) return -EIO; if (!ctx->nvmap) { dev_err(&ndev->dev, "no nvmap context set\n"); return -EFAULT; } ctx->job = nvhost_job_realloc(ctx->job, ctx->hwctx, &ctx->hdr, ctx->nvmap, ctx->priority, ctx->clientid); if (!ctx->job) return -ENOMEM; ctx->job->timeout = ctx->timeout; if (ctx->hdr.submit_version >= NVHOST_SUBMIT_VERSION_V2) ctx->num_relocshifts = ctx->hdr.num_relocs; return 0; }
static int set_submit(struct nvhost_channel_userctx *ctx) { struct platform_device *ndev = ctx->ch->dev; struct nvhost_master *host = nvhost_get_host(ndev); /* submit should have at least 1 cmdbuf */ if (!ctx->hdr.num_cmdbufs || !nvhost_syncpt_is_valid(&host->syncpt, ctx->hdr.syncpt_id)) return -EIO; if (!ctx->memmgr) { dev_err(&ndev->dev, "no nvmap context set\n"); return -EFAULT; } if (ctx->job) { dev_warn(&ndev->dev, "performing channel submit when a job already exists\n"); nvhost_job_put(ctx->job); } ctx->job = nvhost_job_alloc(ctx->ch, ctx->hwctx, ctx->hdr.num_cmdbufs, ctx->hdr.num_relocs, ctx->hdr.num_waitchks, ctx->memmgr); if (!ctx->job) return -ENOMEM; ctx->job->timeout = ctx->timeout; ctx->job->syncpt_id = ctx->hdr.syncpt_id; ctx->job->syncpt_incrs = ctx->hdr.syncpt_incrs; ctx->job->priority = ctx->priority; ctx->job->clientid = ctx->clientid; ctx->job->timeout_debug_dump = ctx->timeout_debug_dump; if (ctx->hdr.submit_version >= NVHOST_SUBMIT_VERSION_V2) ctx->num_relocshifts = ctx->hdr.num_relocs; return 0; }