All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH i-g-t] tests/i915/gem_exec_balancer: Make sure some tests are run to declare success
@ 2021-11-26 15:10 ` Tvrtko Ursulin
  0 siblings, 0 replies; 4+ messages in thread
From: Tvrtko Ursulin @ 2021-11-26 15:10 UTC (permalink / raw)
  To: igt-dev; +Cc: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

I accidentally noticed a bunch of tests need two engines of the same class
to do anything meanigful but they report success even if they can't run.

Half way through making them skip instead, I realised it was possibly a
design choice to avoid flip-flopping on the CI (shards). Sigh. It is still
very unfortunate to have tests declaring success when they did not
actually do anything due machine requirements not being met. How much of a
a hostage to CI reporting limitations should the IGT suite be? Discuss.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 tests/i915/gem_exec_balancer.c | 90 ++++++++++++++++++++++++++++++++--
 1 file changed, 85 insertions(+), 5 deletions(-)

diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
index cc07a5a992c7..a13d4cdc930e 100644
--- a/tests/i915/gem_exec_balancer.c
+++ b/tests/i915/gem_exec_balancer.c
@@ -747,6 +747,8 @@ static void __bonded_chain_inv(int i915,
 
 static void bonded_chain(int i915)
 {
+	unsigned int tested = 0;
+
 	/*
 	 * Given batches A, B and B', where B and B' are a bonded pair, with
 	 * B' depending on B with a submit fence and B depending on A as
@@ -759,11 +761,14 @@ static void bonded_chain(int i915)
 
 		siblings = list_engines(i915, 1u << class, &count);
 		if (count > 1) {
+			tested++;
 			__bonded_chain(i915, siblings, count);
 			__bonded_chain_inv(i915, siblings, count);
 		}
 		free(siblings);
 	}
+
+	igt_require(tested > 0);
 }
 
 static void __bonded_sema(int i915,
@@ -849,6 +854,8 @@ static void __bonded_sema(int i915,
 
 static void bonded_semaphore(int i915)
 {
+	unsigned int tested = 0;
+
 	/*
 	 * Given batches A, B and B', where B and B' are a bonded pair, with
 	 * B' depending on B with a submit fence and B depending on A as
@@ -863,10 +870,14 @@ static void bonded_semaphore(int i915)
 		unsigned int count;
 
 		siblings = list_engines(i915, 1u << class, &count);
-		if (count > 1)
+		if (count > 1) {
+			tested++;
 			__bonded_sema(i915, siblings, count);
+		}
 		free(siblings);
 	}
+
+	igt_require(tested > 0);
 }
 
 static void __bonded_pair(int i915,
@@ -1278,6 +1289,7 @@ bonded_runner(int i915,
 		B_HOSTILE | B_FENCE,
 		B_HOSTILE | B_DELAY,
 	};
+	unsigned int tested = 0;
 	unsigned long *cycles;
 
 	/*
@@ -1295,6 +1307,7 @@ bonded_runner(int i915,
 
 		siblings = list_engines(i915, 1u << class, &count);
 		if (count > 1) {
+			tested++;
 			igt_info("Class %u, 1 thread\n", class);
 			for (int i = 0; i < ARRAY_SIZE(phases); i++) {
 				cycles[0] = 0;
@@ -1342,6 +1355,8 @@ bonded_runner(int i915,
 	}
 
 	munmap(cycles, 4096);
+
+	igt_require(tested > 0);
 }
 
 static void __bonded_nohang(int i915, const intel_ctx_t *ctx,
@@ -1414,6 +1429,7 @@ static void __bonded_nohang(int i915, const intel_ctx_t *ctx,
 
 static void bonded_nohang(int i915, unsigned int flags)
 {
+	unsigned int tested = 0;
 	const intel_ctx_t *ctx;
 
 	/*
@@ -1430,12 +1446,16 @@ static void bonded_nohang(int i915, unsigned int flags)
 		unsigned int count;
 
 		siblings = list_engines(i915, 1u << class, &count);
-		if (count > 1)
+		if (count > 1) {
+			tested++;
 			__bonded_nohang(i915, ctx, siblings, count, flags);
+		}
 		free(siblings);
 	}
 
 	intel_ctx_destroy(i915, ctx);
+
+	igt_require(tested > 0);
 }
 
 static void indices(int i915)
@@ -1741,6 +1761,8 @@ static void __sliced(int i915, uint64_t ahnd,
 
 static void sliced(int i915)
 {
+	unsigned int tested = 0;
+
 	/*
 	 * Let's investigate what happens when the virtual request is
 	 * timesliced away.
@@ -1771,6 +1793,8 @@ static void sliced(int i915)
 			continue;
 		}
 
+		tested++;
+
 		igt_fork(child, count) {
 			const intel_ctx_t *ctx;
 			uint64_t ahnd;
@@ -1793,6 +1817,8 @@ static void sliced(int i915)
 	}
 
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static void __hog(int i915, const intel_ctx_t *ctx, unsigned int count)
@@ -1830,6 +1856,8 @@ static void __hog(int i915, const intel_ctx_t *ctx, unsigned int count)
 
 static void hog(int i915)
 {
+	unsigned int tested = 0;
+
 	/*
 	 * Suppose there we are, happily using an engine, minding our
 	 * own business, when all of a sudden a very important process
@@ -1854,6 +1882,8 @@ static void hog(int i915)
 			continue;
 		}
 
+		tested++;
+
 		ctx = ctx_create_balanced(i915, ci, count);
 
 		__hog(i915, ctx, count);
@@ -1865,6 +1895,8 @@ static void hog(int i915)
 	}
 
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static uint32_t sema_create(int i915, uint64_t addr, uint32_t **x)
@@ -1969,6 +2001,7 @@ static void __waits(int i915, int timeout,
 
 static void waits(int i915, int timeout)
 {
+	unsigned int tested = 0;
 	bool nonblock;
 
 	nonblock = fcntl(i915, F_GETFL) & O_NONBLOCK;
@@ -1983,8 +2016,10 @@ static void waits(int i915, int timeout)
 		if (!ci)
 			continue;
 
-		if (count > 1)
+		if (count > 1) {
+			tested++;
 			__waits(i915, timeout, ci, count);
+		}
 
 		free(ci);
 	}
@@ -1993,6 +2028,8 @@ static void waits(int i915, int timeout)
 		fcntl(i915, F_SETFL, fcntl(i915, F_GETFL) & ~O_NONBLOCK);
 
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static void nop(int i915)
@@ -2120,6 +2157,7 @@ static void sequential(int i915)
 	struct drm_i915_gem_exec_object2 batch = {
 		.handle = batch_create(i915),
 	};
+	unsigned int tested = 0;
 
 	for (int class = 0; class < 32; class++) {
 		struct i915_engine_class_instance *ci;
@@ -2138,6 +2176,8 @@ static void sequential(int i915)
 		if (!ci || count < 2)
 			goto next;
 
+		tested++;
+
 		ctx = malloc(sizeof(*ctx) * count);
 		for (int n = 0; n < count; n++)
 			ctx[n] = ctx_create_balanced(i915, ci, count);
@@ -2173,6 +2213,8 @@ next:
 
 	gem_close(i915, batch.handle);
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static void ping(int i915, const intel_ctx_t *ctx, unsigned int engine)
@@ -2196,6 +2238,7 @@ static void semaphore(int i915)
 	uint32_t scratch;
 	igt_spin_t *spin[3];
 	uint64_t ahnd0 = get_simple_l2h_ahnd(i915, 0);
+	unsigned int tested = 0;
 
 	/*
 	 * If we are using HW semaphores to launch serialised requests
@@ -2218,6 +2261,8 @@ static void semaphore(int i915)
 		if (count < ARRAY_SIZE(block))
 			continue;
 
+		tested++;
+
 		/* Ensure that we completely occupy all engines in this group */
 		count = ARRAY_SIZE(block);
 
@@ -2249,6 +2294,8 @@ static void semaphore(int i915)
 	put_ahnd(ahnd0);
 
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static void set_unbannable(int i915, uint32_t ctx)
@@ -2266,6 +2313,7 @@ static void hangme(int i915)
 	struct drm_i915_gem_exec_object2 batch = {
 		.handle = batch_create(i915),
 	};
+	unsigned int tested = 0;
 
 	/*
 	 * Fill the available engines with hanging virtual engines and verify
@@ -2291,6 +2339,8 @@ static void hangme(int i915)
 			continue;
 		}
 
+		tested++;
+
 		client = malloc(sizeof(*client) * count);
 		igt_assert(client);
 
@@ -2368,6 +2418,8 @@ static void hangme(int i915)
 
 	gem_close(i915, batch.handle);
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static void smoketest(int i915, int timeout)
@@ -2402,8 +2454,8 @@ static void smoketest(int i915, int timeout)
 
 		free(ci);
 	}
-	if (!nctx) /* suppress the fluctuating status of shard-icl */
-		return;
+
+	igt_require(nctx);
 
 	igt_debug("Created %d virtual engines (one per context)\n", nctx);
 	ctx = realloc(ctx, sizeof(*ctx) * nctx * 4);
@@ -2602,6 +2654,8 @@ static void __fairslice(int i915,
 
 static void fairslice(int i915)
 {
+	unsigned int tested = 0;
+
 	/* Relative CS mmio */
 	igt_require(intel_gen(intel_get_drm_devid(i915)) >= 11);
 
@@ -2615,9 +2669,12 @@ static void fairslice(int i915)
 			continue;
 		}
 
+		tested++;
 		__fairslice(i915, ci, count, 2);
 		free(ci);
 	}
+
+	igt_require(tested > 0);
 }
 
 static int wait_for_status(int fence, int timeout)
@@ -2662,6 +2719,8 @@ static void __persistence(int i915,
 
 static void persistence(int i915)
 {
+	unsigned int tested = 0;
+
 	for (int class = 0; class < 32; class++) {
 		struct i915_engine_class_instance *ci;
 		unsigned int count = 0;
@@ -2672,9 +2731,12 @@ static void persistence(int i915)
 			continue;
 		}
 
+		tested++;
 		__persistence(i915, ci, count, false);
 		free(ci);
 	}
+
+	igt_require(tested > 0);
 }
 
 static bool set_heartbeat(int i915, const char *name, unsigned int value)
@@ -2698,6 +2760,7 @@ static bool set_heartbeat(int i915, const char *name, unsigned int value)
 static void noheartbeat(int i915)
 {
 	const struct intel_execution_engine2 *e;
+	unsigned int tested = 0;
 
 	/*
 	 * Check that non-persistent contexts are also cleaned up if we
@@ -2718,11 +2781,13 @@ static void noheartbeat(int i915)
 			continue;
 		}
 
+		tested++;
 		__persistence(i915, ci, count, true);
 		free(ci);
 	}
 
 	igt_require_gem(i915); /* restore default parameters */
+	igt_require(tested > 0);
 }
 
 static bool enable_hangcheck(int dir, bool state)
@@ -2733,6 +2798,7 @@ static bool enable_hangcheck(int dir, bool state)
 static void nohangcheck(int i915)
 {
 	int params = igt_params_open(i915);
+	unsigned int tested = 0;
 
 	igt_require(enable_hangcheck(params, false));
 
@@ -2746,12 +2812,14 @@ static void nohangcheck(int i915)
 			continue;
 		}
 
+		tested++;
 		__persistence(i915, ci, count, true);
 		free(ci);
 	}
 
 	enable_hangcheck(params, true);
 	close(params);
+	igt_require(tested > 0);
 }
 
 static void check_bo(int i915, uint32_t handle, unsigned int expected,
@@ -2945,6 +3013,7 @@ static void parallel_thread(int i915, unsigned int flags,
 
 static void parallel(int i915, unsigned int flags)
 {
+	unsigned int tested = 0;
 	int class;
 
 	for (class = 0; class < 32; class++) {
@@ -2960,6 +3029,7 @@ static void parallel(int i915, unsigned int flags)
 			continue;
 		}
 
+		tested++;
 		logical_sort_siblings(i915, siblings, count);
 		bb_per_execbuf = count;
 
@@ -2968,10 +3038,13 @@ static void parallel(int i915, unsigned int flags)
 
 		free(siblings);
 	}
+
+	igt_require(tested > 0);
 }
 
 static void parallel_balancer(int i915, unsigned int flags)
 {
+	unsigned int tested = 0;
 	int class;
 
 	for (class = 0; class < 32; class++) {
@@ -2988,6 +3061,7 @@ static void parallel_balancer(int i915, unsigned int flags)
 			continue;
 		}
 
+		tested++;
 		logical_sort_siblings(i915, siblings, count);
 
 		for (bb_per_execbuf = 2; count / bb_per_execbuf > 1;
@@ -3003,6 +3077,8 @@ static void parallel_balancer(int i915, unsigned int flags)
 
 		free(siblings);
 	}
+
+	igt_require(tested > 0);
 }
 
 static bool fence_busy(int fence)
@@ -3049,6 +3125,7 @@ static unsigned int get_timeslice(int i915,
  */
 static void parallel_ordering(int i915, unsigned int flags)
 {
+	unsigned int tested = 0;
 	int class;
 
 	for (class = 0; class < 32; class++) {
@@ -3071,6 +3148,7 @@ static void parallel_ordering(int i915, unsigned int flags)
 			continue;
 		}
 
+		tested++;
 		logical_sort_siblings(i915, siblings, count);
 
 		memset(&cfg, 0, sizeof(cfg));
@@ -3153,6 +3231,8 @@ static void parallel_ordering(int i915, unsigned int flags)
 		free(siblings);
 		igt_spin_free(i915, spin);
 	}
+
+	igt_require(tested > 0);
 }
 
 static bool has_persistence(int i915)
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [igt-dev] [PATCH i-g-t] tests/i915/gem_exec_balancer: Make sure some tests are run to declare success
@ 2021-11-26 15:10 ` Tvrtko Ursulin
  0 siblings, 0 replies; 4+ messages in thread
