From 54577e7a83f5bfc2e97245badd043f78d5c8ee4f Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 2 Jun 2016 15:00:14 +0100 Subject: Mark up a few more execbuf tests with automatic fail for missed-interrupts Too many interrupts missed being ignored. Signed-off-by: Chris Wilson --- tests/gem_exec_create.c | 2 ++ tests/gem_exec_flush.c | 2 ++ tests/gem_exec_parallel.c | 2 ++ tests/gem_exec_store.c | 4 ++++ tests/gem_exec_whisper.c | 2 ++ 5 files changed, 12 insertions(+) (limited to 'tests') 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); -- cgit v1.2.3