diff mbox

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

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

Commit Message

Zanoni, Paulo R Dec. 13, 2016, 7:57 p.m. UTC
BSpec got updated and this workaround is now listed as standard
required programming for all subsequent projects.

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

Zanoni, Paulo R Dec. 13, 2016, 8:01 p.m. UTC | #1
Em Ter, 2016-12-13 às 17:57 -0200, Paulo Zanoni escreveu:
> BSpec got updated and this workaround is now listed as standard
> required programming for all subsequent projects.
> 

Cc: stable@vger.kernel.org
> 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(-)
> 
> 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);
Zanoni, Paulo R Dec. 14, 2016, 12:52 p.m. UTC | #2
Em Ter, 2016-12-13 às 18:01 -0200, Paulo Zanoni escreveu:
> Em Ter, 2016-12-13 às 17:57 -0200, Paulo Zanoni escreveu:
> > 
> > BSpec got updated and this workaround is now listed as standard
> > required programming for all subsequent projects.
> > 

Ok, so I got confirmation from the bug reporter that this patch is the
patch that actually fixes his screen flickering bugs. I suppose we're
initializing some ring on the first page and that's what really messes
up things (last time I checked, we did initialize a ring there on my
machine).

The corruption caused by random bugs flipping in the very first pixel
line of the frontbuffer is probably not very noticeable, so we probably
won't get bug reports for patch 2 specifically.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94605
Tested-by: Dominik Klementowski <dominik232@gmail.com>

> 
> Cc: stable@vger.kernel.org
> > 
> > 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(-)
> > 
> > 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);
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
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);