On 9.04.2023 03:13, Dmitry Baryshkov wrote: > The commit 010c8bbad2cb ("drm: msm: adreno: Disable preemption on Adreno > 510") added special handling for a510 (this SKU doesn't seem to support > preemption, so the driver should clamp nr_rings to 1). However the > gpu->revn is not yet set (it is set later, in adreno_gpu_init()) and > thus the condition is always false. Check config->rev instead. > > Fixes: 010c8bbad2cb ("drm: msm: adreno: Disable preemption on Adreno 510") > Reported-by: Adam Skladowski <a39.skl@xxxxxxxxx> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > --- > drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c > index 1e8d2982d603..a99310b68793 100644 > --- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c > +++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c > @@ -1743,6 +1743,7 @@ struct msm_gpu *a5xx_gpu_init(struct drm_device *dev) > { > struct msm_drm_private *priv = dev->dev_private; > struct platform_device *pdev = priv->gpu_pdev; > + struct adreno_platform_config *config = pdev->dev.platform_data; > struct a5xx_gpu *a5xx_gpu = NULL; > struct adreno_gpu *adreno_gpu; > struct msm_gpu *gpu; > @@ -1769,7 +1770,7 @@ struct msm_gpu *a5xx_gpu_init(struct drm_device *dev) > > nr_rings = 4; > > - if (adreno_is_a510(adreno_gpu)) > + if (adreno_cmp_rev(ADRENO_REV(5, 1, 0, ANY_ID), config->rev)) > nr_rings = 1; > > ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs, nr_rings); After testing on Leeco S2 it appears to work as intended now, thanks. Tested-by: Adam Skladowski <a39.skl@xxxxxxxxx>