From: Tvrtko Ursulin @ 2021-11-26 15:10 UTC (permalink / raw)
  To: igt-dev; +Cc: Intel-gfx, Tvrtko Ursulin

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

I accidentally noticed a bunch of tests need two engines of the same class
to do anything meanigful but they report success even if they can't run.

Half way through making them skip instead, I realised it was possibly a
design choice to avoid flip-flopping on the CI (shards). Sigh. It is still
very unfortunate to have tests declaring success when they did not
actually do anything due machine requirements not being met. How much of a
a hostage to CI reporting limitations should the IGT suite be? Discuss.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 tests/i915/gem_exec_balancer.c | 90 ++++++++++++++++++++++++++++++++--
 1 file changed, 85 insertions(+), 5 deletions(-)

diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
index cc07a5a992c7..a13d4cdc930e 100644
--- a/tests/i915/gem_exec_balancer.c
+++ b/tests/i915/gem_exec_balancer.c
@@ -747,6 +747,8 @@ static void __bonded_chain_inv(int i915,
 
 static void bonded_chain(int i915)
 {
+	unsigned int tested = 0;
+
 	/*
 	 * Given batches A, B and B', where B and B' are a bonded pair, with
 	 * B' depending on B with a submit fence and B depending on A as
@@ -759,11 +761,14 @@ static void bonded_chain(int i915)
 
 		siblings = list_engines(i915, 1u << class, &count);
 		if (count > 1) {
+			tested++;
 			__bonded_chain(i915, siblings, count);
 			__bonded_chain_inv(i915, siblings, count);
 		}
 		free(siblings);
 	}
+
+	igt_require(tested > 0);
 }
 
 static void __bonded_sema(int i915,
@@ -849,6 +854,8 @@ static void __bonded_sema(int i915,
 
 static void bonded_semaphore(int i915)
 {
+	unsigned int tested = 0;
+
 	/*
 	 * Given batches A, B and B', where B and B' are a bonded pair, with
 	 * B' depending on B with a submit fence and B depending on A as
@@ -863,10 +870,14 @@ static void bonded_semaphore(int i915)
 		unsigned int count;
 
 		siblings = list_engines(i915, 1u << class, &count);
-		if (count > 1)
+		if (count > 1) {
+			tested++;
 			__bonded_sema(i915, siblings, count);
+		}
 		free(siblings);
 	}
+
+	igt_require(tested > 0);
 }
 
 static void __bonded_pair(int i915,
@@ -1278,6 +1289,7 @@ bonded_runner(int i915,
 		B_HOSTILE | B_FENCE,
 		B_HOSTILE | B_DELAY,
 	};
+	unsigned int tested = 0;
 	unsigned long *cycles;
 
 	/*
@@ -1295,6 +1307,7 @@ bonded_runner(int i915,
 
 		siblings = list_engines(i915, 1u << class, &count);
 		if (count > 1) {
+			tested++;
 			igt_info("Class %u, 1 thread\n", class);
 			for (int i = 0; i < ARRAY_SIZE(phases); i++) {
 				cycles[0] = 0;
@@ -1342,6 +1355,8 @@ bonded_runner(int i915,
 	}
 
 	munmap(cycles, 4096);
+
+	igt_require(tested > 0);
 }
 
 static void __bonded_nohang(int i915, const intel_ctx_t *ctx,
@@ -1414,6 +1429,7 @@ static void __bonded_nohang(int i915, const intel_ctx_t *ctx,
 
 static void bonded_nohang(int i915, unsigned int flags)
 {
+	unsigned int tested = 0;
 	const intel_ctx_t *ctx;
 
 	/*
@@ -1430,12 +1446,16 @@ static void bonded_nohang(int i915, unsigned int flags)
 		unsigned int count;
 
 		siblings = list_engines(i915, 1u << class, &count);
-		if (count > 1)
+		if (count > 1) {
+			tested++;
 			__bonded_nohang(i915, ctx, siblings, count, flags);
+		}
 		free(siblings);
 	}
 
 	intel_ctx_destroy(i915, ctx);
+
+	igt_require(tested > 0);
 }
 
 static void indices(int i915)
@@ -1741,6 +1761,8 @@ static void __sliced(int i915, uint64_t ahnd,
 
 static void sliced(int i915)
 {
+	unsigned int tested = 0;
+
 	/*
 	 * Let's investigate what happens when the virtual request is
 	 * timesliced away.
@@ -1771,6 +1793,8 @@ static void sliced(int i915)
 			continue;
 		}
 
+		tested++;
+
 		igt_fork(child, count) {
 			const intel_ctx_t *ctx;
 			uint64_t ahnd;
@@ -1793,6 +1817,8 @@ static void sliced(int i915)
 	}
 
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static void __hog(int i915, const intel_ctx_t *ctx, unsigned int count)
@@ -1830,6 +1856,8 @@ static void __hog(int i915, const intel_ctx_t *ctx, unsigned int count)
 
 static void hog(int i915)
 {
+	unsigned int tested = 0;
+
 	/*
 	 * Suppose there we are, happily using an engine, minding our
 	 * own business, when all of a sudden a very important process
@@ -1854,6 +1882,8 @@ static void hog(int i915)
 			continue;
 		}
 
+		tested++;
+
 		ctx = ctx_create_balanced(i915, ci, count);
 
 		__hog(i915, ctx, count);
@@ -1865,6 +1895,8 @@ static void hog(int i915)
 	}
 
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static uint32_t sema_create(int i915, uint64_t addr, uint32_t **x)
@@ -1969,6 +2001,7 @@ static void __waits(int i915, int timeout,
 
 static void waits(int i915, int timeout)
 {
+	unsigned int tested = 0;
 	bool nonblock;
 
 	nonblock = fcntl(i915, F_GETFL) & O_NONBLOCK;
@@ -1983,8 +2016,10 @@ static void waits(int i915, int timeout)
 		if (!ci)
 			continue;
 
-		if (count > 1)
+		if (count > 1) {
+			tested++;
 			__waits(i915, timeout, ci, count);
+		}
 
 		free(ci);
 	}
@@ -1993,6 +2028,8 @@ static void waits(int i915, int timeout)
 		fcntl(i915, F_SETFL, fcntl(i915, F_GETFL) & ~O_NONBLOCK);
 
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static void nop(int i915)
@@ -2120,6 +2157,7 @@ static void sequential(int i915)
 	struct drm_i915_gem_exec_object2 batch = {
 		.handle = batch_create(i915),
 	};
+	unsigned int tested = 0;
 
 	for (int class = 0; class < 32; class++) {
 		struct i915_engine_class_instance *ci;
@@ -2138,6 +2176,8 @@ static void sequential(int i915)
 		if (!ci || count < 2)
 			goto next;
 
+		tested++;
+
 		ctx = malloc(sizeof(*ctx) * count);
 		for (int n = 0; n < count; n++)
 			ctx[n] = ctx_create_balanced(i915, ci, count);
@@ -2173,6 +2213,8 @@ next:
 
 	gem_close(i915, batch.handle);
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static void ping(int i915, const intel_ctx_t *ctx, unsigned int engine)
@@ -2196,6 +2238,7 @@ static void semaphore(int i915)
 	uint32_t scratch;
 	igt_spin_t *spin[3];
 	uint64_t ahnd0 = get_simple_l2h_ahnd(i915, 0);
+	unsigned int tested = 0;
 
 	/*
 	 * If we are using HW semaphores to launch serialised requests
@@ -2218,6 +2261,8 @@ static void semaphore(int i915)
 		if (count < ARRAY_SIZE(block))
 			continue;
 
+		tested++;
+
 		/* Ensure that we completely occupy all engines in this group */
 		count = ARRAY_SIZE(block);
 
@@ -2249,6 +2294,8 @@ static void semaphore(int i915)
 	put_ahnd(ahnd0);
 
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static void set_unbannable(int i915, uint32_t ctx)
@@ -2266,6 +2313,7 @@ static void hangme(int i915)
 	struct drm_i915_gem_exec_object2 batch = {
 		.handle = batch_create(i915),
 	};
+	unsigned int tested = 0;
 
 	/*
 	 * Fill the available engines with hanging virtual engines and verify
@@ -2291,6 +2339,8 @@ static void hangme(int i915)
 			continue;
 		}
 
+		tested++;
+
 		client = malloc(sizeof(*client) * count);
 		igt_assert(client);
 
@@ -2368,6 +2418,8 @@ static void hangme(int i915)
 
 	gem_close(i915, batch.handle);
 	gem_quiescent_gpu(i915);
+
+	igt_require(tested > 0);
 }
 
 static void smoketest(int i915, int timeout)
@@ -2402,8 +2454,8 @@ static void smoketest(int i915, int timeout)
 
 		free(ci);
 	}
-	if (!nctx) /* suppress the fluctuating status of shard-icl */
-		return;
+
+	igt_require(nctx);
 
 	igt_debug("Created %d virtual engines (one per context)\n", nctx);
 	ctx = realloc(ctx, sizeof(*ctx) * nctx * 4);
@@ -2602,6 +2654,8 @@ static void __fairslice(int i915,
 
 static void fairslice(int i915)
 {
+	unsigned int tested = 0;
+
 	/* Relative CS mmio */
 	igt_require(intel_gen(intel_get_drm_devid(i915)) >= 11);
 
@@ -2615,9 +2669,12 @@ static void fairslice(int i915)
 			continue;
 		}
 
+		tested++;
 		__fairslice(i915, ci, count, 2);
 		free(ci);
 	}
+
+	igt_require(tested > 0);
 }
 
 static int wait_for_status(int fence, int timeout)
@@ -2662,6 +2719,8 @@ static void __persistence(int i915,
 
 static void persistence(int i915)
 {
+	unsigned int tested = 0;
+
 	for (int class = 0; class < 32; class++) {
 		struct i915_engine_class_instance *ci;
 		unsigned int count = 0;
@@ -2672,9 +2731,12 @@ static void persistence(int i915)
 			continue;
 		}
 
+		tested++;
 		__persistence(i915, ci, count, false);
 		free(ci);
 	}
+
+	igt_require(tested > 0);
 }
 
 static bool set_heartbeat(int i915, const char *name, unsigned int value)
@@ -2698,6 +2760,7 @@ static bool set_heartbeat(int i915, const char *name, unsigned int value)
 static void noheartbeat(int i915)
 {
 	const struct intel_execution_engine2 *e;
+	unsigned int tested = 0;
 
 	/*
 	 * Check that non-persistent contexts are also cleaned up if we
@@ -2718,11 +2781,13 @@ static void noheartbeat(int i915)
 			continue;
 		}
 
+		tested++;
 		__persistence(i915, ci, count, true);
 		free(ci);
 	}
 
 	igt_require_gem(i915); /* restore default parameters */
+	igt_require(tested > 0);
 }
 
 static bool enable_hangcheck(int dir, bool state)
@@ -2733,6 +2798,7 @@ static bool enable_hangcheck(int dir, bool state)
 static void nohangcheck(int i915)
 {
 	int params = igt_params_open(i915);
+	unsigned int tested = 0;
 
 	igt_require(enable_hangcheck(params, false));
 
@@ -2746,12 +2812,14 @@ static void nohangcheck(int i915)
 			continue;
 		}
 
+		tested++;
 		__persistence(i915, ci, count, true);
 		free(ci);
 	}
 
 	enable_hangcheck(params, true);
 	close(params);
