[Intel-gfx] [PATCH 3/8] drm/i915: Replace engine->timeline with a plain list

Chris Wilson chris at chris-wilson.co.uk
Fri Jun 14 14:44:15 UTC 2019


Quoting Mika Kuoppala (2019-06-14 15:34:21)
> > @@ -296,14 +296,8 @@ static void __i915_schedule(struct i915_sched_node *node,
> >               GEM_BUG_ON(node_to_request(node)->engine != engine);
> >  
> >               node->attr.priority = prio;
> > -             if (!list_empty(&node->link)) {
> > -                     GEM_BUG_ON(intel_engine_is_virtual(engine));
> > -                     if (!cache.priolist)
> > -                             cache.priolist =
> > -                                     i915_sched_lookup_priolist(engine,
> > -                                                                prio);
> > -                     list_move_tail(&node->link, cache.priolist);
> > -             } else {
> > +
> > +             if (list_empty(&node->link)) {
> >                       /*
> >                        * If the request is not in the priolist queue because
> >                        * it is not yet runnable, then it doesn't contribute
> > @@ -312,8 +306,16 @@ static void __i915_schedule(struct i915_sched_node *node,
> >                        * queue; but in that case we may still need to reorder
> >                        * the inflight requests.
> >                        */
> > -                     if (!i915_sw_fence_done(&node_to_request(node)->submit))
> > -                             continue;
> 
> Was smooth ride until here. Where did this go?
> 
> > +                     continue;
> > +             }
> > +
> > +             if (!intel_engine_is_virtual(engine) &&
> > +                 !i915_request_is_active(node_to_request(node))) {
> 
> Is this the replacement? But it is now inside the virtual check which
> was bug on previously.

Yes. It is because we are reusing rq->sched.link now, and keeping the
rq->link as solely a link along rq->timeline->requests.
-Chris


More information about the Intel-gfx mailing list