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 <ch...@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuopp...@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahti...@linux.intel.com>
Signed-off-by: Antonio Argenziano <antonio.argenzi...@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

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to