]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/psr: Reject async flips when selective fetch is enabled
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 5 Nov 2025 17:10:15 +0000 (19:10 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 21 Nov 2025 16:17:59 +0000 (18:17 +0200)
The selective fetch code doesn't handle asycn flips correctly.
There is a nonsense check for async flips in
intel_psr2_sel_fetch_config_valid() but that only gets called
for modesets/fastsets and thus does nothing for async flips.

Currently intel_async_flip_check_hw() is very unhappy as the
selective fetch code pulls in planes that are not even async
flips capable.

Reject async flips when selective fetch is enabled, until
someone fixes this properly (ie. disable selective fetch while
async flips are being issued).

Cc: stable@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20251105171015.22234-1-ville.syrjala@linux.intel.com
Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
drivers/gpu/drm/i915/display/intel_display.c
drivers/gpu/drm/i915/display/intel_psr.c

index 6c8a7f63111ecd13f2c4ca0d27bcdde6601dcbce..7aff2785521b70c6fbaa4f587530822b0b9c27ad 100644 (file)
@@ -6002,6 +6002,14 @@ static int intel_async_flip_check_uapi(struct intel_atomic_state *state,
                return -EINVAL;
        }
 
+       /* FIXME: selective fetch should be disabled for async flips */
+       if (new_crtc_state->enable_psr2_sel_fetch) {
+               drm_dbg_kms(display->drm,
+                           "[CRTC:%d:%s] async flip disallowed with PSR2 selective fetch\n",
+                           crtc->base.base.id, crtc->base.name);
+               return -EINVAL;
+       }
+
        for_each_oldnew_intel_plane_in_state(state, plane, old_plane_state,
                                             new_plane_state, i) {
                if (plane->pipe != crtc->pipe)
index 00ac652809cca36875a81c559dd635381d6bbbb5..08bca45739749e6377d4b13398e49a68b47b4cea 100644 (file)
@@ -1301,12 +1301,6 @@ static bool intel_psr2_sel_fetch_config_valid(struct intel_dp *intel_dp,
                return false;
        }
 
-       if (crtc_state->uapi.async_flip) {
-               drm_dbg_kms(display->drm,
-                           "PSR2 sel fetch not enabled, async flip enabled\n");
-               return false;
-       }
-
        return crtc_state->enable_psr2_sel_fetch = true;
 }