From e9f3be9f024c1991100c12134a4135153c1dee6f Mon Sep 17 00:00:00 2001 From: Dhaval Patel Date: Wed, 6 Oct 2021 11:54:35 -0700 Subject: [PATCH] disp: msm: sde: drop suspend state if commit is skipped Drop refcount on pm_suspend commit state if atomic commit is skipped due to failure. It will avoid frame trigger during pm_resume call. Change-Id: Ib650ff348ef53122cccad9cb5d200ae295fd2b30 Signed-off-by: Dhaval Patel --- msm/sde/sde_kms.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/msm/sde/sde_kms.c b/msm/sde/sde_kms.c index ac5181a185..8a0ea30a5e 100644 --- a/msm/sde/sde_kms.c +++ b/msm/sde/sde_kms.c @@ -3892,6 +3892,7 @@ retry: DRM_ERROR("failed to get crtc %d state\n", conn->state->crtc->base.id); drm_connector_list_iter_end(&conn_iter); + ret = -EINVAL; goto unlock; } @@ -3930,6 +3931,12 @@ unlock: drm_modeset_backoff(&ctx); goto retry; } + + if ((ret || !num_crtcs) && sde_kms->suspend_state) { + drm_atomic_state_put(sde_kms->suspend_state); + sde_kms->suspend_state = NULL; + } + drm_modeset_drop_locks(&ctx); drm_modeset_acquire_fini(&ctx); @@ -3968,7 +3975,8 @@ static int sde_kms_pm_resume(struct device *dev) SDE_EVT32(sde_kms->suspend_state != NULL); - drm_mode_config_reset(ddev); + if (sde_kms->suspend_state) + drm_mode_config_reset(ddev); drm_modeset_acquire_init(&ctx, 0); retry: