[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