Loading drivers/gpu/msm/adreno_a6xx_gmu.c +8 −4 Original line number Diff line number Diff line Loading @@ -1227,14 +1227,18 @@ static int a6xx_gmu_suspend(struct kgsl_device *device) ADRENO_GPU_DEVICE(adreno_dev); /* Halt GX traffic */ if (a6xx_gmu_gx_is_on(device)) do_gbif_halt(device, A6XX_RBBM_GBIF_HALT, A6XX_RBBM_GBIF_HALT_ACK, gpudev->gbif_gx_halt_mask, A6XX_RBBM_GBIF_HALT_ACK, gpudev->gbif_gx_halt_mask, "GX"); /* Halt CX traffic */ do_gbif_halt(device, A6XX_GBIF_HALT, A6XX_GBIF_HALT_ACK, gpudev->gbif_arb_halt_mask, "CX"); } if (a6xx_gmu_gx_is_on(device)) kgsl_regwrite(device, A6XX_RBBM_SW_RESET_CMD, 0x1); /* Allow the software reset to complete */ Loading drivers/gpu/msm/adreno_dispatch.c +11 −2 Original line number Diff line number Diff line Loading @@ -2136,8 +2136,11 @@ static int dispatcher_do_fault(struct adreno_device *adreno_dev) mutex_lock(&device->mutex); adreno_readreg(adreno_dev, ADRENO_REG_RBBM_STATUS3, &val); mutex_unlock(&device->mutex); if (val & BIT(24)) return 0; if (val & BIT(24)) { dev_err(device->dev, "SMMU is stalled without a pagefault\n"); return -EBUSY; } } /* Turn off all the timers */ Loading Loading @@ -2403,6 +2406,12 @@ static void _adreno_dispatch_check_timeout(struct adreno_device *adreno_dev, drawobj->context->id, drawobj->timestamp); adreno_set_gpu_fault(adreno_dev, ADRENO_TIMEOUT_FAULT); /* * This makes sure dispatcher doesn't run endlessly in cases where * we couldn't run recovery */ drawqueue->expires = jiffies + msecs_to_jiffies(adreno_drawobj_timeout); } static int adreno_dispatch_process_drawqueue(struct adreno_device *adreno_dev, Loading Loading
drivers/gpu/msm/adreno_a6xx_gmu.c +8 −4 Original line number Diff line number Diff line Loading @@ -1227,14 +1227,18 @@ static int a6xx_gmu_suspend(struct kgsl_device *device) ADRENO_GPU_DEVICE(adreno_dev); /* Halt GX traffic */ if (a6xx_gmu_gx_is_on(device)) do_gbif_halt(device, A6XX_RBBM_GBIF_HALT, A6XX_RBBM_GBIF_HALT_ACK, gpudev->gbif_gx_halt_mask, A6XX_RBBM_GBIF_HALT_ACK, gpudev->gbif_gx_halt_mask, "GX"); /* Halt CX traffic */ do_gbif_halt(device, A6XX_GBIF_HALT, A6XX_GBIF_HALT_ACK, gpudev->gbif_arb_halt_mask, "CX"); } if (a6xx_gmu_gx_is_on(device)) kgsl_regwrite(device, A6XX_RBBM_SW_RESET_CMD, 0x1); /* Allow the software reset to complete */ Loading
drivers/gpu/msm/adreno_dispatch.c +11 −2 Original line number Diff line number Diff line Loading @@ -2136,8 +2136,11 @@ static int dispatcher_do_fault(struct adreno_device *adreno_dev) mutex_lock(&device->mutex); adreno_readreg(adreno_dev, ADRENO_REG_RBBM_STATUS3, &val); mutex_unlock(&device->mutex); if (val & BIT(24)) return 0; if (val & BIT(24)) { dev_err(device->dev, "SMMU is stalled without a pagefault\n"); return -EBUSY; } } /* Turn off all the timers */ Loading Loading @@ -2403,6 +2406,12 @@ static void _adreno_dispatch_check_timeout(struct adreno_device *adreno_dev, drawobj->context->id, drawobj->timestamp); adreno_set_gpu_fault(adreno_dev, ADRENO_TIMEOUT_FAULT); /* * This makes sure dispatcher doesn't run endlessly in cases where * we couldn't run recovery */ drawqueue->expires = jiffies + msecs_to_jiffies(adreno_drawobj_timeout); } static int adreno_dispatch_process_drawqueue(struct adreno_device *adreno_dev, Loading