drm/msm/a6xx: Handle GMU prepare-slumber hfi failure
authorAkhil P Oommen <quic_akhilpo@quicinc.com>
Thu, 18 Aug 2022 20:22:15 +0000 (01:52 +0530)
committerRob Clark <robdclark@chromium.org>
Thu, 1 Sep 2022 15:06:55 +0000 (08:06 -0700)
When prepare-slumber hfi fails, we should follow a6xx_gmu_force_off()
sequence.

Signed-off-by: Akhil P Oommen <quic_akhilpo@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/498401/
Link: https://lore.kernel.org/r/20220819015030.v5.7.I54815c7c36b80d4725cd054e536365250454452f@changeid
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/adreno/a6xx_gmu.c

index ec25f19..e033d6a 100644 (file)
@@ -1086,7 +1086,11 @@ static void a6xx_gmu_shutdown(struct a6xx_gmu *gmu)
                a6xx_bus_clear_pending_transactions(adreno_gpu);
 
                /* tell the GMU we want to slumber */
-               a6xx_gmu_notify_slumber(gmu);
+               ret = a6xx_gmu_notify_slumber(gmu);
+               if (ret) {
+                       a6xx_gmu_force_off(gmu);
+                       return;
+               }
 
                ret = gmu_poll_timeout(gmu,
                        REG_A6XX_GPU_GMU_AO_GPU_CX_BUSY_STATUS, val,