diff mbox series

drm/tegra: hub: Use state directly

Message ID 20180418104019.31344-1-stschake@gmail.com
State Accepted
Headers show
Series drm/tegra: hub: Use state directly | expand

Commit Message

Stefan Schake April 18, 2018, 10:40 a.m. UTC
Using drm_atomic_get_private_obj_state after state has been swapped
will return old state.

Fixes: 0281c4149021 ("drm/tegra: hub: Use private object for global state")
Signed-off-by: Stefan Schake <stschake@gmail.com>
---
 drivers/gpu/drm/tegra/hub.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Stefan Schake April 30, 2018, 11:56 a.m. UTC | #1
On Wed, Apr 18, 2018 at 12:40 PM, Stefan Schake <stschake@gmail.com> wrote:
> Using drm_atomic_get_private_obj_state after state has been swapped
> will return old state.
>
> Fixes: 0281c4149021 ("drm/tegra: hub: Use private object for global state")
> Signed-off-by: Stefan Schake <stschake@gmail.com>
> ---
>  drivers/gpu/drm/tegra/hub.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/tegra/hub.c b/drivers/gpu/drm/tegra/hub.c
> index 9a3f23d4780f..bdd2cdd0745c 100644
> --- a/drivers/gpu/drm/tegra/hub.c
> +++ b/drivers/gpu/drm/tegra/hub.c
> @@ -683,12 +683,11 @@ void tegra_display_hub_atomic_commit(struct drm_device *drm,
>  {
>         struct tegra_drm *tegra = drm->dev_private;
>         struct tegra_display_hub *hub = tegra->hub;
> -       struct tegra_display_hub_state *hub_state;
> +       struct tegra_display_hub_state *hub_state =
> +               to_tegra_display_hub_state(hub->base.state);
>         struct device *dev = hub->client.dev;
>         int err;
>
> -       hub_state = tegra_display_hub_get_state(hub, state);
> -
>         if (hub_state->clk) {
>                 err = clk_set_rate(hub_state->clk, hub_state->rate);
>                 if (err < 0)
> --
> 2.14.1
>

Ping. I don't really have Tegra hardware to begin with but this is
one of the few examples of DRM private driver state so I figured
I'd send a quick fixup before anyone else tries to copy it.

Thanks,
Stefan
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Thierry Reding May 4, 2018, 9:38 a.m. UTC | #2
On Wed, Apr 18, 2018 at 03:40:19AM -0700, Stefan Schake wrote:
> Using drm_atomic_get_private_obj_state after state has been swapped
> will return old state.
> 
> Fixes: 0281c4149021 ("drm/tegra: hub: Use private object for global state")
> Signed-off-by: Stefan Schake <stschake@gmail.com>
> ---
>  drivers/gpu/drm/tegra/hub.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)

I've had an almost identical patch in my local tree but never got around
to sending it out for review, sorry. I've applied your patch but made a
tiny change to compress the diff a little (kept the assignment separate
from the variable declaration as it used to be).

Thanks,
Thierry
diff mbox series

Patch

diff --git a/drivers/gpu/drm/tegra/hub.c b/drivers/gpu/drm/tegra/hub.c
index 9a3f23d4780f..bdd2cdd0745c 100644
--- a/drivers/gpu/drm/tegra/hub.c
+++ b/drivers/gpu/drm/tegra/hub.c
@@ -683,12 +683,11 @@  void tegra_display_hub_atomic_commit(struct drm_device *drm,
 {
 	struct tegra_drm *tegra = drm->dev_private;
 	struct tegra_display_hub *hub = tegra->hub;
-	struct tegra_display_hub_state *hub_state;
+	struct tegra_display_hub_state *hub_state =
+		to_tegra_display_hub_state(hub->base.state);
 	struct device *dev = hub->client.dev;
 	int err;
 
-	hub_state = tegra_display_hub_get_state(hub, state);
-
 	if (hub_state->clk) {
 		err = clk_set_rate(hub_state->clk, hub_state->rate);
 		if (err < 0)