On 6/4/26 10:08 PM, Akhil P Oommen wrote:
> From: Shivam Rawat <[email protected]>
> 
> There are stale RPMH votes (BCM votes) observed after GMU suspend. This
> is because the rpmh stop sequences are skipped during gmu suspend. Fix
> this and also move GMU to reset state to avoid any further activity.
> 
> Fixes: f248d5d5159a ("drm/msm/a6xx: Fix PDC sleep sequence")
> Signed-off-by: Shivam Rawat <[email protected]>
> Signed-off-by: Akhil P Oommen <[email protected]>
> ---
>  drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c 
> b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
> index 2e5d7b53a0c3..a2f6918c4f7f 100644
> --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
> +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
> @@ -642,7 +642,7 @@ static void a6xx_rpmh_stop(struct a6xx_gmu *gmu)
>       int ret;
>       u32 val;
>  
> -     if (test_and_clear_bit(GMU_STATUS_FW_START, &gmu->status))
> +     if (!test_and_clear_bit(GMU_STATUS_FW_START, &gmu->status))
>               return;

Hiding in plain sight!

>  
>       if (adreno_is_a840(adreno_gpu))
> @@ -1465,6 +1465,9 @@ static void a6xx_gmu_shutdown(struct a6xx_gmu *gmu)
>       /* Stop the interrupts and mask the hardware */
>       a6xx_gmu_irq_disable(gmu);
>  
> +     /* Halt the gmu cm3 core */
> +     gmu_write(gmu, REG_A6XX_GMU_CM3_SYSRESET, 1);

I believe this is what kgsl does as well, so:

Reviewed-by: Konrad Dybcio <[email protected]>

Konrad

Reply via email to