[igt-dev] [PATCH i-g-t] tests/i915: Remove subtests that rely on async relocation behavior

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Mon Aug 10 09:00:34 UTC 2020


These tests are no longer valid, as they require behavior that
was never accepted upstream; it assumes that relocations don't
block synchronously, and the reservation_object lock is only
held at the end of command submission to install the fences.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Cc: Dave Airlie <airlied at redhat.com>
---
 tests/i915/gem_exec_reloc.c | 219 ------------------------------------
 1 file changed, 219 deletions(-)

diff --git a/tests/i915/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c
index d50a8b69487f..85df3da7e011 100644
--- a/tests/i915/gem_exec_reloc.c
+++ b/tests/i915/gem_exec_reloc.c
@@ -424,76 +424,6 @@ static void many_active(int i915, unsigned engine)
 	}
 }
 
-static void __wide_active(int i915, unsigned engine, unsigned long count)
-{
-	struct drm_i915_gem_relocation_entry *reloc =
-		calloc(count, sizeof(*reloc));
-	struct drm_i915_gem_exec_object2 *obj =
-		calloc(count + 1, sizeof(*obj));
-	struct drm_i915_gem_execbuffer2 execbuf = {
-		.buffers_ptr = to_user_pointer(obj),
-		.buffer_count = count + 1,
-		.flags = engine | I915_EXEC_HANDLE_LUT,
-	};
-	igt_spin_t *spin;
-
-	for (unsigned long i = 0; i < count; i++) {
-		obj[i].handle = gem_create(i915, 4096);
-		obj[i].flags = EXEC_OBJECT_WRITE;
-		obj[i].flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
-	}
-
-	spin = __igt_spin_new(i915,
-			      .engine = engine,
-			      .flags = (IGT_SPIN_FENCE_OUT |
-					IGT_SPIN_NO_PREEMPTION));
-	obj[count] = spin->obj[1];
-	gem_execbuf(i915, &execbuf); /* mark all the objects as active */
-
-	for (unsigned long i = 0; i < count; i++) {
-		reloc[i].target_handle = i;
-		reloc[i].presumed_offset = ~0ull;
-		obj[i].relocs_ptr = to_user_pointer(&reloc[i]);
-		obj[i].relocation_count = 1;
-	}
-	gem_execbuf(i915, &execbuf); /* relocation onto active objects */
-
-	igt_assert_eq(sync_fence_status(spin->out_fence), 0);
-	igt_spin_free(i915, spin);
-
-	for (unsigned long i = 0; i < count; i++) {
-		uint64_t addr;
-
-		gem_read(i915, obj[i].handle, 0, &addr, sizeof(addr));
-		igt_assert_eq_u64(addr, obj[i].offset);
-
-		gem_close(i915, obj[i].handle);
-	}
-	free(obj);
-	free(reloc);
-}
-
-static void wide_active(int i915, unsigned engine)
-{
-	const uint64_t max = gem_aperture_size(i915) / 4096 / 2;
-	unsigned long count = 256;
-
-	igt_until_timeout(2) {
-		uint64_t required, total;
-
-		if (!__intel_check_memory(count, 4096, CHECK_RAM,
-					  &required, &total))
-			break;
-
-		igt_debug("Testing count:%lu\n", count);
-		__wide_active(i915, engine, count);
-
-		count <<= 1;
-		if (count >= max)
-			break;
-	}
-}
-
 static unsigned int offset_in_page(void *addr)
 {
 	return (uintptr_t)addr & 4095;
@@ -937,145 +867,6 @@ static void basic_softpin(int fd)
 	gem_close(fd, obj[1].handle);
 }
 
