Re: [PATCH] etnaviv: Restore some id values

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Lucas,

>
> prefix for etnaviv kernel patches should be "drm/etnaviv: ..."

Ah yeah .. corrected in v2.

>
> Am Donnerstag, dem 29.02.2024 um 20:55 +0100 schrieb Christian Gmeiner:
> > From: Christian Gmeiner <cgmeiner@xxxxxxxxxx>
> >
> > The hwdb selection logic as a feature that allows it to mark some fields
> > as 'don't care'. If we match with such a field we memcpy(..)
> > the current etnaviv_chip_identity into ident.
> >
> > This step can overwrite some id values read from the GPU with the
> > 'don't care' value.
> >
> > Fix this issue by restoring the affected values after the memcpy(..).
> >
> > As this is crucial for user space to know when this feature works as
> > expected increment the minor version too.
>
> Uh, right. Lying to userspace about the GPU identity doesn't seem like
> a good idea.
>
> >
> > Fixes: 4078a1186dd3 ("drm/etnaviv: update hwdb selection logic")
> > Cc: stable@xxxxxxxxxxxxxxx
> > Signed-off-by: Christian Gmeiner <cgmeiner@xxxxxxxxxx>
> > ---
> >  drivers/gpu/drm/etnaviv/etnaviv_drv.c  |  2 +-
> >  drivers/gpu/drm/etnaviv/etnaviv_hwdb.c | 14 ++++++++++++++
> >  2 files changed, 15 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > index 6228ce603248..9a2965741dab 100644
> > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> > @@ -494,7 +494,7 @@ static const struct drm_driver etnaviv_drm_driver = {
> >       .desc               = "etnaviv DRM",
> >       .date               = "20151214",
> >       .major              = 1,
> > -     .minor              = 3,
> > +     .minor              = 4,
> >  };
> >
> >  /*
> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c
> > index 67201242438b..1e38d66702f1 100644
> > --- a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c
> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c
> > @@ -265,6 +265,9 @@ static const struct etnaviv_chip_identity etnaviv_chip_identities[] = {
> >  bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu)
> >  {
> >       struct etnaviv_chip_identity *ident = &gpu->identity;
> > +     const u32 product_id = ident->product_id;
> > +     const u32 customer_id = ident->customer_id;
> > +     const u32 eco_id = ident->eco_id;
> >       int i;
> >
> >       for (i = 0; i < ARRAY_SIZE(etnaviv_chip_identities); i++) {
> > @@ -278,6 +281,17 @@ bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu)
> >                        etnaviv_chip_identities[i].eco_id == ~0U)) {
> >                       memcpy(ident, &etnaviv_chip_identities[i],
> >                              sizeof(*ident));
> > +
> > +                     /* Restore some id values if ~0U aka 'don't care' is used. */
> > +                     if (etnaviv_chip_identities[i].product_id == ~0U)
>
> You can drop all those if clauses. Either the hwdb value is an exact
> match and the value is the same or it's the don't care value and you
> want to restore it, so a simple unconditional assignment would make
> this a bit more compact.
>

Makes sense - thanks for your review!

-- 
greets
--
Christian Gmeiner, MSc

https://christian-gmeiner.info/privacypolicy



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux