[PATCH] drm/i915/psr: Set SF Partial Frame Enable also on Full update

Jouni Högander jouni.hogander at intel.com
Tue Feb 22 09:03:04 UTC 2022


Currently we are observing occasional screen flickering when
PSR2 selective fetch is enables. More specifically glitch seems
to happen on full frame update when cursor goes to coords
x = -1 or y = -1

According to Bspec SF Single full frame should not be set if
Selective Fetch is not enabled.

Fix this by setting "SF Partial Frame Enable" bit together with
SF Single full frame bit.

Bspec: 49274

Reported-by: Lyude Paul <lyude at redhat.com>
Cc: Mihai Harpau <mishu at piatafinanciara.ro>
Cc: José Roberto de Souza <jose.souza at intel.com>
Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
Bugzilla: https://gitlab.freedesktop.org/drm/intel/-/issues/5077
Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 2e0b092f4b6b..5dc9716702f9 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1546,11 +1546,20 @@ static void psr2_man_trk_ctl_calc(struct intel_crtc_state *crtc_state,
 	u32 val = PSR2_MAN_TRK_CTL_ENABLE;
 
 	if (full_update) {
+
+		/*
+		 * From bspec on "SF Single full frame" bit: "Do not
+		 * set this bit to 1 if Selective Fetch is not enabled."
+		 */
+		if (!IS_ALDERLAKE_P(dev_priv))
+			val |= PSR2_MAN_TRK_CTL_SF_PARTIAL_FRAME_UPDATE;
+
 		/*
 		 * Not applying Wa_14014971508:adlp as we do not support the
 		 * feature that requires this workaround.
 		 */
 		val |= man_trk_ctl_single_full_frame_bit_get(dev_priv);
+
 		goto exit;
 	}
 
-- 
2.25.1



More information about the Intel-gfx-trybot mailing list