On Thu, Oct 27, 2016 at 01:03:46AM +0100, Chris Wilson wrote: > spin_lock(&engine->execlist_lock); > - list_for_each_entry(cursor, &engine->execlist_queue, execlist_link) { > + rb = engine->execlist_first; > + while (rb) { > + struct drm_i915_gem_request *cursor = > + rb_entry(rb, typeof(*cursor), priotree.node); > + > /* Can we combine this request with the current port? It has to > * be the same context/ringbuffer and not have any exceptions > * (e.g. GVT saying never to combine contexts). > @@ -501,15 +506,17 @@ static void execlists_dequeue(struct intel_engine_cs *engine) > i915_gem_request_assign(&port->request, last); > port++; > } > + > + rb = rb_next(rb); > + rb_erase(&cursor->priotree.node, &engine->execlist_queue); > + RB_CLEAR_NODE(&cursor->priotree.node); Whoopsie, forgot to maintain the retirement order of the timeline... -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx