All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH] [PATCH i-g-t][V8]tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available
@ 2020-04-23 16:55 Arjun Melkaveri
  2020-04-23 17:24 ` [igt-dev] ✗ GitLab.Pipeline: warning for tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available (rev9) Patchwork
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Arjun Melkaveri @ 2020-04-23 16:55 UTC (permalink / raw)
  To: arjun.melkaveri, igt-dev

Replaced the legacy for_each_engine* defines with the ones
implemented in the gem_engine_topology library.

Used  gem_context_clone_with_engines
to make sure that engine index was potentially created
based on a  default context with engine map configured.

V2:
Added Legacy engine coverage for sync_ring and sync_all.

V3:
Added back ALL_ENGINES. Corrected Test cases that used
gem_reopen_driver in fork. Which was not recommended.

V4:
Removed gem_require_ring and gem_can_store_dword

V5:
Divided tests into static for ALL_Engine test cases
and dynamic for multiple engine .

V6:
Rearranged test order to execute legacy test cases first

V7:
Initializing engine and engine name with
maximum supported engines value.

V8:
Replaced  intel_execution_engine2 with intel_engine_data in subtests
removed local array for Name and engines .
removed do_test function and code clean up

Cc: Dec Katarzyna <katarzyna.dec@intel.com>
Cc: Ursulin Tvrtko <tvrtko.ursulin@intel.com>
Signed-off-by: sai gowtham <sai.gowtham.ch@intel.com>
Signed-off-by: Arjun Melkaveri <arjun.melkaveri@intel.com>
---
 tests/i915/gem_sync.c | 360 +++++++++++++++++++++---------------------
 1 file changed, 183 insertions(+), 177 deletions(-)

diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c
index 2ef55ecc..e68e095e 100644
--- a/tests/i915/gem_sync.c
+++ b/tests/i915/gem_sync.c
@@ -24,6 +24,9 @@
 #include <time.h>
 #include <pthread.h>
 
+#include "igt_debugfs.h"
+#include "igt_dummyload.h"
+#include "igt_gt.h"
 #include "igt.h"
 #include "igt_sysfs.h"
 
@@ -37,6 +40,7 @@
 #define MIN_PRIO LOCAL_I915_CONTEXT_MIN_USER_PRIORITY
 
 #define ENGINE_MASK  (I915_EXEC_RING_MASK | LOCAL_I915_EXEC_BSD_MASK)
+#define EXECBUF_MAX_ENGINES (I915_EXEC_RING_MASK + 1)
 
 IGT_TEST_DESCRIPTION("Basic check of ring<->ring write synchronisation.");
 
@@ -81,23 +85,16 @@ out:
 static void
 sync_ring(int fd, unsigned ring, int num_children, int timeout)
 {
-	unsigned engines[16];
-	const char *names[16];
+	struct intel_engine_data Iengines = { };
 	int num_engines = 0;
 
 	if (ring == ALL_ENGINES) {
-		for_each_physical_engine(e, fd) {
-			names[num_engines] = e->name;
-			engines[num_engines++] = eb_ring(e);
-			if (num_engines == ARRAY_SIZE(engines))
-				break;
-		}
-
-		num_children *= num_engines;
+		Iengines = intel_init_engine_list(fd, 0);
+		num_children *= Iengines.nengines;
+		num_engines = ARRAY_SIZE(Iengines.engines);
 	} else {
 		gem_require_ring(fd, ring);
-		names[num_engines] = NULL;
-		engines[num_engines++] = ring;
+		Iengines.engines[num_engines++].flags = ring;
 	}
 
 	intel_detect_and_clear_missed_interrupts(fd);
@@ -115,7 +112,7 @@ sync_ring(int fd, unsigned ring, int num_children, int timeout)
 		memset(&execbuf, 0, sizeof(execbuf));
 		execbuf.buffers_ptr = to_user_pointer(&object);
 		execbuf.buffer_count = 1;
-		execbuf.flags = engines[child % num_engines];
+		execbuf.flags = Iengines.engines[child % num_engines].flags;
 		gem_execbuf(fd, &execbuf);
 		gem_sync(fd, object.handle);
 
@@ -128,8 +125,8 @@ sync_ring(int fd, unsigned ring, int num_children, int timeout)
 			} while (++cycles & 1023);
 		} while ((elapsed = gettime() - start) < timeout);
 		igt_info("%s%sompleted %ld cycles: %.3f us\n",
-			 names[child % num_engines] ?: "",
-			 names[child % num_engines] ? " c" : "C",
+			 Iengines.engines[child % num_engines].name ?: "",
+			 Iengines.engines[child % num_engines].name ? " c" : "C",
 			 cycles, elapsed*1e6/cycles);
 
 		gem_close(fd, object.handle);
@@ -139,7 +136,7 @@ sync_ring(int fd, unsigned ring, int num_children, int timeout)
 }
 
 static void
-idle_ring(int fd, unsigned ring, int timeout)
+idle_ring(int fd, unsigned int ring, int num_children, int timeout)
 {
 	const uint32_t bbe = MI_BATCH_BUFFER_END;
 	struct drm_i915_gem_exec_object2 object;
@@ -180,26 +177,22 @@ idle_ring(int fd, unsigned ring, int timeout)
 static void
 wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
 {
-	unsigned engines[16];
-	const char *names[16];
+	struct intel_engine_data Iengines = { };
 	int num_engines = 0;
 
 	if (ring == ALL_ENGINES) {
-		for_each_physical_engine(e, fd) {
-			if (!gem_can_store_dword(fd, eb_ring(e)))
+		Iengines = intel_init_engine_list(fd, 0);
+		for (unsigned int n = 0; n < Iengines.nengines; n++) {
+			if (!gem_class_can_store_dword(fd, Iengines.engines->class))
 				continue;
 
-			names[num_engines] = e->name;
-			engines[num_engines++] = eb_ring(e);
-			if (num_engines == ARRAY_SIZE(engines))
-				break;
+			num_engines = Iengines.nengines;
 		}
 		igt_require(num_engines);
 	} else {
 		gem_require_ring(fd, ring);
 		igt_require(gem_can_store_dword(fd, ring));
-		names[num_engines] = NULL;
-		engines[num_engines++] = ring;
+		Iengines.engines[num_engines++].flags = ring;
 	}
 
 	intel_detect_and_clear_missed_interrupts(fd);
@@ -218,7 +211,7 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
 		memset(&execbuf, 0, sizeof(execbuf));
 		execbuf.buffers_ptr = to_user_pointer(&object);
 		execbuf.buffer_count = 1;
-		execbuf.flags = engines[child % num_engines];
+		execbuf.flags = Iengines.engines[child % num_engines].flags;
 
 		spin = __igt_spin_new(fd,
 				      .engine = execbuf.flags,
@@ -252,8 +245,8 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
 			baseline = elapsed / cycles;
 		}
 		igt_info("%s%saseline %ld cycles: %.3f us\n",
-			 names[child % num_engines] ?: "",
-			 names[child % num_engines] ? " b" : "B",
+			 Iengines.engines[child % num_engines].name ?: "",
+			 Iengines.engines[child % num_engines].name ? " b" : "B",
 			 cycles, elapsed*1e6/cycles);
 
 		end = gettime() + timeout;
@@ -279,8 +272,8 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
 		elapsed -= cycles * baseline;
 
 		igt_info("%s%sompleted %ld cycles: %.3f + %.3f us\n",
-			 names[child % num_engines] ?: "",
-			 names[child % num_engines] ? " c" : "C",
+			 Iengines.engines[child % num_engines].name ?: "",
+			 Iengines.engines[child % num_engines].name ? " c" : "C",
 			 cycles, 1e6*baseline, elapsed*1e6/cycles);
 
 		igt_spin_free(fd, spin);
@@ -290,28 +283,25 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
 	igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
 }
 
-static void active_ring(int fd, unsigned ring, int timeout)
+static void active_ring(int fd, unsigned int ring,
+			int num_children, int timeout)
 {
-	unsigned engines[16];
-	const char *names[16];
+	struct intel_engine_data Iengines = { };
 	int num_engines = 0;
 
 	if (ring == ALL_ENGINES) {
-		for_each_physical_engine(e, fd) {
-			if (!gem_can_store_dword(fd, eb_ring(e)))
+		Iengines = intel_init_engine_list(fd, 0);
+		for (unsigned int n = 0; n < Iengines.nengines; n++) {
+			if (!gem_class_can_store_dword(fd, Iengines.engines->class))
 				continue;
 
-			names[num_engines] = e->name;
-			engines[num_engines++] = eb_ring(e);
-			if (num_engines == ARRAY_SIZE(engines))
-				break;
+			num_engines = Iengines.nengines;
 		}
 		igt_require(num_engines);
 	} else {
 		gem_require_ring(fd, ring);
 		igt_require(gem_can_store_dword(fd, ring));
-		names[num_engines] = NULL;
-		engines[num_engines++] = ring;
+		Iengines.engines[num_engines++].flags = ring;
 	}
 
 	intel_detect_and_clear_missed_interrupts(fd);
@@ -321,11 +311,11 @@ static void active_ring(int fd, unsigned ring, int timeout)
 		igt_spin_t *spin[2];
 
 		spin[0] = __igt_spin_new(fd,
-					 .engine = ring,
+					 .engine = Iengines.engines[child % num_engines].flags,
 					 .flags = IGT_SPIN_FAST);
 
 		spin[1] = __igt_spin_new(fd,
-					 .engine = ring,
+					 .engine = Iengines.engines[child % num_engines].flags,
 					 .flags = IGT_SPIN_FAST);
 
 		start = gettime();
@@ -348,8 +338,8 @@ static void active_ring(int fd, unsigned ring, int timeout)
 		igt_spin_free(fd, spin[0]);
 
 		igt_info("%s%sompleted %ld cycles: %.3f us\n",
-			 names[child % num_engines] ?: "",
-			 names[child % num_engines] ? " c" : "C",
+			 Iengines.engines[child % num_engines].name ?: "",
+			 Iengines.engines[child % num_engines].name ? " c" : "C",
 			 cycles, (elapsed - start)*1e6/cycles);
 	}
 	igt_waitchildren_timeout(2*timeout, NULL);
@@ -359,26 +349,22 @@ static void active_ring(int fd, unsigned ring, int timeout)
 static void
 active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
 {
-	unsigned engines[16];
-	const char *names[16];
+	struct intel_engine_data Iengines = { };
 	int num_engines = 0;
 
 	if (ring == ALL_ENGINES) {
-		for_each_physical_engine(e, fd) {
-			if (!gem_can_store_dword(fd, eb_ring(e)))
+		Iengines = intel_init_engine_list(fd, 0);
+		for (unsigned int n = 0; n < Iengines.nengines; n++) {
+			if (!gem_class_can_store_dword(fd, Iengines.engines->class))
 				continue;
 
-			names[num_engines] = e->name;
-			engines[num_engines++] = eb_ring(e);
-			if (num_engines == ARRAY_SIZE(engines))
-				break;
+			num_engines = Iengines.nengines;
 		}
 		igt_require(num_engines);
 	} else {
 		gem_require_ring(fd, ring);
 		igt_require(gem_can_store_dword(fd, ring));
-		names[num_engines] = NULL;
-		engines[num_engines++] = ring;
+		Iengines.engines[num_engines++].flags = ring;
 	}
 
 	intel_detect_and_clear_missed_interrupts(fd);
@@ -397,7 +383,7 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
 		memset(&execbuf, 0, sizeof(execbuf));
 		execbuf.buffers_ptr = to_user_pointer(&object);
 		execbuf.buffer_count = 1;
-		execbuf.flags = engines[child % num_engines];
+		execbuf.flags = Iengines.engines[child % num_engines].flags;
 
 		spin[0] = __igt_spin_new(fd,
 					 .engine = execbuf.flags,
@@ -444,8 +430,8 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
 			baseline = elapsed / cycles;
 		}
 		igt_info("%s%saseline %ld cycles: %.3f us\n",
-			 names[child % num_engines] ?: "",
-			 names[child % num_engines] ? " b" : "B",
+			 Iengines.engines[child % num_engines].name ?: "",
+			 Iengines.engines[child % num_engines].name ? " b" : "B",
 			 cycles, elapsed*1e6/cycles);
 
 		igt_spin_reset(spin[0]);
@@ -478,8 +464,8 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
 		elapsed -= cycles * baseline;
 
 		igt_info("%s%sompleted %ld cycles: %.3f + %.3f us\n",
-			 names[child % num_engines] ?: "",
-			 names[child % num_engines] ? " c" : "C",
+			 Iengines.engines[child % num_engines].name ?: "",
+			 Iengines.engines[child % num_engines].name ? " c" : "C",
 			 cycles, 1e6*baseline, elapsed*1e6/cycles);
 
 		igt_spin_free(fd, spin[1]);
@@ -493,28 +479,23 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
 static void
 store_ring(int fd, unsigned ring, int num_children, int timeout)
 {
+	struct intel_engine_data Iengines = { };
 	const int gen = intel_gen(intel_get_drm_devid(fd));
-	unsigned engines[16];
-	const char *names[16];
 	int num_engines = 0;
 
 	if (ring == ALL_ENGINES) {
-		for_each_physical_engine(e, fd) {
-			if (!gem_can_store_dword(fd, eb_ring(e)))
+		Iengines = intel_init_engine_list(fd, 0);
+		for (unsigned int n = 0; n < Iengines.nengines; n++) {
+			if (!gem_class_can_store_dword(fd, Iengines.engines->class))
 				continue;
 
-			names[num_engines] = e->name;
-			engines[num_engines++] = eb_ring(e);
-			if (num_engines == ARRAY_SIZE(engines))
-				break;
+			num_engines = Iengines.nengines;
 		}
-
-		num_children *= num_engines;
+		 num_children *= num_engines;
 	} else {
 		gem_require_ring(fd, ring);
 		igt_require(gem_can_store_dword(fd, ring));
-		names[num_engines] = NULL;
-		engines[num_engines++] = ring;
+		Iengines.engines[num_engines++].flags = ring;
 	}
 
 	intel_detect_and_clear_missed_interrupts(fd);
@@ -529,7 +510,7 @@ store_ring(int fd, unsigned ring, int num_children, int timeout)
 
 		memset(&execbuf, 0, sizeof(execbuf));
 		execbuf.buffers_ptr = to_user_pointer(object);
-		execbuf.flags = engines[child % num_engines];
+		execbuf.flags = Iengines.engines[child % num_engines].flags;
 		execbuf.flags |= LOCAL_I915_EXEC_NO_RELOC;
 		execbuf.flags |= LOCAL_I915_EXEC_HANDLE_LUT;
 		if (gen < 6)
@@ -594,8 +575,8 @@ store_ring(int fd, unsigned ring, int num_children, int timeout)
 			} while (++cycles & 1023);
 		} while ((elapsed = gettime() - start) < timeout);
 		igt_info("%s%sompleted %ld cycles: %.3f us\n",
-			 names[child % num_engines] ?: "",
-			 names[child % num_engines] ? " c" : "C",
+			 Iengines.engines[child % num_engines].name ?: "",
+			 Iengines.engines[child % num_engines].name ? " c" : "C",
 			 cycles, elapsed*1e6/cycles);
 
 		gem_close(fd, object[1].handle);
@@ -608,30 +589,25 @@ store_ring(int fd, unsigned ring, int num_children, int timeout)
 static void
 switch_ring(int fd, unsigned ring, int num_children, int timeout)
 {
+	struct intel_engine_data Iengines = { };
 	const int gen = intel_gen(intel_get_drm_devid(fd));
-	unsigned engines[16];
-	const char *names[16];
 	int num_engines = 0;
 
 	gem_require_contexts(fd);
 
 	if (ring == ALL_ENGINES) {
-		for_each_physical_engine(e, fd) {
-			if (!gem_can_store_dword(fd, eb_ring(e)))
+		Iengines = intel_init_engine_list(fd, 0);
+		for (unsigned int n = 0; n < Iengines.nengines; n++) {
+			if (!gem_class_can_store_dword(fd, Iengines.engines->class))
 				continue;
 
-			names[num_engines] = e->name;
-			engines[num_engines++] = eb_ring(e);
-			if (num_engines == ARRAY_SIZE(engines))
-				break;
+			num_engines = Iengines.nengines;
 		}
-
 		num_children *= num_engines;
 	} else {
 		gem_require_ring(fd, ring);
 		igt_require(gem_can_store_dword(fd, ring));
-		names[num_engines] = NULL;
-		engines[num_engines++] = ring;
+		Iengines.engines[num_engines++].flags = ring;
 	}
 
 	intel_detect_and_clear_missed_interrupts(fd);
@@ -652,7 +628,7 @@ switch_ring(int fd, unsigned ring, int num_children, int timeout)
 
 			memset(&c->execbuf, 0, sizeof(c->execbuf));
 			c->execbuf.buffers_ptr = to_user_pointer(c->object);
-			c->execbuf.flags = engines[child % num_engines];
+			c->execbuf.flags = Iengines.engines[child % num_engines].flags;
 			c->execbuf.flags |= LOCAL_I915_EXEC_NO_RELOC;
 			c->execbuf.flags |= LOCAL_I915_EXEC_HANDLE_LUT;
 			if (gen < 6)
@@ -747,8 +723,8 @@ switch_ring(int fd, unsigned ring, int num_children, int timeout)
 		elapsed /= cycles;
 
 		igt_info("%s%sompleted %ld cycles: %.3f us, baseline %.3f us\n",
-			 names[child % num_engines] ?: "",
-			 names[child % num_engines] ? " c" : "C",
+			 Iengines.engines[child % num_engines].name ?: "",
+			 Iengines.engines[child % num_engines].name ? " c" : "C",
 			 cycles, elapsed*1e6, baseline*1e6);
 
 		for (int i = 0; i < ARRAY_SIZE(contexts); i++) {
@@ -931,10 +907,11 @@ __store_many(int fd, unsigned ring, int timeout, unsigned long *cycles)
 }
 
 static void
-store_many(int fd, unsigned ring, int timeout)
+store_many(int fd, unsigned int ring, int num_children, int timeout)
 {
+	const struct intel_execution_engine2 *e2;
 	unsigned long *shared;
-	const char *names[16];
+	const char *names[EXECBUF_MAX_ENGINES];
 	int n = 0;
 
 	shared = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
@@ -943,21 +920,20 @@ store_many(int fd, unsigned ring, int timeout)
 	intel_detect_and_clear_missed_interrupts(fd);
 
 	if (ring == ALL_ENGINES) {
-		for_each_physical_engine(e, fd) {
-			if (!gem_can_store_dword(fd, eb_ring(e)))
+		__for_each_physical_engine(fd, e2) {
+			if (!gem_class_can_store_dword(fd, e2->class))
 				continue;
 
 			igt_fork(child, 1)
 				__store_many(fd,
-					     eb_ring(e),
+					     e2->flags,
 					     timeout,
 					     &shared[n]);
 
-			names[n++] = e->name;
+			names[n++] = strdup(e2->name);
 		}
 		igt_waitchildren();
 	} else {
-		gem_require_ring(fd, ring);
 		igt_require(gem_can_store_dword(fd, ring));
 		__store_many(fd, ring, timeout, &shared[n]);
 		names[n++] = NULL;
@@ -965,7 +941,7 @@ store_many(int fd, unsigned ring, int timeout)
 
 	for (int i = 0; i < n; i++) {
 		igt_info("%s%sompleted %ld cycles\n",
-			 names[i] ?: "", names[i] ? " c" : "C", shared[i]);
+			  names[i] ?: "", names[i] ? " c" : "C", shared[i]);
 	}
 	igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
 	munmap(shared, 4096);
@@ -974,14 +950,14 @@ store_many(int fd, unsigned ring, int timeout)
 static void
 sync_all(int fd, int num_children, int timeout)
 {
-	unsigned engines[16];
+	struct intel_engine_data Iengines = { };
+	unsigned int engines[EXECBUF_MAX_ENGINES];
 	int num_engines = 0;
 
-	for_each_physical_engine(e, fd) {
-		engines[num_engines++] = eb_ring(e);
-		if (num_engines == ARRAY_SIZE(engines))
-			break;
-	}
+	Iengines = intel_init_engine_list(fd, 0);
+	for (unsigned int n = 0; n < Iengines.nengines; n++)
+		engines[num_engines++] = Iengines.engines[n].flags;
+
 	igt_require(num_engines);
 
 	intel_detect_and_clear_missed_interrupts(fd);
@@ -1025,17 +1001,18 @@ sync_all(int fd, int num_children, int timeout)
 static void
 store_all(int fd, int num_children, int timeout)
 {
+	struct intel_engine_data Iengines = { };
 	const int gen = intel_gen(intel_get_drm_devid(fd));
-	unsigned engines[16];
+	unsigned int engines[EXECBUF_MAX_ENGINES];
 	int num_engines = 0;
 
-	for_each_physical_engine(e, fd) {
-		if (!gem_can_store_dword(fd, eb_ring(e)))
+	Iengines = intel_init_engine_list(fd, 0);
+
+	for (unsigned int n = 0; n < Iengines.nengines; n++) {
+		if (!gem_class_can_store_dword(fd, Iengines.engines->class))
 			continue;
 
-		engines[num_engines++] = eb_ring(e);
-		if (num_engines == ARRAY_SIZE(engines))
-			break;
+		engines[num_engines++] = Iengines.engines[n].flags;
 	}
 	igt_require(num_engines);
 
@@ -1132,24 +1109,17 @@ store_all(int fd, int num_children, int timeout)
 static void
 preempt(int fd, unsigned ring, int num_children, int timeout)
 {
-	unsigned engines[16];
-	const char *names[16];
+	struct intel_engine_data Iengines = { };
 	int num_engines = 0;
 	uint32_t ctx[2];
 
 	if (ring == ALL_ENGINES) {
-		for_each_physical_engine(e, fd) {
-			names[num_engines] = e->name;
-			engines[num_engines++] = eb_ring(e);
-			if (num_engines == ARRAY_SIZE(engines))
-				break;
-		}
-
+		Iengines = intel_init_engine_list(fd, 0);
+		num_engines = Iengines.nengines;
 		num_children *= num_engines;
 	} else {
 		gem_require_ring(fd, ring);
-		names[num_engines] = NULL;
-		engines[num_engines++] = ring;
+		Iengines.engines[num_engines++].flags = ring;
 	}
 
 	ctx[0] = gem_context_create(fd);
@@ -1173,7 +1143,7 @@ preempt(int fd, unsigned ring, int num_children, int timeout)
 		memset(&execbuf, 0, sizeof(execbuf));
 		execbuf.buffers_ptr = to_user_pointer(&object);
 		execbuf.buffer_count = 1;
-		execbuf.flags = engines[child % num_engines];
+		execbuf.flags = Iengines.engines[child % num_engines].flags;
 		execbuf.rsvd1 = ctx[1];
 		gem_execbuf(fd, &execbuf);
 		gem_sync(fd, object.handle);
@@ -1194,8 +1164,8 @@ preempt(int fd, unsigned ring, int num_children, int timeout)
 			igt_spin_free(fd, spin);
 		} while ((elapsed = gettime() - start) < timeout);
 		igt_info("%s%sompleted %ld cycles: %.3f us\n",
-			 names[child % num_engines] ?: "",
-			 names[child % num_engines] ? " c" : "C",
+			 Iengines.engines[child % num_children].name ?: "",
+			 Iengines.engines[child % num_children].name ?  " c" : "C",
 			 cycles, elapsed*1e6/cycles);
 
 		gem_close(fd, object.handle);
@@ -1209,10 +1179,45 @@ preempt(int fd, unsigned ring, int num_children, int timeout)
 
 igt_main
 {
-	const struct intel_execution_engine *e;
 	const int ncpus = sysconf(_SC_NPROCESSORS_ONLN);
 	int fd = -1;
 
+	struct {
+		const char *name;
+		void (*func)(int fd, unsigned int engine,
+			     int num_children, int timeout);
+		int num_children;
+		int timeout;
+	} *test, allengine[] = {
+		{ "basic-each", sync_ring, 1, 2},
+		{ "basic-store-each", store_ring, 1, 2},
+		{ "basic-many-each", store_many, 0, 2},
+		{ "switch-each", switch_ring, 1, 20},
+		{ "forked-switch-each", switch_ring, ncpus, 20},
+		{ "forked-each", sync_ring, ncpus, 20},
+		{ "forked-store-each", store_ring, ncpus, 20},
+		{ "active-each", active_ring, 0, 20},
+		{ "wakeup-each", wakeup_ring, 20, 1},
+		{ "active-wakeup-each", active_wakeup_ring, 20, 1},
+		{ "double-wakeup-each", wakeup_ring, 20, 2},
+		{ NULL, NULL },
+	}, tests[] = {
+		{ "default", sync_ring, 1, 20},
+		{ "idle", idle_ring, 0, 20},
+		{ "active", active_ring, 0, 20},
+		{ "wakeup", wakeup_ring, 20, 1},
+		{ "active-wakeup", active_wakeup_ring, 20, 1},
+		{ "double-wakeup", wakeup_ring, 20, 2},
+		{ "store", store_ring, 1, 20},
+		{ "switch", switch_ring, 1, 20},
+		{ "forked-switch", switch_ring, ncpus, 20},
+		{ "many", store_many, 0, 20},
+		{ "forked", sync_ring, ncpus, 20},
+		{ "forked-store", store_ring, ncpus, 20},
+		{ NULL, NULL },
+	};
+
+
 	igt_fixture {
 		fd = drm_open_driver(DRIVER_INTEL);
 		igt_require_gem(fd);
@@ -1222,55 +1227,22 @@ igt_main
 		igt_fork_hang_detector(fd);
 	}
 
-	for (e = intel_execution_engines; e->name; e++) {
-		igt_subtest_f("%s", e->name)
-			sync_ring(fd, eb_ring(e), 1, 20);
-		igt_subtest_f("idle-%s", e->name)
-			idle_ring(fd, eb_ring(e), 20);
-		igt_subtest_f("active-%s", e->name)
-			active_ring(fd, eb_ring(e), 20);
-		igt_subtest_f("wakeup-%s", e->name)
-			wakeup_ring(fd, eb_ring(e), 20, 1);
-		igt_subtest_f("active-wakeup-%s", e->name)
-			active_wakeup_ring(fd, eb_ring(e), 20, 1);
-		igt_subtest_f("double-wakeup-%s", e->name)
-			wakeup_ring(fd, eb_ring(e), 20, 2);
-		igt_subtest_f("store-%s", e->name)
-			store_ring(fd, eb_ring(e), 1, 20);
-		igt_subtest_f("switch-%s", e->name)
-			switch_ring(fd, eb_ring(e), 1, 20);
-		igt_subtest_f("forked-switch-%s", e->name)
-			switch_ring(fd, eb_ring(e), ncpus, 20);
-		igt_subtest_f("many-%s", e->name)
-			store_many(fd, eb_ring(e), 20);
-		igt_subtest_f("forked-%s", e->name)
-			sync_ring(fd, eb_ring(e), ncpus, 20);
-		igt_subtest_f("forked-store-%s", e->name)
-			store_ring(fd, eb_ring(e), ncpus, 20);
-	}
+	/* legacy of selecting engines. */
 
-	igt_subtest("basic-each")
-		sync_ring(fd, ALL_ENGINES, 1, 2);
-	igt_subtest("basic-store-each")
-		store_ring(fd, ALL_ENGINES, 1, 2);
-	igt_subtest("basic-many-each")
-		store_many(fd, ALL_ENGINES, 2);
-	igt_subtest("switch-each")
-		switch_ring(fd, ALL_ENGINES, 1, 20);
-	igt_subtest("forked-switch-each")
-		switch_ring(fd, ALL_ENGINES, ncpus, 20);
-	igt_subtest("forked-each")
-		sync_ring(fd, ALL_ENGINES, ncpus, 20);
-	igt_subtest("forked-store-each")
-		store_ring(fd, ALL_ENGINES, ncpus, 20);
-	igt_subtest("active-each")
-		active_ring(fd, ALL_ENGINES, 20);
-	igt_subtest("wakeup-each")
-		wakeup_ring(fd, ALL_ENGINES, 20, 1);
-	igt_subtest("active-wakeup-each")
-		active_wakeup_ring(fd, ALL_ENGINES, 20, 1);
-	igt_subtest("double-wakeup-each")
-		wakeup_ring(fd, ALL_ENGINES, 20, 2);
+	igt_subtest_group {
+		for (test = tests; test->name; test++) {
+			igt_subtest_with_dynamic_f("legacy-%s",
+						   test->name) {
+				for_each_physical_engine(e, fd) {
+					igt_dynamic_f("%s", e->name) {
+						 test->func(fd, eb_ring(e),
+							    test->num_children,
+							    test->timeout);
+					}
+				}
+			}
+		}
+	}
 
 	igt_subtest("basic-all")
 		sync_all(fd, 1, 2);
@@ -1286,7 +1258,39 @@ igt_main
 	igt_subtest("forked-store-all")
 		store_all(fd, ncpus, 20);
 
+
+	/* All Engines */
+	igt_subtest_group {
+		for (test = allengine; test->name; test++) {
+			igt_subtest_f("%s", test->name) {
+				test->func(fd, ALL_ENGINES,
+					   test->num_children,
+					   test->timeout);
+			}
+		}
+	}
+
+	/* New way of selecting engines. */
+	igt_subtest_group {
+		const struct intel_execution_engine2 *e;
+
+		for (test = tests; test->name; test++) {
+			igt_subtest_with_dynamic_f("%s", test->name) {
+				__for_each_physical_engine(fd, e) {
+					igt_dynamic_f("%s", e->name) {
+						test->func(fd, e->flags,
+							   test->num_children,
+							   test->timeout);
+					}
+				}
+			}
+		}
+	}
+
+
 	igt_subtest_group {
+		const struct intel_execution_engine2 *e;
+
 		igt_fixture {
 			gem_require_contexts(fd);
 			igt_require(gem_scheduler_has_ctx_priority(fd));
@@ -1295,10 +1299,12 @@ igt_main
 
 		igt_subtest("preempt-all")
 			preempt(fd, ALL_ENGINES, 1, 20);
-
-		for (e = intel_execution_engines; e->name; e++) {
-			igt_subtest_f("preempt-%s", e->name)
-				preempt(fd, eb_ring(e), ncpus, 20);
+		igt_subtest_with_dynamic("preempt") {
+			__for_each_physical_engine(fd, e) {
+				/* Requires master for STORE_DWORD on gen4/5 */
+				igt_dynamic_f("%s", e->name)
+					preempt(fd, e->flags, ncpus, 20);
+			}
 		}
 	}
 
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✗ GitLab.Pipeline: warning for tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available (rev9)
  2020-04-23 16:55 [igt-dev] [PATCH] [PATCH i-g-t][V8]tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available Arjun Melkaveri
@ 2020-04-23 17:24 ` Patchwork
  2020-04-23 17:40 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2020-04-23 17:24 UTC (permalink / raw)
  To: Arjun Melkaveri; +Cc: igt-dev

