disp: msm: sde: manage vblank refcount concurrency
Vblank refcount can reach out of sync with below case 1. event_thread triggers the vblank_enable 2. commit_thread triggers the modeset 2.a modeset resets the vblank refcount with mode_set 3. event_thread triggers the vblank_disable Event 2.a resets the vblank refcount and vblank disable request after 2.a is going to fail. This can be fixed by avoiding concurrency between mode_set call and vblank request. Change-Id: Ibb810ec90e81d63feee443f1c37dd736d5cfac0d Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
743dc695c4
commit
44cde01fc7
@@ -275,6 +275,7 @@ struct sde_encoder_irq {
|
||||
* @enc_spinlock: Virtual-Encoder-Wide Spin Lock for IRQ purposes
|
||||
* @enable_state: Enable state tracking
|
||||
* @vblank_refcount: Reference count of vblank request
|
||||
* @vblank_cached_refcount: Reference count of vblank cached request
|
||||
* @wbirq_refcount: Reference count of wb irq request
|
||||
* @vsync_cnt: Vsync count for the physical encoder
|
||||
* @underrun_cnt: Underrun count for the physical encoder
|
||||
@@ -324,6 +325,7 @@ struct sde_encoder_phys {
|
||||
enum sde_enc_enable_state enable_state;
|
||||
struct mutex *vblank_ctl_lock;
|
||||
atomic_t vblank_refcount;
|
||||
atomic_t vblank_cached_refcount;
|
||||
atomic_t wbirq_refcount;
|
||||
atomic_t vsync_cnt;
|
||||
atomic_t underrun_cnt;
|
||||
|
Reference in New Issue
Block a user