2018-04-18 10:41:33

by Stefan Schake

[permalink] [raw]
Subject: [PATCH] drm/tegra: hub: Use state directly

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 <[email protected]>
---
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



2018-04-30 11:57:45

by Stefan Schake

[permalink] [raw]
Subject: Re: [PATCH] drm/tegra: hub: Use state directly

On Wed, Apr 18, 2018 at 12:40 PM, Stefan Schake <[email protected]> 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 <[email protected]>
> ---
> 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

2018-05-04 09:39:39

by Thierry Reding

[permalink] [raw]
Subject: Re: [PATCH] drm/tegra: hub: Use state directly

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 <[email protected]>
> ---
> 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


Attachments:
(No filename) (690.00 B)
signature.asc (849.00 B)
Download all attachments