v2: Actually exercise the new context Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> --- 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 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx