[PATCH i-g-t 2/3] test/i915/perf: debug traces

Lionel Landwerlin lionel.g.landwerlin at intel.com
Thu Dec 3 07:47:57 UTC 2020


---
 tests/i915/perf.c | 47 ++++++++++++++++++++++++++++++++---------------
 1 file changed, 32 insertions(+), 15 deletions(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 3a7f75fa4..bc7b3ed89 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -783,10 +783,21 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 	uint32_t report_reason0, report_reason1;
 	uint32_t b;
 	uint32_t ref;
+	const char *failed_reason = NULL;
+
+#define fail_unless(cond) {				\
+		if (!failed_reason && !(cond))	\
+			failed_reason = #cond ; \
+	}
+#define fail_unless_eq(a, b) {				\
+		if (!failed_reason && ((a) != (b)))	\
+			failed_reason = #a " != " # b;	\
+	}
 
-	igt_debug("report type: %s->%s\n",
-		  gen8_read_report_reason(oa_report0),
-		  gen8_read_report_reason(oa_report1));
+
+	igt_debug("report type: %s(%p)->%s(%p)\n",
+		  gen8_read_report_reason(oa_report0), oa_report0,
+		  gen8_read_report_reason(oa_report1), oa_report1);
 
 	freq = time_delta ? ((uint64_t)clock_delta * 1000) / time_delta : 0;
 	igt_debug("freq = %"PRIu64"\n", freq);
@@ -813,7 +824,7 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 			continue;
 
 		igt_debug("A%d: delta = %"PRIu64"\n", j, delta);
-		igt_assert(delta <= max_delta);
+		fail_unless(delta <= max_delta);
 	}
 
 	for (int j = 0; j < format.n_a; j++) {
@@ -828,7 +839,7 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 			continue;
 
 		igt_debug("A%d: delta = %"PRIu32"\n", a_id, delta);
-		igt_assert(delta <= max_delta);
+		fail_unless(delta <= max_delta);
 	}
 
 	/* The TestOa metric set defines all B counters to be a
@@ -838,45 +849,45 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 		if (clock_delta > 0) {
 			b = rpt1_b[0] - rpt0_b[0];
 			igt_debug("B0: delta = %"PRIu32"\n", b);
-			igt_assert_eq(b, 0);
+			fail_unless_eq(b, 0);
 
 			b = rpt1_b[1] - rpt0_b[1];
 			igt_debug("B1: delta = %"PRIu32"\n", b);
-			igt_assert_eq(b, clock_delta);
+			fail_unless_eq(b, clock_delta);
 
 			b = rpt1_b[2] - rpt0_b[2];
 			igt_debug("B2: delta = %"PRIu32"\n", b);
-			igt_assert_eq(b, clock_delta);
+			fail_unless_eq(b, clock_delta);
 
 			b = rpt1_b[3] - rpt0_b[3];
 			ref = clock_delta / 2;
 			igt_debug("B3: delta = %"PRIu32"\n", b);
-			igt_assert(b >= ref - 1 && b <= ref + 1);
+			fail_unless(b >= ref - 1 && b <= ref + 1);
 
 			b = rpt1_b[4] - rpt0_b[4];
 			ref = clock_delta / 3;
 			igt_debug("B4: delta = %"PRIu32"\n", b);
-			igt_assert(b >= ref - 1 && b <= ref + 1);
+			fail_unless(b >= ref - 1 && b <= ref + 1);
 
 			b = rpt1_b[5] - rpt0_b[5];
 			ref = clock_delta / 3;
 			igt_debug("B5: delta = %"PRIu32"\n", b);
-			igt_assert(b >= ref - 1 && b <= ref + 1);
+			fail_unless(b >= ref - 1 && b <= ref + 1);
 
 			b = rpt1_b[6] - rpt0_b[6];
 			ref = clock_delta / 6;
 			igt_debug("B6: delta = %"PRIu32"\n", b);
-			igt_assert(b >= ref - 1 && b <= ref + 1);
+			fail_unless(b >= ref - 1 && b <= ref + 1);
 
 			b = rpt1_b[7] - rpt0_b[7];
 			ref = clock_delta * 2 / 3;
 			igt_debug("B7: delta = %"PRIu32"\n", b);
-			igt_assert(b >= ref - 1 && b <= ref + 1);
+			fail_unless(b >= ref - 1 && b <= ref + 1);
 		} else {
 			for (int j = 0; j < format.n_b; j++) {
 				b = rpt1_b[j] - rpt0_b[j];
 				igt_debug("B%i: delta = %"PRIu32"\n", j, b);
-				igt_assert_eq(b, 0);
+				fail_unless_eq(b, 0);
 			}
 		}
 	}
@@ -890,8 +901,12 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 
 		igt_debug("C%d: delta = %"PRIu32", max_delta=%"PRIu32"\n",
 			  j, delta, max_delta);
-		igt_assert(delta <= max_delta);
+		fail_unless(delta <= max_delta);
 	}
+
+	if (failed_reason)
+		igt_debug("Failure: %s\n", failed_reason);
+	igt_assert(!failed_reason);
 }
 
 static bool
@@ -2616,6 +2631,8 @@ test_non_zero_reason(void)
 	for (uint32_t offset = 0; offset < total_len; offset += header->size) {
 		header = (void *) (buf + offset);
 
+		igt_debug("report offset=%u/%u\n", offset, total_len);
+
 		switch (header->type) {
 		case DRM_I915_PERF_RECORD_OA_REPORT_LOST:
 			reports_lost++;
-- 
2.29.2



More information about the Intel-gfx-trybot mailing list