diff --git a/msm/sde/sde_kms.c b/msm/sde/sde_kms.c index 8206bf4188..fbcc896b8f 100644 --- a/msm/sde/sde_kms.c +++ b/msm/sde/sde_kms.c @@ -1383,11 +1383,13 @@ int sde_kms_vm_pre_release(struct sde_kms *sde_kms, { struct drm_crtc *crtc; struct drm_encoder *encoder; + struct msm_drm_private *priv; int rc = 0; crtc = sde_kms_vm_get_vm_crtc(state); if (!crtc) return 0; + priv = sde_kms->dev->dev_private; /* if vm_req is enabled, once CRTC on the commit is guaranteed */ sde_kms_wait_for_frame_transfer_complete(&sde_kms->base, crtc); @@ -1396,6 +1398,8 @@ int sde_kms_vm_pre_release(struct sde_kms *sde_kms, sde_kms_cancel_delayed_work(crtc); + kthread_flush_worker(&priv->event_thread[crtc->index].worker); + /* disable SDE encoder irq's */ drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask) {