After the fence is signaled, the status feed reports whether or not the
request completed successfully. We set this to -EIO if a hang was
detected.

Signed-off-by: Chris Wilson <[email protected]>
---
 tests/gem_exec_fence.c | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/tests/gem_exec_fence.c b/tests/gem_exec_fence.c
index ea007468..4fe1bcee 100644
--- a/tests/gem_exec_fence.c
+++ b/tests/gem_exec_fence.c
@@ -91,6 +91,46 @@ static void store(int fd, unsigned ring, int fence, uint32_t 
target, unsigned of
        gem_close(fd, obj[BATCH].handle);
 }
 
+struct local_sync_fence_info {
+       char obj_name[32];
+       char driver_name[32];
+
+       __s32 status;
+       __u32 flags;
+
+       __u64 timestamp_ns;
+};
+
+struct local_sync_file_info {
+       char  name[32];
+
+       __s32 status;
+       __u32 flags;
+       __u32 num_fences;
+       __u32 pad;
+
+       __u64 sync_fence_info;
+};
+
+#define UABI_SYNC_IOC_MAGIC '>'
+#define LOCAL_SYNC_IOC_FILE_INFO        _IOWR(UABI_SYNC_IOC_MAGIC, 4, struct 
local_sync_file_info)
+
+#define FENCE_OK 1
+
+static int fence_status(int fence)
+{
+       struct local_sync_fence_info fence_info;
+       struct local_sync_file_info info = {
+               .num_fences = 1,
+               .sync_fence_info = to_user_pointer(&fence_info),
+       };
+
+       (void)ioctl(fence, LOCAL_SYNC_IOC_FILE_INFO, &info);
+       igt_assert(info.num_fences == 1);
+
+       return fence_info.status;
+}
+
 static int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf)
 {
        int err = 0;
@@ -194,6 +234,7 @@ static void test_fence_busy(int fd, unsigned ring, unsigned 
flags)
        }
 
        igt_assert(!gem_bo_busy(fd, obj.handle));
+       igt_assert_eq(fence_status(fence), flags & HANG ? -EIO : FENCE_OK);
 
        close(fence);
        gem_close(fd, obj.handle);
-- 
2.11.0

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to