1. 12 Feb, 2018 2 commits
  2. 09 Feb, 2018 5 commits
  3. 08 Feb, 2018 24 commits
  4. 07 Feb, 2018 8 commits
  5. 06 Feb, 2018 1 commit
    • Tvrtko Ursulin's avatar
      drm/i915/pmu: Fix PMU enable vs execlists tasklet race · b2f78cda
      Tvrtko Ursulin authored
      Commit 99e48bf9 ("drm/i915: Lock out execlist tasklet while peeking
      inside for busy-stats") added a tasklet_disable call in busy stats
      enabling, but we failed to understand that the PMU enable callback runs
      as an hard IRQ (IPI).
      
      Consequence of this is that the PMU enable callback can interrupt the
      execlists tasklet, and will then deadlock when it calls
      intel_engine_stats_enable->tasklet_disable.
      
      To fix this, I realized it is possible to move the engine stats enablement
      and disablement to PMU event init and destroy hooks. This allows for much
      simpler implementation since those hooks run in normal context (can
      sleep).
      
      v2: Extract engine_event_destroy. (Chris Wilson)
      Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Fixes: 99e48bf9 ("drm/i915: Lock out execlist tasklet while peeking inside for busy-stats")
      Testcase: igt/perf_pmu/enable-race-*
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: intel-gfx@lists.freedesktop.org
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180205093448.13877-1-tvrtko.ursulin@linux.intel.com
      b2f78cda