Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > Following a GPU reset upon hang, we retire all the requests and then > mark them all as complete. If we mark them as complete first, we both > keep the normal retirement order (completed first then retired) and > provide a small optimisation for concurrent lookups. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 14cc87b916c6..1c05e4573173 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -2486,6 +2486,12 @@ static void i915_gem_reset_engine_cleanup(struct intel_engine_cs *engine) > i915_gem_object_retire__read(obj, engine->id); > } > > + /* Mark all pending requests as complete so that any concurrent > + * (lockless) lookup doesn't try and wait upon the request as we > + * reset it. > + */ > + intel_ring_init_seqno(engine, engine->last_submitted_seqno); > + > /* > * Clear the execlists queue up before freeing the requests, as those > * are the ones that keep the context and ringbuffer backing objects > @@ -2527,8 +2533,6 @@ static void i915_gem_reset_engine_cleanup(struct intel_engine_cs *engine) > buffer->last_retired_head = buffer->tail; > intel_ring_update_space(buffer); > } > - > - intel_ring_init_seqno(engine, engine->last_submitted_seqno); > } > > void i915_gem_reset(struct drm_device *dev) > -- > 2.8.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx