Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > Following a GPU reset, we may leave the context in a poorly defined > state, and reloading from that context will leave the GPU flummoxed. For > secondary contexts, this will lead to that context being banned - but > currently it is also causing the default context to become banned, > leading to turmoil in the shared state. > > This is a regression from > > commit 6702cf16e0ba8b0129f5aa1b6609d4e9c70bc13b [v4.1] > Author: Ben Widawsky <benjamin.widawsky@xxxxxxxxx> > Date: Mon Mar 16 16:00:58 2015 +0000 > > drm/i915: Initialize all contexts > > which quietly introduced the removal of the MI_RESTORE_INHIBIT on the > default context. > > v2: Mark the global default context as uninitialized on GPU reset so > that the context-local workarounds are reloaded upon re-enabling. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> > Cc: Michel Thierry <michel.thierry@xxxxxxxxx> > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem_context.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c > index 43761c5bcaca..f024d5d2c746 100644 > --- a/drivers/gpu/drm/i915/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/i915_gem_context.c > @@ -340,6 +340,10 @@ void i915_gem_context_reset(struct drm_device *dev) > i915_gem_context_unreference(lctx); > ring->last_context = NULL; > } > + > + /* Force the GPU state to be reinitialised on enabling */ > + if (ring->default_context) > + ring->default_context->legacy_hw_ctx.initialized = false; > } > } > > @@ -708,7 +712,7 @@ static int do_switch(struct drm_i915_gem_request *req) > if (ret) > goto unpin_out; > > - if (!to->legacy_hw_ctx.initialized) { > + if (!to->legacy_hw_ctx.initialized || i915_gem_context_is_default(to)) { > hw_flags |= MI_RESTORE_INHIBIT; > /* NB: If we inhibit the restore, the context is not allowed to > * die because future work may end up depending on valid address > -- > 2.6.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx