[PATCH 0/6] Enable OA unit for Gen 8 and 9 in i915 perf

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This extends i915 perf to support periodic sampling of OA metrics for BDW, CHV,
SKL and BXT.

I've recently been working through a number of issues that were uncovered once
I started adapting the gen7 IGT tests. Some further issues were also noticed by
others using INTEL_performance_query in Mesa.  So compared to earlier Gen8+ OA
series sent out a few notable updates are:

* Implements tail race handling like we have for gen 7
* On SKL we disable automatic reports for slice/unslice clock ratio changes
  because the hardware can generate so many redundant reports (no ratio change)
  that buffer overflows can start to become a problem and userspace ends up
  doing an unreasonable amount of work to keep up.
* WaDisableDopClockGating:bdw is no longer handled in i915_perf.c
* Flex EU register updates within the register state context were using
  incorrect offsets before.
* The generated per-gen config initialization code wasn't initializing the
  flex eu register state.
* While filtering for a single context we weren't forwarding userspace the
  reports it needed to bookend around context switches so that it can discount
  the progress of the counters associated with other contexts.
* Even opening a stream for single context filtered OA metrics requires
  dev.i915.perf_stream_paranoid == 0 since we can no longer reliably hide the
  progress of system-wide metrics, now that filtering is done based on tagging
  reports with an ID instead of physically clock gating the OA unit off for
  other contests.

In case anyone wants to take a look at the IGT tests so far they can be found
here:

  https://github.com/rib/intel-gpu-tools/commits/wip/rib/i915-perf-tests

I should probably write a few additional tests specific to changes made for
gen8+, but I've at least adapted the existing tests for gen7.

I can only say I've tested on Skylake recently, so although we can hopefully
review these patches with an eye towards upstreaming, they do still need some
broader testing across more hardware.

Considering the large number of configs for Gen 8 and 9, and how unsure I am
about the maturity of all the various configs I do have some doubt about
whether we should upstream them all together if someone hasn't looked at the
unique counters for each set against a relevant workload to see that the
numbers look plausible (so ignoring the common A counters). On the other hand
being optimistic means we can make more sets available faster and even makes it
more likely they will be tested across a broader range of workloads.  We can
add replacement configs if needs be or even stop advertising configs
considering how they are advertised to userspace dynamically.

Note: these patches are based on the patches I sent out to update the tail
pointer race workaround for Haswell in i915 perf.

Regards,
- Robert

Robert Bragg (6):
  drm/i915: expose _SLICE_MASK GETPARM
  drm/i915: expose _SUBSLICE_MASK GETPARM
  drm/i915: Add uncore mmio api for per-context registers
  drm/i915: Add 'render basic' Gen8+ OA unit configs
  drm/i915: Add OA unit support for Gen 8+
  drm/i915: Add more OA configs for BDW, CHV, SKL + BXT

 drivers/gpu/drm/i915/Makefile           |    8 +-
 drivers/gpu/drm/i915/i915_drv.c         |   10 +
 drivers/gpu/drm/i915/i915_drv.h         |   20 +
 drivers/gpu/drm/i915/i915_gem_context.h |    1 +
 drivers/gpu/drm/i915/i915_oa_bdw.c      | 4954 +++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/i915_oa_bdw.h      |   38 +
 drivers/gpu/drm/i915/i915_oa_bxt.c      | 2541 ++++++++++++++++
 drivers/gpu/drm/i915/i915_oa_bxt.h      |   38 +
 drivers/gpu/drm/i915/i915_oa_chv.c      | 2730 +++++++++++++++++
 drivers/gpu/drm/i915/i915_oa_chv.h      |   38 +
 drivers/gpu/drm/i915/i915_oa_sklgt2.c   | 3303 +++++++++++++++++++++
 drivers/gpu/drm/i915/i915_oa_sklgt2.h   |   38 +
 drivers/gpu/drm/i915/i915_oa_sklgt3.c   | 2856 ++++++++++++++++++
 drivers/gpu/drm/i915/i915_oa_sklgt3.h   |   38 +
 drivers/gpu/drm/i915/i915_oa_sklgt4.c   | 2910 ++++++++++++++++++
 drivers/gpu/drm/i915/i915_oa_sklgt4.h   |   38 +
 drivers/gpu/drm/i915/i915_perf.c        | 1067 ++++++-
 drivers/gpu/drm/i915/i915_reg.h         |   12 +
 drivers/gpu/drm/i915/intel_lrc.c        |    4 +
 drivers/gpu/drm/i915/intel_uncore.c     |   73 +
 include/uapi/drm/i915_drm.h             |   21 +-
 21 files changed, 20667 insertions(+), 71 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/i915_oa_bdw.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_bdw.h
 create mode 100644 drivers/gpu/drm/i915/i915_oa_bxt.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_bxt.h
 create mode 100644 drivers/gpu/drm/i915/i915_oa_chv.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_chv.h
 create mode 100644 drivers/gpu/drm/i915/i915_oa_sklgt2.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_sklgt2.h
 create mode 100644 drivers/gpu/drm/i915/i915_oa_sklgt3.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_sklgt3.h
 create mode 100644 drivers/gpu/drm/i915/i915_oa_sklgt4.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_sklgt4.h

-- 
2.11.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux