1. 01 6月, 2020 1 次提交
    • C
      drm/i915: Relinquish forcewake immediately after manual grouping · 03c10f47
      Chris Wilson 提交于
      Our forcewake utilisation is split into categories: automatic and
      manual. Around bare register reads, we look up the right forcewake
      domain and automatically acquire and release [upon a timer] the
      forcewake domain. For other access, where we know we require the
      forcewake across a group of register reads, we manually acquire the
      forcewake domain and release it at the end. Again, this currently arms
      the domain timer for a later release.
      
      However, looking at some energy utilisation profiles, we have tried to
      avoid using forcewake [and rely on the natural wake up to post register
      updates] due to that even keep the fw active for a brief period
      contributes to a significant power draw [i.e. when the gpu is sleeping
      with rc6 at high clocks]. But as it turns out, not posting the writes
      immediately also has unintended consequences, such as not reducing the
      clocks and so conserving power while busy.
      
      As a compromise, let us only arm the domain timer for automatic
      forcewake usage around bare register access, but immediately release the
      forcewake when manually acquired by intel_uncore_forcewake_get/_put.
      
      The corollary to this is that we may instead have to take forcewake more
      often, and so incur a latency penalty in doing so. For Sandybridge this
      was significant, and even on the latest machines, taking forcewake at
      interrupt frequency is a huge impact. [So we don't do that anymore!
      Hopefully, this will spare us from still needing the mitigation of the
      timer for steady state execution.]
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: NMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200601072446.19548-13-chris@chris-wilson.co.uk
      03c10f47
  2. 11 5月, 2020 1 次提交
  3. 18 4月, 2020 1 次提交
  4. 08 4月, 2020 1 次提交
  5. 25 3月, 2020 1 次提交
  6. 22 1月, 2020 2 次提交
    • P
      drm/i915: Make WARN* drm specific where uncore or stream ptr is available · a9f236d1
      Pankaj Bharadiya 提交于
      drm specific WARN* calls include device information in the
      backtrace, so we know what device the warnings originate from.
      
      Covert all the calls of WARN* with device specific drm_WARN*
      variants in functions where intel_uncore/i915_perf_stream  struct
      pointer is readily available.
      
      The conversion was done automatically with below coccinelle semantic
      patch. checkpatch errors/warnings are fixed manually.
      
      @@
      identifier func, T;
      @@
      func(...) {
      ...
      struct intel_uncore *T = ...;
      <...
      (
      -WARN(
      +drm_WARN(&T->i915->drm,
      ...)
      |
      -WARN_ON(
      +drm_WARN_ON(&T->i915->drm,
      ...)
      |
      -WARN_ONCE(
      +drm_WARN_ONCE(&T->i915->drm,
      ...)
      |
      -WARN_ON_ONCE(
      +drm_WARN_ON_ONCE(&T->i915->drm,
      ...)
      )
      ...>
      
      }
      
      @@
      identifier func, T;
      @@
      func(struct intel_uncore *T,...) {
      <...
      (
      -WARN(
      +drm_WARN(&T->i915->drm,
      ...)
      |
      -WARN_ON(
      +drm_WARN_ON(&T->i915->drm,
      ...)
      |
      -WARN_ONCE(
      +drm_WARN_ONCE(&T->i915->drm,
      ...)
      |
      -WARN_ON_ONCE(
      +drm_WARN_ON_ONCE(&T->i915->drm,
      ...)
      )
      ...>
      
      }
      
      @@
      identifier func, T;
      @@
      func(struct i915_perf_stream *T,...) {
      +struct drm_i915_private *i915 = T->perf->i915;
      <+...
      (
      -WARN(
      +drm_WARN(&i915->drm,
      ...)
      |
      -WARN_ON(
      +drm_WARN_ON(&i915->drm,
      ...)
      |
      -WARN_ONCE(
      +drm_WARN_ONCE(&i915->drm,
      ...)
      |
      -WARN_ON_ONCE(
      +drm_WARN_ON_ONCE(&i915->drm,
      ...)
      )
      ...+>
      
      }
      
      command: ls drivers/gpu/drm/i915/*.c | xargs spatch --sp-file <script> \
      					--linux-spacing --in-place
      Signed-off-by: NPankaj Bharadiya <pankaj.laxminarayan.bharadiya@intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200115034455.17658-11-pankaj.laxminarayan.bharadiya@intel.com
      a9f236d1
    • P
      drm/i915: Make WARN* drm specific where drm_priv ptr is available · 48a1b8d4
      Pankaj Bharadiya 提交于
      drm specific WARN* calls include device information in the
      backtrace, so we know what device the warnings originate from.
      
      Covert all the calls of WARN* with device specific drm_WARN*
      variants in functions where drm_i915_private struct pointer is readily
      available.
      
      The conversion was done automatically with below coccinelle semantic
      patch. checkpatch errors/warnings are fixed manually.
      
      @rule1@
      identifier func, T;
      @@
      func(...) {
      ...
      struct drm_i915_private *T = ...;
      <+...
      (
      -WARN(
      +drm_WARN(&T->drm,
      ...)
      |
      -WARN_ON(
      +drm_WARN_ON(&T->drm,
      ...)
      |
      -WARN_ONCE(
      +drm_WARN_ONCE(&T->drm,
      ...)
      |
      -WARN_ON_ONCE(
      +drm_WARN_ON_ONCE(&T->drm,
      ...)
      )
      ...+>
      }
      
      @rule2@
      identifier func, T;
      @@
      func(struct drm_i915_private *T,...) {
      <+...
      (
      -WARN(
      +drm_WARN(&T->drm,
      ...)
      |
      -WARN_ON(
      +drm_WARN_ON(&T->drm,
      ...)
      |
      -WARN_ONCE(
      +drm_WARN_ONCE(&T->drm,
      ...)
      |
      -WARN_ON_ONCE(
      +drm_WARN_ON_ONCE(&T->drm,
      ...)
      )
      ...+>
      }
      
      command: ls drivers/gpu/drm/i915/*.c | xargs spatch --sp-file \
      			<script> --linux-spacing --in-place
      Signed-off-by: NPankaj Bharadiya <pankaj.laxminarayan.bharadiya@intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200115034455.17658-10-pankaj.laxminarayan.bharadiya@intel.com
      48a1b8d4
  7. 10 1月, 2020 1 次提交
  8. 14 9月, 2019 2 次提交
  9. 10 8月, 2019 1 次提交
  10. 07 8月, 2019 3 次提交
  11. 03 8月, 2019 1 次提交
  12. 02 8月, 2019 2 次提交
  13. 12 7月, 2019 1 次提交
  14. 09 7月, 2019 1 次提交
  15. 07 7月, 2019 1 次提交
  16. 05 7月, 2019 1 次提交
  17. 04 7月, 2019 1 次提交
  18. 20 6月, 2019 6 次提交
  19. 14 6月, 2019 3 次提交
  20. 10 6月, 2019 1 次提交
  21. 08 5月, 2019 1 次提交
  22. 08 4月, 2019 1 次提交
  23. 03 4月, 2019 2 次提交
  24. 29 3月, 2019 1 次提交
  25. 27 3月, 2019 3 次提交