On Wed, Mar 29, 2017 at 12:18:57PM +0100, Chris Wilson wrote: > On Wed, Mar 29, 2017 at 11:00:52AM +0100, Chris Wilson wrote: > > This reverts commit 6c943de6686f ("drm/i915: Skip execlists_dequeue() > > early if the list is empty"). > > > > The validity of using READ_ONCE there depends upon having a mb to > > coordinate the assignment of engine->execlist_first inside > > submit_request() and checking prior to taking the spinlock in > > execlists_dequeue(). We wrote "the update to TASKLET_SCHED incurs a > > memory barrier making this cross-cpu checking safe", but failed to > > notice that this mb was *conditional* on the execlists being ready, i.e. > > there wasn't the request mb when it was most necessary! > > s/request/required/ > > > We could install an unconditional memory barrier to fixup the > > READ_ONCE(): > > > > diff --git a/drivers/gpu/drm/i915/intel_lrc.c > > b/drivers/gpu/drm/i915/intel_lrc.c > > index 7dd732cb9f57..1ed164b16d44 100644 > > --- a/drivers/gpu/drm/i915/intel_lrc.c > > +++ b/drivers/gpu/drm/i915/intel_lrc.c > > @@ -616,6 +616,7 @@ static void execlists_submit_request(struct > > drm_i915_gem_request *request) > > > > if (insert_request(&request->priotree, &engine->execlist_queue)) > > { > > engine->execlist_first = &request->priotree.node; > > + smp_wmb(); > > if (execlists_elsp_ready(engine)) > > > > But we have opted to remove the race as it should be rarely effective, > > and saves us having to explain the necessary memory barriers which we > > quite clearly failed at. > > > > Reported-and-tested-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxxxxxxx> > > Fixes: 6c943de6686f ("drm/i915: Skip execlists_dequeue() early if the list is empty") > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxxxxxxx> > > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > > Cc: Michał Winiarski <michal.winiarski@xxxxxxxxx> Pushed with Tvrtko's r-b from irc. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx