| From ffa21decb045740982c676dea479cfca203d539c Mon Sep 17 00:00:00 2001 |
| From: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Date: Tue, 8 Nov 2016 18:22:11 -0200 |
| Subject: [PATCH] drm/i915/gen9: fix the WM memory bandwidth WA for Y tiling |
| cases |
| |
| commit 2ef32dee97fcf41987722a37eb6ff1a983915e99 upstream. |
| |
| The previous spec version said "double Ytile planes minimum lines", |
| and I interpreted this as referring to what the spec calls "Y tile |
| minimum", but in fact it was referring to what the spec calls "Minimum |
| Scanlines for Y tile". I noticed that Mahesh Kumar had a different |
| interpretation, so I sent and email to the spec authors and got |
| clarification on the correct meaning. Also, BSpec was updated and |
| should be clear now. |
| |
| Fixes: ee3d532fcb64 ("drm/i915/gen9: unconditionally apply the memory bandwidth WA") |
| Cc: stable@vger.kernel.org |
| Cc: Mahesh Kumar <mahesh1.kumar@intel.com> |
| Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Reviewed-by: Matt Roper <matthew.d.roper@intel.com> |
| Link: http://patchwork.freedesktop.org/patch/msgid/1478636531-6081-1-git-send-email-paulo.r.zanoni@intel.com |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c |
| index 8a2ddbf5d35d..e8a579623c13 100644 |
| --- a/drivers/gpu/drm/i915/intel_pm.c |
| +++ b/drivers/gpu/drm/i915/intel_pm.c |
| @@ -3618,6 +3618,9 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv, |
| y_min_scanlines = 4; |
| } |
| |
| + if (apply_memory_bw_wa) |
| + y_min_scanlines *= 2; |
| + |
| plane_bytes_per_line = width * cpp; |
| if (fb->modifier[0] == I915_FORMAT_MOD_Y_TILED || |
| fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED) { |
| @@ -3638,8 +3641,6 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv, |
| plane_blocks_per_line); |
| |
| y_tile_minimum = plane_blocks_per_line * y_min_scanlines; |
| - if (apply_memory_bw_wa) |
| - y_tile_minimum *= 2; |
| |
| if (fb->modifier[0] == I915_FORMAT_MOD_Y_TILED || |
| fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED) { |
| -- |
| 2.10.1 |
| |