1. 10 10月, 2017 1 次提交
  2. 22 9月, 2017 1 次提交
  3. 20 9月, 2017 1 次提交
  4. 14 9月, 2017 1 次提交
  5. 08 9月, 2017 1 次提交
  6. 07 9月, 2017 1 次提交
  7. 18 8月, 2017 1 次提交
    • C
      drm/i915: Stop touching forcewake following a gen6+ engine reset · 4055dc75
      Chris Wilson 提交于
      Forcewake is not affected by the engine reset on gen6+. Indeed the
      reason why we added intel_uncore_forcewake_reset() to
      gen6_reset_engines() was to keep the bookkeeping intact because the
      reset did not touch the forcewake bit (yet we cancelled the forcewake
      consumers)!  This was done in commit 521198a2:
          Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
          Date:   Fri Aug 23 16:52:30 2013 +0300
      
      	drm/i915: sanitize forcewake registers on reset
      
      	In reset we try to restore the forcewake state to
      	pre reset state, using forcewake_count. The reset
      	doesn't seem to clear the forcewake bits so we
      	get warn on forcewake ack register not clearing.
      
      That futzing of the forcewake bookkeeping was dropped in commit
      0294ae7b ("drm/i915: Consolidate forcewake resetting to a single
      function"), but it did not make the realisation that the remaining
      intel_uncore_forcewake_reset() was redundant.
      
      The new danger with using intel_uncore_forcewake_reset() with per-engine
      resets is that the driver and hw are still in an active state as we
      perform the reset. We may be using the forcewake to read protected
      registers elsewhere and those results may be clobbered by the concurrent
      dropping of forcewake.
      Reported-by: NMichel Thierry <michel.thierry@intel.com>
      Fixes: 142bc7d9 ("drm/i915: Modify error handler for per engine hang recovery")
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170817173229.20324-1-chris@chris-wilson.co.ukReviewed-by: NMichel Thierry <michel.thierry@intel.com>
      Acked-by: NMika Kuoppala <mika.kuoppala@linux.intel.com>
      4055dc75
  8. 07 7月, 2017 1 次提交
  9. 21 6月, 2017 1 次提交
    • M
      drm/i915: Modify error handler for per engine hang recovery · 142bc7d9
      Michel Thierry 提交于
      This is a preparatory patch which modifies error handler to do per engine
      hang recovery. The actual patch which implements this sequence follows
      later in the series. The aim is to prepare existing recovery function to
      adapt to this new function where applicable (which fails at this point
      because core implementation is lacking) and continue recovery using legacy
      full gpu reset.
      
      A helper function is also added to query the availability of engine
      reset. A subsequent patch will add the capability to query which type
      of reset is present (engine -> full -> no-reset) via the get-param
      ioctl.
      
      It has been decided that the error events that are used to notify user of
      reset will only be sent in case if full chip reset. In case of just
      single (or multiple) engine resets, userspace won't be notified by these
      events.
      
      Note that this implementation of engine reset is for i915 directly
      submitting to the ELSP, where the driver manages the hang detection,
      recovery and resubmission. With GuC submission these tasks are shared
      between driver and firmware; i915 will still responsible for detecting a
      hang, and when it does it will have to request GuC to reset that Engine and
      remind the firmware about the outstanding submissions. This will be
      added in different patch.
      
      v2: rebase, advertise engine reset availability in platform definition,
      add note about GuC submission.
      v3: s/*engine_reset*/*reset_engine*/. (Chris)
      Handle reset as 2 level resets, by first going to engine only and fall
      backing to full/chip reset as needed, i.e. reset_engine will need the
      struct_mutex.
      v4: Pass the engine mask to i915_reset. (Chris)
      v5: Rebase, update selftests.
      v6: Rebase, prepare for mutex-less reset engine.
      v7: Pass reset_engine mask as a function parameter, and iterate over the
      engine mask for reset_engine. (Chris)
      v8: Use i915.reset >=2 in has_reset_engine; remove redundant reset
      logging; add a reset-engine-in-progress flag to prevent concurrent
      resets, and avoid dual purposing of reset-backoff. (Chris)
      v9: Support reset of different engines in parallel (Chris)
      v10: Handle reset-engine flag locking better (Chris)
      v11: Squash in reporting of per-engine-reset availability.
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Signed-off-by: NIan Lister <ian.lister@intel.com>
      Signed-off-by: NTomas Elf <tomas.elf@intel.com>
      Signed-off-by: NArun Siluvery <arun.siluvery@linux.intel.com>
      Signed-off-by: NMichel Thierry <michel.thierry@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170615201828.23144-4-michel.thierry@intel.comReviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170620095751.13127-5-chris@chris-wilson.co.uk
      142bc7d9
  10. 30 5月, 2017 1 次提交
  11. 26 5月, 2017 1 次提交
    • C
      drm/i915: Keep the forcewake timer alive for 1ms past the most recent use · c9e0c6da
      Chris Wilson 提交于
      Currently the timer is armed for 1ms after the first use and is killed
      immediately, dropping the forcewake as early as possible. However, for
      very frequent operations the forcewake dance has a large impact on
      latency and keeping the timer alive until we are idle is preferred. To
      achieve this, if we call intel_uncore_forcewake_get whilst the timer is
      alive (repeated use), then set a flag to restart the timer on expiry
      rather than drop the forcewake usage count. The timer is racy, the
      consequence of the race is to expire the timer earlier than is now
      desired but does not impact on correct behaviour. The offset the race
      slightly, we set the active flag again on intel_uncore_forcewake_put.
      
      The effect should be to reduce the jitter of reacquiring the fw every
      1ms on a busy system. However, the cost is to keep the timer alive for
      an extra 1ms on a nearly idle system. We chose to incur the jitter
      previously to keep the timer off for as much as possible.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170526132209.14640-1-chris@chris-wilson.co.uk
      c9e0c6da
  12. 22 5月, 2017 1 次提交
  13. 19 5月, 2017 3 次提交
  14. 11 5月, 2017 1 次提交
  15. 09 5月, 2017 1 次提交
  16. 03 5月, 2017 2 次提交
  17. 28 4月, 2017 1 次提交
  18. 27 4月, 2017 1 次提交
  19. 12 4月, 2017 1 次提交
  20. 11 4月, 2017 2 次提交
  21. 10 4月, 2017 2 次提交
  22. 08 4月, 2017 1 次提交
  23. 07 4月, 2017 1 次提交
  24. 23 3月, 2017 6 次提交
  25. 17 3月, 2017 1 次提交
  26. 13 3月, 2017 1 次提交
  27. 10 3月, 2017 1 次提交
  28. 02 3月, 2017 3 次提交