[Intel-gfx] [PATCH i-g-t 13/29] igt/perf: allow 10% margin matching oa/sysfs freq in test_oa_exponents

Lionel Landwerlin lionel.g.landwerlin at intel.com
Tue Apr 25 22:32:45 UTC 2017


From: Robert Bragg <robert at sixbynine.org>

Signed-off-by: Robert Bragg <robert at sixbynine.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
 tests/perf.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/tests/perf.c b/tests/perf.c
index d47e45c8..c8092eaa 100644
--- a/tests/perf.c
+++ b/tests/perf.c
@@ -1111,6 +1111,8 @@ test_oa_formats(void)
 static void
 test_oa_exponents(int gt_freq_mhz)
 {
+	uint32_t freq_margin;
+
 	/* This test tries to use the sysfs interface for pinning the GT
 	 * frequency so we have another point of reference for comparing with
 	 * the clock frequency as derived from OA reports.
@@ -1129,11 +1131,17 @@ test_oa_exponents(int gt_freq_mhz)
 	igt_debug("Testing OA timer exponents with requested GT frequency = %dmhz\n",
 		  gt_freq_mhz);
 
+	/* allow a +- 10% error margin when checking that the frequency
+	 * calculated from the OA reports matches the frequency according to
+	 * sysfs.
+	 */
+	freq_margin = gt_freq_mhz * 0.1;
+
 	/* It's asking a lot to sample with a 160 nanosecond period and the
 	 * test can fail due to buffer overflows if it wasn't possible to
 	 * keep up, so we don't start from an exponent of zero...
 	 */
-	for (int i = 2; i < 20; i++) {
+	for (int i = 5; i < 20; i++) {
 		uint32_t expected_timestamp_delta;
 		uint32_t timestamp_delta;
 		uint32_t oa_report0[64];
@@ -1157,8 +1165,10 @@ test_oa_exponents(int gt_freq_mhz)
 
 			gt_freq_mhz_0 = sysfs_read("gt_act_freq_mhz");
 
-			igt_debug("ITER %d: testing OA exponent %d with sysfs GT freq = %dmhz\n",
-				  j, i, gt_freq_mhz_0);
+			igt_debug("ITER %d: testing OA exponent %d (period = %"PRIu64"ns) with sysfs GT freq = %dmhz +- %u\n",
+				  j, i,
+				  oa_exponent_to_ns(i),
+				  gt_freq_mhz_0, freq_margin);
 
 			open_and_read_2_oa_reports(test_oa_format,
 						   i, /* exponent */
@@ -1199,7 +1209,8 @@ test_oa_exponents(int gt_freq_mhz)
 			igt_debug("ITER %d: time delta = %"PRIu32"(ns) clock delta = %"PRIu32" freq = %"PRIu32"(mhz)\n",
 				  j, time_delta, clock_delta, freq);
 
-			if (freq == gt_freq_mhz_1)
+                        if (freq < (gt_freq_mhz_1 + freq_margin) &&
+                            freq > (gt_freq_mhz_1 - freq_margin))
 				n_freq_matches++;
 
 			n_tested++;
-- 
2.11.0



More information about the Intel-gfx mailing list