1. 11 Apr, 2019 1 commit
    • Chris Wilson's avatar
      drm/i915: Bump ready tasks ahead of busywaits · b7404c7e
      Chris Wilson authored
      Consider two tasks that are running in parallel on a pair of engines
      (vcs0, vcs1), but then must complete on a shared engine (rcs0). To
      maximise throughput, we want to run the first ready task on rcs0 (i.e.
      the first task that completes on either of vcs0 or vcs1). When using
      semaphores, however, we will instead queue onto rcs in submission order.
      
      To resolve this incorrect ordering, we want to re-evaluate the priority
      queue when each of the request is ready. Normally this happens because
      we only insert into the priority queue requests that are ready, but with
      semaphores we are inserting ahead of their readiness and to compensate
      we penalize those tasks with reduced priority (so that tasks that do not
      need to busywait should naturally be run first). However, given a series
      of tasks that each use semaphores, the queue degrades into submission
      fifo rather than readiness fifo, and so to counter this we give a small
      boost to semaphore users as their dependent tasks are completed (and so
      we no longer require any busywait prior to running the user task as they
      are then ready themselves).
      
      v2: Fixup irqsave for schedule_lock (Tvrtko)
      
      Testcase: igt/gem_exec_schedule/semaphore-codependency
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
      Cc: Dmitry Ermilov <dmitry.ermilov@intel.com>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190409152922.23894-1-chris@chris-wilson.co.uk
      b7404c7e
  2. 10 Apr, 2019 8 commits
  3. 09 Apr, 2019 1 commit
  4. 08 Apr, 2019 30 commits