From b470c15742ad2655a3202673da9e19c413374f22 Mon Sep 17 00:00:00 2001 From: Raviteja Tamatam Date: Wed, 22 Feb 2023 14:24:58 -0800 Subject: [PATCH] disp: msm: sde: flush event thread work before vm transition During VM transition there should be no pending crtc event thread operations in progress to avoid any resource access after vm release. Flush the event thread worker in prerelease to ensure it. Change-Id: I51d6c78a702235ee926c9ff6415c8d69f74b5929 Signed-off-by: Raviteja Tamatam --- msm/sde/sde_kms.c | 4 ++++ 1 file changed, 4 insertions(+) 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) {