Loading drivers/gpu/msm/adreno_a6xx.c +11 −3 Original line number Diff line number Diff line Loading @@ -1325,11 +1325,19 @@ static const char *a6xx_fault_block_uche(struct kgsl_device *device, unsigned int uche_client_id = 0; static char str[40]; mutex_lock(&device->mutex); /* * Smmu driver takes a vote on CX gdsc before calling the kgsl pagefault * handler. If there is contention for device mutex in this path and the * dispatcher fault handler is holding this lock, trying to turn off CX * gdsc will fail during the reset. So to avoid blocking here, try to * lock device mutex and return if it fails. */ if (!mutex_trylock(&device->mutex)) return "UCHE"; if (!kgsl_state_is_awake(device)) { mutex_unlock(&device->mutex); return "UCHE: unknown"; return "UCHE"; } kgsl_regread(device, A6XX_UCHE_CLIENT_PF, &uche_client_id); Loading @@ -1337,7 +1345,7 @@ static const char *a6xx_fault_block_uche(struct kgsl_device *device, /* Ignore the value if the gpu is in IFPC */ if (uche_client_id == SCOOBYDOO) return "UCHE: unknown"; return "UCHE"; uche_client_id &= A6XX_UCHE_CLIENT_PF_CLIENT_ID_MASK; snprintf(str, sizeof(str), "UCHE: %s", Loading Loading
drivers/gpu/msm/adreno_a6xx.c +11 −3 Original line number Diff line number Diff line Loading @@ -1325,11 +1325,19 @@ static const char *a6xx_fault_block_uche(struct kgsl_device *device, unsigned int uche_client_id = 0; static char str[40]; mutex_lock(&device->mutex); /* * Smmu driver takes a vote on CX gdsc before calling the kgsl pagefault * handler. If there is contention for device mutex in this path and the * dispatcher fault handler is holding this lock, trying to turn off CX * gdsc will fail during the reset. So to avoid blocking here, try to * lock device mutex and return if it fails. */ if (!mutex_trylock(&device->mutex)) return "UCHE"; if (!kgsl_state_is_awake(device)) { mutex_unlock(&device->mutex); return "UCHE: unknown"; return "UCHE"; } kgsl_regread(device, A6XX_UCHE_CLIENT_PF, &uche_client_id); Loading @@ -1337,7 +1345,7 @@ static const char *a6xx_fault_block_uche(struct kgsl_device *device, /* Ignore the value if the gpu is in IFPC */ if (uche_client_id == SCOOBYDOO) return "UCHE: unknown"; return "UCHE"; uche_client_id &= A6XX_UCHE_CLIENT_PF_CLIENT_ID_MASK; snprintf(str, sizeof(str), "UCHE: %s", Loading