Message ID | 20190201132837.12327-11-thierry.reding@gmail.com |
---|---|
State | Deferred |
Headers | show |
Series | drm/tegra: Fix IOVA space on Tegra186 and later | expand |
01.02.2019 16:28, Thierry Reding пишет: > From: Thierry Reding <treding@nvidia.com> > > Tegra DRM clients need access to their parent, so store a pointer to it > upon registration. It's technically possible to get at this by going via > the host1x client's parent and getting the driver data, but that's quite > complicated and not very transparent. It's much more straightforward and > natural to let the children know about their parent. > > Signed-off-by: Thierry Reding <treding@nvidia.com> > Reviewed-by: Dmitry Osipenko <digetx@gmail.com> > --- > drivers/gpu/drm/tegra/drm.c | 2 ++ > drivers/gpu/drm/tegra/drm.h | 1 + > 2 files changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c > index 4b70ce664c41..61dcbd218ffc 100644 > --- a/drivers/gpu/drm/tegra/drm.c > +++ b/drivers/gpu/drm/tegra/drm.c > @@ -1041,6 +1041,7 @@ int tegra_drm_register_client(struct tegra_drm *tegra, > { > mutex_lock(&tegra->clients_lock); > list_add_tail(&client->list, &tegra->clients); > + client->drm = tegra; > mutex_unlock(&tegra->clients_lock); > > return 0; > @@ -1051,6 +1052,7 @@ int tegra_drm_unregister_client(struct tegra_drm *tegra, > { > mutex_lock(&tegra->clients_lock); > list_del_init(&client->list); > + client->drm = NULL; > mutex_unlock(&tegra->clients_lock); > > return 0; > diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h > index 7370f7a0fdb8..70154c253d45 100644 > --- a/drivers/gpu/drm/tegra/drm.h > +++ b/drivers/gpu/drm/tegra/drm.h > @@ -88,6 +88,7 @@ int tegra_drm_submit(struct tegra_drm_context *context, > struct tegra_drm_client { > struct host1x_client base; > struct list_head list; > + struct tegra_drm *drm; > > unsigned int version; > const struct tegra_drm_client_ops *ops; > Reviewed-by: Dmitry Osipenko <digetx@gmail.com> Tested-by: Dmitry Osipenko <digetx@gmail.com>
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 4b70ce664c41..61dcbd218ffc 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -1041,6 +1041,7 @@ int tegra_drm_register_client(struct tegra_drm *tegra, { mutex_lock(&tegra->clients_lock); list_add_tail(&client->list, &tegra->clients); + client->drm = tegra; mutex_unlock(&tegra->clients_lock); return 0; @@ -1051,6 +1052,7 @@ int tegra_drm_unregister_client(struct tegra_drm *tegra, { mutex_lock(&tegra->clients_lock); list_del_init(&client->list); + client->drm = NULL; mutex_unlock(&tegra->clients_lock); return 0; diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h index 7370f7a0fdb8..70154c253d45 100644 --- a/drivers/gpu/drm/tegra/drm.h +++ b/drivers/gpu/drm/tegra/drm.h @@ -88,6 +88,7 @@ int tegra_drm_submit(struct tegra_drm_context *context, struct tegra_drm_client { struct host1x_client base; struct list_head list; + struct tegra_drm *drm; unsigned int version; const struct tegra_drm_client_ops *ops;