Merge "msm: kgsl: Fix IFPC abort due to preemption keepalive"

This commit is contained in:
qctecmdr 2020-12-20 23:19:54 -08:00 committed by Gerrit - the friendly Code Review server
commit af305c96f5

View File

@ -128,6 +128,17 @@ static void _a6xx_preemption_done(struct adreno_device *adreno_dev)
adreno_dev->preempt.count++; adreno_dev->preempt.count++;
/*
* In normal scenarios, preemption keep alive bit is cleared during
* CP interrupt callback. However, if preemption is successful
* immediately after preemption timer expires or there is a preemption
* interrupt with non-zero status, the state is transitioned to complete
* state. Once dispatcher is scheduled, it calls this function.
* We can now safely clear the preemption keepalive bit, allowing
* power collapse to resume its regular activity.
*/
_power_collapse_set(adreno_dev, false);
del_timer_sync(&adreno_dev->preempt.timer); del_timer_sync(&adreno_dev->preempt.timer);
kgsl_regread(device, A6XX_CP_CONTEXT_SWITCH_LEVEL_STATUS, &status); kgsl_regread(device, A6XX_CP_CONTEXT_SWITCH_LEVEL_STATUS, &status);