Re: [RFC 05/11] drm/i915/preempt: Handle preemption event in guc tasklet

Chris Wilson
2017-03-06T10:53:55Z

On Wed, Mar 01, 2017 at 12:57:15PM +0000, Chris Wilson wrote:
> On Thu, Feb 23, 2017 at 08:14:15PM +0100, Michał Winiarski wrote:
> > +static void unsubmit_inflight_requests(struct intel_engine_cs *engine,
> > + struct list_head *resubmit)
> > +{
> > + struct drm_i915_gem_request *rq, *prev;
> > +
> > + assert_spin_locked(&engine->timeline->lock);
> > +
> > + list_for_each_entry_safe_reverse(rq, prev,
> > + &engine->timeline->requests, link) {
> > + if (!i915_gem_request_completed(rq)) {
> > + i915_gem_request_get(rq);
> > + __i915_gem_request_unsubmit(rq);
> > + list_add(&rq->resubmit_link, resubmit);
>
> I was thinking it would be going back to the execlist queue, where it
> would be priority sorted against later requests.

Hmm. The execlists rbtree is setup to keep fifo ordering. We would end
up reversing the inflight requests if we are not careful. :|
-Chris

--
Chris Wilson, Intel Open Source Technology Centre