-static struct drm_i915_gem_relocation_entry *
-parallel_relocs(int count, unsigned long *out)
-{
-	struct drm_i915_gem_relocation_entry *reloc;
-	unsigned long sz;
-	int i;
-
-	sz = count * sizeof(*reloc);
-	sz = ALIGN(sz, 4096);
-
-	reloc = mmap(0, sz, PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
-	igt_assert(reloc != MAP_FAILED);
-	for (i = 0; i < count; i++) {
-		reloc[i].target_handle = 0;
-		reloc[i].presumed_offset = ~0ull;
-		reloc[i].offset = 8 * i;
-		reloc[i].delta = i;
-		reloc[i].read_domains = I915_GEM_DOMAIN_INSTRUCTION;
-		reloc[i].write_domain = 0;
-	}
-	mprotect(reloc, sz, PROT_READ);
-
-	*out = sz;
-	return reloc;
-}
-
-static int __execbuf(int i915, struct drm_i915_gem_execbuffer2 *execbuf)
-{
-	int err;
-
-	err = 0;
-	if (ioctl(i915, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf)) {
-		err = -errno;
-		igt_assume(err);
-	}
-
-	errno = 0;
-	return err;
-}
-
-static int stop;
-static void sighandler(int sig)
-{
-	stop = 1;
-}
-
-static void parallel_child(int i915,
-			   const struct intel_execution_engine2 *engine,
-			   struct drm_i915_gem_relocation_entry *reloc,
-			   uint32_t common)
-{
-	igt_spin_t *spin = __igt_spin_new(i915, .engine = engine->flags);
-	struct drm_i915_gem_exec_object2 reloc_target = {
-		.handle = gem_create(i915, 32 * 1024 * 8),
-		.relocation_count = 32 * 1024,
-		.relocs_ptr = to_user_pointer(reloc),
-	};
-	struct drm_i915_gem_exec_object2 obj[3] = {
-		reloc_target,
-		{ .handle = common },
-		spin->obj[1],
-	};
-	struct drm_i915_gem_execbuffer2 execbuf = {
-		.buffers_ptr = to_user_pointer(obj),
-		.buffer_count = ARRAY_SIZE(obj),
-		.flags = engine->flags | I915_EXEC_HANDLE_LUT,
-	};
-	struct sigaction act = {
-		.sa_handler = sighandler,
-	};
-	unsigned long count = 0;
-
-	sigaction(SIGINT, &act, NULL);
-	while (!READ_ONCE(stop)) {
-		int err = __execbuf(i915, &execbuf);
-		if (err == -EINTR)
-			break;
-
-		igt_assert_eq(err, 0);
-		count++;
-	}
-
-	igt_info("%s: count %lu\n", engine->name, count);
-	igt_spin_free(i915, spin);
-}
-
-static void kill_children(int sig)
-{
-	signal(sig, SIG_IGN);
-	kill(-getpgrp(), SIGINT);
-	signal(sig, SIG_DFL);
-}
-
-static void parallel(int i915)
-{
-	const struct intel_execution_engine2 *e;
-	struct drm_i915_gem_relocation_entry *reloc;
-	uint32_t common = gem_create(i915, 4096);
-	uint32_t batch = batch_create(i915);
-	unsigned long reloc_sz;
-
-	reloc = parallel_relocs(32 * 1024, &reloc_sz);
-
-	stop = 0;
-	__for_each_physical_engine(i915, e) {
-		igt_fork(child, 1)
-			parallel_child(i915, e, reloc, common);
-	}
-	sleep(2);
-
-	if (gem_scheduler_has_preemption(i915)) {
-		uint32_t ctx = gem_context_clone_with_engines(i915, 0);
-
-		__for_each_physical_engine(i915, e) {
-			struct drm_i915_gem_exec_object2 obj[2] = {
-				{ .handle = common },
-				{ .handle = batch },
-			};
-			struct drm_i915_gem_execbuffer2 execbuf = {
-				.buffers_ptr = to_user_pointer(obj),
-				.buffer_count = ARRAY_SIZE(obj),
-				.flags = e->flags,
-				.rsvd1 = ctx,
-			};
-			gem_execbuf(i915, &execbuf);
-		}
-
-		gem_context_destroy(i915, ctx);
-	}
-	gem_sync(i915, batch);
-	gem_close(i915, batch);
-
-	kill_children(SIGINT);
-	igt_waitchildren();
-
-	gem_close(i915, common);
-	munmap(reloc, reloc_sz);
-}
-
 #define CONCURRENT 1024
 
 static uint64_t concurrent_relocs(int i915, int idx, int count)
@@ -1487,16 +1278,6 @@ igt_main
 		}
 	}
 
-	igt_subtest_with_dynamic("basic-wide-active") {
-		__for_each_physical_engine(fd, e) {
-			igt_dynamic_f("%s", e->name)
-				wide_active(fd, e->flags);
-		}
-	}
-
-	igt_subtest("basic-parallel")
-		parallel(fd);
-
 	igt_subtest("basic-concurrent0")
 		concurrent(fd, 0);
 	igt_subtest("basic-concurrent16")
-- 
2.28.0



More information about the igt-dev mailing list