From 67ef82eb35fb8004217b20ed033fa4688bed7ff5 Mon Sep 17 00:00:00 2001 From: Jayaprakash Madisetty Date: Sat, 20 Nov 2021 12:50:17 +0530 Subject: [PATCH] disp: msm: sde: avoid CWB in power on commit This change depends on HAL change which sets CONNECTOR_SET_CRTC property to null for cwb conn, if cwb is enabled during power off commit. This causes power off commit crtc_state's active_changed and connectors_changed set to true, which is causing seamless_crtc to true during msm_disable_outputs and this leads to invalid crtc state. This change modifies the seamless_crtc condition and the msm_crtc_set_mode callback is early returned during such cases to power off crtc. Without this change, during power on commit crtc_duplicate_state is causing cwb to turn on and the release fence is being created with +2 offset in such case, leading to late release fence signalling and further GPU fence timeouts. Change-Id: Ibe87a8c0e8083d619ee6f502b2a946e1e8ef5553 Signed-off-by: Jayaprakash Madisetty --- msm/msm_atomic.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/msm/msm_atomic.c b/msm/msm_atomic.c index 412d8b3bda05..049623486f38 100644 --- a/msm/msm_atomic.c +++ b/msm/msm_atomic.c @@ -55,7 +55,7 @@ static inline bool _msm_seamless_for_crtc(struct drm_device *dev, if (msm_is_mode_seamless_dms(&crtc_state->adjusted_mode) && !enable) return true; - if (!crtc_state->mode_changed && crtc_state->connectors_changed) { + if (!crtc_state->mode_changed && crtc_state->connectors_changed && crtc_state->active) { for_each_old_connector_in_state(state, connector, conn_state, i) { if ((conn_state->crtc == crtc_state->crtc) || @@ -282,6 +282,9 @@ msm_crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state) mode = &new_crtc_state->mode; adjusted_mode = &new_crtc_state->adjusted_mode; + if (!new_crtc_state->active) + continue; + if (!new_crtc_state->mode_changed && new_crtc_state->connectors_changed) { if (_msm_seamless_for_conn(connector,