mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 14:19:09 -04:00
disp: msm: sde: add vblank mutex lock during irq unregister
Currently, during ctl reset in video mode, irq register or unregister might result in race condition with vblank enable/disable calls on event thread resulting in enable cnt mismatch. This change adds mutex locks to avoid race conditions in such cases. Change-Id: I45aef19864475ac1b02dd8e84810eee233fc60ea Signed-off-by: Yashwanth <yvulapu@codeaurora.org>
This commit is contained in:
parent
7e52459f8e
commit
91291bb9c4
1 changed files with 12 additions and 2 deletions
|
|
@ -924,6 +924,7 @@ static int sde_encoder_phys_vid_prepare_for_kickoff(
|
|||
struct drm_connector *conn;
|
||||
int event;
|
||||
int rc;
|
||||
int irq_enable;
|
||||
|
||||
if (!phys_enc || !params || !phys_enc->hw_ctl) {
|
||||
SDE_ERROR("invalid encoder/parameters\n");
|
||||
|
|
@ -952,12 +953,21 @@ static int sde_encoder_phys_vid_prepare_for_kickoff(
|
|||
/* to avoid flooding, only log first time, and "dead" time */
|
||||
if (vid_enc->error_count == 1) {
|
||||
SDE_EVT32(DRMID(phys_enc->parent), SDE_EVTLOG_FATAL);
|
||||
mutex_lock(phys_enc->vblank_ctl_lock);
|
||||
|
||||
sde_encoder_helper_unregister_irq(
|
||||
irq_enable = atomic_read(&phys_enc->vblank_refcount);
|
||||
|
||||
if (irq_enable)
|
||||
sde_encoder_helper_unregister_irq(
|
||||
phys_enc, INTR_IDX_VSYNC);
|
||||
|
||||
SDE_DBG_DUMP("all", "dbg_bus", "vbif_dbg_bus");
|
||||
sde_encoder_helper_register_irq(
|
||||
|
||||
if (irq_enable)
|
||||
sde_encoder_helper_register_irq(
|
||||
phys_enc, INTR_IDX_VSYNC);
|
||||
|
||||
mutex_unlock(phys_enc->vblank_ctl_lock);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue