diff mbox

[1/2] drm/i915: skip the first 4k of stolen memory on everything >= gen8

Message ID 1481727338-9901-1-git-send-email-paulo.r.zanoni@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Zanoni, Paulo R Dec. 14, 2016, 2:55 p.m. UTC
BSpec got updated and this workaround is now listed as standard
required programming for all subsequent projects. This is confirmed to
fix Skylake screen flickering issues (probably caused by the fact that
we initialized a ring in the first page of stolen, but I didn't 100%
confirm this theory).

v2: this is the patch that fixes the screen flickering, document it.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94605
Cc: stable@vger.kernel.org
Tested-by: Dominik Klementowski <dominik232@gmail.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
---
 drivers/gpu/drm/i915/i915_gem_stolen.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Chris Wilson Dec. 14, 2016, 3:43 p.m. UTC | #1
On Wed, Dec 14, 2016 at 12:55:37PM -0200, Paulo Zanoni wrote:
> BSpec got updated and this workaround is now listed as standard
> required programming for all subsequent projects. This is confirmed to
> fix Skylake screen flickering issues (probably caused by the fact that
> we initialized a ring in the first page of stolen, but I didn't 100%
> confirm this theory).
> 
> v2: this is the patch that fixes the screen flickering, document it.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94605
> Cc: stable@vger.kernel.org
> Tested-by: Dominik Klementowski <dominik232@gmail.com>
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
Zanoni, Paulo R Dec. 20, 2016, 12:57 p.m. UTC | #2
Em Qua, 2016-12-14 às 12:55 -0200, Paulo Zanoni escreveu:
> BSpec got updated and this workaround is now listed as standard
> required programming for all subsequent projects. This is confirmed
> to
> fix Skylake screen flickering issues (probably caused by the fact
> that
> we initialized a ring in the first page of stolen, but I didn't 100%
> confirm this theory).
> 
> v2: this is the patch that fixes the screen flickering, document it.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94605
> Cc: stable@vger.kernel.org
> Tested-by: Dominik Klementowski <dominik232@gmail.com>
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>

Daniel gave me the missing R-B for this patch on IRC, so I pushed both
patches.

Thanks everybody for the reviews.

> ---
>  drivers/gpu/drm/i915/i915_gem_stolen.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c
> b/drivers/gpu/drm/i915/i915_gem_stolen.c
> index efc0e74..b1c8897 100644
> --- a/drivers/gpu/drm/i915/i915_gem_stolen.c
> +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
> @@ -55,10 +55,9 @@ int i915_gem_stolen_insert_node_in_range(struct
> drm_i915_private *dev_priv,
>  		return -ENODEV;
>  
>  	/* See the comment at the drm_mm_init() call for more about
> this check.
> -	 * WaSkipStolenMemoryFirstPage:bdw,chv,kbl (incomplete)
> +	 * WaSkipStolenMemoryFirstPage:bdw+ (incomplete)
>  	 */
> -	if (start < 4096 && (IS_GEN8(dev_priv) ||
> -			     IS_KBL_REVID(dev_priv, 0,
> KBL_REVID_A0)))
> +	if (start < 4096 && INTEL_GEN(dev_priv) >= 8)
>  		start = 4096;
>  
>  	mutex_lock(&dev_priv->mm.stolen_lock);
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
index efc0e74..b1c8897 100644
--- a/drivers/gpu/drm/i915/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
@@ -55,10 +55,9 @@  int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *dev_priv,
 		return -ENODEV;
 
 	/* See the comment at the drm_mm_init() call for more about this check.
-	 * WaSkipStolenMemoryFirstPage:bdw,chv,kbl (incomplete)
+	 * WaSkipStolenMemoryFirstPage:bdw+ (incomplete)
 	 */
-	if (start < 4096 && (IS_GEN8(dev_priv) ||
-			     IS_KBL_REVID(dev_priv, 0, KBL_REVID_A0)))
+	if (start < 4096 && INTEL_GEN(dev_priv) >= 8)
 		start = 4096;
 
 	mutex_lock(&dev_priv->mm.stolen_lock);