From 7c5fde4c27ea52092dbdf8ed3746a3b8c0069f59 Mon Sep 17 00:00:00 2001 From: Prabhanjan Kandula Date: Tue, 4 May 2021 14:04:58 -0700 Subject: [PATCH] disp: msm: sde: update back to back atomic check polling In case of back to back atomic check only commit with modeset handling, enable client to retry same commit and increase timeout value used in polling for clear of rsvp-next. Change-Id: Ied7acfbf0fe1f68282cfc36cdadf2d6aec6db40a Signed-off-by: Prabhanjan Kandula --- msm/sde/sde_encoder.c | 6 +++--- msm/sde/sde_rm.c | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index 4eaa5746ee..2a6fc4f536 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -959,9 +959,9 @@ static int _sde_encoder_atomic_check_reserve(struct drm_encoder *drm_enc, ret = sde_rm_reserve(&sde_kms->rm, drm_enc, crtc_state, conn_state, true); if (ret) { - SDE_ERROR_ENC(sde_enc, - "RM failed to reserve resources, rc = %d\n", - ret); + if (ret != -EAGAIN) + SDE_ERROR_ENC(sde_enc, + "RM failed to reserve resources, rc = %d\n", ret); return ret; } diff --git a/msm/sde/sde_rm.c b/msm/sde/sde_rm.c index 977ea7ddc9..473af05e48 100644 --- a/msm/sde/sde_rm.c +++ b/msm/sde/sde_rm.c @@ -37,7 +37,7 @@ #define IS_COMPATIBLE_PP_DSC(p, d) (p % 2 == d % 2) /* ~one vsync poll time for rsvp_nxt to cleared by modeset from commit thread */ -#define RM_NXT_CLEAR_POLL_TIMEOUT_US 16600 +#define RM_NXT_CLEAR_POLL_TIMEOUT_US 33000 /** * toplogy information to be used when ctl path version does not @@ -2570,7 +2570,7 @@ int sde_rm_reserve( SDE_DEBUG("reserving hw for conn %d enc %d crtc %d test_only %d\n", conn_state->connector->base.id, enc->base.id, crtc_state->crtc->base.id, test_only); - SDE_EVT32(enc->base.id, conn_state->connector->base.id); + SDE_EVT32(enc->base.id, conn_state->connector->base.id, test_only); mutex_lock(&rm->rm_lock); @@ -2590,9 +2590,10 @@ int sde_rm_reserve( if (test_only && rsvp_cur && rsvp_nxt) { rsvp_nxt = _sde_rm_poll_get_rsvp_nxt_locked(rm, enc); if (rsvp_nxt) { - SDE_ERROR("poll timeout cur %d nxt %d enc %d\n", + pr_err("poll timeout cur %d nxt %d enc %d\n", rsvp_cur->seq, rsvp_nxt->seq, enc->base.id); - ret = -EINVAL; + SDE_EVT32(enc->base.id, rsvp_cur->seq, rsvp_nxt->seq, SDE_EVTLOG_ERROR); + ret = -EAGAIN; goto end; } }