From 47261ce97c3faa710bfc69aeb5438f70803d8949 Mon Sep 17 00:00:00 2001 From: Narendra Muppalla Date: Tue, 13 Oct 2020 13:09:56 -0700 Subject: [PATCH] disp: msm: sde: avoid mutex lock for crtc flush event thread As per current design in crtc disable sequence event thread can cause deadlock.This change avoids mutex lock for crtc flush event thread to flush all event work. Change-Id: Ia7156032bee9245fe84fd1621cf1994920b8e574 Signed-off-by: Narendra Muppalla --- msm/sde/sde_crtc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index d42ef4173b..a43f66ec7c 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -4162,7 +4162,12 @@ static void sde_crtc_disable(struct drm_crtc *crtc) msm_mode_object_event_notify(&crtc->base, crtc->dev, &event, (u8 *)&power_on); - _sde_crtc_flush_event_thread(crtc); + if (atomic_read(&sde_crtc->frame_pending)) { + mutex_unlock(&sde_crtc->crtc_lock); + _sde_crtc_flush_event_thread(crtc); + mutex_lock(&sde_crtc->crtc_lock); + } + kthread_cancel_delayed_work_sync(&sde_crtc->static_cache_read_work); kthread_cancel_delayed_work_sync(&sde_crtc->idle_notify_work);