When the GPU is reset or state lost through suspend, every default
legacy context needs to reload their state - both the golden render
state and the L3 mapping. Only context images explicitly saved to memory
(i.e. all execlists and non-default legacy contexts) will retain their
state across the reset.

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_gem_context.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_context.c 
b/drivers/gpu/drm/i915/i915_gem_context.c
index 3e3acd054f05..62de72a947e5 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -470,7 +470,21 @@ void i915_gem_context_lost(struct drm_i915_private 
*dev_priv)
                }
        }
 
-       /* Force the GPU state to be restore on enabling */
+       /* Force the GPU state to be restored on enabling */
+       if (!i915.enable_execlists) {
+               struct i915_gem_context *ctx;
+
+               list_for_each_entry(ctx, &dev_priv->context_list, link) {
+                       if (!i915_gem_context_is_default(ctx))
+                               continue;
+
+                       for_each_engine(engine, dev_priv)
+                               ctx->engine[engine->id].initialised = false;
+
+                       ctx->remap_slice = ALL_L3_SLICES(dev_priv);
+               }
+       }
+
        for_each_engine(engine, dev_priv) {
                struct intel_context *ce =
                        &dev_priv->kernel_context->engine[engine->id];
@@ -478,7 +492,6 @@ void i915_gem_context_lost(struct drm_i915_private 
*dev_priv)
                ce->initialised =
                        !i915.enable_execlists || engine->init_context == NULL;
        }
-       dev_priv->kernel_context->remap_slice = ALL_L3_SLICES(dev_priv);
 }
 
 void i915_gem_context_fini(struct drm_device *dev)
-- 
2.8.1

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

Reply via email to