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 <quic_travitej@quicinc.com>
This commit is contained in:
@@ -1383,11 +1383,13 @@ int sde_kms_vm_pre_release(struct sde_kms *sde_kms,
|
|||||||
{
|
{
|
||||||
struct drm_crtc *crtc;
|
struct drm_crtc *crtc;
|
||||||
struct drm_encoder *encoder;
|
struct drm_encoder *encoder;
|
||||||
|
struct msm_drm_private *priv;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
crtc = sde_kms_vm_get_vm_crtc(state);
|
crtc = sde_kms_vm_get_vm_crtc(state);
|
||||||
if (!crtc)
|
if (!crtc)
|
||||||
return 0;
|
return 0;
|
||||||
|
priv = sde_kms->dev->dev_private;
|
||||||
|
|
||||||
/* if vm_req is enabled, once CRTC on the commit is guaranteed */
|
/* if vm_req is enabled, once CRTC on the commit is guaranteed */
|
||||||
sde_kms_wait_for_frame_transfer_complete(&sde_kms->base, crtc);
|
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);
|
sde_kms_cancel_delayed_work(crtc);
|
||||||
|
|
||||||
|
kthread_flush_worker(&priv->event_thread[crtc->index].worker);
|
||||||
|
|
||||||
/* disable SDE encoder irq's */
|
/* disable SDE encoder irq's */
|
||||||
drm_for_each_encoder_mask(encoder, crtc->dev,
|
drm_for_each_encoder_mask(encoder, crtc->dev,
|
||||||
crtc->state->encoder_mask) {
|
crtc->state->encoder_mask) {
|
||||||
|
Reference in New Issue
Block a user