summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2016-06-02 15:00:14 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2016-06-02 15:02:57 +0100
commit54577e7a83f5bfc2e97245badd043f78d5c8ee4f (patch)
treefbc583e50c83ef253f578ae5149f0a9c604300cb /tests
parent0e11befe4426c2accb1f350a63ae99022179c41b (diff)
Mark up a few more execbuf tests with automatic fail for missed-interrupts
Too many interrupts missed being ignored. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'tests')
-rw-r--r--tests/gem_exec_create.c2
-rw-r--r--tests/gem_exec_flush.c2
-rw-r--r--tests/gem_exec_parallel.c2
-rw-r--r--tests/gem_exec_store.c4
-rw-r--r--tests/gem_exec_whisper.c2
5 files changed, 12 insertions, 0 deletions
diff --git a/tests/gem_exec_create.c b/tests/gem_exec_create.c
index 33fc85c3..f5a61bac 100644
--- a/tests/gem_exec_create.c
+++ b/tests/gem_exec_create.c
@@ -101,6 +101,7 @@ static void all(int fd, unsigned flags, int timeout, int ncpus)
gem_sync(fd, obj.handle);
gem_close(fd, obj.handle);
+ intel_detect_and_clear_missed_interrupts(fd);
igt_fork(child, ncpus) {
struct timespec start, now;
unsigned long count;
@@ -141,6 +142,7 @@ static void all(int fd, unsigned flags, int timeout, int ncpus)
child, nengine, count, 1e6*time);
}
igt_waitchildren();
+ igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
}
igt_main
diff --git a/tests/gem_exec_flush.c b/tests/gem_exec_flush.c
index d08b843a..e4207895 100644
--- a/tests/gem_exec_flush.c
+++ b/tests/gem_exec_flush.c
@@ -306,6 +306,7 @@ static void batch(int fd, unsigned ring, int nchild, int timeout,
igt_require(cmdparser > 0);
}
+ intel_detect_and_clear_missed_interrupts(fd);
igt_fork(child, nchild) {
const uint32_t bbe = MI_BATCH_BUFFER_END;
struct drm_i915_gem_exec_object2 obj[2];
@@ -471,6 +472,7 @@ static void batch(int fd, unsigned ring, int nchild, int timeout,
gem_close(fd, obj[0].handle);
}
igt_waitchildren();
+ igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
}
static const char *yesno(bool x)
diff --git a/tests/gem_exec_parallel.c b/tests/gem_exec_parallel.c
index fa9eb91c..2c04ca16 100644
--- a/tests/gem_exec_parallel.c
+++ b/tests/gem_exec_parallel.c
@@ -218,6 +218,7 @@ static void all(int fd, unsigned engine, unsigned flags)
threads = calloc(1024, sizeof(struct thread));
igt_assert(threads);
+ intel_detect_and_clear_missed_interrupts(fd);
pthread_mutex_init(&mutex, 0);
pthread_cond_init(&cond, 0);
go = 0;
@@ -249,6 +250,7 @@ static void all(int fd, unsigned engine, unsigned flags)
gem_close(fd, handle[i]);
}
+ igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
free(threads);
}
diff --git a/tests/gem_exec_store.c b/tests/gem_exec_store.c
index 2dc96d99..ae752425 100644
--- a/tests/gem_exec_store.c
+++ b/tests/gem_exec_store.c
@@ -48,6 +48,7 @@ static void store_dword(int fd, unsigned ring)
igt_skip_on_f(gen == 6 && (ring & ~(3<<13)) == I915_EXEC_BSD,
"MI_STORE_DATA broken on gen6 bsd\n");
+ intel_detect_and_clear_missed_interrupts(fd);
memset(&execbuf, 0, sizeof(execbuf));
execbuf.buffers_ptr = (uintptr_t)obj;
execbuf.buffer_count = 2;
@@ -91,6 +92,7 @@ static void store_dword(int fd, unsigned ring)
gem_read(fd, obj[0].handle, 0, batch, sizeof(batch));
gem_close(fd, obj[0].handle);
igt_assert_eq(*batch, 0xc0ffee);
+ igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
}
static void store_all(int fd)
@@ -136,6 +138,7 @@ static void store_all(int fd)
batch[++i] = MI_BATCH_BUFFER_END;
nengine = 0;
+ intel_detect_and_clear_missed_interrupts(fd);
for_each_engine(fd, engine) {
if (gen == 6 && (engine & ~(3<<13)) == I915_EXEC_BSD)
continue;
@@ -202,6 +205,7 @@ static void store_all(int fd)
for (i = 0; i < nengine; i++)
igt_assert_eq_u32(engines[i], i);
+ igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
}
igt_main
diff --git a/tests/gem_exec_whisper.c b/tests/gem_exec_whisper.c
index e8f1413d..69b96459 100644
--- a/tests/gem_exec_whisper.c
+++ b/tests/gem_exec_whisper.c
@@ -225,6 +225,7 @@ static void whisper(int fd, unsigned engine, unsigned flags)
gem_write(fd, batches[n].handle, 0, batch, sizeof(batch));
}
+ intel_detect_and_clear_missed_interrupts(fd);
igt_while_interruptible(flags & INTERRUPTIBLE) {
for (pass = 0; pass < 1024; pass++) {
uint64_t offset;
@@ -346,6 +347,7 @@ static void whisper(int fd, unsigned engine, unsigned flags)
igt_info("Number of migrations for reloc: %d, interrupted %d, patched %d\n", reloc_migrations, reloc_interruptions, relocations);
check_bo(fd, scratch.handle);
+ igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
gem_close(fd, scratch.handle);
gem_close(fd, store.handle);