drm/tegra: Support virtualized engines

Support engines that are not owned by NvHost Server.

Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
Change-Id: I3d3c8b153e1e5c92bcf6d9e1439c20fba3b9767f
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2811838
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Jonathan Hunter <jonathanh@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
Mikko Perttunen
2022-11-18 13:47:46 +02:00
committed by Laxman Dewangan
parent 09c1b1e9da
commit 93006031b9
5 changed files with 337 additions and 8 deletions

View File

@@ -517,8 +517,10 @@ static void release_job(struct host1x_job *job)
kfree(job_data->used_mappings);
kfree(job_data);
pm_runtime_mark_last_busy(client->base.dev);
pm_runtime_put_autosuspend(client->base.dev);
if (pm_runtime_enabled(client->base.dev)) {
pm_runtime_mark_last_busy(client->base.dev);
pm_runtime_put_autosuspend(client->base.dev);
}
}
int tegra_drm_ioctl_channel_submit(struct drm_device *drm, void *data,
@@ -646,11 +648,13 @@ int tegra_drm_ioctl_channel_submit(struct drm_device *drm, void *data,
#endif
}
/* Boot engine. */
err = pm_runtime_resume_and_get(context->client->base.dev);
if (err < 0) {
SUBMIT_ERR(context, "could not power up engine: %d", err);
goto put_memory_context;
/* Boot engine, if necessary. */
if (pm_runtime_enabled(context->client->base.dev)) {
err = pm_runtime_resume_and_get(context->client->base.dev);
if (err < 0) {
SUBMIT_ERR(context, "could not power up engine: %d", err);
goto put_memory_context;
}
}
job->user_data = job_data;