diff options
Diffstat (limited to 'lib/i915/gem_ring.c')
-rw-r--r-- | lib/i915/gem_ring.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/i915/gem_ring.c b/lib/i915/gem_ring.c index 7326673a..df92e620 100644 --- a/lib/i915/gem_ring.c +++ b/lib/i915/gem_ring.c @@ -31,6 +31,18 @@ #include "ioctl_wrappers.h" #include "igt_dummyload.h" +static int __execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf) +{ + int err; + + err = 0; + if (ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf)) + err = -errno; + + errno = 0; + return err; +} + static void alarm_handler(int sig) { } @@ -81,15 +93,15 @@ gem_measure_ring_inflight(int fd, unsigned int engine, enum measure_ring_flags f sigaction(SIGALRM, &sa, &old_sa); itv.it_interval.tv_sec = 0; - itv.it_interval.tv_usec = 100; + itv.it_interval.tv_usec = 1000; itv.it_value.tv_sec = 0; - itv.it_value.tv_usec = 1000; + itv.it_value.tv_usec = 10000; setitimer(ITIMER_REAL, &itv, NULL); last = -1; count = 0; do { - if (ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf) == 0) { + if (__execbuf(fd, &execbuf) == 0) { count++; continue; } @@ -100,6 +112,8 @@ gem_measure_ring_inflight(int fd, unsigned int engine, enum measure_ring_flags f last = count; } while (1); + igt_assert_eq(__execbuf(fd, &execbuf), -EINTR); + memset(&itv, 0, sizeof(itv)); setitimer(ITIMER_REAL, &itv, NULL); sigaction(SIGALRM, &old_sa, NULL); |