summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorWenbin Wang <wwenbin@codeaurora.org>2017-03-30 14:10:19 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-05-22 21:57:50 -0700
commitbd15fce5dff4e57ebf54b9ad621f94c6886418e4 (patch)
treee03125a51a2558da606e7e8a987cc68204813571 /drivers/gpu
parent60be71604a84d2e047215cb702d6324379a353bb (diff)
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 <wwenbin@codeaurora.org> Signed-off-by: Abhilash Kumar <krabhi@codeaurora.org>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/msm/adreno_dispatch.c7
1 files changed, 6 insertions, 1 deletions
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);