Re: [PATCH] drm/msm: Fix GMEM_BASE for A650
From: Akhil P Oommen
Date: Mon Mar 16 2026 - 16:55:14 EST
On 3/16/2026 8:01 PM, Rob Clark wrote:
> On Mon, Mar 16, 2026 at 2:22 AM Konrad Dybcio
> <konrad.dybcio@xxxxxxxxxxxxxxxx> 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@xxxxx>
>>> ---
>>> 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,