From bd15fce5dff4e57ebf54b9ad621f94c6886418e4 Mon Sep 17 00:00:00 2001 From: Wenbin Wang Date: Thu, 30 Mar 2017 14:10:19 +0800 Subject: msm: kgsl: Don't delete uninitialized preemption timer If we delete uninitialized timer on CONFIG_DEBUG_OBJECTS disabled build del_timer_sync() will block for ever. For all A3xx targets preemption timer is not initialized, but dispatcher fault handler is trying to delete the uninitialized preemption timer. Fix this issue by adding a preemption check before we delete it. CRs-Fixed: 2023690 Change-Id: I2c51a0b2286b82bf2eb5ee68d923dd9585f07f00 Signed-off-by: Wenbin Wang Signed-off-by: Abhilash Kumar --- drivers/gpu/msm/adreno_dispatch.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'drivers/gpu') diff --git a/drivers/gpu/msm/adreno_dispatch.c b/drivers/gpu/msm/adreno_dispatch.c index 54b8da5302e8..55f906c9cb90 100644 --- a/drivers/gpu/msm/adreno_dispatch.c +++ b/drivers/gpu/msm/adreno_dispatch.c @@ -2090,7 +2090,12 @@ static int dispatcher_do_fault(struct adreno_device *adreno_dev) /* Turn off all the timers */ del_timer_sync(&dispatcher->timer); del_timer_sync(&dispatcher->fault_timer); - del_timer_sync(&adreno_dev->preempt.timer); + /* + * Deleting uninitialized timer will block for ever on kernel debug + * disable build. Hence skip del timer if it is not initialized. + */ + if (adreno_is_preemption_enabled(adreno_dev)) + del_timer_sync(&adreno_dev->preempt.timer); mutex_lock(&device->mutex); -- cgit v1.2.3