[Intel-gfx] [PATCH igt v2 2/5] igt/gem_workarounds: Also exercise fresh contexts not the persistent default

Chris Wilson chris at chris-wilson.co.uk
Wed Oct 4 14:25:11 UTC 2017


v2: Actually exercise the new context

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
---
 tests/gem_workarounds.c | 35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

diff --git a/tests/gem_workarounds.c b/tests/gem_workarounds.c
index c669a5cd..234fef0a 100644
--- a/tests/gem_workarounds.c
+++ b/tests/gem_workarounds.c
@@ -87,7 +87,7 @@ static bool write_only(const uint32_t addr)
 
 #define MI_STORE_REGISTER_MEM (0x24 << 23)
 
-static int workaround_fail_count(int fd)
+static int workaround_fail_count(int fd, uint32_t ctx)
 {
 	struct drm_i915_gem_exec_object2 obj[2];
 	struct drm_i915_gem_relocation_entry *reloc;
@@ -131,6 +131,7 @@ static int workaround_fail_count(int fd)
 	memset(&execbuf, 0, sizeof(execbuf));
 	execbuf.buffers_ptr = to_user_pointer(obj);
 	execbuf.buffer_count = 2;
+	execbuf.rsvd1 = ctx;
 	gem_execbuf(fd, &execbuf);
 
 	gem_set_domain(fd, obj[0].handle, I915_GEM_DOMAIN_CPU, 0);
@@ -167,9 +168,15 @@ static int workaround_fail_count(int fd)
 	return fail_count;
 }
 
-static void check_workarounds(int fd, enum operation op)
+#define CONTEXT 0x1
+static void check_workarounds(int fd, enum operation op, unsigned int flags)
 {
-	igt_assert_eq(workaround_fail_count(fd), 0);
+	uint32_t ctx = 0;
+
+	if (flags & CONTEXT)
+		ctx = gem_context_create(fd);
+
+	igt_assert_eq(workaround_fail_count(fd, ctx), 0);
 
 	switch (op) {
 	case GPU_RESET:
@@ -181,13 +188,16 @@ static void check_workarounds(int fd, enum operation op)
 		break;
 
 	case SIMPLE_READ:
-		return;
+		break;
 
 	default:
 		igt_assert(0);
 	}
 
-	igt_assert_eq(workaround_fail_count(fd), 0);
+	igt_assert_eq(workaround_fail_count(fd, ctx), 0);
+
+	if (ctx)
+		gem_context_destroy(fd, ctx);
 }
 
 igt_main
@@ -233,11 +243,20 @@ igt_main
 	}
 
 	igt_subtest("basic-read")
-		check_workarounds(device, SIMPLE_READ);
+		check_workarounds(device, SIMPLE_READ, 0);
+
+	igt_subtest("basic-read-context")
+		check_workarounds(device, SIMPLE_READ, CONTEXT);
 
 	igt_subtest("reset")
-		check_workarounds(device, GPU_RESET);
+		check_workarounds(device, GPU_RESET, 0);
+
+	igt_subtest("reset-context")
+		check_workarounds(device, GPU_RESET, CONTEXT);
 
 	igt_subtest("suspend-resume")
-		check_workarounds(device, SUSPEND_RESUME);
+		check_workarounds(device, SUSPEND_RESUME, 0);
+
+	igt_subtest("suspend-resume-context")
+		check_workarounds(device, SUSPEND_RESUME, CONTEXT);
 }
-- 
2.14.2



More information about the Intel-gfx mailing list