Skip to content

Commit b775328

Browse files
konradybciorobclark
authored andcommitted
drm/msm/a6xx: Poll for GBIF unhalt status in hw_init
Some GPUs - particularly A7xx ones - are really really stubborn and sometimes take a longer-than-expected time to finish unhalting GBIF. Note that this is not caused by the request a few lines above. Poll for the unhalt ack to make sure we're not trying to write bits to an essentially dead GPU that can't receive data on its end of the bus. Failing to do this will result in inexplicable GMU timeouts or worse. This is a rather ugly hack which introduces a whole lot of latency. Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> # sm8450 Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> Patchwork: https://patchwork.freedesktop.org/patch/559292/ Signed-off-by: Rob Clark <robdclark@chromium.org>
1 parent 1f8c29e commit b775328

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

drivers/gpu/drm/msm/adreno/a6xx_gpu.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1629,6 +1629,10 @@ static int hw_init(struct msm_gpu *gpu)
16291629
mb();
16301630
}
16311631

1632+
/* Some GPUs are stubborn and take their sweet time to unhalt GBIF! */
1633+
if (adreno_is_a7xx(adreno_gpu) && a6xx_has_gbif(adreno_gpu))
1634+
spin_until(!gpu_read(gpu, REG_A6XX_GBIF_HALT_ACK));
1635+
16321636
gpu_write(gpu, REG_A6XX_RBBM_SECVID_TSB_CNTL, 0);
16331637

16341638
if (adreno_is_a619_holi(adreno_gpu))

0 commit comments

Comments
 (0)