Re: [Intel-gfx] [PATCH] drm/i915: Restore current RPS state after reset

2016-09-16 Thread Mika Kuoppala
Chris Wilson  writes:

> Following commit 821ed7df6e2a ("drm/i915: Update reset path to fix
> incomplete requests") we no longer mark the context as lost on reset as
> we keep the requests (and contexts) alive. However, RPS remains reset
> and we need to restore the current state to match the in-flight
> requests.
>
> Signed-off-by: Chris Wilson 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97824
> Fixes: 821ed7df6e2a ("drm/i915: Update reset path to fix incomplete requests")
> Signed-off-by: Chris Wilson 

Reviewed-by: Mika Kuoppala 

> Cc: Mika Kuoppala 
> Cc: Tvrtko Ursulin 
> Cc: Arun Siluvery 
> ---
>  drivers/gpu/drm/i915/i915_drv.c | 9 -
>  drivers/gpu/drm/i915/i915_gem.c | 7 +++
>  2 files changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index af43c968fc5a..b2e67aaad531 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -1792,15 +1792,6 @@ void i915_reset(struct drm_i915_private *dev_priv)
>   goto error;
>   }
>  
> - /*
> -  * rps/rc6 re-init is necessary to restore state lost after the
> -  * reset and the re-install of gt irqs. Skip for ironlake per
> -  * previous concerns that it doesn't respond well to some forms
> -  * of re-init after reset.
> -  */
> - intel_sanitize_gt_powersave(dev_priv);
> - intel_autoenable_gt_powersave(dev_priv);
> -
>  wakeup:
>   wake_up_bit(>flags, I915_RESET_IN_PROGRESS);
>   return;
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 769478a835e5..71efaf3d4215 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -2688,6 +2688,13 @@ void i915_gem_reset(struct drm_i915_private *dev_priv)
>   i915_gem_reset_engine(engine);
>  
>   i915_gem_restore_fences(_priv->drm);
> +
> + if (dev_priv->gt.awake) {
> + intel_sanitize_gt_powersave(dev_priv);
> + intel_enable_gt_powersave(dev_priv);
> + if (INTEL_GEN(dev_priv) >= 6)
> + gen6_rps_busy(dev_priv);
> + }
>  }
>  
>  static void nop_submit_request(struct drm_i915_gem_request *request)
> -- 
> 2.9.3
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915: Restore current RPS state after reset

2016-09-16 Thread Chris Wilson
Following commit 821ed7df6e2a ("drm/i915: Update reset path to fix
incomplete requests") we no longer mark the context as lost on reset as
we keep the requests (and contexts) alive. However, RPS remains reset
and we need to restore the current state to match the in-flight
requests.

Signed-off-by: Chris Wilson 
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97824
Fixes: 821ed7df6e2a ("drm/i915: Update reset path to fix incomplete requests")
Signed-off-by: Chris Wilson 
Cc: Mika Kuoppala 
Cc: Tvrtko Ursulin 
Cc: Arun Siluvery 
---
 drivers/gpu/drm/i915/i915_drv.c | 9 -
 drivers/gpu/drm/i915/i915_gem.c | 7 +++
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index af43c968fc5a..b2e67aaad531 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1792,15 +1792,6 @@ void i915_reset(struct drm_i915_private *dev_priv)
goto error;
}
 
-   /*
-* rps/rc6 re-init is necessary to restore state lost after the
-* reset and the re-install of gt irqs. Skip for ironlake per
-* previous concerns that it doesn't respond well to some forms
-* of re-init after reset.
-*/
-   intel_sanitize_gt_powersave(dev_priv);
-   intel_autoenable_gt_powersave(dev_priv);
-
 wakeup:
wake_up_bit(>flags, I915_RESET_IN_PROGRESS);
return;
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 769478a835e5..71efaf3d4215 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2688,6 +2688,13 @@ void i915_gem_reset(struct drm_i915_private *dev_priv)
i915_gem_reset_engine(engine);
 
i915_gem_restore_fences(_priv->drm);
+
+   if (dev_priv->gt.awake) {
+   intel_sanitize_gt_powersave(dev_priv);
+   intel_enable_gt_powersave(dev_priv);
+   if (INTEL_GEN(dev_priv) >= 6)
+   gen6_rps_busy(dev_priv);
+   }
 }
 
 static void nop_submit_request(struct drm_i915_gem_request *request)
-- 
2.9.3

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx