| From 14676ec6b1a6f2f7fa0bafd98ab42ce77be7a7d4 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com> |
| Date: Mon, 14 Nov 2016 18:35:09 +0200 |
| Subject: drm/i915: Fix cdclk vs. dev_cdclk mess when not recomputing things |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| |
| commit 14676ec6b1a6f2f7fa0bafd98ab42ce77be7a7d4 upstream. |
| |
| 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 <maarten.lankhorst@linux.intel.com> |
| Cc: Mika Kahola <mika.kahola@intel.com> |
| Cc: bruno.pagani@ens-lyon.org |
| Cc: Daniel J Blueman <daniel.blueman@gmail.com> |
| Cc: Paul Bolle <pebolle@tiscali.nl> |
| Cc: Joseph Yasi <joe.yasi@gmail.com> |
| Tested-by: Paul Bolle <pebolle@tiscali.nl> |
| Tested-by: Joseph Yasi <joe.yasi@gmail.com> (v1) |
| 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ä <ville.syrjala@linux.intel.com> |
| Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> |
| Link: http://patchwork.freedesktop.org/patch/msgid/1479141311-11904-2-git-send-email-ville.syrjala@linux.intel.com |
| (cherry picked from commit e0ca7a6be38ce603d26df5707c22e53870a623e0) |
| Signed-off-by: Jani Nikula <jani.nikula@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/i915/intel_display.c | 8 +++++--- |
| 1 file changed, 5 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/gpu/drm/i915/intel_display.c |
| +++ b/drivers/gpu/drm/i915/intel_display.c |
| @@ -13494,8 +13494,9 @@ static int intel_modeset_checks(struct d |
| |
| 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); |
| |
| @@ -13596,8 +13597,9 @@ static int intel_atomic_check(struct drm |
| |
| 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) |