OSDN Git Service

gpu: host1x: Store pointer to client in jobs
authorThierry Reding <treding@nvidia.com>
Wed, 16 May 2018 12:12:33 +0000 (14:12 +0200)
committerThierry Reding <treding@nvidia.com>
Fri, 18 May 2018 19:50:24 +0000 (21:50 +0200)
Rather than storing some identifier derived from the application
context that can't be used concretely anywhere, store a pointer to the
client directly so that accesses can be made directly through that
client object.

Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Tested-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/drm/tegra/drm.c
drivers/gpu/host1x/cdma.c
drivers/gpu/host1x/cdma.h
include/linux/host1x.h

index 204b10e..8f29323 100644 (file)
@@ -325,6 +325,7 @@ int tegra_drm_submit(struct tegra_drm_context *context,
                     struct drm_tegra_submit *args, struct drm_device *drm,
                     struct drm_file *file)
 {
+       struct host1x_client *client = &context->client->base;
        unsigned int num_cmdbufs = args->num_cmdbufs;
        unsigned int num_relocs = args->num_relocs;
        struct drm_tegra_cmdbuf __user *user_cmdbufs;
@@ -356,8 +357,8 @@ int tegra_drm_submit(struct tegra_drm_context *context,
                return -ENOMEM;
 
        job->num_relocs = args->num_relocs;
-       job->client = (u32)args->context;
-       job->class = context->client->base.class;
+       job->client = client;
+       job->class = client->class;
        job->serialize = true;
 
        /*
index 69bb773..91df51e 100644 (file)
@@ -247,7 +247,7 @@ static void cdma_start_timer_locked(struct host1x_cdma *cdma,
 static void stop_cdma_timer_locked(struct host1x_cdma *cdma)
 {
        cancel_delayed_work(&cdma->timeout.wq);
-       cdma->timeout.client = 0;
+       cdma->timeout.client = NULL;
 }
 
 /*
index 446ee1a..e97e17b 100644 (file)
@@ -58,7 +58,7 @@ struct buffer_timeout {
        u32 syncpt_val;                 /* syncpt value when completed */
        ktime_t start_ktime;            /* starting time */
        /* context timeout information */
-       int client;
+       struct host1x_client *client;
 };
 
 enum cdma_event {
index f66bece..0632010 100644 (file)
@@ -202,7 +202,8 @@ struct host1x_job {
        /* Channel where job is submitted to */
        struct host1x_channel *channel;
 
-       u32 client;
+       /* client where the job originated */
+       struct host1x_client *client;
 
        /* Gathers and their memory */
        struct host1x_job_gather *gathers;