drm/i915: Loop over all active pipes in intel_mbus_dbox_update
authorStanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Tue, 2 Apr 2024 15:50:07 +0000 (18:50 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 4 Apr 2024 13:27:45 +0000 (16:27 +0300)
We need to loop through all active pipes, not just the ones, that
are in current state, because disabling and enabling even a particular
pipe affects credits in another one.

Reviewed-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240402155016.13733-6-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/display/skl_watermark.c

index bc341abcab2fea217897f18f3456e422d0687fad..f582992592c19b73a95309d413d1922a62120103 100644 (file)
@@ -3680,10 +3680,8 @@ void intel_mbus_dbox_update(struct intel_atomic_state *state)
 {
        struct drm_i915_private *i915 = to_i915(state->base.dev);
        const struct intel_dbuf_state *new_dbuf_state, *old_dbuf_state;
-       const struct intel_crtc_state *new_crtc_state;
        const struct intel_crtc *crtc;
        u32 val = 0;
-       int i;
 
        if (DISPLAY_VER(i915) < 11)
                return;
@@ -3727,12 +3725,9 @@ void intel_mbus_dbox_update(struct intel_atomic_state *state)
                val |= MBUS_DBOX_B_CREDIT(8);
        }
 
-       for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
+       for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc, new_dbuf_state->active_pipes) {
                u32 pipe_val = val;
 
-               if (!new_crtc_state->hw.active)
-                       continue;
-
                if (DISPLAY_VER(i915) >= 14) {
                        if (xelpdp_is_only_pipe_per_dbuf_bank(crtc->pipe,
                                                              new_dbuf_state->active_pipes))