+	igt_require(tested > 0);
 }
 
 static void check_bo(int i915, uint32_t handle, unsigned int expected,
@@ -2945,6 +3013,7 @@ static void parallel_thread(int i915, unsigned int flags,
 
 static void parallel(int i915, unsigned int flags)
 {
+	unsigned int tested = 0;
 	int class;
 
 	for (class = 0; class < 32; class++) {
@@ -2960,6 +3029,7 @@ static void parallel(int i915, unsigned int flags)
 			continue;
 		}
 
+		tested++;
 		logical_sort_siblings(i915, siblings, count);
 		bb_per_execbuf = count;
 
@@ -2968,10 +3038,13 @@ static void parallel(int i915, unsigned int flags)
 
 		free(siblings);
 	}
+
+	igt_require(tested > 0);
 }
 
 static void parallel_balancer(int i915, unsigned int flags)
 {
+	unsigned int tested = 0;
 	int class;
 
 	for (class = 0; class < 32; class++) {
@@ -2988,6 +3061,7 @@ static void parallel_balancer(int i915, unsigned int flags)
 			continue;
 		}
 
+		tested++;
 		logical_sort_siblings(i915, siblings, count);
 
 		for (bb_per_execbuf = 2; count / bb_per_execbuf > 1;
@@ -3003,6 +3077,8 @@ static void parallel_balancer(int i915, unsigned int flags)
 
 		free(siblings);
 	}
+
+	igt_require(tested > 0);
 }
 
 static bool fence_busy(int fence)
@@ -3049,6 +3125,7 @@ static unsigned int get_timeslice(int i915,
  */
 static void parallel_ordering(int i915, unsigned int flags)
 {
+	unsigned int tested = 0;
 	int class;
 
 	for (class = 0; class < 32; class++) {
@@ -3071,6 +3148,7 @@ static void parallel_ordering(int i915, unsigned int flags)
 			continue;
 		}
 
+		tested++;
 		logical_sort_siblings(i915, siblings, count);
 
 		memset(&cfg, 0, sizeof(cfg));
@@ -3153,6 +3231,8 @@ static void parallel_ordering(int i915, unsigned int flags)
 		free(siblings);
 		igt_spin_free(i915, spin);
 	}
+
+	igt_require(tested > 0);
 }
 
 static bool has_persistence(int i915)
-- 
2.32.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [igt-dev] ✗ Fi.CI.BAT: failure for tests/i915/gem_exec_balancer: Make sure some tests are run to declare success
  2021-11-26 15:10 ` [igt-dev] " Tvrtko Ursulin
  (?)
@ 2021-11-26 17:09 ` Patchwork
  -1 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2021-11-26 17:09 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 6008 bytes --]

