1. 04 4月, 2017 3 次提交
  2. 03 4月, 2017 3 次提交
  3. 01 4月, 2017 2 次提交
  4. 31 3月, 2017 13 次提交
  5. 30 3月, 2017 18 次提交
  6. 29 3月, 2017 1 次提交
    • C
      Revert "drm/i915: Skip execlists_dequeue() early if the list is empty" · 18afa288
      Chris Wilson 提交于
      This reverts commit 6c943de6 ("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 required mb when it was most necessary!
      
      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: NTvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Fixes: 6c943de6 ("drm/i915: Skip execlists_dequeue() early if the list is empty")
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Michał Winiarski <michal.winiarski@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170329100052.29505-1-chris@chris-wilson.co.ukReviewed-by: NTvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      18afa288