== Series Details ==

Series: tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available (rev9)
URL   : https://patchwork.freedesktop.org/series/75536/
State : warning

== Summary ==

Did not get list of undocumented tests for this run, something is wrong!

Other than that, pipeline status: FAILED.

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

build:tests-fedora-clang has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/2414024):
                           Iengines.engines[child % num_engines].name ? " c" : "C",
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ ~
  ../lib/igt_core.h:1193:62: note: expanded from macro 'igt_info'
  #define igt_info(f...) igt_log(IGT_LOG_DOMAIN, IGT_LOG_INFO, f)
                                                               ^
  ../tests/i915/gem_sync.c:1168:44: error: address of array 'Iengines.engines[child % num_children].name' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion]
                           Iengines.engines[child % num_children].name ?  " c" : "C",
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ ~
  ../lib/igt_core.h:1193:62: note: expanded from macro 'igt_info'
  #define igt_info(f...) igt_log(IGT_LOG_DOMAIN, IGT_LOG_INFO, f)
                                                               ^
  9 errors generated.
  ninja: build stopped: subcommand failed.
  section_end:1587662204:build_script
  section_start:1587662204:after_script
  section_end:1587662206:after_script
  section_start:1587662206:upload_artifacts_on_failure
  section_end:1587662208:upload_artifacts_on_failure
  ERROR: Job failed: exit code 1

