From 0d5665783284fee1750bc4a9d7a0378cb5ce77fe Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 22 Mar 2018 14:08:00 +0000 Subject: lib: Run gem_test_engine() in an isolated context Ignore the shennigans of the test surrounding the library call to gem_test_engine() and focus on answering the query of whether the engine exists and is operational. Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin Reviewed-by: Tvrtko Ursulin Tested-by: Tvrtko Ursulin --- lib/i915/gem_submission.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'lib/i915') diff --git a/lib/i915/gem_submission.c b/lib/i915/gem_submission.c index c5e96969..7d3cbdbf 100644 --- a/lib/i915/gem_submission.c +++ b/lib/i915/gem_submission.c @@ -22,6 +22,7 @@ */ #include +#include #include #include @@ -164,6 +165,17 @@ bool gem_has_guc_submission(int fd) return gem_submission_method(fd) & GEM_SUBMISSION_GUC; } +static int reopen_driver(int fd) +{ + char path[256]; + + snprintf(path, sizeof(path), "/proc/self/fd/%d", fd); + fd = open(path, O_RDWR); + igt_assert_fd(fd); + + return fd; +} + static bool is_wedged(int i915) { int err = 0; @@ -183,19 +195,20 @@ static bool is_wedged(int i915) void gem_test_engine(int i915, unsigned int engine) { const uint32_t bbe = MI_BATCH_BUFFER_END; - struct drm_i915_gem_exec_object2 obj = { - .handle = gem_create(i915, 4096) - }; + struct drm_i915_gem_exec_object2 obj = { }; struct drm_i915_gem_execbuffer2 execbuf = { .buffers_ptr = to_user_pointer(&obj), .buffer_count = 1, }; + i915 = reopen_driver(i915); igt_assert(!is_wedged(i915)); + + obj.handle = gem_create(i915, 4096); gem_write(i915, obj.handle, 0, &bbe, sizeof(bbe)); if (engine == ALL_ENGINES) { - for_each_engine(i915, engine) { + for_each_physical_engine(i915, engine) { execbuf.flags = engine; gem_execbuf(i915, &execbuf); } @@ -207,4 +220,5 @@ void gem_test_engine(int i915, unsigned int engine) gem_close(i915, obj.handle); igt_assert(!is_wedged(i915)); + close(i915); } -- cgit v1.2.3