Re: [PATCH v2 1/2] drm/tegra: gr2d/gr3d: Initialize address register map before HOST1X client is registered
From: Mikko Perttunen
Date: Thu May 14 2026 - 22:58:01 EST
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 <clamor95@xxxxxxxxx>
> ---
> 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 <mperttunen@xxxxxxxxxx>