== Logs ==

For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/pipelines/136733
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✓ Fi.CI.BAT: success for tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available (rev9)
  2020-04-23 16:55 [igt-dev] [PATCH] [PATCH i-g-t][V8]tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available Arjun Melkaveri
  2020-04-23 17:24 ` [igt-dev] ✗ GitLab.Pipeline: warning for tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available (rev9) Patchwork
@ 2020-04-23 17:40 ` Patchwork
  2020-04-23 19:01 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  2020-04-23 20:57 ` [igt-dev] [PATCH] [PATCH i-g-t][V8]tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available Chris Wilson
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2020-04-23 17:40 UTC (permalink / raw)
  To: Arjun Melkaveri; +Cc: igt-dev

== Series Details ==

Series: tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available (rev9)
URL   : https://patchwork.freedesktop.org/series/75536/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8353 -> IGTPW_4503
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_pm_rpm@module-reload:
    - fi-skl-6700k2:      [PASS][1] -> [INCOMPLETE][2] ([i915#151])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/fi-skl-6700k2/igt@i915_pm_rpm@module-reload.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/fi-skl-6700k2/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live@execlists:
    - fi-icl-y:           [PASS][3] -> [DMESG-FAIL][4] ([i915#1314])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/fi-icl-y/igt@i915_selftest@live@execlists.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/fi-icl-y/igt@i915_selftest@live@execlists.html

  * igt@i915_selftest@live@gt_contexts:
    - fi-bwr-2160:        [PASS][5] -> [INCOMPLETE][6] ([i915#1726] / [i915#489])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/fi-bwr-2160/igt@i915_selftest@live@gt_contexts.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/fi-bwr-2160/igt@i915_selftest@live@gt_contexts.html

  
  [i915#1314]: https://gitlab.freedesktop.org/drm/intel/issues/1314
  [i915#151]: https://gitlab.freedesktop.org/drm/intel/issues/151
  [i915#1726]: https://gitlab.freedesktop.org/drm/intel/issues/1726
  [i915#489]: https://gitlab.freedesktop.org/drm/intel/issues/489


Participating hosts (49 -> 43)
------------------------------

  Missing    (6): fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


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

  * CI: CI-20190529 -> None
  * IGT: IGT_5608 -> IGTPW_4503

  CI-20190529: 20190529
  CI_DRM_8353: ce2d0a17f95f9c6cdfed244b19da590d714d87ae @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4503: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/index.html
  IGT_5608: e7bcaf1dd251d454706c7cd64282f531aec50183 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+++ 24 lines
--- 90 lines

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✓ Fi.CI.IGT: success for tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available (rev9)
  2020-04-23 16:55 [igt-dev] [PATCH] [PATCH i-g-t][V8]tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available Arjun Melkaveri
  2020-04-23 17:24 ` [igt-dev] ✗ GitLab.Pipeline: warning for tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available (rev9) Patchwork
  2020-04-23 17:40 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
