Merge "disp: msm: sde: fix race between disable commit and vblank work"

This commit is contained in:
qctecmdr 2020-11-09 16:30:07 -08:00 • committed by Gerrit - the friendly Code Review server
commit 22e9e28e8a

View file

@ -3850,8 +3850,10 @@ static int _sde_crtc_vblank_enable_no_lock(
if (ret < 0)
return ret;
drm_for_each_encoder_mask(enc, crtc->dev,
crtc->state->encoder_mask) {
drm_for_each_encoder(enc, crtc->dev) {
if (enc->crtc != crtc)
continue;
SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable,
sde_crtc->enabled);
@ -3859,8 +3861,10 @@ static int _sde_crtc_vblank_enable_no_lock(
sde_crtc_vblank_cb, (void *)crtc);
}
} else {
drm_for_each_encoder_mask(enc, crtc->dev,
crtc->state->encoder_mask) {
drm_for_each_encoder(enc, crtc->dev) {
if (enc->crtc != crtc)
continue;
SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable,
sde_crtc->enabled);
@ -4159,11 +4163,9 @@ static void sde_crtc_disable(struct drm_crtc *crtc)
msm_mode_object_event_notify(&crtc->base, crtc->dev, &event,
(u8 *)&power_on);
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);
}
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);