On Monday, May 4, 2026 1:38 AM Svyatoslav Ryhel wrote:
> The host1x_client_register() function is called just prior to register map
> initialization loop, making the device available to userspace. This may
> result in userspace attempting to submits a job before the register map is
> initialized. Address this by moving register initialization before host1x
> client registration.
> 
> Signed-off-by: Svyatoslav Ryhel <[email protected]>
> ---
>  drivers/gpu/drm/tegra/gr2d.c | 8 ++++----
>  drivers/gpu/drm/tegra/gr3d.c | 8 ++++----
>  2 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tegra/gr2d.c b/drivers/gpu/drm/tegra/gr2d.c
> index 21f4dd0fa6af..e4148b034af7 100644
> --- a/drivers/gpu/drm/tegra/gr2d.c
> +++ b/drivers/gpu/drm/tegra/gr2d.c
> @@ -276,16 +276,16 @@ static int gr2d_probe(struct platform_device *pdev)
>       if (err)
>               return err;
>  
> +     /* initialize address register map */
> +     for (i = 0; i < ARRAY_SIZE(gr2d_addr_regs); i++)
> +             set_bit(gr2d_addr_regs[i], gr2d->addr_regs);
> +
>       err = host1x_client_register(&gr2d->client.base);
>       if (err < 0) {
>               dev_err(dev, "failed to register host1x client: %d\n", err);
>               return err;
>       }
>  
> -     /* initialize address register map */
> -     for (i = 0; i < ARRAY_SIZE(gr2d_addr_regs); i++)
> -             set_bit(gr2d_addr_regs[i], gr2d->addr_regs);
> -
>       return 0;
>  }
>  
> diff --git a/drivers/gpu/drm/tegra/gr3d.c b/drivers/gpu/drm/tegra/gr3d.c
> index 42e9656ab80c..47b0c6c56bfd 100644
> --- a/drivers/gpu/drm/tegra/gr3d.c
> +++ b/drivers/gpu/drm/tegra/gr3d.c
> @@ -506,6 +506,10 @@ static int gr3d_probe(struct platform_device *pdev)
>       if (err)
>               return err;
>  
> +     /* initialize address register map */
> +     for (i = 0; i < ARRAY_SIZE(gr3d_addr_regs); i++)
> +             set_bit(gr3d_addr_regs[i], gr3d->addr_regs);
> +
>       err = host1x_client_register(&gr3d->client.base);
>       if (err < 0) {
>               dev_err(&pdev->dev, "failed to register host1x client: %d\n",
> @@ -513,10 +517,6 @@ static int gr3d_probe(struct platform_device *pdev)
>               return err;
>       }
>  
> -     /* initialize address register map */
> -     for (i = 0; i < ARRAY_SIZE(gr3d_addr_regs); i++)
> -             set_bit(gr3d_addr_regs[i], gr3d->addr_regs);
> -
>       return 0;
>  }
>  
> -- 
> 2.51.0
> 
> 

Acked-by: Mikko Perttunen <[email protected]>



Reply via email to