[PATCH AUTOSEL for 4.4 17/28] drm/i915: Fix the level 0 max_wm hack on VLV/CHV

From: alexander . levin
Date: Tue Nov 14 2017 - 22:06:21 EST


From: Ville SyrjÃlà <ville.syrjala@xxxxxxxxxxxxxxx>

[ Upstream commit 1be4d3793d5a93daddcd9be657c429b38ad750a3 ]

The watermark should never exceed the FIFO size, so we need to
check against the current FIFO size instead of the theoretical
maximum when we clamp the level 0 watermark.

Signed-off-by: Ville SyrjÃlà <ville.syrjala@xxxxxxxxxxxxxxx>
Link: http://patchwork.freedesktop.org/patch/msgid/1480354637-14209-4-git-send-email-ville.syrjala@xxxxxxxxxxxxxxx
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx>
Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxx>
---
drivers/gpu/drm/i915/intel_pm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index fd4690ed93c0..0cad45928431 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -1100,13 +1100,13 @@ static void vlv_compute_wm(struct intel_crtc *crtc)
/* normal watermarks */
for (level = 0; level < wm_state->num_levels; level++) {
int wm = vlv_compute_wm_level(plane, crtc, state, level);
- int max_wm = plane->base.type == DRM_PLANE_TYPE_CURSOR ? 63 : 511;
+ int max_wm = plane->wm.fifo_size;

/* hack */
if (WARN_ON(level == 0 && wm > max_wm))
wm = max_wm;

- if (wm > plane->wm.fifo_size)
+ if (wm > max_wm)
break;

switch (plane->base.type) {
--
2.11.0