Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d847273f authored by Yashwanth's avatar Yashwanth
Browse files

disp: msm: sde: flush event thread workqueue before vm release



In some cases while transitioning between vm, vblank
work might be get executed on event thread after handoff is
completed on commit thread leading to crash. This change
flush the event thread queue during vm pre-release before
lending the io resources to the other vm.

Change-Id: I6a504fc2cec1c4985f7674bbca7fc5869bd8ad07
Signed-off-by: default avatarYashwanth <yvulapu@codeaurora.org>
parent 9025759e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1341,6 +1341,7 @@ int sde_kms_vm_pre_release(struct sde_kms *sde_kms,
	struct drm_encoder *encoder;
	struct drm_connector *connector;
	int rc = 0;
	struct msm_drm_private *priv;

	ddev = sde_kms->dev;

@@ -1348,6 +1349,7 @@ int sde_kms_vm_pre_release(struct sde_kms *sde_kms,
	if (!crtc)
		return 0;

	priv = crtc->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);

@@ -1373,6 +1375,12 @@ int sde_kms_vm_pre_release(struct sde_kms *sde_kms,
	/* disable vblank events */
	drm_crtc_vblank_off(crtc);

	/*
	 * Flush event thread queue for any pending events as vblank work
	 * might get scheduled from drm_crtc_vblank_off
	 */
	kthread_flush_worker(&priv->event_thread[crtc->index].worker);

	/* reset sw state */
	sde_crtc_reset_sw_state(crtc);