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