From: Ville Syrjälä <[email protected]>

When we end up not recomputing the cdclk, we need to populate
intel_state->cdclk with the "atomic_cdclk_freq" instead of the
current cdclk_freq. When no pipes are active, the actual cdclk_freq
may be lower than what the configuration of the planes and
pipes would require from the point of view of the software state.

This fixes bogus WARNS from skl_max_scale() which is trying to check
the plane software state against the cdclk frequency. So any time
it got called during DPMS off for instance, we might have tripped
the warn if the current mode would have required a higher than
minimum cdclk.

v2: Drop the dev_cdclk stuff (Maarten)

Cc: Maarten Lankhorst <[email protected]>
Cc: Mika Kahola <[email protected]>
Cc: [email protected]
Cc: Daniel J Blueman <[email protected]>
Cc: Paul Bolle <[email protected]>
Cc: Joseph Yasi <[email protected]>
Tested-by: Paul Bolle <[email protected]> (v1)
Tested-by: Joseph Yasi <[email protected]> (v1)
Cc: [email protected]
Fixes: 1a617b77658e ("drm/i915: Keep track of the cdclk as if all crtc's were 
active.")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98214
Signed-off-by: Ville Syrjälä <[email protected]>
Reviewed-by: Maarten Lankhorst <[email protected]>
---
 drivers/gpu/drm/i915/intel_display.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index e48d9571c99d..70f3f0b70263 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14027,8 +14027,9 @@ static int intel_modeset_checks(struct drm_atomic_state 
*state)
 
                DRM_DEBUG_KMS("New cdclk calculated to be atomic %u, actual 
%u\n",
                              intel_state->cdclk, intel_state->dev_cdclk);
-       } else
+       } else {
                to_intel_atomic_state(state)->cdclk = 
dev_priv->atomic_cdclk_freq;
+       }
 
        intel_modeset_clear_plls(state);
 
@@ -14129,8 +14130,9 @@ static int intel_atomic_check(struct drm_device *dev,
 
                if (ret)
                        return ret;
-       } else
-               intel_state->cdclk = dev_priv->cdclk_freq;
+       } else {
+               intel_state->cdclk = dev_priv->atomic_cdclk_freq;
+       }
 
        ret = drm_atomic_helper_check_planes(dev, state);
        if (ret)
-- 
2.7.4

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to