[Intel-gfx] [PATCH i-g-t] tests/gem_eio: Fix usage of gem_quiescent_gpu

Antonio Argenziano antonio.argenziano at intel.com
Thu Dec 14 22:01:31 UTC 2017


After change "lib: Ask the kernel to quiesce the GPU" was merged,
gem_quiescent_gpu() would not submit noop batches to all engines
therefore the test should submit the workload and use the library
function to wait for the workload to complete.

Cc: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
Signed-off-by: Antonio Argenziano <antonio.argenziano at intel.com>
---
 tests/gem_eio.c | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/tests/gem_eio.c b/tests/gem_eio.c
index 2ac9f0a9..868f2236 100644
--- a/tests/gem_eio.c
+++ b/tests/gem_eio.c
@@ -60,13 +60,41 @@ static bool i915_reset_control(bool enable)
 	return ret;
 }
 
+static void noop(int fd, unsigned flags)
+{
+	const uint32_t bbe = MI_BATCH_BUFFER_END;
+	struct drm_i915_gem_execbuffer2 eb;
+	struct drm_i915_gem_exec_object2 exec;
+
+	memset(&exec, 0, sizeof(exec));
+	exec.handle = gem_create(fd, 4096);
+	igt_assert((int)exec.handle > 0);
+	gem_write(fd, exec.handle, 0, &bbe, sizeof(bbe));
+
+	memset(&eb, 0, sizeof(eb));
+	eb.buffers_ptr = to_user_pointer(&exec);
+	eb.buffer_count = 1;
+	eb.flags = flags;
+
+	gem_execbuf(fd, &eb);
+}
+
+static void	noop_all_engines(int fd)
+{
+	unsigned engine;
+	for_each_engine(fd, engine)
+		noop(fd, engine);
+
+	gem_quiescent_gpu(fd);
+}
+
 static void trigger_reset(int fd)
 {
 	igt_force_gpu_reset(fd);
 
 	/* And just check the gpu is indeed running again */
 	igt_debug("Checking that the GPU recovered\n");
-	gem_quiescent_gpu(fd);
+	noop_all_engines(fd);
 }
 
 static void wedge_gpu(int fd)
-- 
2.14.2



More information about the Intel-gfx mailing list