diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2018-03-22 14:08:00 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2018-03-22 15:52:44 +0000 |
commit | 0d5665783284fee1750bc4a9d7a0378cb5ce77fe (patch) | |
tree | b2172928d27450435baaa678b0e2b44a8553bafb | |
parent | 07c1414008b41b06c2dd48da7d71ecf0f3379652 (diff) |
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 <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Tested-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
-rw-r--r-- | lib/i915/gem_submission.c | 22 |
1 files changed, 18 insertions, 4 deletions
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 <errno.h> +#include <fcntl.h> #include <stdbool.h> #include <sys/ioctl.h> @@ -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); } |