Message ID | 20230706211045.204925-4-robdclark@gmail.com |
---|---|
State | New |
Headers | show |
Series | drm/msm/adreno: Move away from legacy revision matching | expand |
On 6.07.2023 23:10, Rob Clark wrote: > From: Rob Clark <robdclark@chromium.org> > > This just duplicates what is in adreno_info, and can cause confusion if > used before it is set. > > Signed-off-by: Rob Clark <robdclark@chromium.org> > --- [...] > - return gpu->revn == revn; > + if (WARN_ON_ONCE(!gpu->info)) > + return false; I'm unsure about changing this behavior. Especially in a6xx code, where these calls may guard things like SMMU behavior (the LLCC-SMMU programming dance is unconditional if adreno_is_a7xx) Though if gpu->info is missing, it's a lost cause anwyways.. So I guess this is really the least bad thing to do Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Konrad > + return gpu->info->revn == revn; > } > > static inline bool adreno_has_gmu_wrapper(const struct adreno_gpu *gpu) > @@ -160,18 +158,16 @@ static inline bool adreno_has_gmu_wrapper(const struct adreno_gpu *gpu) > > static inline bool adreno_is_a2xx(const struct adreno_gpu *gpu) > { > - /* revn can be zero, but if not is set at same time as info */ > - WARN_ON_ONCE(!gpu->info); > - > - return (gpu->revn < 300); > + if (WARN_ON_ONCE(!gpu->info)) > + return false; > + return (gpu->info->revn < 300); > } > > static inline bool adreno_is_a20x(const struct adreno_gpu *gpu) > { > - /* revn can be zero, but if not is set at same time as info */ > - WARN_ON_ONCE(!gpu->info); > - > - return (gpu->revn < 210); > + if (WARN_ON_ONCE(!gpu->info)) > + return false; > + return (gpu->info->revn < 210); > } > > static inline bool adreno_is_a225(const struct adreno_gpu *gpu)
On 07/07/2023 00:10, Rob Clark wrote: > From: Rob Clark <robdclark@chromium.org> > > This just duplicates what is in adreno_info, and can cause confusion if > used before it is set. > > Signed-off-by: Rob Clark <robdclark@chromium.org> > --- > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 2 -- > drivers/gpu/drm/msm/adreno/adreno_gpu.c | 1 - > drivers/gpu/drm/msm/adreno/adreno_gpu.h | 22 +++++++++------------- > 3 files changed, 9 insertions(+), 16 deletions(-) Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c index edbade75020f..5ba8b5aca502 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -2484,8 +2484,6 @@ struct msm_gpu *a6xx_gpu_init(struct drm_device *dev) return ERR_PTR(-EINVAL); /* Assign these early so that we can use the is_aXYZ helpers */ - /* Numeric revision IDs (e.g. 630) */ - adreno_gpu->revn = info->revn; /* New-style ADRENO_REV()-only */ adreno_gpu->rev = info->rev; /* Quirk data */ diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c index 4f59682f585e..2e62a7ce9f13 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -1098,7 +1098,6 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, adreno_gpu->funcs = funcs; adreno_gpu->info = adreno_info(config->rev); - adreno_gpu->revn = adreno_gpu->info->revn; adreno_gpu->rev = *rev; if (adreno_read_speedbin(dev, &speedbin) || !speedbin) diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h b/drivers/gpu/drm/msm/adreno/adreno_gpu.h index aaf09c642dc6..d31e2d37c61b 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h @@ -77,7 +77,6 @@ struct adreno_gpu { struct msm_gpu base; struct adreno_rev rev; const struct adreno_info *info; - uint32_t revn; /* numeric revision name */ uint16_t speedbin; const struct adreno_gpu_funcs *funcs; @@ -147,10 +146,9 @@ bool adreno_cmp_rev(struct adreno_rev rev1, struct adreno_rev rev2); static inline bool adreno_is_revn(const struct adreno_gpu *gpu, uint32_t revn) { - /* revn can be zero, but if not is set at same time as info */ - WARN_ON_ONCE(!gpu->info); - - return gpu->revn == revn; + if (WARN_ON_ONCE(!gpu->info)) + return false; + return gpu->info->revn == revn; } static inline bool adreno_has_gmu_wrapper(const struct adreno_gpu *gpu) @@ -160,18 +158,16 @@ static inline bool adreno_has_gmu_wrapper(const struct adreno_gpu *gpu) static inline bool adreno_is_a2xx(const struct adreno_gpu *gpu) { - /* revn can be zero, but if not is set at same time as info */ - WARN_ON_ONCE(!gpu->info); - - return (gpu->revn < 300); + if (WARN_ON_ONCE(!gpu->info)) + return false; + return (gpu->info->revn < 300); } static inline bool adreno_is_a20x(const struct adreno_gpu *gpu) { - /* revn can be zero, but if not is set at same time as info */ - WARN_ON_ONCE(!gpu->info); - - return (gpu->revn < 210); + if (WARN_ON_ONCE(!gpu->info)) + return false; + return (gpu->info->revn < 210); } static inline bool adreno_is_a225(const struct adreno_gpu *gpu)