Quoting Tvrtko Ursulin (2018-07-16 13:55:55) > > On 16/07/2018 13:54, Chris Wilson wrote: > > On reset/wedging, we cancel all pending replies from the HW and we also > > want to cancel an outstanding preemption event. Since we use the same > > function to cancel the pending replies for reset and for a preemption > > event, we can simply clear the active tracking for all. > > > > v2: Keep execlists_user_end() markup for wedging > > v3: Move assignment to inline to hide the bare assignment. > > > > Fixes: 60a943245413 ("drm/i915/execlists: Drop clear_gtiir() on GPU reset") > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > --- > > drivers/gpu/drm/i915/intel_guc_submission.c | 2 -- > > drivers/gpu/drm/i915/intel_lrc.c | 5 ++--- > > drivers/gpu/drm/i915/intel_ringbuffer.h | 6 ++++++ > > 3 files changed, 8 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c > > index cc444dc5f3ad..94d0674ea3c6 100644 > > --- a/drivers/gpu/drm/i915/intel_guc_submission.c > > +++ b/drivers/gpu/drm/i915/intel_guc_submission.c > > @@ -633,8 +633,6 @@ static void complete_preempt_context(struct intel_engine_cs *engine) > > > > wait_for_guc_preempt_report(engine); > > intel_write_status_page(engine, I915_GEM_HWS_PREEMPT_INDEX, 0); > > - > > - execlists_clear_active(execlists, EXECLISTS_ACTIVE_PREEMPT); > > } > > > > /** > > diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c > > index 6fef9d130d55..c0ee14f86754 100644 > > --- a/drivers/gpu/drm/i915/intel_lrc.c > > +++ b/drivers/gpu/drm/i915/intel_lrc.c > > @@ -563,8 +563,6 @@ static void complete_preempt_context(struct intel_engine_execlists *execlists) > > __unwind_incomplete_requests(container_of(execlists, > > struct intel_engine_cs, > > execlists)); > > - > > - execlists_clear_active(execlists, EXECLISTS_ACTIVE_PREEMPT); > > } > > > > static void execlists_dequeue(struct intel_engine_cs *engine) > > @@ -792,7 +790,7 @@ execlists_cancel_port_requests(struct intel_engine_execlists * const execlists) > > port++; > > } > > > > - execlists_user_end(execlists); > > + execlists_clear_all_active(execlists); > > } > > > > static void reset_csb_pointers(struct intel_engine_execlists *execlists) > > @@ -843,6 +841,7 @@ static void execlists_cancel_requests(struct intel_engine_cs *engine) > > > > /* Cancel the requests on the HW and clear the ELSP tracker. */ > > execlists_cancel_port_requests(execlists); > > + execlists_user_end(execlists); > > > > /* Mark all executing requests as skipped. */ > > list_for_each_entry(rq, &engine->timeline.requests, link) { > > diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h > > index d1eee08e5f6b..665b59ba1f45 100644 > > --- a/drivers/gpu/drm/i915/intel_ringbuffer.h > > +++ b/drivers/gpu/drm/i915/intel_ringbuffer.h > > @@ -683,6 +683,12 @@ execlists_clear_active(struct intel_engine_execlists *execlists, > > __clear_bit(bit, (unsigned long *)&execlists->active); > > } > > > > +static inline void > > +execlists_clear_all_active(struct intel_engine_execlists *execlists) > > +{ > > + execlists->active = 0; > > +} > > + > > static inline bool > > execlists_is_active(const struct intel_engine_execlists *execlists, > > unsigned int bit) > > > > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> There's an alternate minimalistic v4, so take your pick. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx