All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH i-g-t 18/29] igt/perf: print [un]slice freq and report reasons in debug
Date: Tue, 25 Apr 2017 15:32:50 -0700	[thread overview]
Message-ID: <20170425223301.23733-19-lionel.g.landwerlin@intel.com> (raw)
In-Reply-To: <20170425223301.23733-1-lionel.g.landwerlin@intel.com>

From: Robert Bragg <robert@sixbynine.org>

Signed-off-by: Robert Bragg <robert@sixbynine.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
---
 tests/perf.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 57 insertions(+), 1 deletion(-)

diff --git a/tests/perf.c b/tests/perf.c
index 08ee8665..ab8db296 100644
--- a/tests/perf.c
+++ b/tests/perf.c
@@ -428,6 +428,28 @@ gen8_read_report_ticks(uint32_t *report, enum drm_i915_oa_format format)
 	return report[3];
 }
 
+static const char *
+gen8_read_report_reason(const uint32_t *report)
+{
+	uint32_t reason = ((report[0] >> OAREPORT_REASON_SHIFT) &
+			   OAREPORT_REASON_MASK);
+
+	if (reason & (1<<0))
+		return "timer";
+	else if (reason & (1<<1))
+	      return "internal trigger 1";
+	else if (reason & (1<<2))
+	      return "internal trigger 2";
+	else if (reason & (1<<3))
+	      return "context switch";
+	else if (reason & (1<<4))
+	      return "GO 1->0 transition (enter RC6)";
+	else if (reason & (1<<5))
+		return "[un]slice clock ratio change";
+	else
+		return "unknown";
+}
+
 static uint64_t
 timebase_scale(uint32_t u32_delta)
 {
@@ -749,7 +771,7 @@ init_sys_info(void)
 				test_set_uuid = "882fa433-1f4a-4a67-a962-c741888fe5f5";
 				break;
 			default:
-				igt_debug("unsupport Skylake GT size\n");
+				igt_debug("unsupported Skylake GT size\n");
 				return false;
 			}
 			timestamp_frequency = 12000000;
@@ -1159,6 +1181,20 @@ open_and_read_2_oa_reports(int format_id,
 }
 
 static void
+gen8_read_report_clock_ratios(uint32_t *report,
+			      uint32_t *slice_freq_mhz,
+			      uint32_t *unslice_freq_mhz)
+{
+	uint32_t unslice_freq = report[0] & 0x1ff;
+	uint32_t slice_freq_low = (report[0] >> 25) & 0x7f;
+	uint32_t slice_freq_high = (report[0] >> 9) & 0x3;
+	uint32_t slice_freq = slice_freq_low | (slice_freq_high << 7);
+
+	*slice_freq_mhz = (slice_freq * 16666) / 1000;
+	*unslice_freq_mhz = (unslice_freq * 16666) / 1000;
+}
+
+static void
 print_reports(uint32_t *oa_report0, uint32_t *oa_report1, int fmt)
 {
 	igt_debug("TIMESTAMP: 1st = %"PRIu32", 2nd = %"PRIu32", delta = %"PRIu32"\n",
@@ -1174,6 +1210,26 @@ print_reports(uint32_t *oa_report0, uint32_t *oa_report1, int fmt)
 			  clock0, clock1, clock1 - clock0);
 	}
 
+	if (intel_gen(devid) >= 8) {
+		uint32_t slice_freq0, slice_freq1, unslice_freq0, unslice_freq1;
+		const char *reason0 = gen8_read_report_reason(oa_report0);
+		const char *reason1 = gen8_read_report_reason(oa_report1);
+
+		gen8_read_report_clock_ratios(oa_report0,
+					      &slice_freq0, &unslice_freq0);
+		gen8_read_report_clock_ratios(oa_report1,
+					      &slice_freq1, &unslice_freq1);
+
+		igt_debug("SLICE CLK: 1st = %umhz, 2nd = %umhz, delta = %d\n",
+			  slice_freq0, slice_freq1,
+			  ((int)slice_freq1 - (int)slice_freq0));
+		igt_debug("UNSLICE CLK: 1st = %umhz, 2nd = %umhz, delta = %d\n",
+			  unslice_freq0, unslice_freq1,
+			  ((int)unslice_freq1 - (int)unslice_freq0));
+
+		igt_debug("REASONS: 1st = \"%s\", 2nd = \"%s\"\n", reason0, reason1);
+	}
+
 	/* Gen8+ has some 40bit A counters... */
 	for (int j = 0; j < oa_formats[fmt].n_a40; j++) {
 		uint64_t value0 = gen8_read_40bit_a_counter(oa_report0, fmt, j);
-- 
2.11.0

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

  parent reply	other threads:[~2017-04-25 22:33 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-25 22:32 [PATCH i-g-t 00/29] Update i915 perf tests for Gen8+ Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 01/29] igt/perf: generalize lookup for test metric set Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 02/29] igt/perf: improve robustness of polling/blocking tests Lionel Landwerlin
2017-06-16 13:48   ` Matthew Auld
2017-04-25 22:32 ` [PATCH i-g-t 03/29] igt/perf: init timestamp freq and oa format per devid Lionel Landwerlin
2017-06-16 14:37   ` Matthew Auld
2017-04-25 22:32 ` [PATCH i-g-t 04/29] igt/perf: update init_sys_info for skl with per-gt configs Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 05/29] igt/perf: add gen8 formats Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 06/29] igt/perf: fix a counter indexing Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 07/29] igt/perf: generalize checks for undefined A counters Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 08/29] igt/perf: generalize reading gpu ticks from reports Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 09/29] igt/perf: move timebase + oa exponent utilities up Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 10/29] igt/perf: wrap emission of MI_REPORT_PERF_COUNT Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 11/29] igt/perf: handling printing gen8 formats Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 12/29] igt/perf: avoid assumptions about oa exponent <-> freq mappings Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 13/29] igt/perf: allow 10% margin matching oa/sysfs freq in test_oa_exponents Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 14/29] igt/perf: s/test_perf_ctx_mi_rpc/hsw_test_single_ctx_counters/ Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 15/29] igt/perf: don't assume constant of 40 EUs Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 16/29] igt/perf: consider ctx-switch reports while polling/blocking Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 17/29] igt/perf: factor out oa report sanity checking Lionel Landwerlin
2017-04-25 22:32 ` Lionel Landwerlin [this message]
2017-04-25 22:32 ` [PATCH i-g-t 19/29] igt/perf: update print_reports to print context ID Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 20/29] igt/perf: add utility function for checking periodic reports Lionel Landwerlin
2017-06-16 14:41   ` Matthew Auld
2017-04-25 22:32 ` [PATCH i-g-t 21/29] igt/perf: make stream_fd a global variable Lionel Landwerlin
2017-06-16 14:43   ` Matthew Auld
2017-06-16 14:46     ` Lionel Landwerlin
2017-06-21 13:47   ` Matthew Auld
2017-04-25 22:32 ` [PATCH i-g-t 22/29] igt/perf: add per context filtering test for gen8+ Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 23/29] igt/perf: update max buffer size for reading reports Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 24/29] igt/perf: fix rc6 test Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 25/29] igt/perf: rework oa-exponent test Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 26/29] igt/perf: make enable-disable more reliable Lionel Landwerlin
2017-04-25 22:32 ` [PATCH i-g-t 27/29] igt/perf: make buffer-fill " Lionel Landwerlin
2017-04-25 22:33 ` [PATCH i-g-t 28/29] igt/perf: load gt_boost_freq_mhz as max gt frequency Lionel Landwerlin
2017-04-25 22:33 ` [PATCH i-g-t 29/29] igt/perf: remove unused frequency functions Lionel Landwerlin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170425223301.23733-19-lionel.g.landwerlin@intel.com \
    --to=lionel.g.landwerlin@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.