drm/msm/sde: fix race condition in vblank control interrupts

In Dual display concurrencies there are certain cases where
irq_idx and vblank_refcount state mismatch can occur.
To avoid it, during setup of irq_hw_idx, reset the vblank_refcount
and unregister read ptr irq if not yet done by then along with
maintaining global mutex lock for vblank_refcount.
Also, if register IRQ fails, correct vblank_refcount so
that IRQ registration can be tried again.

Change-Id: I06bcbf71c6a43bd161ff61093d9f6063a292d6bc
Signed-off-by: Raviteja Tamatam <travitej@codeaurora.org>
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
这个提交包含在:
Samantha Tran
2020-01-16 12:06:34 -08:00
提交者 Gerrit - the friendly Code Review server
父节点 83ff89732a
当前提交 0064a0227b
修改 3 个文件,包含 34 行新增4 行删除

查看文件

@@ -299,6 +299,7 @@ struct sde_kms {
atomic_t detach_sec_cb;
atomic_t detach_all_cb;
struct mutex secure_transition_lock;
struct mutex vblank_ctl_global_lock;
bool first_kickoff;
bool qdss_enabled;