]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915: Use the proper (hw.crtc) for the cursor unpin vblank worker
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 19 Nov 2025 18:16:01 +0000 (20:16 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 27 Nov 2025 22:03:33 +0000 (00:03 +0200)
uapi.crtc is NULL for joiner secondary pipes, so using that is
nonsense in most places. Switch to hw.crtc so that we use the
deferred cursor unpin also on joiner secondary pipes.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20251119181606.17129-2-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_crtc.c
drivers/gpu/drm/i915/display/intel_plane.c

index 153ff4b4b52c54a13b222a3b7973b7e975d42bd0..2fe645860385df9b64aedc408dc5908b475a0b40 100644 (file)
@@ -552,7 +552,7 @@ void intel_pipe_update_start(struct intel_atomic_state *state,
 
                for_each_oldnew_intel_plane_in_state(state, plane, old_plane_state,
                                                     new_plane_state, i) {
-                       if (old_plane_state->uapi.crtc == &crtc->base)
+                       if (old_plane_state->hw.crtc == &crtc->base)
                                intel_plane_init_cursor_vblank_work(old_plane_state,
                                                                    new_plane_state);
                }
@@ -704,7 +704,7 @@ void intel_pipe_update_end(struct intel_atomic_state *state,
                int i;
 
                for_each_old_intel_plane_in_state(state, plane, old_plane_state, i) {
-                       if (old_plane_state->uapi.crtc == &crtc->base &&
+                       if (old_plane_state->hw.crtc == &crtc->base &&
                            old_plane_state->unpin_work.vblank) {
                                drm_vblank_work_schedule(&old_plane_state->unpin_work,
                                                         drm_crtc_accurate_vblank_count(&crtc->base) + 1,
index a7fec5ba6ac0ce930e87266acf461f139727c27b..870e6b896be6a0c4a539436cb7525f5c30329323 100644 (file)
@@ -1408,7 +1408,7 @@ void intel_plane_init_cursor_vblank_work(struct intel_plane_state *old_plane_sta
            old_plane_state->ggtt_vma == new_plane_state->ggtt_vma)
                return;
 
-       drm_vblank_work_init(&old_plane_state->unpin_work, old_plane_state->uapi.crtc,
+       drm_vblank_work_init(&old_plane_state->unpin_work, old_plane_state->hw.crtc,
                             intel_cursor_unpin_work);
 }