[PATCH] drm/msm: Fix GMEM_BASE for A650

Alexander Koskovich posted 1 patch 3 weeks, 3 days ago
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] drm/msm: Fix GMEM_BASE for A650
Posted by Alexander Koskovich 3 weeks, 3 days ago
Commit dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8") changed the
GMEM_BASE check from adreno_is_a650_family() & adreno_is_a740_family()
to family >= ADRENO_6XX_GEN4.

This inadvertently excluded A650 (ADRENO_6XX_GEN3), causing it to report
an incorrect GMEM_BASE which results in severe rendering corruption.

Update check to also include ADRENO_6XX_GEN3 to fix A650.

Fixes: dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8")
Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
---
 drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index d5fe6f6f0dec..0ac3fba5c277 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -376,7 +376,7 @@ int adreno_get_param(struct msm_gpu *gpu, struct msm_context *ctx,
 		*value = adreno_gpu->info->gmem;
 		return 0;
 	case MSM_PARAM_GMEM_BASE:
-		if (adreno_gpu->info->family >= ADRENO_6XX_GEN4)
+		if (adreno_gpu->info->family >= ADRENO_6XX_GEN3)
 			*value = 0;
 		else
 			*value = 0x100000;

---
base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
change-id: 20260314-fix-gmem-base-a650-cfd9bfcea425

Best regards,
-- 
Alexander Koskovich <akoskovich@pm.me>
Re: [PATCH] drm/msm: Fix GMEM_BASE for A650
Posted by Akhil P Oommen 3 weeks ago
On 3/14/2026 9:44 AM, Alexander Koskovich wrote:
> Commit dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8") changed the
> GMEM_BASE check from adreno_is_a650_family() & adreno_is_a740_family()
> to family >= ADRENO_6XX_GEN4.
> 
> This inadvertently excluded A650 (ADRENO_6XX_GEN3), causing it to report
> an incorrect GMEM_BASE which results in severe rendering corruption.
> 
> Update check to also include ADRENO_6XX_GEN3 to fix A650.
> 
> Fixes: dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8")
> Signed-off-by: Alexander Koskovich <akoskovich@pm.me>

Reviewed-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>

-Akhil
> ---
>  drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> index d5fe6f6f0dec..0ac3fba5c277 100644
> --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> @@ -376,7 +376,7 @@ int adreno_get_param(struct msm_gpu *gpu, struct msm_context *ctx,
>  		*value = adreno_gpu->info->gmem;
>  		return 0;
>  	case MSM_PARAM_GMEM_BASE:
> -		if (adreno_gpu->info->family >= ADRENO_6XX_GEN4)
> +		if (adreno_gpu->info->family >= ADRENO_6XX_GEN3)
>  			*value = 0;
>  		else
>  			*value = 0x100000;
> 
> ---
> base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
> change-id: 20260314-fix-gmem-base-a650-cfd9bfcea425
> 
> Best regards,
Re: [PATCH] drm/msm: Fix GMEM_BASE for A650
Posted by Konrad Dybcio 3 weeks ago
On 3/14/26 5:14 AM, Alexander Koskovich wrote:
> Commit dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8") changed the
> GMEM_BASE check from adreno_is_a650_family() & adreno_is_a740_family()
> to family >= ADRENO_6XX_GEN4.
> 
> This inadvertently excluded A650 (ADRENO_6XX_GEN3), causing it to report
> an incorrect GMEM_BASE which results in severe rendering corruption.
> 
> Update check to also include ADRENO_6XX_GEN3 to fix A650.
> 
> Fixes: dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8")

Hm, that commit also changed the value for A730 - Akhil/Rob, should
that be changed back?

Konrad

> Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
> ---
>  drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> index d5fe6f6f0dec..0ac3fba5c277 100644
> --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> @@ -376,7 +376,7 @@ int adreno_get_param(struct msm_gpu *gpu, struct msm_context *ctx,
>  		*value = adreno_gpu->info->gmem;
>  		return 0;
>  	case MSM_PARAM_GMEM_BASE:
> -		if (adreno_gpu->info->family >= ADRENO_6XX_GEN4)
> +		if (adreno_gpu->info->family >= ADRENO_6XX_GEN3)
>  			*value = 0;
>  		else
>  			*value = 0x100000;
> 
> ---
> base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
> change-id: 20260314-fix-gmem-base-a650-cfd9bfcea425
> 
> Best regards,
Re: [PATCH] drm/msm: Fix GMEM_BASE for A650
Posted by Rob Clark 3 weeks ago
On Mon, Mar 16, 2026 at 2:22 AM Konrad Dybcio
<konrad.dybcio@oss.qualcomm.com> wrote:
>
> On 3/14/26 5:14 AM, Alexander Koskovich wrote:
> > Commit dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8") changed the
> > GMEM_BASE check from adreno_is_a650_family() & adreno_is_a740_family()
> > to family >= ADRENO_6XX_GEN4.
> >
> > This inadvertently excluded A650 (ADRENO_6XX_GEN3), causing it to report
> > an incorrect GMEM_BASE which results in severe rendering corruption.
> >
> > Update check to also include ADRENO_6XX_GEN3 to fix A650.
> >
> > Fixes: dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8")
>
> Hm, that commit also changed the value for A730 - Akhil/Rob, should
> that be changed back?

No, it was incorrect before my patch.  The only problem was the change
happened in a6xx_gen3, not a6xx_gen4.  So this patch is correct.

BR,
-R

> Konrad
>
> > Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
> > ---
> >  drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> > index d5fe6f6f0dec..0ac3fba5c277 100644
> > --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> > +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> > @@ -376,7 +376,7 @@ int adreno_get_param(struct msm_gpu *gpu, struct msm_context *ctx,
> >               *value = adreno_gpu->info->gmem;
> >               return 0;
> >       case MSM_PARAM_GMEM_BASE:
> > -             if (adreno_gpu->info->family >= ADRENO_6XX_GEN4)
> > +             if (adreno_gpu->info->family >= ADRENO_6XX_GEN3)
> >                       *value = 0;
> >               else
> >                       *value = 0x100000;
> >
> > ---
> > base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
> > change-id: 20260314-fix-gmem-base-a650-cfd9bfcea425
> >
> > Best regards,
Re: [PATCH] drm/msm: Fix GMEM_BASE for A650
Posted by Akhil P Oommen 3 weeks ago
On 3/16/2026 8:01 PM, Rob Clark wrote:
> On Mon, Mar 16, 2026 at 2:22 AM Konrad Dybcio
> <konrad.dybcio@oss.qualcomm.com> wrote:
>>
>> On 3/14/26 5:14 AM, Alexander Koskovich wrote:
>>> Commit dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8") changed the
>>> GMEM_BASE check from adreno_is_a650_family() & adreno_is_a740_family()
>>> to family >= ADRENO_6XX_GEN4.
>>>
>>> This inadvertently excluded A650 (ADRENO_6XX_GEN3), causing it to report
>>> an incorrect GMEM_BASE which results in severe rendering corruption.
>>>
>>> Update check to also include ADRENO_6XX_GEN3 to fix A650.
>>>
>>> Fixes: dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8")
>>
>> Hm, that commit also changed the value for A730 - Akhil/Rob, should
>> that be changed back?
> 
> No, it was incorrect before my patch.  The only problem was the change
> happened in a6xx_gen3, not a6xx_gen4.  So this patch is correct.

<< a little unrelated to this patch >>

Rob, on A740 and A8x GPU, KMD is mapping GMEM at 16MB and 64MB offsets
respectively. So returning 0 here to userspace for those GPUs doesn't
seem right for those GPUs.

I believe userspace is interested in the aperture base address
configured in UCHE_GMEM_RANGE/UCHE_CCHE_GC_GMEM_RANGE registers so that
it can compute the IOVA to read GMEM via UCHE.

-Akhil.

> 
> BR,
> -R
> 
>> Konrad
>>
>>> Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
>>> ---
>>>  drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
>>> index d5fe6f6f0dec..0ac3fba5c277 100644
>>> --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
>>> +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
>>> @@ -376,7 +376,7 @@ int adreno_get_param(struct msm_gpu *gpu, struct msm_context *ctx,
>>>               *value = adreno_gpu->info->gmem;
>>>               return 0;
>>>       case MSM_PARAM_GMEM_BASE:
>>> -             if (adreno_gpu->info->family >= ADRENO_6XX_GEN4)
>>> +             if (adreno_gpu->info->family >= ADRENO_6XX_GEN3)
>>>                       *value = 0;
>>>               else
>>>                       *value = 0x100000;
>>>
>>> ---
>>> base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
>>> change-id: 20260314-fix-gmem-base-a650-cfd9bfcea425
>>>
>>> Best regards,

Re: [PATCH] drm/msm: Fix GMEM_BASE for A650
Posted by Konrad Dybcio 3 weeks ago
On 3/16/26 3:31 PM, Rob Clark wrote:
> On Mon, Mar 16, 2026 at 2:22 AM Konrad Dybcio
> <konrad.dybcio@oss.qualcomm.com> wrote:
>>
>> On 3/14/26 5:14 AM, Alexander Koskovich wrote:
>>> Commit dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8") changed the
>>> GMEM_BASE check from adreno_is_a650_family() & adreno_is_a740_family()
>>> to family >= ADRENO_6XX_GEN4.
>>>
>>> This inadvertently excluded A650 (ADRENO_6XX_GEN3), causing it to report
>>> an incorrect GMEM_BASE which results in severe rendering corruption.
>>>
>>> Update check to also include ADRENO_6XX_GEN3 to fix A650.
>>>
>>> Fixes: dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8")
>>
>> Hm, that commit also changed the value for A730 - Akhil/Rob, should
>> that be changed back?
> 
> No, it was incorrect before my patch.  The only problem was the change
> happened in a6xx_gen3, not a6xx_gen4.  So this patch is correct.

OK, thanks

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>

Konrad
Re: [PATCH] drm/msm: Fix GMEM_BASE for A650
Posted by Dmitry Baryshkov 3 weeks ago
On Mon, Mar 16, 2026 at 10:22:44AM +0100, Konrad Dybcio wrote:
> On 3/14/26 5:14 AM, Alexander Koskovich wrote:
> > Commit dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8") changed the
> > GMEM_BASE check from adreno_is_a650_family() & adreno_is_a740_family()
> > to family >= ADRENO_6XX_GEN4.
> > 
> > This inadvertently excluded A650 (ADRENO_6XX_GEN3), causing it to report
> > an incorrect GMEM_BASE which results in severe rendering corruption.
> > 
> > Update check to also include ADRENO_6XX_GEN3 to fix A650.
> > 
> > Fixes: dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8")
> 
> Hm, that commit also changed the value for A730 - Akhil/Rob, should
> that be changed back?

I'd say, I'm also surprised about something being broken for A650. Which
path / stack uses this value?

> 
> Konrad
> 
> > Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
> > ---
> >  drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> > index d5fe6f6f0dec..0ac3fba5c277 100644
> > --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> > +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> > @@ -376,7 +376,7 @@ int adreno_get_param(struct msm_gpu *gpu, struct msm_context *ctx,
> >  		*value = adreno_gpu->info->gmem;
> >  		return 0;
> >  	case MSM_PARAM_GMEM_BASE:
> > -		if (adreno_gpu->info->family >= ADRENO_6XX_GEN4)
> > +		if (adreno_gpu->info->family >= ADRENO_6XX_GEN3)
> >  			*value = 0;
> >  		else
> >  			*value = 0x100000;
> > 
> > ---
> > base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
> > change-id: 20260314-fix-gmem-base-a650-cfd9bfcea425
> > 
> > Best regards,

-- 
With best wishes
Dmitry
Re: [PATCH] drm/msm: Fix GMEM_BASE for A650
Posted by Konrad Dybcio 3 weeks ago
On 3/16/26 3:28 PM, Dmitry Baryshkov wrote:
> On Mon, Mar 16, 2026 at 10:22:44AM +0100, Konrad Dybcio wrote:
>> On 3/14/26 5:14 AM, Alexander Koskovich wrote:
>>> Commit dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8") changed the
>>> GMEM_BASE check from adreno_is_a650_family() & adreno_is_a740_family()
>>> to family >= ADRENO_6XX_GEN4.
>>>
>>> This inadvertently excluded A650 (ADRENO_6XX_GEN3), causing it to report
>>> an incorrect GMEM_BASE which results in severe rendering corruption.
>>>
>>> Update check to also include ADRENO_6XX_GEN3 to fix A650.
>>>
>>> Fixes: dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8")
>>
>> Hm, that commit also changed the value for A730 - Akhil/Rob, should
>> that be changed back?
> 
> I'd say, I'm also surprised about something being broken for A650. Which
> path / stack uses this value?

mesa

Konrad
Re: [PATCH] drm/msm: Fix GMEM_BASE for A650
Posted by Rob Clark 3 weeks ago
On Mon, Mar 16, 2026 at 7:28 AM Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> On Mon, Mar 16, 2026 at 10:22:44AM +0100, Konrad Dybcio wrote:
> > On 3/14/26 5:14 AM, Alexander Koskovich wrote:
> > > Commit dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8") changed the
> > > GMEM_BASE check from adreno_is_a650_family() & adreno_is_a740_family()
> > > to family >= ADRENO_6XX_GEN4.
> > >
> > > This inadvertently excluded A650 (ADRENO_6XX_GEN3), causing it to report
> > > an incorrect GMEM_BASE which results in severe rendering corruption.
> > >
> > > Update check to also include ADRENO_6XX_GEN3 to fix A650.
> > >
> > > Fixes: dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8")
> >
> > Hm, that commit also changed the value for A730 - Akhil/Rob, should
> > that be changed back?
>
> I'd say, I'm also surprised about something being broken for A650. Which
> path / stack uses this value?

Anything that samples from GMEM (gl or vk).. which could include
blend_equation_advanced, custom resolve, etc.

It's maybe not common enough to immediately notice something wrong, it
depends on your DE.

BR,
-R

> >
> > Konrad
> >
> > > Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
> > > ---
> > >  drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> > > index d5fe6f6f0dec..0ac3fba5c277 100644
> > > --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> > > +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> > > @@ -376,7 +376,7 @@ int adreno_get_param(struct msm_gpu *gpu, struct msm_context *ctx,
> > >             *value = adreno_gpu->info->gmem;
> > >             return 0;
> > >     case MSM_PARAM_GMEM_BASE:
> > > -           if (adreno_gpu->info->family >= ADRENO_6XX_GEN4)
> > > +           if (adreno_gpu->info->family >= ADRENO_6XX_GEN3)
> > >                     *value = 0;
> > >             else
> > >                     *value = 0x100000;
> > >
> > > ---
> > > base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
> > > change-id: 20260314-fix-gmem-base-a650-cfd9bfcea425
> > >
> > > Best regards,
>
> --
> With best wishes
> Dmitry
Re: [PATCH] drm/msm: Fix GMEM_BASE for A650
Posted by Dmitry Baryshkov 3 weeks ago
On Mon, Mar 16, 2026 at 07:34:42AM -0700, Rob Clark wrote:
> On Mon, Mar 16, 2026 at 7:28 AM Dmitry Baryshkov
> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> >
> > On Mon, Mar 16, 2026 at 10:22:44AM +0100, Konrad Dybcio wrote:
> > > On 3/14/26 5:14 AM, Alexander Koskovich wrote:
> > > > Commit dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8") changed the
> > > > GMEM_BASE check from adreno_is_a650_family() & adreno_is_a740_family()
> > > > to family >= ADRENO_6XX_GEN4.
> > > >
> > > > This inadvertently excluded A650 (ADRENO_6XX_GEN3), causing it to report
> > > > an incorrect GMEM_BASE which results in severe rendering corruption.
> > > >
> > > > Update check to also include ADRENO_6XX_GEN3 to fix A650.
> > > >
> > > > Fixes: dc220915ddb2 ("drm/msm: Fix GMEM_BASE for gen8")
> > >
> > > Hm, that commit also changed the value for A730 - Akhil/Rob, should
> > > that be changed back?
> >
> > I'd say, I'm also surprised about something being broken for A650. Which
> > path / stack uses this value?
> 
> Anything that samples from GMEM (gl or vk).. which could include
> blend_equation_advanced, custom resolve, etc.
> 
> It's maybe not common enough to immediately notice something wrong, it
> depends on your DE.
> 

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>


-- 
With best wishes
Dmitry