I've been working on some i-g-t tests for this new interface and while I still have some more tests to write, it still seemed worth sending out another updated series in the mean time. Firstly this includes updates based on Emil's previous comments. Then there have been a few issue hit while writing tests: * It seems it can take a fairly long time for the MUX config to apply after the register writes have finished, and now the driver inserts a delay after configuration, before enabling periodic sampling. * I've found that sometimes the HW tail pointer can get ahead of OA buffer writes, especially with higher sampling frequencies, and so now the driver maintains a margin behind the HW tail pointer to ensure the most recent reports have some time to land before attempting to copy them to userspace. * As a sanity check that a report is valid before it's copied to userspace the driver checks the report-id field != 0 * The _BUFFER_OVERFLOW record has been replaced with a _BUFFER_LOST record with more specific semantics. * Since we can't clear the overflow status on Haswell while periodic sampling is enabled, if an overflow occurs we now restart the unit. * The maximum OA periodic sampling exponent is now 31 * We verify the head/tail pointers read back from HW look sane before using as offsets to read reports from the OA buffer. We reset the HW if they look bad. For reference the work-in-progress i-g-t tests can be found here: https://github.com/rib/intel-gpu-tools branch = wip/rib/i915-perf-tests or browsed here: https://github.com/rib/intel-gpu-tools/commits/wip/rib/i915-perf-tests Also for reference these patches can be fetched from here: https://github.com/rib/linux branch = wip/rib/oa-2016-04-19-nightly Regards, - Robert Robert Bragg (9): drm/i915: Add i915 perf infrastructure drm/i915: rename OACONTROL GEN7_OACONTROL drm/i915: don't whitelist oacontrol in cmd parser drm/i915: Add 'render basic' Haswell OA unit config drm/i915: Enable i915 perf stream for Haswell OA unit drm/i915: advertise available metrics via sysfs drm/i915: Add dev.i915.perf_event_paranoid sysctl option drm/i915: add oa_event_min_timer_exponent sysctl drm/i915: Add more Haswell OA metric sets drivers/gpu/drm/i915/Makefile | 4 + drivers/gpu/drm/i915/i915_cmd_parser.c | 33 +- drivers/gpu/drm/i915/i915_dma.c | 8 + drivers/gpu/drm/i915/i915_drv.h | 155 ++++ drivers/gpu/drm/i915/i915_gem_context.c | 24 +- drivers/gpu/drm/i915/i915_oa_hsw.c | 658 ++++++++++++++ drivers/gpu/drm/i915/i915_oa_hsw.h | 38 + drivers/gpu/drm/i915/i915_perf.c | 1439 +++++++++++++++++++++++++++++++ drivers/gpu/drm/i915/i915_reg.h | 340 +++++++- include/uapi/drm/i915_drm.h | 133 +++ 10 files changed, 2795 insertions(+), 37 deletions(-) create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.c create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.h create mode 100644 drivers/gpu/drm/i915/i915_perf.c -- 2.7.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel