From 4bd9fe6e3409d59e618053f908e33bc291d295f4 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 5 May 2014 10:57:12 +0100 Subject: [PATCH] gem_alive: A utility to see if the driver or GPU has hung --- lib/igt_debugfs.h | 1 + tests/.gitignore | 1 + tests/Makefile.sources | 1 + tests/gem_alive.c | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 tests/gem_alive.c diff --git a/lib/igt_debugfs.h b/lib/igt_debugfs.h index bcd7f76..0b55477 100644 --- a/lib/igt_debugfs.h +++ b/lib/igt_debugfs.h @@ -27,6 +27,7 @@ #include #include +#include enum pipe; diff --git a/tests/.gitignore b/tests/.gitignore index fedddbf..ea1f0f9 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -9,6 +9,7 @@ drm_vma_limiter_cached drm_vma_limiter_cpu drm_vma_limiter_gtt drv_suspend +gem_alive gem_bad_address gem_bad_batch gem_bad_blit diff --git a/tests/Makefile.sources b/tests/Makefile.sources index a8a091d..5d5dc46 100644 --- a/tests/Makefile.sources +++ b/tests/Makefile.sources @@ -1,4 +1,5 @@ noinst_PROGRAMS = \ + gem_alive \ gem_stress \ ddi_compute_wrpll \ $(TESTS_progs) \ diff --git a/tests/gem_alive.c b/tests/gem_alive.c new file mode 100644 index 0000000..776db07 --- /dev/null +++ b/tests/gem_alive.c @@ -0,0 +1,35 @@ +#include +#include +#include +#include +#include +#include + +#include "drmtest.h" + +int main(void) +{ + struct drm_i915_gem_sw_finish arg = { 0 }; + int fd; + + signal(SIGALRM, SIG_IGN); + + fd = drm_open_any(); + if (fd < 0) + return 77; + + alarm(1); + if (ioctl(fd, DRM_IOCTL_I915_GEM_SW_FINISH, &arg) == 0) + return 77; + + switch (errno) { + case ENOENT: + return 0; + case EIO: + return 1; + case EINTR: + return 2; + default: + return 3; + } +} -- 2.7.4