From 8576a939888b9533d974cb6ac2143126aa22daa8 Mon Sep 17 00:00:00 2001 From: Krishna Manikandan Date: Wed, 18 Nov 2020 12:44:27 +0530 Subject: [PATCH] disp: msm: sde: add mutex lock to handle ppdone timeout usecases The irq register and unregister calls in ppdone timeout path can result in race condition which can lead to scenarios where irqs will be enabled with no callback registered. Add vblank mutex lock to avoid such scenarios. Change-Id: I02b07b773d6b9a28c3af431eb3d8314292769f12 Signed-off-by: Krishna Manikandan --- msm/sde/sde_encoder_phys_cmd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/msm/sde/sde_encoder_phys_cmd.c b/msm/sde/sde_encoder_phys_cmd.c index 9fbafb26b1e4..10c1b12d6824 100644 --- a/msm/sde/sde_encoder_phys_cmd.c +++ b/msm/sde/sde_encoder_phys_cmd.c @@ -541,12 +541,14 @@ static int _sde_encoder_phys_cmd_handle_ppdone_timeout( pending_kickoff_cnt); SDE_EVT32(DRMID(phys_enc->parent), SDE_EVTLOG_FATAL); + mutex_lock(phys_enc->vblank_ctl_lock); sde_encoder_helper_unregister_irq(phys_enc, INTR_IDX_RDPTR); if (sde_kms_is_secure_session_inprogress(phys_enc->sde_kms)) SDE_DBG_DUMP("secure", "all", "dbg_bus"); else SDE_DBG_DUMP("all", "dbg_bus", "vbif_dbg_bus"); sde_encoder_helper_register_irq(phys_enc, INTR_IDX_RDPTR); + mutex_unlock(phys_enc->vblank_ctl_lock); } /*