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]>
