From 5f4735e2cecb98a7202c8c72f9ee05ae20bc5438 Mon Sep 17 00:00:00 2001 From: GG Hou Date: Thu, 11 May 2023 10:55:30 +0800 Subject: [PATCH] disp: msm: sde: fence error handling for wb and cwb retire fence Fence error handling for wb and cwb retire fence. Signal the retire fence for the fence error frame. Change-Id: I0f73195c50edab4b8aefb58cea342214be87584c Signed-off-by: GG Hou --- msm/sde/sde_crtc.c | 4 ++++ msm/sde/sde_encoder.c | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index 9265cbd08f..c9da5f34bf 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -3891,6 +3891,10 @@ int sde_crtc_sw_fence_error_handle(struct drm_crtc *crtc, int err_status) sde_crtc->handle_fence_error_bw_update = true; drm_for_each_encoder_mask(drm_encoder, crtc->dev, crtc->state->encoder_mask) { + /* continue if copy encoder is encountered */ + if (sde_crtc_state_in_clone_mode(drm_encoder, crtc->state)) + continue; + rc = sde_encoder_handle_dma_fence_out_of_order(drm_encoder); if (rc) { SDE_DEBUG("Dma fence out of order failed, rc = %d\n", rc); diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index 9f69417d43..90d2777417 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -4423,8 +4423,12 @@ static void _sde_encoder_kickoff_phys(struct sde_encoder_virt *sde_enc, /* reset input fence status and skip flush for fence error case. */ if (sde_crtc->input_fence_status < 0) { - SDE_EVT32(DRMID(&sde_enc->base), sde_crtc->input_fence_status); - sde_crtc->input_fence_status = 0; + if (!sde_encoder_in_clone_mode(&sde_enc->base)) + sde_crtc->input_fence_status = 0; + + SDE_EVT32(DRMID(&sde_enc->base), sde_encoder_in_clone_mode(&sde_enc->base), + sde_crtc->input_fence_status); + goto handle_elevated_ahb_vote; }