[igt-dev] [PATCH i-g-t] i915/gem_ctx_create: Fix 'files'

Chris Wilson chris at chris-wilson.co.uk
Tue Mar 3 14:31:37 UTC 2020


The test is supposed to create a context for each execution, so do so.

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
 tests/i915/gem_ctx_create.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/tests/i915/gem_ctx_create.c b/tests/i915/gem_ctx_create.c
index 2c44a3e3e..d9192fbab 100644
--- a/tests/i915/gem_ctx_create.c
+++ b/tests/i915/gem_ctx_create.c
@@ -178,7 +178,7 @@ static void active(int fd, const struct intel_execution_engine2 *e,
 
 			execbuf.flags = ppgtt_engines[child];
 
-			while (!*(volatile unsigned *)shared) {
+			while (!READ_ONCE(*shared)) {
 				obj.handle = gem_create(fd, 4096 << 10);
 				gem_write(fd, obj.handle, 0, &bbe, sizeof(bbe));
 
@@ -209,17 +209,19 @@ static void active(int fd, const struct intel_execution_engine2 *e,
 
 		clock_gettime(CLOCK_MONOTONIC, &start);
 		do {
-			do {
-				execbuf.rsvd1 = ctx;
-				for (unsigned n = 0; n < nengine; n++) {
-					execbuf.flags = engines[n];
-					gem_execbuf(fd, &execbuf);
-				}
-				gem_context_destroy(fd, execbuf.rsvd1);
-			} while (++count & 1023);
+			execbuf.rsvd1 = gem_context_clone_with_engines(fd, ctx);
+			for (unsigned n = 0; n < nengine; n++) {
+				execbuf.flags = engines[n];
+				gem_execbuf(fd, &execbuf);
+			}
+			gem_context_destroy(fd, execbuf.rsvd1);
+			count++;
+
 			clock_gettime(CLOCK_MONOTONIC, &end);
 		} while (elapsed(&start, &end) < timeout);
 
+		gem_context_destroy(fd, ctx);
+
 		gem_sync(fd, obj.handle);
 		clock_gettime(CLOCK_MONOTONIC, &end);
 		igt_info("[%d] Context creation + execution: %.3f us\n",
-- 
2.25.1



More information about the igt-dev mailing list