@ 2020-04-23 19:01 ` Patchwork
  2020-04-23 20:57 ` [igt-dev] [PATCH] [PATCH i-g-t][V8]tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available Chris Wilson
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2020-04-23 19:01 UTC (permalink / raw)
  To: Arjun Melkaveri; +Cc: igt-dev

== Series Details ==

Series: tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available (rev9)
URL   : https://patchwork.freedesktop.org/series/75536/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8353_full -> IGTPW_4503_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_sync@basic-store-each:
    - shard-snb:          [PASS][1] -> [INCOMPLETE][2] ([i915#82]) +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-snb1/igt@gem_sync@basic-store-each.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-snb5/igt@gem_sync@basic-store-each.html

  * igt@i915_pm_rpm@system-suspend:
    - shard-kbl:          [PASS][3] -> [INCOMPLETE][4] ([i915#151] / [i915#155])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-kbl3/igt@i915_pm_rpm@system-suspend.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-kbl6/igt@i915_pm_rpm@system-suspend.html

  * igt@kms_big_fb@linear-32bpp-rotate-0:
    - shard-kbl:          [PASS][5] -> [FAIL][6] ([i915#1119] / [i915#93] / [i915#95])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-kbl4/igt@kms_big_fb@linear-32bpp-rotate-0.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-kbl6/igt@kms_big_fb@linear-32bpp-rotate-0.html

  * igt@kms_big_fb@linear-32bpp-rotate-180:
    - shard-apl:          [PASS][7] -> [FAIL][8] ([i915#1119] / [i915#95]) +1 similar issue
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-apl1/igt@kms_big_fb@linear-32bpp-rotate-180.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-apl1/igt@kms_big_fb@linear-32bpp-rotate-180.html

  * igt@kms_cursor_crc@pipe-a-cursor-256x256-random:
    - shard-kbl:          [PASS][9] -> [FAIL][10] ([i915#54] / [i915#93] / [i915#95]) +1 similar issue
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-kbl3/igt@kms_cursor_crc@pipe-a-cursor-256x256-random.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-kbl7/igt@kms_cursor_crc@pipe-a-cursor-256x256-random.html
    - shard-apl:          [PASS][11] -> [FAIL][12] ([i915#54] / [i915#95])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-apl3/igt@kms_cursor_crc@pipe-a-cursor-256x256-random.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-apl8/igt@kms_cursor_crc@pipe-a-cursor-256x256-random.html

  * igt@kms_cursor_crc@pipe-c-cursor-256x85-sliding:
    - shard-apl:          [PASS][13] -> [FAIL][14] ([i915#54])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-apl8/igt@kms_cursor_crc@pipe-c-cursor-256x85-sliding.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-apl1/igt@kms_cursor_crc@pipe-c-cursor-256x85-sliding.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-glk:          [PASS][15] -> [FAIL][16] ([i915#72])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-glk9/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-glk5/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_draw_crc@draw-method-rgb565-pwrite-untiled:
    - shard-glk:          [PASS][17] -> [FAIL][18] ([i915#177] / [i915#52] / [i915#54])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-glk1/igt@kms_draw_crc@draw-method-rgb565-pwrite-untiled.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-glk2/igt@kms_draw_crc@draw-method-rgb565-pwrite-untiled.html

  * igt@kms_draw_crc@draw-method-rgb565-pwrite-ytiled:
    - shard-glk:          [PASS][19] -> [FAIL][20] ([i915#52] / [i915#54]) +3 similar issues
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-glk7/igt@kms_draw_crc@draw-method-rgb565-pwrite-ytiled.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-glk7/igt@kms_draw_crc@draw-method-rgb565-pwrite-ytiled.html

  * igt@kms_flip_tiling@flip-changes-tiling-yf:
    - shard-kbl:          [PASS][21] -> [FAIL][22] ([i915#699] / [i915#93] / [i915#95])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-kbl4/igt@kms_flip_tiling@flip-changes-tiling-yf.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-kbl3/igt@kms_flip_tiling@flip-changes-tiling-yf.html
    - shard-apl:          [PASS][23] -> [FAIL][24] ([i915#95])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-apl1/igt@kms_flip_tiling@flip-changes-tiling-yf.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-apl3/igt@kms_flip_tiling@flip-changes-tiling-yf.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
    - shard-apl:          [PASS][25] -> [DMESG-WARN][26] ([i915#180]) +2 similar issues
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-apl2/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-apl1/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html

  * igt@kms_psr@no_drrs:
    - shard-iclb:         [PASS][27] -> [FAIL][28] ([i915#173])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-iclb2/igt@kms_psr@no_drrs.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-iclb1/igt@kms_psr@no_drrs.html

  * igt@kms_psr@psr2_sprite_blt:
    - shard-iclb:         [PASS][29] -> [SKIP][30] ([fdo#109441]) +2 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-iclb2/igt@kms_psr@psr2_sprite_blt.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-iclb7/igt@kms_psr@psr2_sprite_blt.html

  * igt@kms_vblank@pipe-c-ts-continuation-suspend:
    - shard-tglb:         [PASS][31] -> [INCOMPLETE][32] ([i915#1602] / [i915#456])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-tglb5/igt@kms_vblank@pipe-c-ts-continuation-suspend.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-tglb6/igt@kms_vblank@pipe-c-ts-continuation-suspend.html

  
#### Possible fixes ####

  * igt@i915_suspend@forcewake:
    - shard-kbl:          [INCOMPLETE][33] ([i915#155]) -> [PASS][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-kbl1/igt@i915_suspend@forcewake.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-kbl2/igt@i915_suspend@forcewake.html

  * igt@kms_cursor_crc@pipe-a-cursor-128x128-offscreen:
    - shard-apl:          [FAIL][35] ([i915#54] / [i915#95]) -> [PASS][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-apl3/igt@kms_cursor_crc@pipe-a-cursor-128x128-offscreen.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-apl3/igt@kms_cursor_crc@pipe-a-cursor-128x128-offscreen.html

  * igt@kms_cursor_crc@pipe-a-cursor-64x64-offscreen:
    - shard-kbl:          [FAIL][37] ([i915#54] / [i915#93] / [i915#95]) -> [PASS][38] +1 similar issue
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-kbl7/igt@kms_cursor_crc@pipe-a-cursor-64x64-offscreen.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-kbl1/igt@kms_cursor_crc@pipe-a-cursor-64x64-offscreen.html

  * igt@kms_cursor_edge_walk@pipe-a-256x256-left-edge:
    - shard-glk:          [FAIL][39] ([i915#118] / [i915#70] / [i915#95]) -> [PASS][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-glk9/igt@kms_cursor_edge_walk@pipe-a-256x256-left-edge.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-glk1/igt@kms_cursor_edge_walk@pipe-a-256x256-left-edge.html

  * igt@kms_draw_crc@draw-method-rgb565-mmap-wc-xtiled:
    - shard-glk:          [FAIL][41] ([i915#52] / [i915#54]) -> [PASS][42] +4 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-glk8/igt@kms_draw_crc@draw-method-rgb565-mmap-wc-xtiled.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-glk5/igt@kms_draw_crc@draw-method-rgb565-mmap-wc-xtiled.html

  * {igt@kms_flip@flip-vs-expired-vblank-interruptible@c-dp1}:
    - shard-apl:          [FAIL][43] ([i915#46]) -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-apl4/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-dp1.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-apl1/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-dp1.html

  * {igt@kms_flip@flip-vs-suspend-interruptible@c-dp1}:
    - shard-apl:          [DMESG-WARN][45] ([i915#180]) -> [PASS][46] +3 similar issues
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-apl1/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-apl3/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
    - shard-apl:          [FAIL][47] ([i915#49] / [i915#95]) -> [PASS][48]
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-apl8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-apl8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html
    - shard-kbl:          [FAIL][49] ([i915#49]) -> [PASS][50]
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-kbl2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-kbl1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_psr@psr2_primary_page_flip:
    - shard-iclb:         [SKIP][51] ([fdo#109441]) -> [PASS][52] +2 similar issues
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-iclb3/igt@kms_psr@psr2_primary_page_flip.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html

  * igt@kms_vblank@pipe-a-ts-continuation-suspend:
    - shard-kbl:          [DMESG-WARN][53] ([i915#180]) -> [PASS][54] +2 similar issues
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-kbl1/igt@kms_vblank@pipe-a-ts-continuation-suspend.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-kbl7/igt@kms_vblank@pipe-a-ts-continuation-suspend.html

  * {igt@perf@polling-parameterized}:
    - shard-hsw:          [FAIL][55] ([i915#1542]) -> [PASS][56]
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-hsw1/igt@perf@polling-parameterized.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-hsw7/igt@perf@polling-parameterized.html

  
#### Warnings ####

  * igt@i915_pm_dc@dc3co-vpb-simulation:
    - shard-iclb:         [SKIP][57] ([i915#658]) -> [SKIP][58] ([i915#588])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-iclb3/igt@i915_pm_dc@dc3co-vpb-simulation.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-iclb2/igt@i915_pm_dc@dc3co-vpb-simulation.html

  * igt@i915_pm_dc@dc6-dpms:
    - shard-tglb:         [SKIP][59] ([i915#468]) -> [FAIL][60] ([i915#454])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-tglb2/igt@i915_pm_dc@dc6-dpms.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-tglb7/igt@i915_pm_dc@dc6-dpms.html

  * igt@i915_pm_dc@dc6-psr:
    - shard-tglb:         [FAIL][61] ([i915#454]) -> [SKIP][62] ([i915#468])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-tglb5/igt@i915_pm_dc@dc6-psr.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-tglb2/igt@i915_pm_dc@dc6-psr.html

  * igt@i915_pm_rpm@system-suspend:
    - shard-snb:          [INCOMPLETE][63] ([i915#82]) -> [SKIP][64] ([fdo#109271])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8353/shard-snb1/igt@i915_pm_rpm@system-suspend.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/shard-snb2/igt@i915_pm_rpm@system-suspend.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [i915#1119]: https://gitlab.freedesktop.org/drm/intel/issues/1119
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#151]: https://gitlab.freedesktop.org/drm/intel/issues/151
  [i915#1542]: https://gitlab.freedesktop.org/drm/intel/issues/1542
  [i915#155]: https://gitlab.freedesktop.org/drm/intel/issues/155
  [i915#1602]: https://gitlab.freedesktop.org/drm/intel/issues/1602
  [i915#173]: https://gitlab.freedesktop.org/drm/intel/issues/173
  [i915#177]: https://gitlab.freedesktop.org/drm/intel/issues/177
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#456]: https://gitlab.freedesktop.org/drm/intel/issues/456
  [i915#46]: https://gitlab.freedesktop.org/drm/intel/issues/46
  [i915#468]: https://gitlab.freedesktop.org/drm/intel/issues/468
  [i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
  [i915#52]: https://gitlab.freedesktop.org/drm/intel/issues/52
  [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
  [i915#588]: https://gitlab.freedesktop.org/drm/intel/issues/588
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#699]: https://gitlab.freedesktop.org/drm/intel/issues/699
  [i915#70]: https://gitlab.freedesktop.org/drm/intel/issues/70
  [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82
  [i915#93]: https://gitlab.freedesktop.org/drm/intel/issues/93
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (10 -> 8)
------------------------------

  Missing    (2): pig-skl-6260u pig-glk-j5005 


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

  * CI: CI-20190529 -> None
  * IGT: IGT_5608 -> IGTPW_4503
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_8353: ce2d0a17f95f9c6cdfed244b19da590d714d87ae @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4503: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/index.html
  IGT_5608: e7bcaf1dd251d454706c7cd64282f531aec50183 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4503/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH] [PATCH i-g-t][V8]tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available
  2020-04-23 16:55 [igt-dev] [PATCH] [PATCH i-g-t][V8]tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available Arjun Melkaveri
                   ` (2 preceding siblings ...)
  2020-04-23 19:01 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2020-04-23 20:57 ` Chris Wilson
  3 siblings, 0 replies; 5+ messages in thread
From: Chris Wilson @ 2020-04-23 20:57 UTC (permalink / raw)
  To: arjun.melkaveri, igt-dev

Quoting Arjun Melkaveri (2020-04-23 17:55:20)
> +               Iengines = intel_init_engine_list(fd, 0);
> +               for (unsigned int n = 0; n < Iengines.nengines; n++) {
> +                       if (!gem_class_can_store_dword(fd, Iengines.engines->class))

This bug was repeated a few times. Hopefully I fixed it all up and
pushed.
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

end of thread, other threads:[~2020-04-23 20:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-23 16:55 [igt-dev] [PATCH] [PATCH i-g-t][V8]tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available Arjun Melkaveri
2020-04-23 17:24 ` [igt-dev] ✗ GitLab.Pipeline: warning for tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available (rev9) Patchwork
2020-04-23 17:40 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
2020-04-23 19:01 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2020-04-23 20:57 ` [igt-dev] [PATCH] [PATCH i-g-t][V8]tests/i915/gem_sync.c :Added __for_each_physical_engine to utilize all available Chris Wilson

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.