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 <quic_renjhou@quicinc.com>
This commit is contained in:
GG Hou
2023-05-11 10:55:30 +08:00
committed by Gerrit - the friendly Code Review server
parent 85015a84cb
commit 5f4735e2ce
2 changed files with 10 additions and 2 deletions

View File

@@ -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);

View File

@@ -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);
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;
}