diff mbox

drm/i915/bdw: Restore PPAT on thaw

Message ID 1395184177-10673-1-git-send-email-benjamin.widawsky@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ben Widawsky March 18, 2014, 11:09 p.m. UTC
Apparently it is wiped out from under us, and we get some really fun
caching artifacts upon resume (it seems to be WB for all types by
default).

Reported-by: James Ausmus <james.ausmus@intel.com>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
---
 drivers/gpu/drm/i915/i915_gem_gtt.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

James Ausmus March 19, 2014, 12:33 a.m. UTC | #1
On Tue, Mar 18, 2014 at 4:09 PM, Ben Widawsky
<benjamin.widawsky@intel.com> wrote:
> Apparently it is wiped out from under us, and we get some really fun
> caching artifacts upon resume (it seems to be WB for all types by
> default).
>
> Reported-by: James Ausmus <james.ausmus@intel.com>
> Signed-off-by: Ben Widawsky <ben@bwidawsk.net>

Tested-by: James Ausmus <james.ausmus@intel.com>

Works for me backported on to both a 3.14-rc3 w/ ChromeOS sauce and a
vanilla 3.14-rc6. Thanks!

> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index bd016e2..1b45a04 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -30,6 +30,8 @@
>  #include "i915_trace.h"
>  #include "intel_drv.h"
>
> +static void gen8_setup_private_ppat(struct drm_i915_private *dev_priv);
> +
>  bool intel_enable_ppgtt(struct drm_device *dev, bool full)
>  {
>         if (i915.enable_ppgtt == 0 || !HAS_ALIASING_PPGTT(dev))
> @@ -1371,8 +1373,10 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev)
>         }
>
>
> -       if (INTEL_INFO(dev)->gen >= 8)
> +       if (INTEL_INFO(dev)->gen >= 8) {
> +               gen8_setup_private_ppat(dev_priv);
>                 return;
> +       }
>
>         list_for_each_entry(vm, &dev_priv->vm_list, global_link) {
>                 /* TODO: Perhaps it shouldn't be gen6 specific */
> --
> 1.9.0
>
Chris Wilson March 19, 2014, 6:57 a.m. UTC | #2
On Tue, Mar 18, 2014 at 04:09:37PM -0700, Ben Widawsky wrote:
> Apparently it is wiped out from under us, and we get some really fun
> caching artifacts upon resume (it seems to be WB for all types by
> default).
> 
> Reported-by: James Ausmus <james.ausmus@intel.com>
> Signed-off-by: Ben Widawsky <ben@bwidawsk.net>

Perhaps related to  https://bugs.freedesktop.org/show_bug.cgi?id=76113 ?
-Chris

> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index bd016e2..1b45a04 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -30,6 +30,8 @@
>  #include "i915_trace.h"
>  #include "intel_drv.h"
>  
> +static void gen8_setup_private_ppat(struct drm_i915_private *dev_priv);
> +
>  bool intel_enable_ppgtt(struct drm_device *dev, bool full)
>  {
>  	if (i915.enable_ppgtt == 0 || !HAS_ALIASING_PPGTT(dev))
> @@ -1371,8 +1373,10 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev)
>  	}
>  
>  
> -	if (INTEL_INFO(dev)->gen >= 8)
> +	if (INTEL_INFO(dev)->gen >= 8) {
> +		gen8_setup_private_ppat(dev_priv);
>  		return;
> +	}
>  
>  	list_for_each_entry(vm, &dev_priv->vm_list, global_link) {
>  		/* TODO: Perhaps it shouldn't be gen6 specific */
> -- 
> 1.9.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
Timo Aaltonen March 19, 2014, 8:39 a.m. UTC | #3
On 19.03.2014 01:09, Ben Widawsky wrote:
> Apparently it is wiped out from under us, and we get some really fun
> caching artifacts upon resume (it seems to be WB for all types by
> default).
> 
> Reported-by: James Ausmus <james.ausmus@intel.com>
> Signed-off-by: Ben Widawsky <ben@bwidawsk.net>

Excellent!

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76113
Tested-by: Timo Aaltonen <timo.aaltonen@canonical.com>

> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index bd016e2..1b45a04 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -30,6 +30,8 @@
>  #include "i915_trace.h"
>  #include "intel_drv.h"
>  
> +static void gen8_setup_private_ppat(struct drm_i915_private *dev_priv);
> +
>  bool intel_enable_ppgtt(struct drm_device *dev, bool full)
>  {
>  	if (i915.enable_ppgtt == 0 || !HAS_ALIASING_PPGTT(dev))
> @@ -1371,8 +1373,10 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev)
>  	}
>  
>  
> -	if (INTEL_INFO(dev)->gen >= 8)
> +	if (INTEL_INFO(dev)->gen >= 8) {
> +		gen8_setup_private_ppat(dev_priv);
>  		return;
> +	}
>  
>  	list_for_each_entry(vm, &dev_priv->vm_list, global_link) {
>  		/* TODO: Perhaps it shouldn't be gen6 specific */
>
Daniel Vetter March 19, 2014, 8:47 a.m. UTC | #4
On Wed, Mar 19, 2014 at 10:39:03AM +0200, Timo Aaltonen wrote:
> On 19.03.2014 01:09, Ben Widawsky wrote:
> > Apparently it is wiped out from under us, and we get some really fun
> > caching artifacts upon resume (it seems to be WB for all types by
> > default).
> > 
> > Reported-by: James Ausmus <james.ausmus@intel.com>
> > Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
> 
> Excellent!
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76113
> Tested-by: Timo Aaltonen <timo.aaltonen@canonical.com>

Also Cc: stable@vger.kernel.org

Queued for -next, thanks for the patch.
-Daniel

> 
> > ---
> >  drivers/gpu/drm/i915/i915_gem_gtt.c | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> > index bd016e2..1b45a04 100644
> > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> > @@ -30,6 +30,8 @@
> >  #include "i915_trace.h"
> >  #include "intel_drv.h"
> >  
> > +static void gen8_setup_private_ppat(struct drm_i915_private *dev_priv);
> > +
> >  bool intel_enable_ppgtt(struct drm_device *dev, bool full)
> >  {
> >  	if (i915.enable_ppgtt == 0 || !HAS_ALIASING_PPGTT(dev))
> > @@ -1371,8 +1373,10 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev)
> >  	}
> >  
> >  
> > -	if (INTEL_INFO(dev)->gen >= 8)
> > +	if (INTEL_INFO(dev)->gen >= 8) {
> > +		gen8_setup_private_ppat(dev_priv);
> >  		return;
> > +	}
> >  
> >  	list_for_each_entry(vm, &dev_priv->vm_list, global_link) {
> >  		/* TODO: Perhaps it shouldn't be gen6 specific */
> > 
> 
> 
> -- 
> timo.aaltonen@canonical.com
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index bd016e2..1b45a04 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -30,6 +30,8 @@ 
 #include "i915_trace.h"
 #include "intel_drv.h"
 
+static void gen8_setup_private_ppat(struct drm_i915_private *dev_priv);
+
 bool intel_enable_ppgtt(struct drm_device *dev, bool full)
 {
 	if (i915.enable_ppgtt == 0 || !HAS_ALIASING_PPGTT(dev))
@@ -1371,8 +1373,10 @@  void i915_gem_restore_gtt_mappings(struct drm_device *dev)
 	}
 
 
-	if (INTEL_INFO(dev)->gen >= 8)
+	if (INTEL_INFO(dev)->gen >= 8) {
+		gen8_setup_private_ppat(dev_priv);
 		return;
+	}
 
 	list_for_each_entry(vm, &dev_priv->vm_list, global_link) {
 		/* TODO: Perhaps it shouldn't be gen6 specific */