== Series Details ==

Series: tests/i915/gem_exec_balancer: Make sure some tests are run to declare success
URL   : https://patchwork.freedesktop.org/series/97330/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_10931 -> IGTPW_6444
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_6444 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_6444, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/index.html

Participating hosts (33 -> 33)
------------------------------

  Additional (1): fi-kbl-soraka 
  Missing    (1): fi-bdw-samus 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_6444:

### IGT changes ###

#### Possible regressions ####

  * igt@fbdev@info:
    - fi-kbl-soraka:      NOTRUN -> [INCOMPLETE][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-kbl-soraka/igt@fbdev@info.html

  
Known issues
------------

  Here are the changes found in IGTPW_6444 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@amdgpu/amd_basic@cs-gfx:
    - fi-rkl-guc:         NOTRUN -> [SKIP][2] ([fdo#109315]) +17 similar issues
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-rkl-guc/igt@amdgpu/amd_basic@cs-gfx.html

  * igt@gem_exec_fence@basic-busy@bcs0:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][3] ([fdo#109271]) +8 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-kbl-soraka/igt@gem_exec_fence@basic-busy@bcs0.html

  * igt@gem_exec_suspend@basic-s3:
    - fi-skl-6600u:       [PASS][4] -> [INCOMPLETE][5] ([i915#4547])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10931/fi-skl-6600u/igt@gem_exec_suspend@basic-s3.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-skl-6600u/igt@gem_exec_suspend@basic-s3.html

  * igt@gem_huc_copy@huc-copy:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][6] ([fdo#109271] / [i915#2190])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-kbl-soraka/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][7] ([fdo#109271] / [i915#4613]) +3 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-kbl-soraka/igt@gem_lmem_swapping@basic.html

  * igt@i915_selftest@live@gt_pm:
    - fi-kbl-soraka:      NOTRUN -> [DMESG-FAIL][8] ([i915#1886] / [i915#2291])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-kbl-soraka/igt@i915_selftest@live@gt_pm.html

  * igt@i915_selftest@live@hangcheck:
    - fi-snb-2600:        [PASS][9] -> [INCOMPLETE][10] ([i915#3921])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10931/fi-snb-2600/igt@i915_selftest@live@hangcheck.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-snb-2600/igt@i915_selftest@live@hangcheck.html

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][11] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-kbl-soraka/igt@kms_chamelium@common-hpd-after-suspend.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][12] ([fdo#109271] / [i915#533])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-kbl-soraka/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d.html

  * igt@runner@aborted:
    - fi-skl-6600u:       NOTRUN -> [FAIL][13] ([i915#3363] / [i915#4312])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-skl-6600u/igt@runner@aborted.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@gt_engines:
    - fi-rkl-guc:         [INCOMPLETE][14] ([i915#4432]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10931/fi-rkl-guc/igt@i915_selftest@live@gt_engines.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-rkl-guc/igt@i915_selftest@live@gt_engines.html

  * igt@kms_frontbuffer_tracking@basic:
    - fi-cml-u2:          [DMESG-WARN][16] ([i915#4269]) -> [PASS][17]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10931/fi-cml-u2/igt@kms_frontbuffer_tracking@basic.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/fi-cml-u2/igt@kms_frontbuffer_tracking@basic.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1886]: https://gitlab.freedesktop.org/drm/intel/issues/1886
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2291]: https://gitlab.freedesktop.org/drm/intel/issues/2291
  [i915#3363]: https://gitlab.freedesktop.org/drm/intel/issues/3363
  [i915#3921]: https://gitlab.freedesktop.org/drm/intel/issues/3921
  [i915#4269]: https://gitlab.freedesktop.org/drm/intel/issues/4269
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4432]: https://gitlab.freedesktop.org/drm/intel/issues/4432
  [i915#4547]: https://gitlab.freedesktop.org/drm/intel/issues/4547
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_6293 -> IGTPW_6444

  CI-20190529: 20190529
  CI_DRM_10931: 8f98184bd66880e87ddf8bdf3110b970b46d42e0 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_6444: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/index.html
  IGT_6293: bf11f87c27ad1cec3e60bd31c23080d19aa093f3 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6444/index.html

[-- Attachment #2: Type: text/html, Size: 7197 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [igt-dev] ✗ GitLab.Pipeline: warning for tests/i915/gem_exec_balancer: Make sure some tests are run to declare success
  2021-11-26 15:10 ` [igt-dev] " Tvrtko Ursulin
  (?)
  (?)
@ 2021-11-26 17:51 ` Patchwork
  -1 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2021-11-26 17:51 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: igt-dev

== Series Details ==

Series: tests/i915/gem_exec_balancer: Make sure some tests are run to declare success
URL   : https://patchwork.freedesktop.org/series/97330/
State : warning

== Summary ==

Pipeline status: FAILED.

see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/454112 for the overview.

containers:igt has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/16186557):
  STEP 2: COPY installdir/opt/igt /opt/igt
  d37c0d278cdcb7728aa07cc28b8bb4a7ec0d47397650ae81b45abc6dffe1809c
  STEP 3: COPY .gitlab-ci/docker-help.sh /usr/local/bin/docker-help.sh
  473146768568573913e6ef5a65bdbaac8d4b56d695864fdeb5c74824b3b5c1d7
  STEP 4: ENV PATH="/opt/igt/bin:${PATH}"
  a195dbdacb5b901a27b95f2acaadfba17b31a89393baf7b5716a9f6c6f97cc41
  STEP 5: ENV LD_LIBRARY_PATH="/opt/igt/lib:/opt/igt/lib64:${LD_LIBRARY_PATH}"
  e0fd36ad337d6a8a84911c778fc2796ee899119c62031daedf8757dedac81a2b
  STEP 6: ENV IGT_TEST_ROOT="/opt/igt/libexec/igt-gpu-tools"
  c1374ed2f4c537384ee15d9500f8f258d5dcbe0dc60b7490212978a2c27c42a4
  STEP 7: CMD docker-help.sh
  STEP 8: COMMIT registry.freedesktop.org/gfx-ci/igt-ci-tags/igt:commit-ea00870674675c88018e1e1a616993e5b19d88ee
  d856fcc61a217e3b48e241bb8f47c0fac7d057746335d35a5e40c016d3658d6c
  Getting image source signatures
  Copying blob sha256:d8a92e818d7367908d30060060d77dc7c0bb974eb569fc6e47fe82becc013f34
  Copying blob sha256:3504a8337d3b7eaabfd338d6a971d02441d28ebef8bd81f730d87f936ed58079
  Copying blob sha256:de714a99277aa41f69f6861148802331a164e5af8459c0c0dccc15e4aad08fca
  section_end:1637948949:step_script
  ERROR: Job failed: execution took longer than 1h0m0s seconds

== Logs ==

For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/454112

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-11-26 17:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-26 15:10 [Intel-gfx] [PATCH i-g-t] tests/i915/gem_exec_balancer: Make sure some tests are run to declare success Tvrtko Ursulin
2021-11-26 15:10 ` [igt-dev] " Tvrtko Ursulin
2021-11-26 17:09 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork
2021-11-26 17:51 ` [igt-dev] ✗ GitLab.Pipeline: warning " Patchwork

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.