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

Commit a83f7e3f authored by Ashwini Muduganti's avatar Ashwini Muduganti
Browse files

Revert "drm/msm/sde: ensure all local atomic states get freed"



This reverts commit 69d09cfb.

Change-Id: I8c66bdea86cb8d9396caa1b2fbcceaf6f2b3df1f
Signed-off-by: default avatarAshwini Muduganti <amudug@codeaurora.org>
parent b1d92757
Loading
Loading
Loading
Loading
+20 −21
Original line number Diff line number Diff line
@@ -2105,7 +2105,7 @@ static void sde_kms_preclose(struct msm_kms *kms, struct drm_file *file)
	}

end:
	if (state)
	if ((ret != 0) && state)
		drm_atomic_state_put(state);

	SDE_DEBUG("sde preclose done, ret:%d\n", ret);
@@ -2220,10 +2220,14 @@ static void sde_kms_lastclose(struct msm_kms *kms,
		SDE_DEBUG("deadlock backoff on attempt %d\n", i);
	}

	if (ret)
		SDE_ERROR("failed to run last close: %d\n", ret);

	if (ret) {
		/**
		 * on success, atomic state object ownership transfers to
		 * framework, otherwise, free it here
		 */
		drm_atomic_state_put(state);
		SDE_ERROR("failed to run last close: %d\n", ret);
	}
}

static int sde_kms_check_secure_transition(struct msm_kms *kms,
@@ -2646,7 +2650,7 @@ static int sde_kms_pm_suspend(struct device *dev)
	struct drm_modeset_acquire_ctx ctx;
	struct drm_connector *conn;
	struct drm_connector_list_iter conn_iter;
	struct drm_atomic_state *state = NULL;
	struct drm_atomic_state *state;
	struct sde_kms *sde_kms;
	int ret = 0, num_crtcs = 0;

@@ -2676,17 +2680,15 @@ static int sde_kms_pm_suspend(struct device *dev)
		drm_atomic_state_put(sde_kms->suspend_state);
	sde_kms->suspend_state = drm_atomic_helper_duplicate_state(ddev, &ctx);
	if (IS_ERR_OR_NULL(sde_kms->suspend_state)) {
		ret = PTR_ERR(sde_kms->suspend_state);
		DRM_ERROR("failed to back up suspend state, %d\n", ret);
		DRM_ERROR("failed to back up suspend state\n");
		sde_kms->suspend_state = NULL;
		goto unlock;
	}

	/* create atomic state to disable all CRTCs */
	state = drm_atomic_state_alloc(ddev);
	if (!state) {
		ret = -ENOMEM;
		DRM_ERROR("failed to allocate crtc disable state, %d\n", ret);
	if (IS_ERR_OR_NULL(state)) {
		DRM_ERROR("failed to allocate crtc disable state\n");
		goto unlock;
	}

@@ -2708,7 +2710,7 @@ static int sde_kms_pm_suspend(struct device *dev)
			if (ret) {
				DRM_ERROR("failed to set lp2 for conn %d\n",
						conn->base.id);
				drm_connector_list_iter_end(&conn_iter);
				drm_atomic_state_put(state);
				goto unlock;
			}
		}
@@ -2720,7 +2722,7 @@ static int sde_kms_pm_suspend(struct device *dev)
			if (IS_ERR_OR_NULL(crtc_state)) {
				DRM_ERROR("failed to get crtc %d state\n",
						conn->state->crtc->base.id);
				drm_connector_list_iter_end(&conn_iter);
				drm_atomic_state_put(state);
				goto unlock;
			}

@@ -2734,6 +2736,7 @@ static int sde_kms_pm_suspend(struct device *dev)
	/* check for nothing to do */
	if (num_crtcs == 0) {
		DRM_DEBUG("all crtcs are already in the off state\n");
		drm_atomic_state_put(state);
		sde_kms->suspend_block = true;
		goto unlock;
	}
@@ -2742,6 +2745,7 @@ static int sde_kms_pm_suspend(struct device *dev)
	ret = drm_atomic_commit(state);
	if (ret < 0) {
		DRM_ERROR("failed to disable crtcs, %d\n", ret);
		drm_atomic_state_put(state);
		goto unlock;
	}

@@ -2766,11 +2770,6 @@ static int sde_kms_pm_suspend(struct device *dev)
	}
	drm_connector_list_iter_end(&conn_iter);
unlock:
	if (state) {
		drm_atomic_state_put(state);
		state = NULL;
	}

	if (ret == -EDEADLK) {
		drm_modeset_backoff(&ctx);
		goto retry;
@@ -2778,7 +2777,7 @@ static int sde_kms_pm_suspend(struct device *dev)
	drm_modeset_drop_locks(&ctx);
	drm_modeset_acquire_fini(&ctx);

	return ret;
	return 0;
}

static int sde_kms_pm_resume(struct device *dev)
@@ -2824,10 +2823,10 @@ static int sde_kms_pm_resume(struct device *dev)
			drm_modeset_backoff(&ctx);
		}

		if (ret < 0)
		if (ret < 0) {
			DRM_ERROR("failed to restore state, %d\n", ret);

			drm_atomic_state_put(sde_kms->suspend_state);
		}
		sde_kms->suspend_state = NULL;
	}