Sfoglia il codice sorgente

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 <[email protected]>
Raviteja Tamatam 2 anni fa
parent
commit
b470c15742
1 ha cambiato i file con 4 aggiunte e 0 eliminazioni
  1. 4 0
      msm/sde/sde_kms.c

+ 4 - 0
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) {