summaryrefslogtreecommitdiff
path: root/lib/i915
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2018-03-22 14:08:00 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2018-03-22 15:52:44 +0000
commit0d5665783284fee1750bc4a9d7a0378cb5ce77fe (patch)
treeb2172928d27450435baaa678b0e2b44a8553bafb /lib/i915
parent07c1414008b41b06c2dd48da7d71ecf0f3379652 (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>
Diffstat (limited to 'lib/i915')
-rw-r--r--lib/i915/gem_submission.c22
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);
}