* [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation @ 2019-04-17 15:28 Mika Kuoppala 2019-04-17 15:28 ` [PATCH i-g-t 2/3] lib/igt_dummyload: Get rid of 'batch' on spinner accessors Mika Kuoppala ` (10 more replies) 0 siblings, 11 replies; 19+ messages in thread From: Mika Kuoppala @ 2019-04-17 15:28 UTC (permalink / raw) To: intel-gfx Instead of opencoding the poll into the spinner, use a helper to check if spinner has started. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> --- lib/igt_dummyload.c | 35 +++++++++++++++++++--------------- lib/igt_dummyload.h | 17 ++++++++++++++--- tests/i915/gem_ctx_exec.c | 4 +--- tests/i915/gem_ctx_isolation.c | 4 ++-- tests/i915/gem_eio.c | 4 ++-- tests/i915/gem_exec_latency.c | 22 ++++++++++----------- tests/i915/gem_exec_schedule.c | 5 ++--- tests/i915/gem_sync.c | 28 ++++++++++++--------------- tests/perf_pmu.c | 4 ++-- 9 files changed, 66 insertions(+), 57 deletions(-) diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c index 47f6b92b..49b69737 100644 --- a/lib/igt_dummyload.c +++ b/lib/igt_dummyload.c @@ -67,11 +67,13 @@ static pthread_mutex_t list_lock = PTHREAD_MUTEX_INITIALIZER; static void fill_reloc(struct drm_i915_gem_relocation_entry *reloc, - uint32_t gem_handle, uint32_t offset, + uint32_t gem_handle, uint32_t offset, uint32_t delta, uint32_t read_domains, uint32_t write_domains) { + reloc->presumed_offset = -1; reloc->target_handle = gem_handle; reloc->offset = offset * sizeof(uint32_t); + reloc->delta = delta * sizeof(uint32_t); reloc->read_domains = read_domains; reloc->write_domain = write_domains; } @@ -131,11 +133,13 @@ emit_recursive_batch(igt_spin_t *spin, /* dummy write to dependency */ obj[SCRATCH].handle = opts->dependency; fill_reloc(&relocs[obj[BATCH].relocation_count++], - opts->dependency, 1020, + opts->dependency, 1020, 0, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER); execbuf->buffer_count++; } else if (opts->flags & IGT_SPIN_POLL_RUN) { + const unsigned int start_idx_offset = + SPIN_POLL_START_IDX * sizeof(uint32_t); unsigned int offset; igt_assert(!opts->dependency); @@ -149,36 +153,37 @@ emit_recursive_batch(igt_spin_t *spin, if (__gem_set_caching(fd, spin->poll_handle, I915_CACHING_CACHED) == 0) - spin->running = gem_mmap__cpu(fd, spin->poll_handle, - 0, 4096, - PROT_READ | PROT_WRITE); + spin->poll = gem_mmap__cpu(fd, spin->poll_handle, + 0, 4096, + PROT_READ | PROT_WRITE); else - spin->running = gem_mmap__wc(fd, spin->poll_handle, - 0, 4096, - PROT_READ | PROT_WRITE); - igt_assert_eq(*spin->running, 0); + spin->poll = gem_mmap__wc(fd, spin->poll_handle, + 0, 4096, + PROT_READ | PROT_WRITE); + igt_assert_eq(spin->poll[SPIN_POLL_START_IDX], 0); *batch++ = MI_STORE_DWORD_IMM | (gen < 6 ? 1 << 22 : 0); if (gen >= 8) { offset = 1; - *batch++ = 0; + *batch++ = start_idx_offset; *batch++ = 0; } else if (gen >= 4) { offset = 2; *batch++ = 0; - *batch++ = 0; + *batch++ = start_idx_offset; } else { offset = 1; batch[-1]--; - *batch++ = 0; + *batch++ = start_idx_offset; } *batch++ = 1; obj[SCRATCH].handle = spin->poll_handle; fill_reloc(&relocs[obj[BATCH].relocation_count++], - spin->poll_handle, offset, 0, 0); + spin->poll_handle, offset, + SPIN_POLL_START_IDX, 0, 0); execbuf->buffer_count++; } @@ -408,8 +413,8 @@ void igt_spin_batch_free(int fd, igt_spin_t *spin) gem_munmap((void *)((unsigned long)spin->batch & (~4095UL)), BATCH_SIZE); - if (spin->running) { - gem_munmap(spin->running, 4096); + if (spin->poll) { + gem_munmap(spin->poll, 4096); gem_close(fd, spin->poll_handle); } diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h index 73bd035b..3793bf7f 100644 --- a/lib/igt_dummyload.h +++ b/lib/igt_dummyload.h @@ -41,7 +41,8 @@ typedef struct igt_spin { struct drm_i915_gem_exec_object2 obj[2]; struct drm_i915_gem_execbuffer2 execbuf; uint32_t poll_handle; - bool *running; + uint32_t *poll; +#define SPIN_POLL_START_IDX 0 } igt_spin_t; struct igt_spin_factory { @@ -70,9 +71,19 @@ void igt_spin_batch_set_timeout(igt_spin_t *spin, int64_t ns); void igt_spin_batch_end(igt_spin_t *spin); void igt_spin_batch_free(int fd, igt_spin_t *spin); -static inline void igt_spin_busywait_until_running(igt_spin_t *spin) +static inline bool igt_spin_has_poll(const igt_spin_t *spin) { - while (!READ_ONCE(*spin->running)) + return spin->poll; +} + +static inline bool igt_spin_has_started(igt_spin_t *spin) +{ + return READ_ONCE(spin->poll[SPIN_POLL_START_IDX]); +} + +static inline void igt_spin_busywait_until_started(igt_spin_t *spin) +{ + while (!igt_spin_has_started(spin)) ; } diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c index d67d0ec2..f37e6f28 100644 --- a/tests/i915/gem_ctx_exec.c +++ b/tests/i915/gem_ctx_exec.c @@ -181,10 +181,8 @@ static void norecovery(int i915) spin = __igt_spin_batch_new(i915, .ctx = param.ctx_id, .flags = IGT_SPIN_POLL_RUN); - igt_assert(spin->running); + igt_spin_busywait_until_started(spin); - while (!READ_ONCE(*spin->running)) - ; igt_force_gpu_reset(i915); igt_spin_batch_end(spin); diff --git a/tests/i915/gem_ctx_isolation.c b/tests/i915/gem_ctx_isolation.c index f1000458..bed71c2b 100644 --- a/tests/i915/gem_ctx_isolation.c +++ b/tests/i915/gem_ctx_isolation.c @@ -704,8 +704,8 @@ static void inject_reset_context(int fd, unsigned int engine) spin = __igt_spin_batch_factory(fd, &opts); - if (spin->running) - igt_spin_busywait_until_running(spin); + if (igt_spin_has_poll(spin)) + igt_spin_busywait_until_started(spin); else usleep(1000); /* better than nothing */ diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c index 29250852..07bbdeb1 100644 --- a/tests/i915/gem_eio.c +++ b/tests/i915/gem_eio.c @@ -186,8 +186,8 @@ static igt_spin_t * __spin_poll(int fd, uint32_t ctx, unsigned long flags) static void __spin_wait(int fd, igt_spin_t *spin) { - if (spin->running) { - igt_spin_busywait_until_running(spin); + if (igt_spin_has_poll(spin)) { + igt_spin_busywait_until_started(spin); } else { igt_debug("__spin_wait - usleep mode\n"); usleep(500e3); /* Better than nothing! */ diff --git a/tests/i915/gem_exec_latency.c b/tests/i915/gem_exec_latency.c index 39f441d2..fc1040c3 100644 --- a/tests/i915/gem_exec_latency.c +++ b/tests/i915/gem_exec_latency.c @@ -79,29 +79,29 @@ poll_ring(int fd, unsigned ring, const char *name) igt_require(gem_can_store_dword(fd, ring)); spin[0] = __igt_spin_batch_factory(fd, &opts); - igt_assert(spin[0]->running); + igt_assert(igt_spin_has_poll(spin[0])); cmd = *spin[0]->batch; spin[1] = __igt_spin_batch_factory(fd, &opts); - igt_assert(spin[1]->running); + igt_assert(igt_spin_has_poll(spin[1])); + igt_assert(cmd == *spin[1]->batch); igt_spin_batch_end(spin[0]); - while (!READ_ONCE(*spin[1]->running)) - ; + igt_spin_busywait_until_started(spin[1]); + igt_assert(!gem_bo_busy(fd, spin[0]->handle)); cycles = 0; while ((elapsed = igt_nsec_elapsed(&tv)) < 2ull << 30) { - unsigned int idx = cycles++ & 1; + const unsigned int idx = cycles++ & 1; *spin[idx]->batch = cmd; - *spin[idx]->running = 0; + spin[idx]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[idx]->execbuf); igt_spin_batch_end(spin[!idx]); - while (!READ_ONCE(*spin[idx]->running)) - ; + igt_spin_busywait_until_started(spin[idx]); } igt_info("%s completed %ld cycles: %.3f us\n", @@ -419,7 +419,7 @@ static void __rearm_spin_batch(igt_spin_t *spin) const uint32_t mi_arb_chk = 0x5 << 23; *spin->batch = mi_arb_chk; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; __sync_synchronize(); } @@ -441,7 +441,7 @@ struct rt_pkt { static bool __spin_wait(int fd, igt_spin_t *spin) { - while (!READ_ONCE(*spin->running)) { + while (!igt_spin_has_started(spin)) { if (!gem_bo_busy(fd, spin->handle)) return false; } @@ -537,7 +537,7 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in passname[pass]); break; } - igt_spin_busywait_until_running(spin); + igt_spin_busywait_until_started(spin); igt_until_timeout(pass > 0 ? 5 : 2) { struct timespec ts = { }; diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c index 6f3f52d2..718a1935 100644 --- a/tests/i915/gem_exec_schedule.c +++ b/tests/i915/gem_exec_schedule.c @@ -436,7 +436,7 @@ static void semaphore_codependency(int i915) .ctx = ctx, .engine = engine, .flags = IGT_SPIN_POLL_RUN); - igt_spin_busywait_until_running(task[i].xcs); + igt_spin_busywait_until_started(task[i].xcs); /* Common rcs tasks will be queued in FIFO */ task[i].rcs = @@ -1361,8 +1361,7 @@ static void measure_semaphore_power(int i915) .engine = signaler, .flags = IGT_SPIN_POLL_RUN); gem_wait(i915, spin->handle, &jiffie); /* waitboost */ - igt_assert(spin->running); - igt_spin_busywait_until_running(spin); + igt_spin_busywait_until_started(spin); gpu_power_read(&power, &s_spin[0]); usleep(100*1000); diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c index 3e4feff3..0a0ed2a1 100644 --- a/tests/i915/gem_sync.c +++ b/tests/i915/gem_sync.c @@ -225,7 +225,7 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) .engine = execbuf.flags, .flags = (IGT_SPIN_POLL_RUN | IGT_SPIN_FAST)); - igt_assert(spin->running); + igt_assert(igt_spin_has_poll(spin)); cmd = *spin->batch; gem_execbuf(fd, &execbuf); @@ -239,10 +239,9 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles = 0; do { *spin->batch = cmd; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin->execbuf); - while (!READ_ONCE(*spin->running)) - ; + igt_spin_busywait_until_started(spin); this = gettime(); igt_spin_batch_end(spin); @@ -264,10 +263,9 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles = 0; do { *spin->batch = cmd; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin->execbuf); - while (!READ_ONCE(*spin->running)) - ; + igt_spin_busywait_until_started(spin); for (int n = 0; n < wlen; n++) gem_execbuf(fd, &execbuf); @@ -410,7 +408,7 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) .engine = execbuf.flags, .flags = (IGT_SPIN_POLL_RUN | IGT_SPIN_FAST)); - igt_assert(spin[0]->running); + igt_assert(igt_spin_has_poll(spin[0])); cmd = *spin[0]->batch; spin[1] = __igt_spin_batch_new(fd, @@ -426,18 +424,17 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) for (int warmup = 0; warmup <= 1; warmup++) { *spin[0]->batch = cmd; - *spin[0]->running = 0; + spin[0]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[0]->execbuf); end = gettime() + timeout/10.; elapsed = 0; cycles = 0; do { - while (!READ_ONCE(*spin[0]->running)) - ; + igt_spin_busywait_until_started(spin[0]); *spin[1]->batch = cmd; - *spin[1]->running = 0; + spin[1]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); @@ -458,21 +455,20 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles, elapsed*1e6/cycles); *spin[0]->batch = cmd; - *spin[0]->running = 0; + spin[0]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[0]->execbuf); end = gettime() + timeout; elapsed = 0; cycles = 0; do { - while (!READ_ONCE(*spin[0]->running)) - ; + igt_spin_busywait_until_started(spin[0]); for (int n = 0; n < wlen; n++) gem_execbuf(fd, &execbuf); *spin[1]->batch = cmd; - *spin[1]->running = 0; + spin[1]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c index 4f552bc2..28f235b1 100644 --- a/tests/perf_pmu.c +++ b/tests/perf_pmu.c @@ -189,10 +189,10 @@ static unsigned long __spin_wait(int fd, igt_spin_t *spin) igt_nsec_elapsed(&start); - if (spin->running) { + if (igt_spin_has_poll(spin)) { unsigned long timeout = 0; - while (!READ_ONCE(*spin->running)) { + while (!igt_spin_has_started(spin)) { unsigned long t = igt_nsec_elapsed(&start); if ((t - timeout) > 250e6) { -- 2.17.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH i-g-t 2/3] lib/igt_dummyload: Get rid of 'batch' on spinner accessors 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala @ 2019-04-17 15:28 ` Mika Kuoppala 2019-04-17 20:04 ` Chris Wilson 2019-04-17 15:28 ` [PATCH i-g-t 3/3] lib/igt_dummyload: Introduce igt_spin_reset Mika Kuoppala ` (9 subsequent siblings) 10 siblings, 1 reply; 19+ messages in thread From: Mika Kuoppala @ 2019-04-17 15:28 UTC (permalink / raw) To: intel-gfx There is no guarantee that spinners are and will be implemented using batches. As we have igt_spin_t, manipulate it through igt_spin_* functions consistently and hide the batch nature. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> --- lib/drmtest.c | 4 +- lib/igt_core.c | 4 +- lib/igt_dummyload.c | 48 +++++++------- lib/igt_dummyload.h | 20 +++--- lib/igt_gt.c | 10 +-- tests/i915/gem_busy.c | 34 +++++----- tests/i915/gem_ctx_exec.c | 10 +-- tests/i915/gem_ctx_isolation.c | 20 +++--- tests/i915/gem_eio.c | 18 +++--- tests/i915/gem_exec_fence.c | 32 +++++----- tests/i915/gem_exec_latency.c | 38 +++++------ tests/i915/gem_exec_nop.c | 8 +-- tests/i915/gem_exec_reloc.c | 26 ++++---- tests/i915/gem_exec_schedule.c | 92 +++++++++++++-------------- tests/i915/gem_exec_suspend.c | 4 +- tests/i915/gem_fenced_exec_thrash.c | 4 +- tests/i915/gem_mmap.c | 4 +- tests/i915/gem_mmap_gtt.c | 4 +- tests/i915/gem_mmap_wc.c | 4 +- tests/i915/gem_shrink.c | 10 +-- tests/i915/gem_spin_batch.c | 20 +++--- tests/i915/gem_sync.c | 74 +++++++++++----------- tests/i915/gem_wait.c | 12 ++-- tests/i915/i915_pm_rps.c | 26 ++++---- tests/kms_busy.c | 26 ++++---- tests/kms_cursor_legacy.c | 12 ++-- tests/perf_pmu.c | 98 ++++++++++++++--------------- 27 files changed, 331 insertions(+), 331 deletions(-) diff --git a/lib/drmtest.c b/lib/drmtest.c index d31ade3f..4a92fb5c 100644 --- a/lib/drmtest.c +++ b/lib/drmtest.c @@ -176,7 +176,7 @@ static const char *forced_driver(void) */ void gem_quiescent_gpu(int fd) { - igt_terminate_spin_batches(); + igt_terminate_spins(); igt_drop_caches_set(fd, DROP_ACTIVE | DROP_RETIRE | DROP_IDLE | DROP_FREED); @@ -314,7 +314,7 @@ static int at_exit_drm_render_fd = -1; static void __cancel_work_at_exit(int fd) { - igt_terminate_spin_batches(); /* for older kernels */ + igt_terminate_spins(); /* for older kernels */ igt_sysfs_set_parameter(fd, "reset", "%x", -1u /* any method */); igt_drop_caches_set(fd, diff --git a/lib/igt_core.c b/lib/igt_core.c index ae03e909..3141d923 100644 --- a/lib/igt_core.c +++ b/lib/igt_core.c @@ -1007,7 +1007,7 @@ static void exit_subtest(const char *result) fprintf(stderr, "Subtest %s: %s (%.3fs)\n", in_subtest, result, igt_time_elapsed(&subtest_time, &now)); - igt_terminate_spin_batches(); + igt_terminate_spins(); in_subtest = NULL; siglongjmp(igt_subtest_jmpbuf, 1); @@ -1915,7 +1915,7 @@ static void call_exit_handlers(int sig) { int i; - igt_terminate_spin_batches(); + igt_terminate_spins(); if (!exit_handler_count) { return; diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c index 49b69737..b9d54450 100644 --- a/lib/igt_dummyload.c +++ b/lib/igt_dummyload.c @@ -272,7 +272,7 @@ emit_recursive_batch(igt_spin_t *spin, } static igt_spin_t * -spin_batch_create(int fd, const struct igt_spin_factory *opts) +spin_create(int fd, const struct igt_spin_factory *opts) { igt_spin_t *spin; @@ -289,25 +289,25 @@ spin_batch_create(int fd, const struct igt_spin_factory *opts) } igt_spin_t * -__igt_spin_batch_factory(int fd, const struct igt_spin_factory *opts) +__igt_spin_factory(int fd, const struct igt_spin_factory *opts) { - return spin_batch_create(fd, opts); + return spin_create(fd, opts); } /** - * igt_spin_batch_factory: + * igt_spin_factory: * @fd: open i915 drm file descriptor * @opts: controlling options such as context, engine, dependencies etc * * Start a recursive batch on a ring. Immediately returns a #igt_spin_t that * contains the batch's handle that can be waited upon. The returned structure - * must be passed to igt_spin_batch_free() for post-processing. + * must be passed to igt_spin_free() for post-processing. * * Returns: - * Structure with helper internal state for igt_spin_batch_free(). + * Structure with helper internal state for igt_spin_free(). */ igt_spin_t * -igt_spin_batch_factory(int fd, const struct igt_spin_factory *opts) +igt_spin_factory(int fd, const struct igt_spin_factory *opts) { igt_spin_t *spin; @@ -319,7 +319,7 @@ igt_spin_batch_factory(int fd, const struct igt_spin_factory *opts) igt_require(gem_can_store_dword(fd, opts->engine)); } - spin = spin_batch_create(fd, opts); + spin = spin_create(fd, opts); igt_assert(gem_bo_busy(fd, spin->handle)); if (opts->flags & IGT_SPIN_FENCE_OUT) { @@ -335,19 +335,19 @@ static void notify(union sigval arg) { igt_spin_t *spin = arg.sival_ptr; - igt_spin_batch_end(spin); + igt_spin_end(spin); } /** - * igt_spin_batch_set_timeout: - * @spin: spin batch state from igt_spin_batch_new() + * igt_spin_set_timeout: + * @spin: spin state from igt_spin_new() * @ns: amount of time in nanoseconds the batch continues to execute * before finishing. * * Specify a timeout. This ends the recursive batch associated with @spin after * the timeout has elapsed. */ -void igt_spin_batch_set_timeout(igt_spin_t *spin, int64_t ns) +void igt_spin_set_timeout(igt_spin_t *spin, int64_t ns) { timer_t timer; struct sigevent sev; @@ -375,12 +375,12 @@ void igt_spin_batch_set_timeout(igt_spin_t *spin, int64_t ns) } /** - * igt_spin_batch_end: - * @spin: spin batch state from igt_spin_batch_new() + * igt_spin_end: + * @spin: spin state from igt_spin_new() * - * End the recursive batch associated with @spin manually. + * End the spinner associated with @spin manually. */ -void igt_spin_batch_end(igt_spin_t *spin) +void igt_spin_end(igt_spin_t *spin) { if (!spin) return; @@ -390,14 +390,14 @@ void igt_spin_batch_end(igt_spin_t *spin) } /** - * igt_spin_batch_free: + * igt_spin_free: * @fd: open i915 drm file descriptor - * @spin: spin batch state from igt_spin_batch_new() + * @spin: spin state from igt_spin_new() * - * This function does the necessary post-processing after starting a recursive - * batch with igt_spin_batch_new(). + * This function does the necessary post-processing after starting a + * spin with igt_spin_new() and then frees it. */ -void igt_spin_batch_free(int fd, igt_spin_t *spin) +void igt_spin_free(int fd, igt_spin_t *spin) { if (!spin) return; @@ -409,7 +409,7 @@ void igt_spin_batch_free(int fd, igt_spin_t *spin) if (spin->timer) timer_delete(spin->timer); - igt_spin_batch_end(spin); + igt_spin_end(spin); gem_munmap((void *)((unsigned long)spin->batch & (~4095UL)), BATCH_SIZE); @@ -426,13 +426,13 @@ void igt_spin_batch_free(int fd, igt_spin_t *spin) free(spin); } -void igt_terminate_spin_batches(void) +void igt_terminate_spins(void) { struct igt_spin *iter; pthread_mutex_lock(&list_lock); igt_list_for_each(iter, &spin_list, link) - igt_spin_batch_end(iter); + igt_spin_end(iter); pthread_mutex_unlock(&list_lock); } diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h index 3793bf7f..d6482089 100644 --- a/lib/igt_dummyload.h +++ b/lib/igt_dummyload.h @@ -58,18 +58,18 @@ struct igt_spin_factory { #define IGT_SPIN_NO_PREEMPTION (1 << 3) igt_spin_t * -__igt_spin_batch_factory(int fd, const struct igt_spin_factory *opts); +__igt_spin_factory(int fd, const struct igt_spin_factory *opts); igt_spin_t * -igt_spin_batch_factory(int fd, const struct igt_spin_factory *opts); +igt_spin_factory(int fd, const struct igt_spin_factory *opts); -#define __igt_spin_batch_new(fd, ...) \ - __igt_spin_batch_factory(fd, &((struct igt_spin_factory){__VA_ARGS__})) -#define igt_spin_batch_new(fd, ...) \ - igt_spin_batch_factory(fd, &((struct igt_spin_factory){__VA_ARGS__})) +#define __igt_spin_new(fd, ...) \ + __igt_spin_factory(fd, &((struct igt_spin_factory){__VA_ARGS__})) +#define igt_spin_new(fd, ...) \ + igt_spin_factory(fd, &((struct igt_spin_factory){__VA_ARGS__})) -void igt_spin_batch_set_timeout(igt_spin_t *spin, int64_t ns); -void igt_spin_batch_end(igt_spin_t *spin); -void igt_spin_batch_free(int fd, igt_spin_t *spin); +void igt_spin_set_timeout(igt_spin_t *spin, int64_t ns); +void igt_spin_end(igt_spin_t *spin); +void igt_spin_free(int fd, igt_spin_t *spin); static inline bool igt_spin_has_poll(const igt_spin_t *spin) { @@ -87,7 +87,7 @@ static inline void igt_spin_busywait_until_started(igt_spin_t *spin) ; } -void igt_terminate_spin_batches(void); +void igt_terminate_spins(void); enum igt_cork_type { CORK_SYNC_FD = 1, diff --git a/lib/igt_gt.c b/lib/igt_gt.c index 59995243..a2eaadf5 100644 --- a/lib/igt_gt.c +++ b/lib/igt_gt.c @@ -294,10 +294,10 @@ igt_hang_t igt_hang_ctx(int fd, uint32_t ctx, int ring, unsigned flags) if ((flags & HANG_ALLOW_BAN) == 0) context_set_ban(fd, ctx, 0); - spin = __igt_spin_batch_new(fd, - .ctx = ctx, - .engine = ring, - .flags = IGT_SPIN_NO_PREEMPTION); + spin = __igt_spin_new(fd, + .ctx = ctx, + .engine = ring, + .flags = IGT_SPIN_NO_PREEMPTION); return (igt_hang_t){ spin, ctx, ban, flags }; } @@ -333,7 +333,7 @@ void igt_post_hang_ring(int fd, igt_hang_t arg) return; gem_sync(fd, arg.spin->handle); /* Wait until it hangs */ - igt_spin_batch_free(fd, arg.spin); + igt_spin_free(fd, arg.spin); context_set_ban(fd, arg.ctx, arg.ban); diff --git a/tests/i915/gem_busy.c b/tests/i915/gem_busy.c index ad853468..c120faf1 100644 --- a/tests/i915/gem_busy.c +++ b/tests/i915/gem_busy.c @@ -128,9 +128,9 @@ static void semaphore(int fd, unsigned ring, uint32_t flags) /* Create a long running batch which we can use to hog the GPU */ handle[BUSY] = gem_create(fd, 4096); - spin = igt_spin_batch_new(fd, - .engine = ring, - .dependency = handle[BUSY]); + spin = igt_spin_new(fd, + .engine = ring, + .dependency = handle[BUSY]); /* Queue a batch after the busy, it should block and remain "busy" */ igt_assert(exec_noop(fd, handle, ring | flags, false)); @@ -159,7 +159,7 @@ static void semaphore(int fd, unsigned ring, uint32_t flags) /* Check that our long batch was long enough */ igt_assert(still_busy(fd, handle[BUSY])); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); /* And make sure it becomes idle again */ gem_sync(fd, handle[TEST]); @@ -379,16 +379,16 @@ static void close_race(int fd) igt_assert(sched_setscheduler(getpid(), SCHED_RR, &rt) == 0); for (i = 0; i < nhandles; i++) { - spin[i] = __igt_spin_batch_new(fd, - .engine = engines[rand() % nengine]); + spin[i] = __igt_spin_new(fd, + .engine = engines[rand() % nengine]); handles[i] = spin[i]->handle; } igt_until_timeout(20) { for (i = 0; i < nhandles; i++) { - igt_spin_batch_free(fd, spin[i]); - spin[i] = __igt_spin_batch_new(fd, - .engine = engines[rand() % nengine]); + igt_spin_free(fd, spin[i]); + spin[i] = __igt_spin_new(fd, + .engine = engines[rand() % nengine]); handles[i] = spin[i]->handle; __sync_synchronize(); } @@ -398,7 +398,7 @@ static void close_race(int fd) __sync_synchronize(); for (i = 0; i < nhandles; i++) - igt_spin_batch_free(fd, spin[i]); + igt_spin_free(fd, spin[i]); } igt_waitchildren(); @@ -430,11 +430,11 @@ static bool has_semaphores(int fd) static bool has_extended_busy_ioctl(int fd) { - igt_spin_t *spin = igt_spin_batch_new(fd, .engine = I915_EXEC_RENDER); + igt_spin_t *spin = igt_spin_new(fd, .engine = I915_EXEC_RENDER); uint32_t read, write; __gem_busy(fd, spin->handle, &read, &write); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); return read != 0; } @@ -442,9 +442,9 @@ static bool has_extended_busy_ioctl(int fd) static void basic(int fd, unsigned ring, unsigned flags) { igt_spin_t *spin = - igt_spin_batch_new(fd, - .engine = ring, - .flags = IGT_SPIN_NO_PREEMPTION); + igt_spin_new(fd, + .engine = ring, + .flags = IGT_SPIN_NO_PREEMPTION); struct timespec tv; int timeout; bool busy; @@ -453,7 +453,7 @@ static void basic(int fd, unsigned ring, unsigned flags) timeout = 120; if ((flags & HANG) == 0) { - igt_spin_batch_end(spin); + igt_spin_end(spin); timeout = 1; } @@ -470,7 +470,7 @@ static void basic(int fd, unsigned ring, unsigned flags) } } - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); } igt_main diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c index f37e6f28..b8e0e074 100644 --- a/tests/i915/gem_ctx_exec.c +++ b/tests/i915/gem_ctx_exec.c @@ -178,16 +178,16 @@ static void norecovery(int i915) gem_context_get_param(i915, ¶m); igt_assert_eq(param.value, pass); - spin = __igt_spin_batch_new(i915, - .ctx = param.ctx_id, - .flags = IGT_SPIN_POLL_RUN); + spin = __igt_spin_new(i915, + .ctx = param.ctx_id, + .flags = IGT_SPIN_POLL_RUN); igt_spin_busywait_until_started(spin); igt_force_gpu_reset(i915); - igt_spin_batch_end(spin); + igt_spin_end(spin); igt_assert_eq(__gem_execbuf(i915, &spin->execbuf), expect); - igt_spin_batch_free(i915, spin); + igt_spin_free(i915, spin); gem_context_destroy(i915, param.ctx_id); } diff --git a/tests/i915/gem_ctx_isolation.c b/tests/i915/gem_ctx_isolation.c index bed71c2b..bcd0f481 100644 --- a/tests/i915/gem_ctx_isolation.c +++ b/tests/i915/gem_ctx_isolation.c @@ -578,7 +578,7 @@ static void nonpriv(int fd, tmpl_regs(fd, ctx, e, tmpl, values[v]); - spin = igt_spin_batch_new(fd, .ctx = ctx, .engine = engine); + spin = igt_spin_new(fd, .ctx = ctx, .engine = engine); igt_debug("%s[%d]: Setting all registers to 0x%08x\n", __func__, v, values[v]); @@ -592,7 +592,7 @@ static void nonpriv(int fd, */ restore_regs(fd, ctx, e, flags, regs[0]); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); compare_regs(fd, tmpl, regs[1], "nonpriv read/writes"); @@ -631,7 +631,7 @@ static void isolation(int fd, ctx[0] = gem_context_create(fd); regs[0] = read_regs(fd, ctx[0], e, flags); - spin = igt_spin_batch_new(fd, .ctx = ctx[0], .engine = engine); + spin = igt_spin_new(fd, .ctx = ctx[0], .engine = engine); if (flags & DIRTY1) { igt_debug("%s[%d]: Setting all registers of ctx 0 to 0x%08x\n", @@ -663,7 +663,7 @@ static void isolation(int fd, tmp = read_regs(fd, ctx[0], e, flags); restore_regs(fd, ctx[0], e, flags, regs[0]); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); if (!(flags & DIRTY1)) compare_regs(fd, regs[0], tmp, "two reads of the same ctx"); @@ -702,7 +702,7 @@ static void inject_reset_context(int fd, unsigned int engine) if (gem_can_store_dword(fd, engine)) opts.flags |= IGT_SPIN_POLL_RUN; - spin = __igt_spin_batch_factory(fd, &opts); + spin = __igt_spin_factory(fd, &opts); if (igt_spin_has_poll(spin)) igt_spin_busywait_until_started(spin); @@ -711,7 +711,7 @@ static void inject_reset_context(int fd, unsigned int engine) igt_force_gpu_reset(fd); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); gem_context_destroy(fd, opts.ctx); } @@ -738,7 +738,7 @@ static void preservation(int fd, gem_quiescent_gpu(fd); ctx[num_values] = gem_context_create(fd); - spin = igt_spin_batch_new(fd, .ctx = ctx[num_values], .engine = engine); + spin = igt_spin_new(fd, .ctx = ctx[num_values], .engine = engine); regs[num_values][0] = read_regs(fd, ctx[num_values], e, flags); for (int v = 0; v < num_values; v++) { ctx[v] = gem_context_create(fd); @@ -748,7 +748,7 @@ static void preservation(int fd, } gem_close(fd, read_regs(fd, ctx[num_values], e, flags)); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); if (flags & RESET) inject_reset_context(fd, engine); @@ -778,11 +778,11 @@ static void preservation(int fd, break; } - spin = igt_spin_batch_new(fd, .ctx = ctx[num_values], .engine = engine); + spin = igt_spin_new(fd, .ctx = ctx[num_values], .engine = engine); for (int v = 0; v < num_values; v++) regs[v][1] = read_regs(fd, ctx[v], e, flags); regs[num_values][1] = read_regs(fd, ctx[num_values], e, flags); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); for (int v = 0; v < num_values; v++) { char buf[80]; diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c index 07bbdeb1..5396a04e 100644 --- a/tests/i915/gem_eio.c +++ b/tests/i915/gem_eio.c @@ -181,7 +181,7 @@ static igt_spin_t * __spin_poll(int fd, uint32_t ctx, unsigned long flags) if (gem_can_store_dword(fd, opts.engine)) opts.flags |= IGT_SPIN_POLL_RUN; - return __igt_spin_batch_factory(fd, &opts); + return __igt_spin_factory(fd, &opts); } static void __spin_wait(int fd, igt_spin_t *spin) @@ -346,7 +346,7 @@ static void __test_banned(int fd) /* Trigger a reset, making sure we are detected as guilty */ hang = spin_sync(fd, 0, 0); trigger_reset(fd); - igt_spin_batch_free(fd, hang); + igt_spin_free(fd, hang); count++; } @@ -386,7 +386,7 @@ static void test_wait(int fd, unsigned int flags, unsigned int wait) check_wait(fd, hang->handle, wait, NULL); - igt_spin_batch_free(fd, hang); + igt_spin_free(fd, hang); igt_require(i915_reset_control(true)); @@ -466,7 +466,7 @@ static void test_inflight(int fd, unsigned int wait) close(fence[n]); } - igt_spin_batch_free(fd, hang); + igt_spin_free(fd, hang); igt_assert(i915_reset_control(true)); trigger_reset(fd); @@ -522,7 +522,7 @@ static void test_inflight_suspend(int fd) close(fence[n]); } - igt_spin_batch_free(fd, hang); + igt_spin_free(fd, hang); igt_assert(i915_reset_control(true)); trigger_reset(fd); close(fd); @@ -600,7 +600,7 @@ static void test_inflight_contexts(int fd, unsigned int wait) close(fence[n]); } - igt_spin_batch_free(fd, hang); + igt_spin_free(fd, hang); gem_close(fd, obj[1].handle); igt_assert(i915_reset_control(true)); trigger_reset(fd); @@ -660,7 +660,7 @@ static void test_inflight_external(int fd) igt_assert_eq(sync_fence_status(fence), -EIO); close(fence); - igt_spin_batch_free(fd, hang); + igt_spin_free(fd, hang); igt_assert(i915_reset_control(true)); trigger_reset(fd); close(fd); @@ -709,7 +709,7 @@ static void test_inflight_internal(int fd, unsigned int wait) close(fences[nfence]); } - igt_spin_batch_free(fd, hang); + igt_spin_free(fd, hang); igt_assert(i915_reset_control(true)); trigger_reset(fd); close(fd); @@ -779,7 +779,7 @@ static void reset_stress(int fd, gem_execbuf(fd, &execbuf); gem_sync(fd, obj.handle); - igt_spin_batch_free(fd, hang); + igt_spin_free(fd, hang); gem_context_destroy(fd, ctx); } check_wait_elapsed(fd, &stats); diff --git a/tests/i915/gem_exec_fence.c b/tests/i915/gem_exec_fence.c index ba46595d..8120f8b5 100644 --- a/tests/i915/gem_exec_fence.c +++ b/tests/i915/gem_exec_fence.c @@ -468,7 +468,7 @@ static void test_parallel(int fd, unsigned int master) /* Fill the queue with many requests so that the next one has to * wait before it can be executed by the hardware. */ - spin = igt_spin_batch_new(fd, .engine = master, .dependency = plug); + spin = igt_spin_new(fd, .engine = master, .dependency = plug); resubmit(fd, spin->handle, master, 16); /* Now queue the master request and its secondaries */ @@ -588,7 +588,7 @@ static void test_parallel(int fd, unsigned int master) /* Unblock the master */ igt_cork_unplug(&c); gem_close(fd, plug); - igt_spin_batch_end(spin); + igt_spin_end(spin); /* Wait for all secondaries to complete. If we used a regular fence * then the secondaries would not start until the master was complete. @@ -651,7 +651,7 @@ static void test_keep_in_fence(int fd, unsigned int engine, unsigned int flags) igt_spin_t *spin; int fence; - spin = igt_spin_batch_new(fd, .engine = engine); + spin = igt_spin_new(fd, .engine = engine); gem_execbuf_wr(fd, &execbuf); fence = upper_32_bits(execbuf.rsvd2); @@ -698,7 +698,7 @@ static void test_keep_in_fence(int fd, unsigned int engine, unsigned int flags) gem_close(fd, obj.handle); close(fence); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); gem_quiescent_gpu(fd); } @@ -1070,7 +1070,7 @@ static void test_syncobj_unused_fence(int fd) struct local_gem_exec_fence fence = { .handle = syncobj_create(fd), }; - igt_spin_t *spin = igt_spin_batch_new(fd); + igt_spin_t *spin = igt_spin_new(fd); /* sanity check our syncobj_to_sync_file interface */ igt_assert_eq(__syncobj_to_sync_file(fd, 0), -ENOENT); @@ -1095,7 +1095,7 @@ static void test_syncobj_unused_fence(int fd) gem_close(fd, obj.handle); syncobj_destroy(fd, fence.handle); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); } static void test_syncobj_invalid_wait(int fd) @@ -1162,7 +1162,7 @@ static void test_syncobj_signal(int fd) struct local_gem_exec_fence fence = { .handle = syncobj_create(fd), }; - igt_spin_t *spin = igt_spin_batch_new(fd); + igt_spin_t *spin = igt_spin_new(fd); /* Check that the syncobj is signaled only when our request/fence is */ @@ -1183,7 +1183,7 @@ static void test_syncobj_signal(int fd) igt_assert(gem_bo_busy(fd, obj.handle)); igt_assert(syncobj_busy(fd, fence.handle)); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); gem_sync(fd, obj.handle); igt_assert(!gem_bo_busy(fd, obj.handle)); @@ -1212,7 +1212,7 @@ static void test_syncobj_wait(int fd) gem_quiescent_gpu(fd); - spin = igt_spin_batch_new(fd); + spin = igt_spin_new(fd); memset(&execbuf, 0, sizeof(execbuf)); execbuf.buffers_ptr = to_user_pointer(&obj); @@ -1265,7 +1265,7 @@ static void test_syncobj_wait(int fd) for (int i = 0; i < n; i++) igt_assert(gem_bo_busy(fd, handle[i])); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); for (int i = 0; i < n; i++) { gem_sync(fd, handle[i]); @@ -1282,7 +1282,7 @@ static void test_syncobj_export(int fd) .handle = syncobj_create(fd), }; int export[2]; - igt_spin_t *spin = igt_spin_batch_new(fd); + igt_spin_t *spin = igt_spin_new(fd); /* Check that if we export the syncobj prior to use it picks up * the later fence. This allows a syncobj to establish a channel @@ -1315,7 +1315,7 @@ static void test_syncobj_export(int fd) syncobj_destroy(fd, import); } - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); gem_sync(fd, obj.handle); igt_assert(!gem_bo_busy(fd, obj.handle)); @@ -1340,7 +1340,7 @@ static void test_syncobj_repeat(int fd) struct drm_i915_gem_execbuffer2 execbuf; struct local_gem_exec_fence *fence; int export; - igt_spin_t *spin = igt_spin_batch_new(fd); + igt_spin_t *spin = igt_spin_new(fd); /* Check that we can wait on the same fence multiple times */ fence = calloc(nfences, sizeof(*fence)); @@ -1378,7 +1378,7 @@ static void test_syncobj_repeat(int fd) igt_assert(syncobj_busy(fd, fence[i].handle)); igt_assert(gem_bo_busy(fd, obj.handle)); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); gem_sync(fd, obj.handle); gem_close(fd, obj.handle); @@ -1395,7 +1395,7 @@ static void test_syncobj_import(int fd) const uint32_t bbe = MI_BATCH_BUFFER_END; struct drm_i915_gem_exec_object2 obj; struct drm_i915_gem_execbuffer2 execbuf; - igt_spin_t *spin = igt_spin_batch_new(fd); + igt_spin_t *spin = igt_spin_new(fd); uint32_t sync = syncobj_create(fd); int fence; @@ -1423,7 +1423,7 @@ static void test_syncobj_import(int fd) igt_assert(gem_bo_busy(fd, obj.handle)); igt_assert(syncobj_busy(fd, sync)); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); gem_sync(fd, obj.handle); igt_assert(!gem_bo_busy(fd, obj.handle)); diff --git a/tests/i915/gem_exec_latency.c b/tests/i915/gem_exec_latency.c index fc1040c3..6b7dfbc0 100644 --- a/tests/i915/gem_exec_latency.c +++ b/tests/i915/gem_exec_latency.c @@ -78,16 +78,16 @@ poll_ring(int fd, unsigned ring, const char *name) gem_require_ring(fd, ring); igt_require(gem_can_store_dword(fd, ring)); - spin[0] = __igt_spin_batch_factory(fd, &opts); + spin[0] = __igt_spin_factory(fd, &opts); igt_assert(igt_spin_has_poll(spin[0])); cmd = *spin[0]->batch; - spin[1] = __igt_spin_batch_factory(fd, &opts); + spin[1] = __igt_spin_factory(fd, &opts); igt_assert(igt_spin_has_poll(spin[1])); igt_assert(cmd == *spin[1]->batch); - igt_spin_batch_end(spin[0]); + igt_spin_end(spin[0]); igt_spin_busywait_until_started(spin[1]); igt_assert(!gem_bo_busy(fd, spin[0]->handle)); @@ -100,15 +100,15 @@ poll_ring(int fd, unsigned ring, const char *name) spin[idx]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[idx]->execbuf); - igt_spin_batch_end(spin[!idx]); + igt_spin_end(spin[!idx]); igt_spin_busywait_until_started(spin[idx]); } igt_info("%s completed %ld cycles: %.3f us\n", name, cycles, elapsed*1e-3/cycles); - igt_spin_batch_free(fd, spin[1]); - igt_spin_batch_free(fd, spin[0]); + igt_spin_free(fd, spin[1]); + igt_spin_free(fd, spin[0]); } #define RCS_TIMESTAMP (0x2000 + 0x358) @@ -192,7 +192,7 @@ static void latency_on_ring(int fd, } if (flags & LIVE) - spin = igt_spin_batch_new(fd, .engine = ring); + spin = igt_spin_new(fd, .engine = ring); start = *reg; for (j = 0; j < repeats; j++) { @@ -209,7 +209,7 @@ static void latency_on_ring(int fd, end = *reg; igt_assert(reloc.presumed_offset == obj[1].offset); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); if (flags & CORK) igt_cork_unplug(&c); @@ -324,9 +324,9 @@ static void latency_from_ring(int fd, I915_GEM_DOMAIN_GTT); if (flags & PREEMPT) - spin = __igt_spin_batch_new(fd, - .ctx = ctx[0], - .engine = ring); + spin = __igt_spin_new(fd, + .ctx = ctx[0], + .engine = ring); if (flags & CORK) { obj[0].handle = igt_cork_plug(&c, fd); @@ -393,7 +393,7 @@ static void latency_from_ring(int fd, gem_set_domain(fd, obj[1].handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); igt_info("%s-%s delay: %.2fns\n", name, e__->name, @@ -414,7 +414,7 @@ static void latency_from_ring(int fd, } } -static void __rearm_spin_batch(igt_spin_t *spin) +static void __rearm_spin(igt_spin_t *spin) { const uint32_t mi_arb_chk = 0x5 << 23; @@ -424,7 +424,7 @@ static void __rearm_spin_batch(igt_spin_t *spin) } static void -__submit_spin_batch(int fd, igt_spin_t *spin, unsigned int flags) +__submit_spin(int fd, igt_spin_t *spin, unsigned int flags) { struct drm_i915_gem_execbuffer2 eb = spin->execbuf; @@ -531,7 +531,7 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in usleep(250); - spin = __igt_spin_batch_factory(fd, &opts); + spin = __igt_spin_factory(fd, &opts); if (!spin) { igt_warn("Failed to create spinner! (%s)\n", passname[pass]); @@ -543,7 +543,7 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in struct timespec ts = { }; double t; - igt_spin_batch_end(spin); + igt_spin_end(spin); gem_sync(fd, spin->handle); if (flags & RTIDLE) igt_drop_caches_set(fd, DROP_IDLE); @@ -557,10 +557,10 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in if (nengine > 1) usleep(10*nengine); - __rearm_spin_batch(spin); + __rearm_spin(spin); igt_nsec_elapsed(&ts); - __submit_spin_batch(fd, spin, engine); + __submit_spin(fd, spin, engine); if (!__spin_wait(fd, spin)) { igt_warn("Wait timeout! (%s)\n", passname[pass]); @@ -576,7 +576,7 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in igt_mean_add(&mean, t); } - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); igt_info("%8s %10s: mean=%.2fus stddev=%.3fus [%.2fus, %.2fus] (n=%lu)\n", names[child], diff --git a/tests/i915/gem_exec_nop.c b/tests/i915/gem_exec_nop.c index b91b4d0f..8922685a 100644 --- a/tests/i915/gem_exec_nop.c +++ b/tests/i915/gem_exec_nop.c @@ -823,14 +823,14 @@ static void preempt(int fd, uint32_t handle, clock_gettime(CLOCK_MONOTONIC, &start); do { igt_spin_t *spin = - __igt_spin_batch_new(fd, - .ctx = ctx[0], - .engine = ring_id); + __igt_spin_new(fd, + .ctx = ctx[0], + .engine = ring_id); for (int loop = 0; loop < 1024; loop++) gem_execbuf(fd, &execbuf); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); count += 1024; clock_gettime(CLOCK_MONOTONIC, &now); diff --git a/tests/i915/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c index 837f60a6..fdd9661d 100644 --- a/tests/i915/gem_exec_reloc.c +++ b/tests/i915/gem_exec_reloc.c @@ -388,11 +388,11 @@ static void basic_reloc(int fd, unsigned before, unsigned after, unsigned flags) } if (flags & ACTIVE) { - spin = igt_spin_batch_new(fd, - .engine = I915_EXEC_DEFAULT, - .dependency = obj.handle); + spin = igt_spin_new(fd, + .engine = I915_EXEC_DEFAULT, + .dependency = obj.handle); if (!(flags & HANG)) - igt_spin_batch_set_timeout(spin, NSEC_PER_SEC/100); + igt_spin_set_timeout(spin, NSEC_PER_SEC/100); igt_assert(gem_bo_busy(fd, obj.handle)); } @@ -424,7 +424,7 @@ static void basic_reloc(int fd, unsigned before, unsigned after, unsigned flags) igt_assert_eq_u64(reloc.presumed_offset, offset); igt_assert_eq_u64(obj.offset, offset); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); /* Simulate relocation */ if (flags & NORELOC) { @@ -456,11 +456,11 @@ static void basic_reloc(int fd, unsigned before, unsigned after, unsigned flags) } if (flags & ACTIVE) { - spin = igt_spin_batch_new(fd, - .engine = I915_EXEC_DEFAULT, - .dependency = obj.handle); + spin = igt_spin_new(fd, + .engine = I915_EXEC_DEFAULT, + .dependency = obj.handle); if (!(flags & HANG)) - igt_spin_batch_set_timeout(spin, NSEC_PER_SEC/100); + igt_spin_set_timeout(spin, NSEC_PER_SEC/100); igt_assert(gem_bo_busy(fd, obj.handle)); } @@ -492,7 +492,7 @@ static void basic_reloc(int fd, unsigned before, unsigned after, unsigned flags) igt_assert_eq_u64(reloc.presumed_offset, offset); igt_assert_eq_u64(obj.offset, offset); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); if (trash) gem_close(fd, trash); } @@ -585,14 +585,14 @@ static void basic_range(int fd, unsigned flags) execbuf.buffer_count = n + 1; if (flags & ACTIVE) { - spin = igt_spin_batch_new(fd, .dependency = obj[n].handle); + spin = igt_spin_new(fd, .dependency = obj[n].handle); if (!(flags & HANG)) - igt_spin_batch_set_timeout(spin, NSEC_PER_SEC/100); + igt_spin_set_timeout(spin, NSEC_PER_SEC/100); igt_assert(gem_bo_busy(fd, obj[n].handle)); } gem_execbuf(fd, &execbuf); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); for (int i = 0; i < n; i++) { uint64_t offset; diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c index 718a1935..9a079528 100644 --- a/tests/i915/gem_exec_schedule.c +++ b/tests/i915/gem_exec_schedule.c @@ -161,7 +161,7 @@ static void unplug_show_queue(int fd, struct igt_cork *c, unsigned int engine) .ctx = create_highest_priority(fd), .engine = engine, }; - spin[n] = __igt_spin_batch_factory(fd, &opts); + spin[n] = __igt_spin_factory(fd, &opts); gem_context_destroy(fd, opts.ctx); } @@ -169,7 +169,7 @@ static void unplug_show_queue(int fd, struct igt_cork *c, unsigned int engine) igt_debugfs_dump(fd, "i915_engine_info"); for (int n = 0; n < ARRAY_SIZE(spin); n++) - igt_spin_batch_free(fd, spin[n]); + igt_spin_free(fd, spin[n]); } @@ -221,7 +221,7 @@ static void independent(int fd, unsigned int engine) continue; if (spin == NULL) { - spin = __igt_spin_batch_new(fd, .engine = other); + spin = __igt_spin_new(fd, .engine = other); } else { struct drm_i915_gem_execbuffer2 eb = { .buffer_count = 1, @@ -250,7 +250,7 @@ static void independent(int fd, unsigned int engine) igt_assert(gem_bo_busy(fd, scratch)); igt_assert_eq(ptr[0], engine); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); gem_quiescent_gpu(fd); /* And we expect the others to have overwritten us, order unspecified */ @@ -358,9 +358,9 @@ static void semaphore_userlock(int i915) scratch = gem_create(i915, 4096); for_each_physical_engine(i915, engine) { if (!spin) { - spin = igt_spin_batch_new(i915, - .dependency = scratch, - .engine = engine); + spin = igt_spin_new(i915, + .dependency = scratch, + .engine = engine); } else { uint64_t saved = spin->execbuf.flags; @@ -398,7 +398,7 @@ static void semaphore_userlock(int i915) gem_sync(i915, obj.handle); /* to hang unless we can preempt */ gem_close(i915, obj.handle); - igt_spin_batch_free(i915, spin); + igt_spin_free(i915, spin); } static void semaphore_codependency(int i915) @@ -432,18 +432,18 @@ static void semaphore_codependency(int i915) ctx = gem_context_create(i915); task[i].xcs = - __igt_spin_batch_new(i915, - .ctx = ctx, - .engine = engine, - .flags = IGT_SPIN_POLL_RUN); + __igt_spin_new(i915, + .ctx = ctx, + .engine = engine, + .flags = IGT_SPIN_POLL_RUN); igt_spin_busywait_until_started(task[i].xcs); /* Common rcs tasks will be queued in FIFO */ task[i].rcs = - __igt_spin_batch_new(i915, - .ctx = ctx, - .engine = I915_EXEC_RENDER, - .dependency = task[i].xcs->handle); + __igt_spin_new(i915, + .ctx = ctx, + .engine = I915_EXEC_RENDER, + .dependency = task[i].xcs->handle); gem_context_destroy(i915, ctx); @@ -453,13 +453,13 @@ static void semaphore_codependency(int i915) igt_require(i == ARRAY_SIZE(task)); /* Since task[0] was queued first, it will be first in queue for rcs */ - igt_spin_batch_end(task[1].xcs); - igt_spin_batch_end(task[1].rcs); + igt_spin_end(task[1].xcs); + igt_spin_end(task[1].rcs); gem_sync(i915, task[1].rcs->handle); /* to hang if task[0] hogs rcs */ for (i = 0; i < ARRAY_SIZE(task); i++) { - igt_spin_batch_free(i915, task[i].xcs); - igt_spin_batch_free(i915, task[i].rcs); + igt_spin_free(i915, task[i].xcs); + igt_spin_free(i915, task[i].rcs); } } @@ -579,9 +579,9 @@ static void preempt(int fd, unsigned ring, unsigned flags) ctx[LO] = gem_context_create(fd); gem_context_set_priority(fd, ctx[LO], MIN_PRIO); } - spin[n] = __igt_spin_batch_new(fd, - .ctx = ctx[LO], - .engine = ring); + spin[n] = __igt_spin_new(fd, + .ctx = ctx[LO], + .engine = ring); igt_debug("spin[%d].handle=%d\n", n, spin[n]->handle); store_dword(fd, ctx[HI], ring, result, 0, n + 1, 0, I915_GEM_DOMAIN_RENDER); @@ -592,7 +592,7 @@ static void preempt(int fd, unsigned ring, unsigned flags) } for (int n = 0; n < ARRAY_SIZE(spin); n++) - igt_spin_batch_free(fd, spin[n]); + igt_spin_free(fd, spin[n]); if (flags & HANG_LP) igt_post_hang_ring(fd, hang); @@ -614,9 +614,9 @@ static igt_spin_t *__noise(int fd, uint32_t ctx, int prio, igt_spin_t *spin) for_each_physical_engine(fd, other) { if (spin == NULL) { - spin = __igt_spin_batch_new(fd, - .ctx = ctx, - .engine = other); + spin = __igt_spin_new(fd, + .ctx = ctx, + .engine = other); } else { struct drm_i915_gem_execbuffer2 eb = { .buffer_count = 1, @@ -703,7 +703,7 @@ static void preempt_other(int fd, unsigned ring, unsigned int flags) } igt_assert(gem_bo_busy(fd, spin->handle)); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); gem_context_destroy(fd, ctx[LO]); gem_context_destroy(fd, ctx[NOISE]); @@ -768,7 +768,7 @@ static void __preempt_queue(int fd, if (above) { igt_assert(gem_bo_busy(fd, above->handle)); - igt_spin_batch_free(fd, above); + igt_spin_free(fd, above); } gem_set_domain(fd, result, I915_GEM_DOMAIN_GTT, 0); @@ -781,7 +781,7 @@ static void __preempt_queue(int fd, if (below) { igt_assert(gem_bo_busy(fd, below->handle)); - igt_spin_batch_free(fd, below); + igt_spin_free(fd, below); } gem_context_destroy(fd, ctx[LO]); @@ -825,9 +825,9 @@ static void preempt_self(int fd, unsigned ring) n = 0; gem_context_set_priority(fd, ctx[HI], MIN_PRIO); for_each_physical_engine(fd, other) { - spin[n] = __igt_spin_batch_new(fd, - .ctx = ctx[NOISE], - .engine = other); + spin[n] = __igt_spin_new(fd, + .ctx = ctx[NOISE], + .engine = other); store_dword(fd, ctx[HI], other, result, (n + 1)*sizeof(uint32_t), n + 1, 0, I915_GEM_DOMAIN_RENDER); @@ -842,7 +842,7 @@ static void preempt_self(int fd, unsigned ring) for (i = 0; i < n; i++) { igt_assert(gem_bo_busy(fd, spin[i]->handle)); - igt_spin_batch_free(fd, spin[i]); + igt_spin_free(fd, spin[i]); } __sync_read_u32_count(fd, result, result_read, sizeof(result_read)); @@ -870,9 +870,9 @@ static void preemptive_hang(int fd, unsigned ring) ctx[LO] = gem_context_create(fd); gem_context_set_priority(fd, ctx[LO], MIN_PRIO); - spin[n] = __igt_spin_batch_new(fd, - .ctx = ctx[LO], - .engine = ring); + spin[n] = __igt_spin_new(fd, + .ctx = ctx[LO], + .engine = ring); gem_context_destroy(fd, ctx[LO]); } @@ -886,7 +886,7 @@ static void preemptive_hang(int fd, unsigned ring) * be updated to reflect such changes. */ igt_assert(gem_bo_busy(fd, spin[n]->handle)); - igt_spin_batch_free(fd, spin[n]); + igt_spin_free(fd, spin[n]); } gem_context_destroy(fd, ctx[HI]); @@ -1357,9 +1357,9 @@ static void measure_semaphore_power(int i915) int64_t jiffie = 1; igt_spin_t *spin; - spin = __igt_spin_batch_new(i915, - .engine = signaler, - .flags = IGT_SPIN_POLL_RUN); + spin = __igt_spin_new(i915, + .engine = signaler, + .flags = IGT_SPIN_POLL_RUN); gem_wait(i915, spin->handle, &jiffie); /* waitboost */ igt_spin_busywait_until_started(spin); @@ -1374,11 +1374,11 @@ static void measure_semaphore_power(int i915) if (engine == signaler) continue; - sema = __igt_spin_batch_new(i915, - .engine = engine, - .dependency = spin->handle); + sema = __igt_spin_new(i915, + .engine = engine, + .dependency = spin->handle); - igt_spin_batch_free(i915, sema); + igt_spin_free(i915, sema); } usleep(10); /* just give the tasklets a chance to run */ @@ -1386,7 +1386,7 @@ static void measure_semaphore_power(int i915) usleep(100*1000); gpu_power_read(&power, &s_sema[1]); - igt_spin_batch_free(i915, spin); + igt_spin_free(i915, spin); baseline = gpu_power_W(&power, &s_spin[0], &s_spin[1]); total = gpu_power_W(&power, &s_sema[0], &s_sema[1]); diff --git a/tests/i915/gem_exec_suspend.c b/tests/i915/gem_exec_suspend.c index 43c52d10..e43a16e9 100644 --- a/tests/i915/gem_exec_suspend.c +++ b/tests/i915/gem_exec_suspend.c @@ -189,7 +189,7 @@ static void run_test(int fd, unsigned engine, unsigned flags) } if (flags & HANG) - spin = igt_spin_batch_new(fd, .engine = engine); + spin = igt_spin_new(fd, .engine = engine); switch (mode(flags)) { case NOSLEEP: @@ -216,7 +216,7 @@ static void run_test(int fd, unsigned engine, unsigned flags) break; } - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); check_bo(fd, obj[0].handle); gem_close(fd, obj[0].handle); diff --git a/tests/i915/gem_fenced_exec_thrash.c b/tests/i915/gem_fenced_exec_thrash.c index 7248d310..145b8bf8 100644 --- a/tests/i915/gem_fenced_exec_thrash.c +++ b/tests/i915/gem_fenced_exec_thrash.c @@ -132,14 +132,14 @@ static void run_test(int fd, int num_fences, int expected_errno, igt_spin_t *spin = NULL; if (flags & BUSY_LOAD) - spin = __igt_spin_batch_new(fd); + spin = __igt_spin_new(fd); igt_while_interruptible(flags & INTERRUPTIBLE) { igt_assert_eq(__gem_execbuf(fd, &execbuf[i]), -expected_errno); } - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); gem_quiescent_gpu(fd); } count++; diff --git a/tests/i915/gem_mmap.c b/tests/i915/gem_mmap.c index 1f5348d9..d1b10013 100644 --- a/tests/i915/gem_mmap.c +++ b/tests/i915/gem_mmap.c @@ -122,7 +122,7 @@ test_pf_nonblock(int i915) igt_spin_t *spin; uint32_t *ptr; - spin = igt_spin_batch_new(i915); + spin = igt_spin_new(i915); igt_set_timeout(1, "initial pagefaulting did not complete within 1s"); @@ -132,7 +132,7 @@ test_pf_nonblock(int i915) igt_reset_timeout(); - igt_spin_batch_free(i915, spin); + igt_spin_free(i915, spin); } static int mmap_ioctl(int i915, struct drm_i915_gem_mmap *arg) diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c index ab7d3f2d..9a670f03 100644 --- a/tests/i915/gem_mmap_gtt.c +++ b/tests/i915/gem_mmap_gtt.c @@ -309,7 +309,7 @@ test_pf_nonblock(int i915) igt_require(mmap_gtt_version(i915) >= 3); - spin = igt_spin_batch_new(i915); + spin = igt_spin_new(i915); igt_set_timeout(1, "initial pagefaulting did not complete within 1s"); @@ -319,7 +319,7 @@ test_pf_nonblock(int i915) igt_reset_timeout(); - igt_spin_batch_free(i915, spin); + igt_spin_free(i915, spin); } static void diff --git a/tests/i915/gem_mmap_wc.c b/tests/i915/gem_mmap_wc.c index e3ffc5ad..159eedbf 100644 --- a/tests/i915/gem_mmap_wc.c +++ b/tests/i915/gem_mmap_wc.c @@ -448,7 +448,7 @@ test_pf_nonblock(int i915) igt_spin_t *spin; uint32_t *ptr; - spin = igt_spin_batch_new(i915); + spin = igt_spin_new(i915); igt_set_timeout(1, "initial pagefaulting did not complete within 1s"); @@ -458,7 +458,7 @@ test_pf_nonblock(int i915) igt_reset_timeout(); - igt_spin_batch_free(i915, spin); + igt_spin_free(i915, spin); } static void diff --git a/tests/i915/gem_shrink.c b/tests/i915/gem_shrink.c index 3e8b8f2d..037ff005 100644 --- a/tests/i915/gem_shrink.c +++ b/tests/i915/gem_shrink.c @@ -346,17 +346,17 @@ static void reclaim(unsigned engine, int timeout) } while (!*shared); } - spin = igt_spin_batch_new(fd, .engine = engine); + spin = igt_spin_new(fd, .engine = engine); igt_until_timeout(timeout) { - igt_spin_t *next = __igt_spin_batch_new(fd, .engine = engine); + igt_spin_t *next = __igt_spin_new(fd, .engine = engine); - igt_spin_batch_set_timeout(spin, timeout_100ms); + igt_spin_set_timeout(spin, timeout_100ms); gem_sync(fd, spin->handle); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); spin = next; } - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); *shared = 1; igt_waitchildren(); diff --git a/tests/i915/gem_spin_batch.c b/tests/i915/gem_spin_batch.c index 9afdbe09..a92672b8 100644 --- a/tests/i915/gem_spin_batch.c +++ b/tests/i915/gem_spin_batch.c @@ -41,12 +41,12 @@ static void spin(int fd, unsigned int engine, unsigned int timeout_sec) struct timespec itv = { }; uint64_t elapsed; - spin = __igt_spin_batch_new(fd, .engine = engine); + spin = __igt_spin_new(fd, .engine = engine); while ((elapsed = igt_nsec_elapsed(&tv)) >> 30 < timeout_sec) { - igt_spin_t *next = __igt_spin_batch_new(fd, .engine = engine); + igt_spin_t *next = __igt_spin_new(fd, .engine = engine); - igt_spin_batch_set_timeout(spin, - timeout_100ms - igt_nsec_elapsed(&itv)); + igt_spin_set_timeout(spin, + timeout_100ms - igt_nsec_elapsed(&itv)); gem_sync(fd, spin->handle); igt_debug("loop %lu: interval=%fms (target 100ms), elapsed %fms\n", loops, @@ -54,11 +54,11 @@ static void spin(int fd, unsigned int engine, unsigned int timeout_sec) igt_nsec_elapsed(&tv) * 1e-6); memset(&itv, 0, sizeof(itv)); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); spin = next; loops++; } - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); igt_info("Completed %ld loops in %lld ns, target %ld\n", loops, (long long)elapsed, (long)(elapsed / timeout_100ms)); @@ -74,7 +74,7 @@ static void spin_resubmit(int fd, unsigned int engine, unsigned int flags) const uint32_t ctx0 = gem_context_create(fd); const uint32_t ctx1 = (flags & RESUBMIT_NEW_CTX) ? gem_context_create(fd) : ctx0; - igt_spin_t *spin = __igt_spin_batch_new(fd, .ctx = ctx0, .engine = engine); + igt_spin_t *spin = __igt_spin_new(fd, .ctx = ctx0, .engine = engine); unsigned int other; struct drm_i915_gem_execbuffer2 eb = { @@ -96,11 +96,11 @@ static void spin_resubmit(int fd, unsigned int engine, unsigned int flags) gem_execbuf(fd, &eb); } - igt_spin_batch_end(spin); + igt_spin_end(spin); gem_sync(fd, spin->obj[1].handle); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); if (ctx1 != ctx0) gem_context_destroy(fd, ctx1); @@ -110,7 +110,7 @@ static void spin_resubmit(int fd, unsigned int engine, unsigned int flags) static void spin_exit_handler(int sig) { - igt_terminate_spin_batches(); + igt_terminate_spins(); } static void spin_on_all_engines(int fd, unsigned int timeout_sec) diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c index 0a0ed2a1..f17ecd0b 100644 --- a/tests/i915/gem_sync.c +++ b/tests/i915/gem_sync.c @@ -221,16 +221,16 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) execbuf.buffer_count = 1; execbuf.flags = engines[child % num_engines]; - spin = __igt_spin_batch_new(fd, - .engine = execbuf.flags, - .flags = (IGT_SPIN_POLL_RUN | - IGT_SPIN_FAST)); + spin = __igt_spin_new(fd, + .engine = execbuf.flags, + .flags = (IGT_SPIN_POLL_RUN | + IGT_SPIN_FAST)); igt_assert(igt_spin_has_poll(spin)); cmd = *spin->batch; gem_execbuf(fd, &execbuf); - igt_spin_batch_end(spin); + igt_spin_end(spin); gem_sync(fd, object.handle); for (int warmup = 0; warmup <= 1; warmup++) { @@ -244,7 +244,7 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) igt_spin_busywait_until_started(spin); this = gettime(); - igt_spin_batch_end(spin); + igt_spin_end(spin); gem_sync(fd, spin->handle); now = gettime(); @@ -271,7 +271,7 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) gem_execbuf(fd, &execbuf); this = gettime(); - igt_spin_batch_end(spin); + igt_spin_end(spin); gem_sync(fd, object.handle); now = gettime(); @@ -285,7 +285,7 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) names[child % num_engines] ? " c" : "C", cycles, 1e6*baseline, elapsed*1e6/cycles); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); gem_close(fd, object.handle); } igt_waitchildren_timeout(2*timeout, NULL); @@ -323,14 +323,14 @@ static void active_ring(int fd, unsigned ring, int timeout) igt_spin_t *spin[2]; uint32_t cmd; - spin[0] = __igt_spin_batch_new(fd, - .engine = ring, - .flags = IGT_SPIN_FAST); + spin[0] = __igt_spin_new(fd, + .engine = ring, + .flags = IGT_SPIN_FAST); cmd = *spin[0]->batch; - spin[1] = __igt_spin_batch_new(fd, - .engine = ring, - .flags = IGT_SPIN_FAST); + spin[1] = __igt_spin_new(fd, + .engine = ring, + .flags = IGT_SPIN_FAST); igt_assert(*spin[1]->batch == cmd); start = gettime(); @@ -340,7 +340,7 @@ static void active_ring(int fd, unsigned ring, int timeout) for (int loop = 0; loop < 1024; loop++) { igt_spin_t *s = spin[loop & 1]; - igt_spin_batch_end(s); + igt_spin_end(s); gem_sync(fd, s->handle); *s->batch = cmd; @@ -348,8 +348,8 @@ static void active_ring(int fd, unsigned ring, int timeout) } cycles += 1024; } while ((elapsed = gettime()) < end); - igt_spin_batch_free(fd, spin[1]); - igt_spin_batch_free(fd, spin[0]); + igt_spin_free(fd, spin[1]); + igt_spin_free(fd, spin[0]); igt_info("%s%sompleted %ld cycles: %.3f us\n", names[child % num_engines] ?: "", @@ -404,22 +404,22 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) execbuf.buffer_count = 1; execbuf.flags = engines[child % num_engines]; - spin[0] = __igt_spin_batch_new(fd, - .engine = execbuf.flags, - .flags = (IGT_SPIN_POLL_RUN | - IGT_SPIN_FAST)); + spin[0] = __igt_spin_new(fd, + .engine = execbuf.flags, + .flags = (IGT_SPIN_POLL_RUN | + IGT_SPIN_FAST)); igt_assert(igt_spin_has_poll(spin[0])); cmd = *spin[0]->batch; - spin[1] = __igt_spin_batch_new(fd, - .engine = execbuf.flags, - .flags = (IGT_SPIN_POLL_RUN | - IGT_SPIN_FAST)); + spin[1] = __igt_spin_new(fd, + .engine = execbuf.flags, + .flags = (IGT_SPIN_POLL_RUN | + IGT_SPIN_FAST)); gem_execbuf(fd, &execbuf); - igt_spin_batch_end(spin[1]); - igt_spin_batch_end(spin[0]); + igt_spin_end(spin[1]); + igt_spin_end(spin[0]); gem_sync(fd, object.handle); for (int warmup = 0; warmup <= 1; warmup++) { @@ -438,7 +438,7 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); - igt_spin_batch_end(spin[0]); + igt_spin_end(spin[0]); gem_sync(fd, spin[0]->handle); now = gettime(); @@ -446,7 +446,7 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles++; igt_swap(spin[0], spin[1]); } while (now < end); - igt_spin_batch_end(spin[0]); + igt_spin_end(spin[0]); baseline = elapsed / cycles; } igt_info("%s%saseline %ld cycles: %.3f us\n", @@ -472,7 +472,7 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); - igt_spin_batch_end(spin[0]); + igt_spin_end(spin[0]); gem_sync(fd, object.handle); now = gettime(); @@ -480,7 +480,7 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles++; igt_swap(spin[0], spin[1]); } while (now < end); - igt_spin_batch_end(spin[0]); + igt_spin_end(spin[0]); elapsed -= cycles * baseline; igt_info("%s%sompleted %ld cycles: %.3f + %.3f us\n", @@ -488,8 +488,8 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) names[child % num_engines] ? " c" : "C", cycles, 1e6*baseline, elapsed*1e6/cycles); - igt_spin_batch_free(fd, spin[1]); - igt_spin_batch_free(fd, spin[0]); + igt_spin_free(fd, spin[1]); + igt_spin_free(fd, spin[0]); gem_close(fd, object.handle); } igt_waitchildren_timeout(2*timeout, NULL); @@ -1189,16 +1189,16 @@ preempt(int fd, unsigned ring, int num_children, int timeout) cycles = 0; do { igt_spin_t *spin = - __igt_spin_batch_new(fd, - .ctx = ctx[0], - .engine = execbuf.flags); + __igt_spin_new(fd, + .ctx = ctx[0], + .engine = execbuf.flags); do { gem_execbuf(fd, &execbuf); gem_sync(fd, object.handle); } while (++cycles & 1023); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); } while ((elapsed = gettime() - start) < timeout); igt_info("%s%sompleted %ld cycles: %.3f us\n", names[child % num_engines] ?: "", diff --git a/tests/i915/gem_wait.c b/tests/i915/gem_wait.c index 7914c936..ee2ecfa0 100644 --- a/tests/i915/gem_wait.c +++ b/tests/i915/gem_wait.c @@ -74,9 +74,9 @@ static void basic(int fd, unsigned engine, unsigned flags) IGT_CORK_HANDLE(cork); uint32_t plug = flags & (WRITE | AWAIT) ? igt_cork_plug(&cork, fd) : 0; - igt_spin_t *spin = igt_spin_batch_new(fd, - .engine = engine, - .dependency = plug); + igt_spin_t *spin = igt_spin_new(fd, + .engine = engine, + .dependency = plug); struct drm_i915_gem_wait wait = { flags & WRITE ? plug : spin->handle }; @@ -89,7 +89,7 @@ static void basic(int fd, unsigned engine, unsigned flags) timeout = 120; if ((flags & HANG) == 0) { - igt_spin_batch_set_timeout(spin, NSEC_PER_SEC/2); + igt_spin_set_timeout(spin, NSEC_PER_SEC/2); timeout = 1; } @@ -112,7 +112,7 @@ static void basic(int fd, unsigned engine, unsigned flags) igt_assert_eq(__gem_wait(fd, &wait), -ETIME); if ((flags & HANG) == 0) { - igt_spin_batch_set_timeout(spin, NSEC_PER_SEC/2); + igt_spin_set_timeout(spin, NSEC_PER_SEC/2); wait.timeout_ns = NSEC_PER_SEC; /* 1.0s */ igt_assert_eq(__gem_wait(fd, &wait), 0); igt_assert(wait.timeout_ns >= 0); @@ -129,7 +129,7 @@ static void basic(int fd, unsigned engine, unsigned flags) if (plug) gem_close(fd, plug); - igt_spin_batch_free(fd, spin); + igt_spin_free(fd, spin); } igt_main diff --git a/tests/i915/i915_pm_rps.c b/tests/i915/i915_pm_rps.c index 91f46f10..478c7be7 100644 --- a/tests/i915/i915_pm_rps.c +++ b/tests/i915/i915_pm_rps.c @@ -254,29 +254,29 @@ static void load_helper_run(enum load load) igt_debug("Applying %s load...\n", lh.load ? "high" : "low"); prev_load = lh.load == HIGH; - spin[0] = __igt_spin_batch_new(drm_fd); + spin[0] = __igt_spin_new(drm_fd); if (prev_load) - spin[1] = __igt_spin_batch_new(drm_fd); + spin[1] = __igt_spin_new(drm_fd); prev_load = !prev_load; /* send the initial signal */ while (!lh.exit) { bool high_load; handle = spin[0]->handle; - igt_spin_batch_end(spin[0]); + igt_spin_end(spin[0]); while (gem_bo_busy(drm_fd, handle)) usleep(100); - igt_spin_batch_free(drm_fd, spin[0]); + igt_spin_free(drm_fd, spin[0]); usleep(100); high_load = lh.load == HIGH; if (!high_load && spin[1]) { - igt_spin_batch_free(drm_fd, spin[1]); + igt_spin_free(drm_fd, spin[1]); spin[1] = NULL; } else { spin[0] = spin[1]; } - spin[high_load] = __igt_spin_batch_new(drm_fd); + spin[high_load] = __igt_spin_new(drm_fd); if (lh.signal && high_load != prev_load) { write(lh.link, &lh.signal, sizeof(lh.signal)); @@ -286,11 +286,11 @@ static void load_helper_run(enum load load) } handle = spin[0]->handle; - igt_spin_batch_end(spin[0]); + igt_spin_end(spin[0]); if (spin[1]) { handle = spin[1]->handle; - igt_spin_batch_end(spin[1]); + igt_spin_end(spin[1]); } /* Wait for completion without boosting */ @@ -305,8 +305,8 @@ static void load_helper_run(enum load load) */ igt_drop_caches_set(drm_fd, DROP_RETIRE); - igt_spin_batch_free(drm_fd, spin[1]); - igt_spin_batch_free(drm_fd, spin[0]); + igt_spin_free(drm_fd, spin[1]); + igt_spin_free(drm_fd, spin[0]); } close(lh.link); @@ -549,7 +549,7 @@ static void boost_freq(int fd, int *boost_freqs) int64_t timeout = 1; igt_spin_t *load; - load = igt_spin_batch_new(fd); + load = igt_spin_new(fd); resubmit_batch(fd, load->handle, 16); /* Waiting will grant us a boost to maximum */ @@ -559,9 +559,9 @@ static void boost_freq(int fd, int *boost_freqs) dump(boost_freqs); /* Avoid downlocking till boost request is pending */ - igt_spin_batch_end(load); + igt_spin_end(load); gem_sync(fd, load->handle); - igt_spin_batch_free(fd, load); + igt_spin_free(fd, load); } static void waitboost(int fd, bool reset) diff --git a/tests/kms_busy.c b/tests/kms_busy.c index 321db820..66f26cd0 100644 --- a/tests/kms_busy.c +++ b/tests/kms_busy.c @@ -76,9 +76,9 @@ static void flip_to_fb(igt_display_t *dpy, int pipe, const int timeout = modeset ? 8500 : 100; struct drm_event_vblank ev; - igt_spin_t *t = igt_spin_batch_new(dpy->drm_fd, - .engine = ring, - .dependency = fb->gem_handle); + igt_spin_t *t = igt_spin_new(dpy->drm_fd, + .engine = ring, + .dependency = fb->gem_handle); if (modeset) { /* @@ -115,7 +115,7 @@ static void flip_to_fb(igt_display_t *dpy, int pipe, igt_waitchildren_timeout(5 * timeout, "flip blocked waiting for busy bo\n"); - igt_spin_batch_end(t); + igt_spin_end(t); igt_assert(read(dpy->drm_fd, &ev, sizeof(ev)) == sizeof(ev)); igt_assert(poll(&pfd, 1, 0) == 0); @@ -131,7 +131,7 @@ static void flip_to_fb(igt_display_t *dpy, int pipe, igt_display_commit2(dpy, COMMIT_ATOMIC); } - igt_spin_batch_free(dpy->drm_fd, t); + igt_spin_free(dpy->drm_fd, t); } static void test_flip(igt_display_t *dpy, unsigned ring, int pipe, bool modeset) @@ -180,9 +180,9 @@ static void test_flip(igt_display_t *dpy, unsigned ring, int pipe, bool modeset) static void test_atomic_commit_hang(igt_display_t *dpy, igt_plane_t *primary, struct igt_fb *busy_fb, unsigned ring) { - igt_spin_t *t = igt_spin_batch_new(dpy->drm_fd, - .engine = ring, - .dependency = busy_fb->gem_handle); + igt_spin_t *t = igt_spin_new(dpy->drm_fd, + .engine = ring, + .dependency = busy_fb->gem_handle); struct pollfd pfd = { .fd = dpy->drm_fd, .events = POLLIN }; unsigned flags = 0; struct drm_event_vblank ev; @@ -210,7 +210,7 @@ static void test_atomic_commit_hang(igt_display_t *dpy, igt_plane_t *primary, igt_assert(read(dpy->drm_fd, &ev, sizeof(ev)) == sizeof(ev)); - igt_spin_batch_end(t); + igt_spin_end(t); } static void test_hang(igt_display_t *dpy, unsigned ring, @@ -269,9 +269,9 @@ static void test_pageflip_modeset_hang(igt_display_t *dpy, igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY); - t = igt_spin_batch_new(dpy->drm_fd, - .engine = ring, - .dependency = fb.gem_handle); + t = igt_spin_new(dpy->drm_fd, + .engine = ring, + .dependency = fb.gem_handle); do_or_die(drmModePageFlip(dpy->drm_fd, dpy->pipes[pipe].crtc_id, fb.fb_id, DRM_MODE_PAGE_FLIP_EVENT, &fb)); @@ -282,7 +282,7 @@ static void test_pageflip_modeset_hang(igt_display_t *dpy, igt_assert(read(dpy->drm_fd, &ev, sizeof(ev)) == sizeof(ev)); - igt_spin_batch_end(t); + igt_spin_end(t); igt_remove_fb(dpy->drm_fd, &fb); } diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c index 9febf6e9..f8d5f631 100644 --- a/tests/kms_cursor_legacy.c +++ b/tests/kms_cursor_legacy.c @@ -534,8 +534,8 @@ static void basic_flip_cursor(igt_display_t *display, spin = NULL; if (flags & BASIC_BUSY) - spin = igt_spin_batch_new(display->drm_fd, - .dependency = fb_info.gem_handle); + spin = igt_spin_new(display->drm_fd, + .dependency = fb_info.gem_handle); /* Start with a synchronous query to align with the vblank */ vblank_start = get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS); @@ -580,7 +580,7 @@ static void basic_flip_cursor(igt_display_t *display, if (spin) { struct pollfd pfd = { display->drm_fd, POLLIN }; igt_assert(poll(&pfd, 1, 0) == 0); - igt_spin_batch_free(display->drm_fd, spin); + igt_spin_free(display->drm_fd, spin); } if (miss) @@ -1321,8 +1321,8 @@ static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic) for (int i = 1; i >= 0; i--) { igt_spin_t *spin; - spin = igt_spin_batch_new(display->drm_fd, - .dependency = fb_info[1].gem_handle); + spin = igt_spin_new(display->drm_fd, + .dependency = fb_info[1].gem_handle); vblank_start = get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS); @@ -1333,7 +1333,7 @@ static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic) igt_pipe_crc_get_current(display->drm_fd, pipe_crc, &test_crc); - igt_spin_batch_free(display->drm_fd, spin); + igt_spin_free(display->drm_fd, spin); igt_set_timeout(1, "Stuck page flip"); igt_ignore_warn(read(display->drm_fd, &vbl, sizeof(vbl))); diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c index 28f235b1..a8ad86ce 100644 --- a/tests/perf_pmu.c +++ b/tests/perf_pmu.c @@ -180,7 +180,7 @@ static igt_spin_t * __spin_poll(int fd, uint32_t ctx, unsigned long flags) if (gem_can_store_dword(fd, flags)) opts.flags |= IGT_SPIN_POLL_RUN; - return __igt_spin_batch_factory(fd, &opts); + return __igt_spin_factory(fd, &opts); } static unsigned long __spin_wait(int fd, igt_spin_t *spin) @@ -230,7 +230,7 @@ static void end_spin(int fd, igt_spin_t *spin, unsigned int flags) if (!spin) return; - igt_spin_batch_end(spin); + igt_spin_end(spin); if (flags & FLAG_SYNC) gem_sync(fd, spin->handle); @@ -296,7 +296,7 @@ single(int gem_fd, const struct intel_execution_engine2 *e, unsigned int flags) assert_within_epsilon(val, 0, tolerance); } - igt_spin_batch_free(gem_fd, spin); + igt_spin_free(gem_fd, spin); close(fd); gem_quiescent_gpu(gem_fd); @@ -325,7 +325,7 @@ busy_start(int gem_fd, const struct intel_execution_engine2 *e) val = __pmu_read_single(fd, &ts[1]) - val; igt_debug("slept=%lu perf=%"PRIu64"\n", slept, ts[1] - ts[0]); - igt_spin_batch_free(gem_fd, spin); + igt_spin_free(gem_fd, spin); close(fd); assert_within_epsilon(val, ts[1] - ts[0], tolerance); @@ -361,9 +361,9 @@ busy_double_start(int gem_fd, const struct intel_execution_engine2 *e) */ spin[0] = __spin_sync(gem_fd, 0, e2ring(gem_fd, e)); usleep(500e3); - spin[1] = __igt_spin_batch_new(gem_fd, - .ctx = ctx, - .engine = e2ring(gem_fd, e)); + spin[1] = __igt_spin_new(gem_fd, + .ctx = ctx, + .engine = e2ring(gem_fd, e)); /* * Open PMU as fast as possible after the second spin batch in attempt @@ -376,8 +376,8 @@ busy_double_start(int gem_fd, const struct intel_execution_engine2 *e) val = __pmu_read_single(fd, &ts[1]) - val; igt_debug("slept=%lu perf=%"PRIu64"\n", slept, ts[1] - ts[0]); - igt_spin_batch_end(spin[0]); - igt_spin_batch_end(spin[1]); + igt_spin_end(spin[0]); + igt_spin_end(spin[1]); /* Wait for GPU idle to verify PMU reports idle. */ gem_quiescent_gpu(gem_fd); @@ -388,8 +388,8 @@ busy_double_start(int gem_fd, const struct intel_execution_engine2 *e) igt_info("busy=%"PRIu64" idle=%"PRIu64"\n", val, val2); - igt_spin_batch_free(gem_fd, spin[0]); - igt_spin_batch_free(gem_fd, spin[1]); + igt_spin_free(gem_fd, spin[0]); + igt_spin_free(gem_fd, spin[1]); close(fd); @@ -453,7 +453,7 @@ busy_check_all(int gem_fd, const struct intel_execution_engine2 *e, pmu_read_multi(fd[0], num_engines, tval[1]); end_spin(gem_fd, spin, FLAG_SYNC); - igt_spin_batch_free(gem_fd, spin); + igt_spin_free(gem_fd, spin); close(fd[0]); for (i = 0; i < num_engines; i++) @@ -471,9 +471,9 @@ busy_check_all(int gem_fd, const struct intel_execution_engine2 *e, } static void -__submit_spin_batch(int gem_fd, igt_spin_t *spin, - const struct intel_execution_engine2 *e, - int offset) +__submit_spin(int gem_fd, igt_spin_t *spin, + const struct intel_execution_engine2 *e, + int offset) { struct drm_i915_gem_execbuffer2 eb = spin->execbuf; @@ -501,7 +501,7 @@ most_busy_check_all(int gem_fd, const struct intel_execution_engine2 *e, if (e == e_) idle_idx = i; else if (spin) - __submit_spin_batch(gem_fd, spin, e_, 64); + __submit_spin(gem_fd, spin, e_, 64); else spin = __spin_poll(gem_fd, 0, e2ring(gem_fd, e_)); @@ -524,7 +524,7 @@ most_busy_check_all(int gem_fd, const struct intel_execution_engine2 *e, pmu_read_multi(fd[0], num_engines, tval[1]); end_spin(gem_fd, spin, FLAG_SYNC); - igt_spin_batch_free(gem_fd, spin); + igt_spin_free(gem_fd, spin); close(fd[0]); for (i = 0; i < num_engines; i++) @@ -556,7 +556,7 @@ all_busy_check_all(int gem_fd, const unsigned int num_engines, i = 0; for_each_engine_class_instance(gem_fd, e) { if (spin) - __submit_spin_batch(gem_fd, spin, e, 64); + __submit_spin(gem_fd, spin, e, 64); else spin = __spin_poll(gem_fd, 0, e2ring(gem_fd, e)); @@ -578,7 +578,7 @@ all_busy_check_all(int gem_fd, const unsigned int num_engines, pmu_read_multi(fd[0], num_engines, tval[1]); end_spin(gem_fd, spin, FLAG_SYNC); - igt_spin_batch_free(gem_fd, spin); + igt_spin_free(gem_fd, spin); close(fd[0]); for (i = 0; i < num_engines; i++) @@ -617,7 +617,7 @@ no_sema(int gem_fd, const struct intel_execution_engine2 *e, unsigned int flags) if (spin) { end_spin(gem_fd, spin, FLAG_SYNC); - igt_spin_batch_free(gem_fd, spin); + igt_spin_free(gem_fd, spin); } close(fd); @@ -950,9 +950,9 @@ multi_client(int gem_fd, const struct intel_execution_engine2 *e) perf_slept[0] = ts[1] - ts[0]; igt_debug("slept=%lu perf=%"PRIu64"\n", slept[0], perf_slept[0]); - igt_spin_batch_end(spin); + igt_spin_end(spin); gem_sync(gem_fd, spin->handle); - igt_spin_batch_free(gem_fd, spin); + igt_spin_free(gem_fd, spin); close(fd[0]); assert_within_epsilon(val[0], perf_slept[0], tolerance); @@ -1052,8 +1052,8 @@ static void cpu_hotplug(int gem_fd) * Create two spinners so test can ensure shorter gaps in engine * busyness as it is terminating one and re-starting the other. */ - spin[0] = igt_spin_batch_new(gem_fd, .engine = I915_EXEC_RENDER); - spin[1] = __igt_spin_batch_new(gem_fd, .engine = I915_EXEC_RENDER); + spin[0] = igt_spin_new(gem_fd, .engine = I915_EXEC_RENDER); + spin[1] = __igt_spin_new(gem_fd, .engine = I915_EXEC_RENDER); val = __pmu_read_single(fd, &ts[0]); @@ -1135,9 +1135,9 @@ static void cpu_hotplug(int gem_fd) if ( ret == 1 || (ret < 0 && errno != EAGAIN)) break; - igt_spin_batch_free(gem_fd, spin[cur]); - spin[cur] = __igt_spin_batch_new(gem_fd, - .engine = I915_EXEC_RENDER); + igt_spin_free(gem_fd, spin[cur]); + spin[cur] = __igt_spin_new(gem_fd, + .engine = I915_EXEC_RENDER); cur ^= 1; } @@ -1145,8 +1145,8 @@ static void cpu_hotplug(int gem_fd) end_spin(gem_fd, spin[0], FLAG_SYNC); end_spin(gem_fd, spin[1], FLAG_SYNC); - igt_spin_batch_free(gem_fd, spin[0]); - igt_spin_batch_free(gem_fd, spin[1]); + igt_spin_free(gem_fd, spin[0]); + igt_spin_free(gem_fd, spin[1]); igt_waitchildren(); close(fd); close(link[0]); @@ -1174,9 +1174,9 @@ test_interrupts(int gem_fd) /* Queue spinning batches. */ for (int i = 0; i < target; i++) { - spin[i] = __igt_spin_batch_new(gem_fd, - .engine = I915_EXEC_RENDER, - .flags = IGT_SPIN_FENCE_OUT); + spin[i] = __igt_spin_new(gem_fd, + .engine = I915_EXEC_RENDER, + .flags = IGT_SPIN_FENCE_OUT); if (i == 0) { fence_fd = spin[i]->out_fence; } else { @@ -1200,9 +1200,9 @@ test_interrupts(int gem_fd) /* Arm batch expiration. */ for (int i = 0; i < target; i++) - igt_spin_batch_set_timeout(spin[i], - (i + 1) * test_duration_ms * 1e6 - / target); + igt_spin_set_timeout(spin[i], + (i + 1) * test_duration_ms * 1e6 + / target); /* Wait for last batch to finish. */ pfd.events = POLLIN; @@ -1212,7 +1212,7 @@ test_interrupts(int gem_fd) /* Free batches. */ for (int i = 0; i < target; i++) - igt_spin_batch_free(gem_fd, spin[i]); + igt_spin_free(gem_fd, spin[i]); /* Check at least as many interrupts has been generated. */ busy = pmu_read_single(fd) - idle; @@ -1237,8 +1237,8 @@ test_interrupts_sync(int gem_fd) /* Queue spinning batches. */ for (int i = 0; i < target; i++) - spin[i] = __igt_spin_batch_new(gem_fd, - .flags = IGT_SPIN_FENCE_OUT); + spin[i] = __igt_spin_new(gem_fd, + .flags = IGT_SPIN_FENCE_OUT); /* Wait for idle state. */ idle = pmu_read_single(fd); @@ -1254,9 +1254,9 @@ test_interrupts_sync(int gem_fd) const unsigned int timeout_ms = test_duration_ms / target; pfd.fd = spin[i]->out_fence; - igt_spin_batch_set_timeout(spin[i], timeout_ms * 1e6); + igt_spin_set_timeout(spin[i], timeout_ms * 1e6); igt_assert_eq(poll(&pfd, 1, 2 * timeout_ms), 1); - igt_spin_batch_free(gem_fd, spin[i]); + igt_spin_free(gem_fd, spin[i]); } /* Check at least as many interrupts has been generated. */ @@ -1310,7 +1310,7 @@ test_frequency(int gem_fd) min[0] = 1e9*(val[0] - start[0]) / slept; min[1] = 1e9*(val[1] - start[1]) / slept; - igt_spin_batch_free(gem_fd, spin); + igt_spin_free(gem_fd, spin); gem_quiescent_gpu(gem_fd); /* Don't leak busy bo into the next phase */ usleep(1e6); @@ -1336,7 +1336,7 @@ test_frequency(int gem_fd) max[0] = 1e9*(val[0] - start[0]) / slept; max[1] = 1e9*(val[1] - start[1]) / slept; - igt_spin_batch_free(gem_fd, spin); + igt_spin_free(gem_fd, spin); gem_quiescent_gpu(gem_fd); /* @@ -1501,7 +1501,7 @@ test_enable_race(int gem_fd, const struct intel_execution_engine2 *e) gem_quiescent_gpu(gem_fd); } -static void __rearm_spin_batch(igt_spin_t *spin) +static void __rearm_spin(igt_spin_t *spin) { const uint32_t mi_arb_chk = 0x5 << 23; @@ -1570,8 +1570,8 @@ accuracy(int gem_fd, const struct intel_execution_engine2 *e, igt_spin_t *spin; /* Allocate our spin batch and idle it. */ - spin = igt_spin_batch_new(gem_fd, .engine = e2ring(gem_fd, e)); - igt_spin_batch_end(spin); + spin = igt_spin_new(gem_fd, .engine = e2ring(gem_fd, e)); + igt_spin_end(spin); gem_sync(gem_fd, spin->handle); /* 1st pass is calibration, second pass is the test. */ @@ -1596,14 +1596,14 @@ accuracy(int gem_fd, const struct intel_execution_engine2 *e, nanosleep(&_ts, NULL); /* Restart the spinbatch. */ - __rearm_spin_batch(spin); - __submit_spin_batch(gem_fd, spin, e, 0); + __rearm_spin(spin); + __submit_spin(gem_fd, spin, e, 0); /* PWM busy sleep. */ loop_busy = igt_nsec_elapsed(&start); _ts.tv_nsec = busy_us * 1000; nanosleep(&_ts, NULL); - igt_spin_batch_end(spin); + igt_spin_end(spin); /* Time accounting. */ now = igt_nsec_elapsed(&start); @@ -1640,7 +1640,7 @@ accuracy(int gem_fd, const struct intel_execution_engine2 *e, write(link[1], &expected, sizeof(expected)); } - igt_spin_batch_free(gem_fd, spin); + igt_spin_free(gem_fd, spin); } fd = open_pmu(I915_PMU_ENGINE_BUSY(e->class, e->instance)); -- 2.17.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH i-g-t 2/3] lib/igt_dummyload: Get rid of 'batch' on spinner accessors 2019-04-17 15:28 ` [PATCH i-g-t 2/3] lib/igt_dummyload: Get rid of 'batch' on spinner accessors Mika Kuoppala @ 2019-04-17 20:04 ` Chris Wilson 0 siblings, 0 replies; 19+ messages in thread From: Chris Wilson @ 2019-04-17 20:04 UTC (permalink / raw) To: Mika Kuoppala, intel-gfx Quoting Mika Kuoppala (2019-04-17 16:28:33) > There is no guarantee that spinners are and will be implemented > using batches. As we have igt_spin_t, manipulate it through > igt_spin_* functions consistently and hide the batch nature. > > Cc: Chris Wilson <chris@chris-wilson.co.uk> > Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH i-g-t 3/3] lib/igt_dummyload: Introduce igt_spin_reset 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala 2019-04-17 15:28 ` [PATCH i-g-t 2/3] lib/igt_dummyload: Get rid of 'batch' on spinner accessors Mika Kuoppala @ 2019-04-17 15:28 ` Mika Kuoppala 2019-04-17 20:06 ` Chris Wilson 2019-04-17 15:37 ` [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Chris Wilson ` (8 subsequent siblings) 10 siblings, 1 reply; 19+ messages in thread From: Mika Kuoppala @ 2019-04-17 15:28 UTC (permalink / raw) To: intel-gfx Libify resetting a spin for reuse. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> --- lib/igt_dummyload.c | 20 ++++++++++++++++++++ lib/igt_dummyload.h | 2 ++ tests/i915/gem_exec_latency.c | 19 ++++--------------- tests/i915/gem_sync.c | 34 ++++++++++++++-------------------- 4 files changed, 40 insertions(+), 35 deletions(-) diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c index b9d54450..90223828 100644 --- a/lib/igt_dummyload.c +++ b/lib/igt_dummyload.c @@ -268,6 +268,8 @@ emit_recursive_batch(igt_spin_t *spin, obj[SCRATCH].flags = EXEC_OBJECT_PINNED; obj[BATCH].flags = EXEC_OBJECT_PINNED; + spin->cmd_spin = *spin->batch; + return fence_fd; } @@ -374,6 +376,24 @@ void igt_spin_set_timeout(igt_spin_t *spin, int64_t ns) spin->timer = timer; } +/** + * igt_spin_reset: + * @spin: spin state from igt_spin_new() + * + * Reset the state of spin, allowing its reuse. + */ +void igt_spin_reset(igt_spin_t *spin) +{ + if (!spin) + return; + + if (igt_spin_has_poll(spin)) + spin->poll[SPIN_POLL_START_IDX] = 0; + + *spin->batch = spin->cmd_spin; + __sync_synchronize(); +} + /** * igt_spin_end: * @spin: spin state from igt_spin_new() diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h index d6482089..d7b1be91 100644 --- a/lib/igt_dummyload.h +++ b/lib/igt_dummyload.h @@ -37,6 +37,7 @@ typedef struct igt_spin { timer_t timer; struct igt_list link; uint32_t *batch; + uint32_t cmd_spin; int out_fence; struct drm_i915_gem_exec_object2 obj[2]; struct drm_i915_gem_execbuffer2 execbuf; @@ -68,6 +69,7 @@ igt_spin_factory(int fd, const struct igt_spin_factory *opts); igt_spin_factory(fd, &((struct igt_spin_factory){__VA_ARGS__})) void igt_spin_set_timeout(igt_spin_t *spin, int64_t ns); +void igt_spin_reset(igt_spin_t *spin); void igt_spin_end(igt_spin_t *spin); void igt_spin_free(int fd, igt_spin_t *spin); diff --git a/tests/i915/gem_exec_latency.c b/tests/i915/gem_exec_latency.c index 6b7dfbc0..2cfb78bf 100644 --- a/tests/i915/gem_exec_latency.c +++ b/tests/i915/gem_exec_latency.c @@ -73,19 +73,17 @@ poll_ring(int fd, unsigned ring, const char *name) unsigned long cycles; igt_spin_t *spin[2]; uint64_t elapsed; - uint32_t cmd; gem_require_ring(fd, ring); igt_require(gem_can_store_dword(fd, ring)); spin[0] = __igt_spin_factory(fd, &opts); igt_assert(igt_spin_has_poll(spin[0])); - cmd = *spin[0]->batch; spin[1] = __igt_spin_factory(fd, &opts); igt_assert(igt_spin_has_poll(spin[1])); - igt_assert(cmd == *spin[1]->batch); + igt_assert(*spin[0]->batch == *spin[1]->batch); igt_spin_end(spin[0]); igt_spin_busywait_until_started(spin[1]); @@ -96,8 +94,8 @@ poll_ring(int fd, unsigned ring, const char *name) while ((elapsed = igt_nsec_elapsed(&tv)) < 2ull << 30) { const unsigned int idx = cycles++ & 1; - *spin[idx]->batch = cmd; - spin[idx]->poll[SPIN_POLL_START_IDX] = 0; + igt_spin_reset(spin[idx]); + gem_execbuf(fd, &spin[idx]->execbuf); igt_spin_end(spin[!idx]); @@ -414,15 +412,6 @@ static void latency_from_ring(int fd, } } -static void __rearm_spin(igt_spin_t *spin) -{ - const uint32_t mi_arb_chk = 0x5 << 23; - - *spin->batch = mi_arb_chk; - spin->poll[SPIN_POLL_START_IDX] = 0; - __sync_synchronize(); -} - static void __submit_spin(int fd, igt_spin_t *spin, unsigned int flags) { @@ -557,7 +546,7 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in if (nengine > 1) usleep(10*nengine); - __rearm_spin(spin); + igt_spin_reset(spin); igt_nsec_elapsed(&ts); __submit_spin(fd, spin, engine); diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c index f17ecd0b..8c5aaa14 100644 --- a/tests/i915/gem_sync.c +++ b/tests/i915/gem_sync.c @@ -209,7 +209,6 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) struct drm_i915_gem_execbuffer2 execbuf; double end, this, elapsed, now, baseline; unsigned long cycles; - uint32_t cmd; igt_spin_t *spin; memset(&object, 0, sizeof(object)); @@ -226,7 +225,6 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) .flags = (IGT_SPIN_POLL_RUN | IGT_SPIN_FAST)); igt_assert(igt_spin_has_poll(spin)); - cmd = *spin->batch; gem_execbuf(fd, &execbuf); @@ -238,8 +236,8 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) elapsed = 0; cycles = 0; do { - *spin->batch = cmd; - spin->poll[SPIN_POLL_START_IDX] = 0; + igt_spin_reset(spin); + gem_execbuf(fd, &spin->execbuf); igt_spin_busywait_until_started(spin); @@ -262,8 +260,8 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) elapsed = 0; cycles = 0; do { - *spin->batch = cmd; - spin->poll[SPIN_POLL_START_IDX] = 0; + igt_spin_reset(spin); + gem_execbuf(fd, &spin->execbuf); igt_spin_busywait_until_started(spin); @@ -321,17 +319,14 @@ static void active_ring(int fd, unsigned ring, int timeout) double start, end, elapsed; unsigned long cycles; igt_spin_t *spin[2]; - uint32_t cmd; spin[0] = __igt_spin_new(fd, .engine = ring, .flags = IGT_SPIN_FAST); - cmd = *spin[0]->batch; spin[1] = __igt_spin_new(fd, .engine = ring, .flags = IGT_SPIN_FAST); - igt_assert(*spin[1]->batch == cmd); start = gettime(); end = start + timeout; @@ -343,7 +338,8 @@ static void active_ring(int fd, unsigned ring, int timeout) igt_spin_end(s); gem_sync(fd, s->handle); - *s->batch = cmd; + igt_spin_reset(s); + gem_execbuf(fd, &s->execbuf); } cycles += 1024; @@ -393,7 +389,6 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) double end, this, elapsed, now, baseline; unsigned long cycles; igt_spin_t *spin[2]; - uint32_t cmd; memset(&object, 0, sizeof(object)); object.handle = gem_create(fd, 4096); @@ -409,7 +404,6 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) .flags = (IGT_SPIN_POLL_RUN | IGT_SPIN_FAST)); igt_assert(igt_spin_has_poll(spin[0])); - cmd = *spin[0]->batch; spin[1] = __igt_spin_new(fd, .engine = execbuf.flags, @@ -423,8 +417,8 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) gem_sync(fd, object.handle); for (int warmup = 0; warmup <= 1; warmup++) { - *spin[0]->batch = cmd; - spin[0]->poll[SPIN_POLL_START_IDX] = 0; + igt_spin_reset(spin[0]); + gem_execbuf(fd, &spin[0]->execbuf); end = gettime() + timeout/10.; @@ -433,8 +427,8 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) do { igt_spin_busywait_until_started(spin[0]); - *spin[1]->batch = cmd; - spin[1]->poll[SPIN_POLL_START_IDX] = 0; + igt_spin_reset(spin[1]); + gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); @@ -454,8 +448,8 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) names[child % num_engines] ? " b" : "B", cycles, elapsed*1e6/cycles); - *spin[0]->batch = cmd; - spin[0]->poll[SPIN_POLL_START_IDX] = 0; + igt_spin_reset(spin[0]); + gem_execbuf(fd, &spin[0]->execbuf); end = gettime() + timeout; @@ -467,8 +461,8 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) for (int n = 0; n < wlen; n++) gem_execbuf(fd, &execbuf); - *spin[1]->batch = cmd; - spin[1]->poll[SPIN_POLL_START_IDX] = 0; + igt_spin_reset(spin[1]); + gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); -- 2.17.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH i-g-t 3/3] lib/igt_dummyload: Introduce igt_spin_reset 2019-04-17 15:28 ` [PATCH i-g-t 3/3] lib/igt_dummyload: Introduce igt_spin_reset Mika Kuoppala @ 2019-04-17 20:06 ` Chris Wilson 0 siblings, 0 replies; 19+ messages in thread From: Chris Wilson @ 2019-04-17 20:06 UTC (permalink / raw) To: Mika Kuoppala, intel-gfx Quoting Mika Kuoppala (2019-04-17 16:28:34) > Libify resetting a spin for reuse. > > Cc: Chris Wilson <chris@chris-wilson.co.uk> > Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala 2019-04-17 15:28 ` [PATCH i-g-t 2/3] lib/igt_dummyload: Get rid of 'batch' on spinner accessors Mika Kuoppala 2019-04-17 15:28 ` [PATCH i-g-t 3/3] lib/igt_dummyload: Introduce igt_spin_reset Mika Kuoppala @ 2019-04-17 15:37 ` Chris Wilson 2019-04-17 15:54 ` Mika Kuoppala 2019-04-17 16:15 ` ✓ Fi.CI.BAT: success for series starting with [1/3] " Patchwork ` (7 subsequent siblings) 10 siblings, 1 reply; 19+ messages in thread From: Chris Wilson @ 2019-04-17 15:37 UTC (permalink / raw) To: Mika Kuoppala, intel-gfx Quoting Mika Kuoppala (2019-04-17 16:28:32) > Instead of opencoding the poll into the spinner, use > a helper to check if spinner has started. > > Cc: Chris Wilson <chris@chris-wilson.co.uk> > Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> > --- > lib/igt_dummyload.c | 35 +++++++++++++++++++--------------- > lib/igt_dummyload.h | 17 ++++++++++++++--- > tests/i915/gem_ctx_exec.c | 4 +--- > tests/i915/gem_ctx_isolation.c | 4 ++-- > tests/i915/gem_eio.c | 4 ++-- > tests/i915/gem_exec_latency.c | 22 ++++++++++----------- > tests/i915/gem_exec_schedule.c | 5 ++--- > tests/i915/gem_sync.c | 28 ++++++++++++--------------- > tests/perf_pmu.c | 4 ++-- > 9 files changed, 66 insertions(+), 57 deletions(-) > > diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c > index 47f6b92b..49b69737 100644 > --- a/lib/igt_dummyload.c > +++ b/lib/igt_dummyload.c > @@ -67,11 +67,13 @@ static pthread_mutex_t list_lock = PTHREAD_MUTEX_INITIALIZER; > > static void > fill_reloc(struct drm_i915_gem_relocation_entry *reloc, > - uint32_t gem_handle, uint32_t offset, > + uint32_t gem_handle, uint32_t offset, uint32_t delta, > uint32_t read_domains, uint32_t write_domains) > { > + reloc->presumed_offset = -1; This is wrong, we do use the presumed_offset of 0. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation 2019-04-17 15:37 ` [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Chris Wilson @ 2019-04-17 15:54 ` Mika Kuoppala 2019-04-17 16:00 ` Chris Wilson 0 siblings, 1 reply; 19+ messages in thread From: Mika Kuoppala @ 2019-04-17 15:54 UTC (permalink / raw) To: intel-gfx Instead of opencoding the poll into the spinner, use a helper to check if spinner has started. v2: use zero as presumed offset (Chris) Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> --- lib/igt_dummyload.c | 35 +++++++++++++++++++--------------- lib/igt_dummyload.h | 17 ++++++++++++++--- tests/i915/gem_ctx_exec.c | 4 +--- tests/i915/gem_ctx_isolation.c | 4 ++-- tests/i915/gem_eio.c | 4 ++-- tests/i915/gem_exec_latency.c | 22 ++++++++++----------- tests/i915/gem_exec_schedule.c | 5 ++--- tests/i915/gem_sync.c | 28 ++++++++++++--------------- tests/perf_pmu.c | 4 ++-- 9 files changed, 66 insertions(+), 57 deletions(-) diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c index 47f6b92b..064a0246 100644 --- a/lib/igt_dummyload.c +++ b/lib/igt_dummyload.c @@ -67,11 +67,13 @@ static pthread_mutex_t list_lock = PTHREAD_MUTEX_INITIALIZER; static void fill_reloc(struct drm_i915_gem_relocation_entry *reloc, - uint32_t gem_handle, uint32_t offset, + uint32_t gem_handle, uint32_t offset, uint32_t delta, uint32_t read_domains, uint32_t write_domains) { + reloc->presumed_offset = 0; reloc->target_handle = gem_handle; reloc->offset = offset * sizeof(uint32_t); + reloc->delta = delta * sizeof(uint32_t); reloc->read_domains = read_domains; reloc->write_domain = write_domains; } @@ -131,11 +133,13 @@ emit_recursive_batch(igt_spin_t *spin, /* dummy write to dependency */ obj[SCRATCH].handle = opts->dependency; fill_reloc(&relocs[obj[BATCH].relocation_count++], - opts->dependency, 1020, + opts->dependency, 1020, 0, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER); execbuf->buffer_count++; } else if (opts->flags & IGT_SPIN_POLL_RUN) { + const unsigned int start_idx_offset = + SPIN_POLL_START_IDX * sizeof(uint32_t); unsigned int offset; igt_assert(!opts->dependency); @@ -149,36 +153,37 @@ emit_recursive_batch(igt_spin_t *spin, if (__gem_set_caching(fd, spin->poll_handle, I915_CACHING_CACHED) == 0) - spin->running = gem_mmap__cpu(fd, spin->poll_handle, - 0, 4096, - PROT_READ | PROT_WRITE); + spin->poll = gem_mmap__cpu(fd, spin->poll_handle, + 0, 4096, + PROT_READ | PROT_WRITE); else - spin->running = gem_mmap__wc(fd, spin->poll_handle, - 0, 4096, - PROT_READ | PROT_WRITE); - igt_assert_eq(*spin->running, 0); + spin->poll = gem_mmap__wc(fd, spin->poll_handle, + 0, 4096, + PROT_READ | PROT_WRITE); + igt_assert_eq(spin->poll[SPIN_POLL_START_IDX], 0); *batch++ = MI_STORE_DWORD_IMM | (gen < 6 ? 1 << 22 : 0); if (gen >= 8) { offset = 1; - *batch++ = 0; + *batch++ = start_idx_offset; *batch++ = 0; } else if (gen >= 4) { offset = 2; *batch++ = 0; - *batch++ = 0; + *batch++ = start_idx_offset; } else { offset = 1; batch[-1]--; - *batch++ = 0; + *batch++ = start_idx_offset; } *batch++ = 1; obj[SCRATCH].handle = spin->poll_handle; fill_reloc(&relocs[obj[BATCH].relocation_count++], - spin->poll_handle, offset, 0, 0); + spin->poll_handle, offset, + SPIN_POLL_START_IDX, 0, 0); execbuf->buffer_count++; } @@ -408,8 +413,8 @@ void igt_spin_batch_free(int fd, igt_spin_t *spin) gem_munmap((void *)((unsigned long)spin->batch & (~4095UL)), BATCH_SIZE); - if (spin->running) { - gem_munmap(spin->running, 4096); + if (spin->poll) { + gem_munmap(spin->poll, 4096); gem_close(fd, spin->poll_handle); } diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h index 73bd035b..3793bf7f 100644 --- a/lib/igt_dummyload.h +++ b/lib/igt_dummyload.h @@ -41,7 +41,8 @@ typedef struct igt_spin { struct drm_i915_gem_exec_object2 obj[2]; struct drm_i915_gem_execbuffer2 execbuf; uint32_t poll_handle; - bool *running; + uint32_t *poll; +#define SPIN_POLL_START_IDX 0 } igt_spin_t; struct igt_spin_factory { @@ -70,9 +71,19 @@ void igt_spin_batch_set_timeout(igt_spin_t *spin, int64_t ns); void igt_spin_batch_end(igt_spin_t *spin); void igt_spin_batch_free(int fd, igt_spin_t *spin); -static inline void igt_spin_busywait_until_running(igt_spin_t *spin) +static inline bool igt_spin_has_poll(const igt_spin_t *spin) { - while (!READ_ONCE(*spin->running)) + return spin->poll; +} + +static inline bool igt_spin_has_started(igt_spin_t *spin) +{ + return READ_ONCE(spin->poll[SPIN_POLL_START_IDX]); +} + +static inline void igt_spin_busywait_until_started(igt_spin_t *spin) +{ + while (!igt_spin_has_started(spin)) ; } diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c index d67d0ec2..f37e6f28 100644 --- a/tests/i915/gem_ctx_exec.c +++ b/tests/i915/gem_ctx_exec.c @@ -181,10 +181,8 @@ static void norecovery(int i915) spin = __igt_spin_batch_new(i915, .ctx = param.ctx_id, .flags = IGT_SPIN_POLL_RUN); - igt_assert(spin->running); + igt_spin_busywait_until_started(spin); - while (!READ_ONCE(*spin->running)) - ; igt_force_gpu_reset(i915); igt_spin_batch_end(spin); diff --git a/tests/i915/gem_ctx_isolation.c b/tests/i915/gem_ctx_isolation.c index f1000458..bed71c2b 100644 --- a/tests/i915/gem_ctx_isolation.c +++ b/tests/i915/gem_ctx_isolation.c @@ -704,8 +704,8 @@ static void inject_reset_context(int fd, unsigned int engine) spin = __igt_spin_batch_factory(fd, &opts); - if (spin->running) - igt_spin_busywait_until_running(spin); + if (igt_spin_has_poll(spin)) + igt_spin_busywait_until_started(spin); else usleep(1000); /* better than nothing */ diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c index 29250852..07bbdeb1 100644 --- a/tests/i915/gem_eio.c +++ b/tests/i915/gem_eio.c @@ -186,8 +186,8 @@ static igt_spin_t * __spin_poll(int fd, uint32_t ctx, unsigned long flags) static void __spin_wait(int fd, igt_spin_t *spin) { - if (spin->running) { - igt_spin_busywait_until_running(spin); + if (igt_spin_has_poll(spin)) { + igt_spin_busywait_until_started(spin); } else { igt_debug("__spin_wait - usleep mode\n"); usleep(500e3); /* Better than nothing! */ diff --git a/tests/i915/gem_exec_latency.c b/tests/i915/gem_exec_latency.c index 39f441d2..fc1040c3 100644 --- a/tests/i915/gem_exec_latency.c +++ b/tests/i915/gem_exec_latency.c @@ -79,29 +79,29 @@ poll_ring(int fd, unsigned ring, const char *name) igt_require(gem_can_store_dword(fd, ring)); spin[0] = __igt_spin_batch_factory(fd, &opts); - igt_assert(spin[0]->running); + igt_assert(igt_spin_has_poll(spin[0])); cmd = *spin[0]->batch; spin[1] = __igt_spin_batch_factory(fd, &opts); - igt_assert(spin[1]->running); + igt_assert(igt_spin_has_poll(spin[1])); + igt_assert(cmd == *spin[1]->batch); igt_spin_batch_end(spin[0]); - while (!READ_ONCE(*spin[1]->running)) - ; + igt_spin_busywait_until_started(spin[1]); + igt_assert(!gem_bo_busy(fd, spin[0]->handle)); cycles = 0; while ((elapsed = igt_nsec_elapsed(&tv)) < 2ull << 30) { - unsigned int idx = cycles++ & 1; + const unsigned int idx = cycles++ & 1; *spin[idx]->batch = cmd; - *spin[idx]->running = 0; + spin[idx]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[idx]->execbuf); igt_spin_batch_end(spin[!idx]); - while (!READ_ONCE(*spin[idx]->running)) - ; + igt_spin_busywait_until_started(spin[idx]); } igt_info("%s completed %ld cycles: %.3f us\n", @@ -419,7 +419,7 @@ static void __rearm_spin_batch(igt_spin_t *spin) const uint32_t mi_arb_chk = 0x5 << 23; *spin->batch = mi_arb_chk; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; __sync_synchronize(); } @@ -441,7 +441,7 @@ struct rt_pkt { static bool __spin_wait(int fd, igt_spin_t *spin) { - while (!READ_ONCE(*spin->running)) { + while (!igt_spin_has_started(spin)) { if (!gem_bo_busy(fd, spin->handle)) return false; } @@ -537,7 +537,7 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in passname[pass]); break; } - igt_spin_busywait_until_running(spin); + igt_spin_busywait_until_started(spin); igt_until_timeout(pass > 0 ? 5 : 2) { struct timespec ts = { }; diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c index 6f3f52d2..718a1935 100644 --- a/tests/i915/gem_exec_schedule.c +++ b/tests/i915/gem_exec_schedule.c @@ -436,7 +436,7 @@ static void semaphore_codependency(int i915) .ctx = ctx, .engine = engine, .flags = IGT_SPIN_POLL_RUN); - igt_spin_busywait_until_running(task[i].xcs); + igt_spin_busywait_until_started(task[i].xcs); /* Common rcs tasks will be queued in FIFO */ task[i].rcs = @@ -1361,8 +1361,7 @@ static void measure_semaphore_power(int i915) .engine = signaler, .flags = IGT_SPIN_POLL_RUN); gem_wait(i915, spin->handle, &jiffie); /* waitboost */ - igt_assert(spin->running); - igt_spin_busywait_until_running(spin); + igt_spin_busywait_until_started(spin); gpu_power_read(&power, &s_spin[0]); usleep(100*1000); diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c index 3e4feff3..0a0ed2a1 100644 --- a/tests/i915/gem_sync.c +++ b/tests/i915/gem_sync.c @@ -225,7 +225,7 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) .engine = execbuf.flags, .flags = (IGT_SPIN_POLL_RUN | IGT_SPIN_FAST)); - igt_assert(spin->running); + igt_assert(igt_spin_has_poll(spin)); cmd = *spin->batch; gem_execbuf(fd, &execbuf); @@ -239,10 +239,9 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles = 0; do { *spin->batch = cmd; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin->execbuf); - while (!READ_ONCE(*spin->running)) - ; + igt_spin_busywait_until_started(spin); this = gettime(); igt_spin_batch_end(spin); @@ -264,10 +263,9 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles = 0; do { *spin->batch = cmd; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin->execbuf); - while (!READ_ONCE(*spin->running)) - ; + igt_spin_busywait_until_started(spin); for (int n = 0; n < wlen; n++) gem_execbuf(fd, &execbuf); @@ -410,7 +408,7 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) .engine = execbuf.flags, .flags = (IGT_SPIN_POLL_RUN | IGT_SPIN_FAST)); - igt_assert(spin[0]->running); + igt_assert(igt_spin_has_poll(spin[0])); cmd = *spin[0]->batch; spin[1] = __igt_spin_batch_new(fd, @@ -426,18 +424,17 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) for (int warmup = 0; warmup <= 1; warmup++) { *spin[0]->batch = cmd; - *spin[0]->running = 0; + spin[0]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[0]->execbuf); end = gettime() + timeout/10.; elapsed = 0; cycles = 0; do { - while (!READ_ONCE(*spin[0]->running)) - ; + igt_spin_busywait_until_started(spin[0]); *spin[1]->batch = cmd; - *spin[1]->running = 0; + spin[1]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); @@ -458,21 +455,20 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles, elapsed*1e6/cycles); *spin[0]->batch = cmd; - *spin[0]->running = 0; + spin[0]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[0]->execbuf); end = gettime() + timeout; elapsed = 0; cycles = 0; do { - while (!READ_ONCE(*spin[0]->running)) - ; + igt_spin_busywait_until_started(spin[0]); for (int n = 0; n < wlen; n++) gem_execbuf(fd, &execbuf); *spin[1]->batch = cmd; - *spin[1]->running = 0; + spin[1]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c index 4f552bc2..28f235b1 100644 --- a/tests/perf_pmu.c +++ b/tests/perf_pmu.c @@ -189,10 +189,10 @@ static unsigned long __spin_wait(int fd, igt_spin_t *spin) igt_nsec_elapsed(&start); - if (spin->running) { + if (igt_spin_has_poll(spin)) { unsigned long timeout = 0; - while (!READ_ONCE(*spin->running)) { + while (!igt_spin_has_started(spin)) { unsigned long t = igt_nsec_elapsed(&start); if ((t - timeout) > 250e6) { -- 2.17.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation 2019-04-17 15:54 ` Mika Kuoppala @ 2019-04-17 16:00 ` Chris Wilson 2019-04-17 16:43 ` Mika Kuoppala 0 siblings, 1 reply; 19+ messages in thread From: Chris Wilson @ 2019-04-17 16:00 UTC (permalink / raw) To: Mika Kuoppala, intel-gfx Quoting Mika Kuoppala (2019-04-17 16:54:56) > Instead of opencoding the poll into the spinner, use > a helper to check if spinner has started. > > v2: use zero as presumed offset (Chris) > > Cc: Chris Wilson <chris@chris-wilson.co.uk> > Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> > --- > lib/igt_dummyload.c | 35 +++++++++++++++++++--------------- > lib/igt_dummyload.h | 17 ++++++++++++++--- > tests/i915/gem_ctx_exec.c | 4 +--- > tests/i915/gem_ctx_isolation.c | 4 ++-- > tests/i915/gem_eio.c | 4 ++-- > tests/i915/gem_exec_latency.c | 22 ++++++++++----------- > tests/i915/gem_exec_schedule.c | 5 ++--- > tests/i915/gem_sync.c | 28 ++++++++++++--------------- > tests/perf_pmu.c | 4 ++-- > 9 files changed, 66 insertions(+), 57 deletions(-) > > diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c > index 47f6b92b..064a0246 100644 > --- a/lib/igt_dummyload.c > +++ b/lib/igt_dummyload.c > @@ -67,11 +67,13 @@ static pthread_mutex_t list_lock = PTHREAD_MUTEX_INITIALIZER; > > static void > fill_reloc(struct drm_i915_gem_relocation_entry *reloc, > - uint32_t gem_handle, uint32_t offset, > + uint32_t gem_handle, uint32_t offset, uint32_t delta, > uint32_t read_domains, uint32_t write_domains) > { > + reloc->presumed_offset = 0; > reloc->target_handle = gem_handle; > reloc->offset = offset * sizeof(uint32_t); > + reloc->delta = delta * sizeof(uint32_t); > reloc->read_domains = read_domains; > reloc->write_domain = write_domains; If you are going to do this, do it right and return reloc->presumed_offset + reloc->delta; and use that to fill the batch. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation 2019-04-17 16:00 ` Chris Wilson @ 2019-04-17 16:43 ` Mika Kuoppala 2019-04-17 20:04 ` Chris Wilson 0 siblings, 1 reply; 19+ messages in thread From: Mika Kuoppala @ 2019-04-17 16:43 UTC (permalink / raw) To: intel-gfx Instead of opencoding the poll into the spinner, use a helper to check if spinner has started. v2: use zero as presumed offset (Chris) v3: cleanup the relocs (Chris) Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> --- lib/igt_dummyload.c | 66 +++++++++++++++++----------------- lib/igt_dummyload.h | 17 +++++++-- tests/i915/gem_ctx_exec.c | 4 +-- tests/i915/gem_ctx_isolation.c | 4 +-- tests/i915/gem_eio.c | 4 +-- tests/i915/gem_exec_latency.c | 22 ++++++------ tests/i915/gem_exec_schedule.c | 5 ++- tests/i915/gem_sync.c | 28 +++++++-------- tests/perf_pmu.c | 4 +-- 9 files changed, 78 insertions(+), 76 deletions(-) diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c index 47f6b92b..ab06b632 100644 --- a/lib/igt_dummyload.c +++ b/lib/igt_dummyload.c @@ -65,17 +65,6 @@ static const int BATCH_SIZE = 4096; static IGT_LIST(spin_list); static pthread_mutex_t list_lock = PTHREAD_MUTEX_INITIALIZER; -static void -fill_reloc(struct drm_i915_gem_relocation_entry *reloc, - uint32_t gem_handle, uint32_t offset, - uint32_t read_domains, uint32_t write_domains) -{ - reloc->target_handle = gem_handle; - reloc->offset = offset * sizeof(uint32_t); - reloc->read_domains = read_domains; - reloc->write_domain = write_domains; -} - static int emit_recursive_batch(igt_spin_t *spin, int fd, const struct igt_spin_factory *opts) @@ -128,15 +117,20 @@ emit_recursive_batch(igt_spin_t *spin, if (opts->dependency) { igt_assert(!(opts->flags & IGT_SPIN_POLL_RUN)); + r = &relocs[obj[BATCH].relocation_count++]; + /* dummy write to dependency */ obj[SCRATCH].handle = opts->dependency; - fill_reloc(&relocs[obj[BATCH].relocation_count++], - opts->dependency, 1020, - I915_GEM_DOMAIN_RENDER, - I915_GEM_DOMAIN_RENDER); + r->presumed_offset = 0; + r->target_handle = obj[SCRATCH].handle; + r->offset = sizeof(uint32_t) * 1020; + r->delta = 0; + r->read_domains = I915_GEM_DOMAIN_RENDER; + r->write_domain = I915_GEM_DOMAIN_RENDER; + execbuf->buffer_count++; } else if (opts->flags & IGT_SPIN_POLL_RUN) { - unsigned int offset; + r = &relocs[obj[BATCH].relocation_count++]; igt_assert(!opts->dependency); @@ -146,39 +140,43 @@ emit_recursive_batch(igt_spin_t *spin, } spin->poll_handle = gem_create(fd, 4096); + obj[SCRATCH].handle = spin->poll_handle; if (__gem_set_caching(fd, spin->poll_handle, I915_CACHING_CACHED) == 0) - spin->running = gem_mmap__cpu(fd, spin->poll_handle, - 0, 4096, - PROT_READ | PROT_WRITE); + spin->poll = gem_mmap__cpu(fd, spin->poll_handle, + 0, 4096, + PROT_READ | PROT_WRITE); else - spin->running = gem_mmap__wc(fd, spin->poll_handle, - 0, 4096, - PROT_READ | PROT_WRITE); - igt_assert_eq(*spin->running, 0); + spin->poll = gem_mmap__wc(fd, spin->poll_handle, + 0, 4096, + PROT_READ | PROT_WRITE); + + igt_assert_eq(spin->poll[SPIN_POLL_START_IDX], 0); + + r->presumed_offset = 0; + r->target_handle = obj[SCRATCH].handle; + r->offset = sizeof(uint32_t) * 1; + r->delta = sizeof(uint32_t) * SPIN_POLL_START_IDX; + r->read_domains = I915_GEM_DOMAIN_INSTRUCTION; + r->write_domain = I915_GEM_DOMAIN_INSTRUCTION; *batch++ = MI_STORE_DWORD_IMM | (gen < 6 ? 1 << 22 : 0); if (gen >= 8) { - offset = 1; - *batch++ = 0; + *batch++ = r->delta; *batch++ = 0; } else if (gen >= 4) { - offset = 2; - *batch++ = 0; *batch++ = 0; + *batch++ = r->delta; + r->offset += sizeof(uint32_t); } else { - offset = 1; batch[-1]--; - *batch++ = 0; + *batch++ = r->delta; } *batch++ = 1; - obj[SCRATCH].handle = spin->poll_handle; - fill_reloc(&relocs[obj[BATCH].relocation_count++], - spin->poll_handle, offset, 0, 0); execbuf->buffer_count++; } @@ -408,8 +406,8 @@ void igt_spin_batch_free(int fd, igt_spin_t *spin) gem_munmap((void *)((unsigned long)spin->batch & (~4095UL)), BATCH_SIZE); - if (spin->running) { - gem_munmap(spin->running, 4096); + if (spin->poll) { + gem_munmap(spin->poll, 4096); gem_close(fd, spin->poll_handle); } diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h index 73bd035b..3793bf7f 100644 --- a/lib/igt_dummyload.h +++ b/lib/igt_dummyload.h @@ -41,7 +41,8 @@ typedef struct igt_spin { struct drm_i915_gem_exec_object2 obj[2]; struct drm_i915_gem_execbuffer2 execbuf; uint32_t poll_handle; - bool *running; + uint32_t *poll; +#define SPIN_POLL_START_IDX 0 } igt_spin_t; struct igt_spin_factory { @@ -70,9 +71,19 @@ void igt_spin_batch_set_timeout(igt_spin_t *spin, int64_t ns); void igt_spin_batch_end(igt_spin_t *spin); void igt_spin_batch_free(int fd, igt_spin_t *spin); -static inline void igt_spin_busywait_until_running(igt_spin_t *spin) +static inline bool igt_spin_has_poll(const igt_spin_t *spin) { - while (!READ_ONCE(*spin->running)) + return spin->poll; +} + +static inline bool igt_spin_has_started(igt_spin_t *spin) +{ + return READ_ONCE(spin->poll[SPIN_POLL_START_IDX]); +} + +static inline void igt_spin_busywait_until_started(igt_spin_t *spin) +{ + while (!igt_spin_has_started(spin)) ; } diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c index d67d0ec2..f37e6f28 100644 --- a/tests/i915/gem_ctx_exec.c +++ b/tests/i915/gem_ctx_exec.c @@ -181,10 +181,8 @@ static void norecovery(int i915) spin = __igt_spin_batch_new(i915, .ctx = param.ctx_id, .flags = IGT_SPIN_POLL_RUN); - igt_assert(spin->running); + igt_spin_busywait_until_started(spin); - while (!READ_ONCE(*spin->running)) - ; igt_force_gpu_reset(i915); igt_spin_batch_end(spin); diff --git a/tests/i915/gem_ctx_isolation.c b/tests/i915/gem_ctx_isolation.c index f1000458..bed71c2b 100644 --- a/tests/i915/gem_ctx_isolation.c +++ b/tests/i915/gem_ctx_isolation.c @@ -704,8 +704,8 @@ static void inject_reset_context(int fd, unsigned int engine) spin = __igt_spin_batch_factory(fd, &opts); - if (spin->running) - igt_spin_busywait_until_running(spin); + if (igt_spin_has_poll(spin)) + igt_spin_busywait_until_started(spin); else usleep(1000); /* better than nothing */ diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c index 29250852..07bbdeb1 100644 --- a/tests/i915/gem_eio.c +++ b/tests/i915/gem_eio.c @@ -186,8 +186,8 @@ static igt_spin_t * __spin_poll(int fd, uint32_t ctx, unsigned long flags) static void __spin_wait(int fd, igt_spin_t *spin) { - if (spin->running) { - igt_spin_busywait_until_running(spin); + if (igt_spin_has_poll(spin)) { + igt_spin_busywait_until_started(spin); } else { igt_debug("__spin_wait - usleep mode\n"); usleep(500e3); /* Better than nothing! */ diff --git a/tests/i915/gem_exec_latency.c b/tests/i915/gem_exec_latency.c index 39f441d2..fc1040c3 100644 --- a/tests/i915/gem_exec_latency.c +++ b/tests/i915/gem_exec_latency.c @@ -79,29 +79,29 @@ poll_ring(int fd, unsigned ring, const char *name) igt_require(gem_can_store_dword(fd, ring)); spin[0] = __igt_spin_batch_factory(fd, &opts); - igt_assert(spin[0]->running); + igt_assert(igt_spin_has_poll(spin[0])); cmd = *spin[0]->batch; spin[1] = __igt_spin_batch_factory(fd, &opts); - igt_assert(spin[1]->running); + igt_assert(igt_spin_has_poll(spin[1])); + igt_assert(cmd == *spin[1]->batch); igt_spin_batch_end(spin[0]); - while (!READ_ONCE(*spin[1]->running)) - ; + igt_spin_busywait_until_started(spin[1]); + igt_assert(!gem_bo_busy(fd, spin[0]->handle)); cycles = 0; while ((elapsed = igt_nsec_elapsed(&tv)) < 2ull << 30) { - unsigned int idx = cycles++ & 1; + const unsigned int idx = cycles++ & 1; *spin[idx]->batch = cmd; - *spin[idx]->running = 0; + spin[idx]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[idx]->execbuf); igt_spin_batch_end(spin[!idx]); - while (!READ_ONCE(*spin[idx]->running)) - ; + igt_spin_busywait_until_started(spin[idx]); } igt_info("%s completed %ld cycles: %.3f us\n", @@ -419,7 +419,7 @@ static void __rearm_spin_batch(igt_spin_t *spin) const uint32_t mi_arb_chk = 0x5 << 23; *spin->batch = mi_arb_chk; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; __sync_synchronize(); } @@ -441,7 +441,7 @@ struct rt_pkt { static bool __spin_wait(int fd, igt_spin_t *spin) { - while (!READ_ONCE(*spin->running)) { + while (!igt_spin_has_started(spin)) { if (!gem_bo_busy(fd, spin->handle)) return false; } @@ -537,7 +537,7 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in passname[pass]); break; } - igt_spin_busywait_until_running(spin); + igt_spin_busywait_until_started(spin); igt_until_timeout(pass > 0 ? 5 : 2) { struct timespec ts = { }; diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c index 6f3f52d2..718a1935 100644 --- a/tests/i915/gem_exec_schedule.c +++ b/tests/i915/gem_exec_schedule.c @@ -436,7 +436,7 @@ static void semaphore_codependency(int i915) .ctx = ctx, .engine = engine, .flags = IGT_SPIN_POLL_RUN); - igt_spin_busywait_until_running(task[i].xcs); + igt_spin_busywait_until_started(task[i].xcs); /* Common rcs tasks will be queued in FIFO */ task[i].rcs = @@ -1361,8 +1361,7 @@ static void measure_semaphore_power(int i915) .engine = signaler, .flags = IGT_SPIN_POLL_RUN); gem_wait(i915, spin->handle, &jiffie); /* waitboost */ - igt_assert(spin->running); - igt_spin_busywait_until_running(spin); + igt_spin_busywait_until_started(spin); gpu_power_read(&power, &s_spin[0]); usleep(100*1000); diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c index 3e4feff3..0a0ed2a1 100644 --- a/tests/i915/gem_sync.c +++ b/tests/i915/gem_sync.c @@ -225,7 +225,7 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) .engine = execbuf.flags, .flags = (IGT_SPIN_POLL_RUN | IGT_SPIN_FAST)); - igt_assert(spin->running); + igt_assert(igt_spin_has_poll(spin)); cmd = *spin->batch; gem_execbuf(fd, &execbuf); @@ -239,10 +239,9 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles = 0; do { *spin->batch = cmd; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin->execbuf); - while (!READ_ONCE(*spin->running)) - ; + igt_spin_busywait_until_started(spin); this = gettime(); igt_spin_batch_end(spin); @@ -264,10 +263,9 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles = 0; do { *spin->batch = cmd; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin->execbuf); - while (!READ_ONCE(*spin->running)) - ; + igt_spin_busywait_until_started(spin); for (int n = 0; n < wlen; n++) gem_execbuf(fd, &execbuf); @@ -410,7 +408,7 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) .engine = execbuf.flags, .flags = (IGT_SPIN_POLL_RUN | IGT_SPIN_FAST)); - igt_assert(spin[0]->running); + igt_assert(igt_spin_has_poll(spin[0])); cmd = *spin[0]->batch; spin[1] = __igt_spin_batch_new(fd, @@ -426,18 +424,17 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) for (int warmup = 0; warmup <= 1; warmup++) { *spin[0]->batch = cmd; - *spin[0]->running = 0; + spin[0]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[0]->execbuf); end = gettime() + timeout/10.; elapsed = 0; cycles = 0; do { - while (!READ_ONCE(*spin[0]->running)) - ; + igt_spin_busywait_until_started(spin[0]); *spin[1]->batch = cmd; - *spin[1]->running = 0; + spin[1]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); @@ -458,21 +455,20 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles, elapsed*1e6/cycles); *spin[0]->batch = cmd; - *spin[0]->running = 0; + spin[0]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[0]->execbuf); end = gettime() + timeout; elapsed = 0; cycles = 0; do { - while (!READ_ONCE(*spin[0]->running)) - ; + igt_spin_busywait_until_started(spin[0]); for (int n = 0; n < wlen; n++) gem_execbuf(fd, &execbuf); *spin[1]->batch = cmd; - *spin[1]->running = 0; + spin[1]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c index 4f552bc2..28f235b1 100644 --- a/tests/perf_pmu.c +++ b/tests/perf_pmu.c @@ -189,10 +189,10 @@ static unsigned long __spin_wait(int fd, igt_spin_t *spin) igt_nsec_elapsed(&start); - if (spin->running) { + if (igt_spin_has_poll(spin)) { unsigned long timeout = 0; - while (!READ_ONCE(*spin->running)) { + while (!igt_spin_has_started(spin)) { unsigned long t = igt_nsec_elapsed(&start); if ((t - timeout) > 250e6) { -- 2.17.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation 2019-04-17 16:43 ` Mika Kuoppala @ 2019-04-17 20:04 ` Chris Wilson 2019-04-18 8:54 ` Mika Kuoppala 0 siblings, 1 reply; 19+ messages in thread From: Chris Wilson @ 2019-04-17 20:04 UTC (permalink / raw) To: Mika Kuoppala, intel-gfx Quoting Mika Kuoppala (2019-04-17 17:43:39) > Instead of opencoding the poll into the spinner, use > a helper to check if spinner has started. > > v2: use zero as presumed offset (Chris) > v3: cleanup the relocs (Chris) > > Cc: Chris Wilson <chris@chris-wilson.co.uk> > Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> > --- > static int > emit_recursive_batch(igt_spin_t *spin, > int fd, const struct igt_spin_factory *opts) > @@ -128,15 +117,20 @@ emit_recursive_batch(igt_spin_t *spin, > if (opts->dependency) { > igt_assert(!(opts->flags & IGT_SPIN_POLL_RUN)); > > + r = &relocs[obj[BATCH].relocation_count++]; > + > /* dummy write to dependency */ > obj[SCRATCH].handle = opts->dependency; > - fill_reloc(&relocs[obj[BATCH].relocation_count++], > - opts->dependency, 1020, > - I915_GEM_DOMAIN_RENDER, > - I915_GEM_DOMAIN_RENDER); > + r->presumed_offset = 0; fwiw, we could make this r->presumed_offset = 4096 and save the kernel having to patch the batch. > + r->target_handle = obj[SCRATCH].handle; > + r->offset = sizeof(uint32_t) * 1020; > + r->delta = 0; > + r->read_domains = I915_GEM_DOMAIN_RENDER; > + r->write_domain = I915_GEM_DOMAIN_RENDER; > + > execbuf->buffer_count++; > } else if (opts->flags & IGT_SPIN_POLL_RUN) { > - unsigned int offset; > + r = &relocs[obj[BATCH].relocation_count++]; > > igt_assert(!opts->dependency); > > @@ -146,39 +140,43 @@ emit_recursive_batch(igt_spin_t *spin, > } > > spin->poll_handle = gem_create(fd, 4096); > + obj[SCRATCH].handle = spin->poll_handle; > > if (__gem_set_caching(fd, spin->poll_handle, > I915_CACHING_CACHED) == 0) > - spin->running = gem_mmap__cpu(fd, spin->poll_handle, > - 0, 4096, > - PROT_READ | PROT_WRITE); > + spin->poll = gem_mmap__cpu(fd, spin->poll_handle, > + 0, 4096, > + PROT_READ | PROT_WRITE); > else > - spin->running = gem_mmap__wc(fd, spin->poll_handle, > - 0, 4096, > - PROT_READ | PROT_WRITE); > - igt_assert_eq(*spin->running, 0); > + spin->poll = gem_mmap__wc(fd, spin->poll_handle, > + 0, 4096, > + PROT_READ | PROT_WRITE); > + > + igt_assert_eq(spin->poll[SPIN_POLL_START_IDX], 0); > + > + r->presumed_offset = 0; > + r->target_handle = obj[SCRATCH].handle; > + r->offset = sizeof(uint32_t) * 1; * 1. May be a bit overkill in the pedantry stakes. > + r->delta = sizeof(uint32_t) * SPIN_POLL_START_IDX; > + r->read_domains = I915_GEM_DOMAIN_INSTRUCTION; > + r->write_domain = I915_GEM_DOMAIN_INSTRUCTION; > > *batch++ = MI_STORE_DWORD_IMM | (gen < 6 ? 1 << 22 : 0); > > if (gen >= 8) { > - offset = 1; > - *batch++ = 0; > + *batch++ = r->delta; > *batch++ = 0; > } else if (gen >= 4) { > - offset = 2; > - *batch++ = 0; > *batch++ = 0; > + *batch++ = r->delta; > + r->offset += sizeof(uint32_t); > } else { > - offset = 1; > batch[-1]--; > - *batch++ = 0; > + *batch++ = r->delta; > } > > *batch++ = 1; > > - obj[SCRATCH].handle = spin->poll_handle; > - fill_reloc(&relocs[obj[BATCH].relocation_count++], > - spin->poll_handle, offset, 0, 0); > execbuf->buffer_count++; > } > > @@ -408,8 +406,8 @@ void igt_spin_batch_free(int fd, igt_spin_t *spin) > gem_munmap((void *)((unsigned long)spin->batch & (~4095UL)), > BATCH_SIZE); > > - if (spin->running) { > - gem_munmap(spin->running, 4096); > + if (spin->poll) { > + gem_munmap(spin->poll, 4096); > gem_close(fd, spin->poll_handle); > } > > diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h > index 73bd035b..3793bf7f 100644 > --- a/lib/igt_dummyload.h > +++ b/lib/igt_dummyload.h > @@ -41,7 +41,8 @@ typedef struct igt_spin { > struct drm_i915_gem_exec_object2 obj[2]; > struct drm_i915_gem_execbuffer2 execbuf; > uint32_t poll_handle; > - bool *running; > + uint32_t *poll; > +#define SPIN_POLL_START_IDX 0 Planning more than one? Plausible, you could stick the timestamp in there as well, or share the scratch with others. Just looks very suspicious all by itself :-p > } igt_spin_t; > > struct igt_spin_factory { > @@ -70,9 +71,19 @@ void igt_spin_batch_set_timeout(igt_spin_t *spin, int64_t ns); > void igt_spin_batch_end(igt_spin_t *spin); > void igt_spin_batch_free(int fd, igt_spin_t *spin); > > -static inline void igt_spin_busywait_until_running(igt_spin_t *spin) > +static inline bool igt_spin_has_poll(const igt_spin_t *spin) > { > - while (!READ_ONCE(*spin->running)) > + return spin->poll; > +} > + > +static inline bool igt_spin_has_started(igt_spin_t *spin) > +{ > + return READ_ONCE(spin->poll[SPIN_POLL_START_IDX]); > +} > + > +static inline void igt_spin_busywait_until_started(igt_spin_t *spin) > +{ > + while (!igt_spin_has_started(spin)) > ; I keep fearing the gpu hang that leaves this spinning for ever. while (gem_busy(spin->handle) && !igt_spin_has_started(spin)) ; igt_assert(igt_spin_has_started(spin)); give or take the lack of spin->fd and generalisation of gem_busy. A problem for another day. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation 2019-04-17 20:04 ` Chris Wilson @ 2019-04-18 8:54 ` Mika Kuoppala 0 siblings, 0 replies; 19+ messages in thread From: Mika Kuoppala @ 2019-04-18 8:54 UTC (permalink / raw) To: intel-gfx Instead of opencoding the poll into the spinner, use a helper to check if spinner has started. v2: use zero as presumed offset (Chris) v3: cleanup the relocs (Chris) v4: leave the domains to zero, avoid relocation (Chris) Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> --- lib/igt_dummyload.c | 65 ++++++++++++++++------------------ lib/igt_dummyload.h | 17 +++++++-- tests/i915/gem_ctx_exec.c | 4 +-- tests/i915/gem_ctx_isolation.c | 4 +-- tests/i915/gem_eio.c | 4 +-- tests/i915/gem_exec_latency.c | 22 ++++++------ tests/i915/gem_exec_schedule.c | 5 ++- tests/i915/gem_sync.c | 28 +++++++-------- tests/perf_pmu.c | 4 +-- 9 files changed, 77 insertions(+), 76 deletions(-) diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c index 47f6b92b..46fe638f 100644 --- a/lib/igt_dummyload.c +++ b/lib/igt_dummyload.c @@ -65,17 +65,6 @@ static const int BATCH_SIZE = 4096; static IGT_LIST(spin_list); static pthread_mutex_t list_lock = PTHREAD_MUTEX_INITIALIZER; -static void -fill_reloc(struct drm_i915_gem_relocation_entry *reloc, - uint32_t gem_handle, uint32_t offset, - uint32_t read_domains, uint32_t write_domains) -{ - reloc->target_handle = gem_handle; - reloc->offset = offset * sizeof(uint32_t); - reloc->read_domains = read_domains; - reloc->write_domain = write_domains; -} - static int emit_recursive_batch(igt_spin_t *spin, int fd, const struct igt_spin_factory *opts) @@ -128,15 +117,20 @@ emit_recursive_batch(igt_spin_t *spin, if (opts->dependency) { igt_assert(!(opts->flags & IGT_SPIN_POLL_RUN)); + r = &relocs[obj[BATCH].relocation_count++]; + /* dummy write to dependency */ obj[SCRATCH].handle = opts->dependency; - fill_reloc(&relocs[obj[BATCH].relocation_count++], - opts->dependency, 1020, - I915_GEM_DOMAIN_RENDER, - I915_GEM_DOMAIN_RENDER); + r->presumed_offset = 0; + r->target_handle = obj[SCRATCH].handle; + r->offset = sizeof(uint32_t) * 1020; + r->delta = 0; + r->read_domains = I915_GEM_DOMAIN_RENDER; + r->write_domain = I915_GEM_DOMAIN_RENDER; + execbuf->buffer_count++; } else if (opts->flags & IGT_SPIN_POLL_RUN) { - unsigned int offset; + r = &relocs[obj[BATCH].relocation_count++]; igt_assert(!opts->dependency); @@ -146,39 +140,42 @@ emit_recursive_batch(igt_spin_t *spin, } spin->poll_handle = gem_create(fd, 4096); + obj[SCRATCH].handle = spin->poll_handle; if (__gem_set_caching(fd, spin->poll_handle, I915_CACHING_CACHED) == 0) - spin->running = gem_mmap__cpu(fd, spin->poll_handle, - 0, 4096, - PROT_READ | PROT_WRITE); + spin->poll = gem_mmap__cpu(fd, spin->poll_handle, + 0, 4096, + PROT_READ | PROT_WRITE); else - spin->running = gem_mmap__wc(fd, spin->poll_handle, - 0, 4096, - PROT_READ | PROT_WRITE); - igt_assert_eq(*spin->running, 0); + spin->poll = gem_mmap__wc(fd, spin->poll_handle, + 0, 4096, + PROT_READ | PROT_WRITE); + + igt_assert_eq(spin->poll[SPIN_POLL_START_IDX], 0); + + /* batch is first */ + r->presumed_offset = 4096; + r->target_handle = obj[SCRATCH].handle; + r->offset = sizeof(uint32_t) * 1; + r->delta = sizeof(uint32_t) * SPIN_POLL_START_IDX; *batch++ = MI_STORE_DWORD_IMM | (gen < 6 ? 1 << 22 : 0); if (gen >= 8) { - offset = 1; - *batch++ = 0; + *batch++ = r->presumed_offset + r->delta; *batch++ = 0; } else if (gen >= 4) { - offset = 2; - *batch++ = 0; *batch++ = 0; + *batch++ = r->presumed_offset + r->delta; + r->offset += sizeof(uint32_t); } else { - offset = 1; batch[-1]--; - *batch++ = 0; + *batch++ = r->presumed_offset + r->delta; } *batch++ = 1; - obj[SCRATCH].handle = spin->poll_handle; - fill_reloc(&relocs[obj[BATCH].relocation_count++], - spin->poll_handle, offset, 0, 0); execbuf->buffer_count++; } @@ -408,8 +405,8 @@ void igt_spin_batch_free(int fd, igt_spin_t *spin) gem_munmap((void *)((unsigned long)spin->batch & (~4095UL)), BATCH_SIZE); - if (spin->running) { - gem_munmap(spin->running, 4096); + if (spin->poll) { + gem_munmap(spin->poll, 4096); gem_close(fd, spin->poll_handle); } diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h index 73bd035b..3793bf7f 100644 --- a/lib/igt_dummyload.h +++ b/lib/igt_dummyload.h @@ -41,7 +41,8 @@ typedef struct igt_spin { struct drm_i915_gem_exec_object2 obj[2]; struct drm_i915_gem_execbuffer2 execbuf; uint32_t poll_handle; - bool *running; + uint32_t *poll; +#define SPIN_POLL_START_IDX 0 } igt_spin_t; struct igt_spin_factory { @@ -70,9 +71,19 @@ void igt_spin_batch_set_timeout(igt_spin_t *spin, int64_t ns); void igt_spin_batch_end(igt_spin_t *spin); void igt_spin_batch_free(int fd, igt_spin_t *spin); -static inline void igt_spin_busywait_until_running(igt_spin_t *spin) +static inline bool igt_spin_has_poll(const igt_spin_t *spin) { - while (!READ_ONCE(*spin->running)) + return spin->poll; +} + +static inline bool igt_spin_has_started(igt_spin_t *spin) +{ + return READ_ONCE(spin->poll[SPIN_POLL_START_IDX]); +} + +static inline void igt_spin_busywait_until_started(igt_spin_t *spin) +{ + while (!igt_spin_has_started(spin)) ; } diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c index d67d0ec2..f37e6f28 100644 --- a/tests/i915/gem_ctx_exec.c +++ b/tests/i915/gem_ctx_exec.c @@ -181,10 +181,8 @@ static void norecovery(int i915) spin = __igt_spin_batch_new(i915, .ctx = param.ctx_id, .flags = IGT_SPIN_POLL_RUN); - igt_assert(spin->running); + igt_spin_busywait_until_started(spin); - while (!READ_ONCE(*spin->running)) - ; igt_force_gpu_reset(i915); igt_spin_batch_end(spin); diff --git a/tests/i915/gem_ctx_isolation.c b/tests/i915/gem_ctx_isolation.c index f1000458..bed71c2b 100644 --- a/tests/i915/gem_ctx_isolation.c +++ b/tests/i915/gem_ctx_isolation.c @@ -704,8 +704,8 @@ static void inject_reset_context(int fd, unsigned int engine) spin = __igt_spin_batch_factory(fd, &opts); - if (spin->running) - igt_spin_busywait_until_running(spin); + if (igt_spin_has_poll(spin)) + igt_spin_busywait_until_started(spin); else usleep(1000); /* better than nothing */ diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c index 29250852..07bbdeb1 100644 --- a/tests/i915/gem_eio.c +++ b/tests/i915/gem_eio.c @@ -186,8 +186,8 @@ static igt_spin_t * __spin_poll(int fd, uint32_t ctx, unsigned long flags) static void __spin_wait(int fd, igt_spin_t *spin) { - if (spin->running) { - igt_spin_busywait_until_running(spin); + if (igt_spin_has_poll(spin)) { + igt_spin_busywait_until_started(spin); } else { igt_debug("__spin_wait - usleep mode\n"); usleep(500e3); /* Better than nothing! */ diff --git a/tests/i915/gem_exec_latency.c b/tests/i915/gem_exec_latency.c index 39f441d2..fc1040c3 100644 --- a/tests/i915/gem_exec_latency.c +++ b/tests/i915/gem_exec_latency.c @@ -79,29 +79,29 @@ poll_ring(int fd, unsigned ring, const char *name) igt_require(gem_can_store_dword(fd, ring)); spin[0] = __igt_spin_batch_factory(fd, &opts); - igt_assert(spin[0]->running); + igt_assert(igt_spin_has_poll(spin[0])); cmd = *spin[0]->batch; spin[1] = __igt_spin_batch_factory(fd, &opts); - igt_assert(spin[1]->running); + igt_assert(igt_spin_has_poll(spin[1])); + igt_assert(cmd == *spin[1]->batch); igt_spin_batch_end(spin[0]); - while (!READ_ONCE(*spin[1]->running)) - ; + igt_spin_busywait_until_started(spin[1]); + igt_assert(!gem_bo_busy(fd, spin[0]->handle)); cycles = 0; while ((elapsed = igt_nsec_elapsed(&tv)) < 2ull << 30) { - unsigned int idx = cycles++ & 1; + const unsigned int idx = cycles++ & 1; *spin[idx]->batch = cmd; - *spin[idx]->running = 0; + spin[idx]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[idx]->execbuf); igt_spin_batch_end(spin[!idx]); - while (!READ_ONCE(*spin[idx]->running)) - ; + igt_spin_busywait_until_started(spin[idx]); } igt_info("%s completed %ld cycles: %.3f us\n", @@ -419,7 +419,7 @@ static void __rearm_spin_batch(igt_spin_t *spin) const uint32_t mi_arb_chk = 0x5 << 23; *spin->batch = mi_arb_chk; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; __sync_synchronize(); } @@ -441,7 +441,7 @@ struct rt_pkt { static bool __spin_wait(int fd, igt_spin_t *spin) { - while (!READ_ONCE(*spin->running)) { + while (!igt_spin_has_started(spin)) { if (!gem_bo_busy(fd, spin->handle)) return false; } @@ -537,7 +537,7 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in passname[pass]); break; } - igt_spin_busywait_until_running(spin); + igt_spin_busywait_until_started(spin); igt_until_timeout(pass > 0 ? 5 : 2) { struct timespec ts = { }; diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c index 6f3f52d2..718a1935 100644 --- a/tests/i915/gem_exec_schedule.c +++ b/tests/i915/gem_exec_schedule.c @@ -436,7 +436,7 @@ static void semaphore_codependency(int i915) .ctx = ctx, .engine = engine, .flags = IGT_SPIN_POLL_RUN); - igt_spin_busywait_until_running(task[i].xcs); + igt_spin_busywait_until_started(task[i].xcs); /* Common rcs tasks will be queued in FIFO */ task[i].rcs = @@ -1361,8 +1361,7 @@ static void measure_semaphore_power(int i915) .engine = signaler, .flags = IGT_SPIN_POLL_RUN); gem_wait(i915, spin->handle, &jiffie); /* waitboost */ - igt_assert(spin->running); - igt_spin_busywait_until_running(spin); + igt_spin_busywait_until_started(spin); gpu_power_read(&power, &s_spin[0]); usleep(100*1000); diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c index 3e4feff3..0a0ed2a1 100644 --- a/tests/i915/gem_sync.c +++ b/tests/i915/gem_sync.c @@ -225,7 +225,7 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) .engine = execbuf.flags, .flags = (IGT_SPIN_POLL_RUN | IGT_SPIN_FAST)); - igt_assert(spin->running); + igt_assert(igt_spin_has_poll(spin)); cmd = *spin->batch; gem_execbuf(fd, &execbuf); @@ -239,10 +239,9 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles = 0; do { *spin->batch = cmd; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin->execbuf); - while (!READ_ONCE(*spin->running)) - ; + igt_spin_busywait_until_started(spin); this = gettime(); igt_spin_batch_end(spin); @@ -264,10 +263,9 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles = 0; do { *spin->batch = cmd; - *spin->running = 0; + spin->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin->execbuf); - while (!READ_ONCE(*spin->running)) - ; + igt_spin_busywait_until_started(spin); for (int n = 0; n < wlen; n++) gem_execbuf(fd, &execbuf); @@ -410,7 +408,7 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) .engine = execbuf.flags, .flags = (IGT_SPIN_POLL_RUN | IGT_SPIN_FAST)); - igt_assert(spin[0]->running); + igt_assert(igt_spin_has_poll(spin[0])); cmd = *spin[0]->batch; spin[1] = __igt_spin_batch_new(fd, @@ -426,18 +424,17 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) for (int warmup = 0; warmup <= 1; warmup++) { *spin[0]->batch = cmd; - *spin[0]->running = 0; + spin[0]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[0]->execbuf); end = gettime() + timeout/10.; elapsed = 0; cycles = 0; do { - while (!READ_ONCE(*spin[0]->running)) - ; + igt_spin_busywait_until_started(spin[0]); *spin[1]->batch = cmd; - *spin[1]->running = 0; + spin[1]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); @@ -458,21 +455,20 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen) cycles, elapsed*1e6/cycles); *spin[0]->batch = cmd; - *spin[0]->running = 0; + spin[0]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[0]->execbuf); end = gettime() + timeout; elapsed = 0; cycles = 0; do { - while (!READ_ONCE(*spin[0]->running)) - ; + igt_spin_busywait_until_started(spin[0]); for (int n = 0; n < wlen; n++) gem_execbuf(fd, &execbuf); *spin[1]->batch = cmd; - *spin[1]->running = 0; + spin[1]->poll[SPIN_POLL_START_IDX] = 0; gem_execbuf(fd, &spin[1]->execbuf); this = gettime(); diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c index 4f552bc2..28f235b1 100644 --- a/tests/perf_pmu.c +++ b/tests/perf_pmu.c @@ -189,10 +189,10 @@ static unsigned long __spin_wait(int fd, igt_spin_t *spin) igt_nsec_elapsed(&start); - if (spin->running) { + if (igt_spin_has_poll(spin)) { unsigned long timeout = 0; - while (!READ_ONCE(*spin->running)) { + while (!igt_spin_has_started(spin)) { unsigned long t = igt_nsec_elapsed(&start); if ((t - timeout) > 250e6) { -- 2.17.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala ` (2 preceding siblings ...) 2019-04-17 15:37 ` [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Chris Wilson @ 2019-04-17 16:15 ` Patchwork 2019-04-17 17:03 ` ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev2) Patchwork ` (6 subsequent siblings) 10 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2019-04-17 16:15 UTC (permalink / raw) To: Mika Kuoppala; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation URL : https://patchwork.freedesktop.org/series/59655/ State : success == Summary == CI Bug Log - changes from CI_DRM_5948 -> IGTPW_2885 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/59655/revisions/1/mbox/ Known issues ------------ Here are the changes found in IGTPW_2885 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@amdgpu/amd_basic@userptr: - fi-kbl-8809g: PASS -> DMESG-WARN [fdo#108965] * igt@gem_exec_basic@gtt-bsd2: - fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] +52 * igt@gem_exec_store@basic-bsd2: - fi-hsw-4770: NOTRUN -> SKIP [fdo#109271] +41 * igt@gem_exec_suspend@basic-s3: - fi-blb-e6850: PASS -> INCOMPLETE [fdo#107718] * igt@i915_selftest@live_contexts: - fi-skl-gvtdvm: PASS -> DMESG-FAIL [fdo#110235 ] * igt@kms_addfb_basic@addfb25-y-tiled-small: - fi-byt-n2820: NOTRUN -> SKIP [fdo#109271] +51 * igt@kms_busy@basic-flip-c: - fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] - fi-byt-n2820: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_chamelium@hdmi-edid-read: - fi-hsw-peppy: NOTRUN -> SKIP [fdo#109271] +46 * igt@kms_frontbuffer_tracking@basic: - fi-hsw-peppy: NOTRUN -> DMESG-FAIL [fdo#102614] / [fdo#107814] - fi-byt-clapper: NOTRUN -> FAIL [fdo#103167] * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a: - fi-byt-clapper: NOTRUN -> FAIL [fdo#103191] +2 #### Possible fixes #### * igt@i915_selftest@live_contexts: - fi-bdw-gvtdvm: DMESG-FAIL [fdo#110235 ] -> PASS * igt@i915_selftest@live_execlists: - fi-apl-guc: INCOMPLETE [fdo#103927] / [fdo#109720] -> PASS * igt@i915_selftest@live_hangcheck: - fi-skl-iommu: INCOMPLETE [fdo#108602] / [fdo#108744] -> PASS {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718 [fdo#107814]: https://bugs.freedesktop.org/show_bug.cgi?id=107814 [fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108602 [fdo#108744]: https://bugs.freedesktop.org/show_bug.cgi?id=108744 [fdo#108965]: https://bugs.freedesktop.org/show_bug.cgi?id=108965 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109720]: https://bugs.freedesktop.org/show_bug.cgi?id=109720 [fdo#110235 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110235 Participating hosts (43 -> 42) ------------------------------ Additional (4): fi-hsw-peppy fi-hsw-4770 fi-byt-n2820 fi-byt-clapper Missing (5): fi-ilk-m540 fi-byt-squawks fi-ctg-p8600 fi-icl-u3 fi-bdw-samus Build changes ------------- * IGT: IGT_4956 -> IGTPW_2885 CI_DRM_5948: cb5afe9301dbef678a0af3bda9ed9f4ee0b3dbf7 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_2885: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2885/ IGT_4956: 1d921615b0b706f25c856aa0eb096f274380c199 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2885/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev2) 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala ` (3 preceding siblings ...) 2019-04-17 16:15 ` ✓ Fi.CI.BAT: success for series starting with [1/3] " Patchwork @ 2019-04-17 17:03 ` Patchwork 2019-04-17 18:04 ` ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev3) Patchwork ` (5 subsequent siblings) 10 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2019-04-17 17:03 UTC (permalink / raw) To: Mika Kuoppala; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev2) URL : https://patchwork.freedesktop.org/series/59655/ State : success == Summary == CI Bug Log - changes from CI_DRM_5948 -> IGTPW_2886 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/59655/revisions/2/mbox/ Known issues ------------ Here are the changes found in IGTPW_2886 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@amdgpu/amd_basic@semaphore: - fi-kbl-7500u: NOTRUN -> SKIP [fdo#109271] +28 * igt@gem_exec_basic@gtt-bsd2: - fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] +52 * igt@gem_exec_store@basic-bsd2: - fi-hsw-4770: NOTRUN -> SKIP [fdo#109271] +41 * igt@gem_exec_suspend@basic-s3: - fi-blb-e6850: PASS -> INCOMPLETE [fdo#107718] * igt@kms_addfb_basic@addfb25-y-tiled-small: - fi-byt-n2820: NOTRUN -> SKIP [fdo#109271] +51 * igt@kms_busy@basic-flip-c: - fi-byt-j1900: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] - fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] - fi-byt-n2820: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_chamelium@common-hpd-after-suspend: - fi-kbl-7500u: NOTRUN -> DMESG-WARN [fdo#102505] / [fdo#103558] / [fdo#105079] / [fdo#105602] * igt@kms_chamelium@hdmi-crc-fast: - fi-byt-j1900: NOTRUN -> SKIP [fdo#109271] +47 * igt@kms_chamelium@hdmi-edid-read: - fi-hsw-peppy: NOTRUN -> SKIP [fdo#109271] +46 * igt@kms_frontbuffer_tracking@basic: - fi-hsw-peppy: NOTRUN -> DMESG-FAIL [fdo#102614] / [fdo#107814] - fi-byt-clapper: NOTRUN -> FAIL [fdo#103167] * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a: - fi-byt-clapper: NOTRUN -> FAIL [fdo#103191] +1 - fi-glk-dsi: PASS -> FAIL [fdo#103191] #### Possible fixes #### * igt@i915_selftest@live_contexts: - fi-bdw-gvtdvm: DMESG-FAIL [fdo#110235 ] -> PASS * igt@i915_selftest@live_hangcheck: - fi-skl-iommu: INCOMPLETE [fdo#108602] / [fdo#108744] -> PASS * igt@kms_chamelium@dp-crc-fast: - fi-kbl-7500u: DMESG-WARN [fdo#103841] -> PASS [fdo#102505]: https://bugs.freedesktop.org/show_bug.cgi?id=102505 [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#103558]: https://bugs.freedesktop.org/show_bug.cgi?id=103558 [fdo#103841]: https://bugs.freedesktop.org/show_bug.cgi?id=103841 [fdo#105079]: https://bugs.freedesktop.org/show_bug.cgi?id=105079 [fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602 [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718 [fdo#107814]: https://bugs.freedesktop.org/show_bug.cgi?id=107814 [fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108602 [fdo#108744]: https://bugs.freedesktop.org/show_bug.cgi?id=108744 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#110235 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110235 Participating hosts (43 -> 43) ------------------------------ Additional (5): fi-byt-j1900 fi-hsw-peppy fi-hsw-4770 fi-byt-n2820 fi-byt-clapper Missing (5): fi-ilk-m540 fi-byt-squawks fi-bwr-2160 fi-ctg-p8600 fi-bdw-samus Build changes ------------- * IGT: IGT_4956 -> IGTPW_2886 CI_DRM_5948: cb5afe9301dbef678a0af3bda9ed9f4ee0b3dbf7 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_2886: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2886/ IGT_4956: 1d921615b0b706f25c856aa0eb096f274380c199 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2886/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev3) 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala ` (4 preceding siblings ...) 2019-04-17 17:03 ` ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev2) Patchwork @ 2019-04-17 18:04 ` Patchwork 2019-04-17 23:59 ` ✓ Fi.CI.IGT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation Patchwork ` (4 subsequent siblings) 10 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2019-04-17 18:04 UTC (permalink / raw) To: Mika Kuoppala; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev3) URL : https://patchwork.freedesktop.org/series/59655/ State : success == Summary == CI Bug Log - changes from CI_DRM_5948 -> IGTPW_2888 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/59655/revisions/3/mbox/ Known issues ------------ Here are the changes found in IGTPW_2888 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_exec_basic@gtt-bsd2: - fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] +52 * igt@gem_exec_store@basic-bsd2: - fi-hsw-4770: NOTRUN -> SKIP [fdo#109271] +41 * igt@gem_exec_suspend@basic-s3: - fi-apl-guc: PASS -> DMESG-WARN [fdo#108566] * igt@kms_busy@basic-flip-c: - fi-byt-j1900: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] - fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_chamelium@hdmi-crc-fast: - fi-byt-j1900: NOTRUN -> SKIP [fdo#109271] +47 * igt@kms_chamelium@hdmi-edid-read: - fi-hsw-peppy: NOTRUN -> SKIP [fdo#109271] +46 * igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size: - fi-glk-dsi: PASS -> INCOMPLETE [fdo#103359] / [k.org#198133] * igt@kms_frontbuffer_tracking@basic: - fi-icl-u3: PASS -> FAIL [fdo#103167] - fi-hsw-peppy: NOTRUN -> DMESG-FAIL [fdo#102614] / [fdo#107814] - fi-byt-clapper: NOTRUN -> FAIL [fdo#103167] #### Possible fixes #### * igt@i915_selftest@live_contexts: - fi-bdw-gvtdvm: DMESG-FAIL [fdo#110235 ] -> PASS * igt@i915_selftest@live_hangcheck: - fi-skl-iommu: INCOMPLETE [fdo#108602] / [fdo#108744] -> PASS [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359 [fdo#107814]: https://bugs.freedesktop.org/show_bug.cgi?id=107814 [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 [fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108602 [fdo#108744]: https://bugs.freedesktop.org/show_bug.cgi?id=108744 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#110235 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110235 [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133 Participating hosts (43 -> 39) ------------------------------ Additional (4): fi-byt-j1900 fi-hsw-4770 fi-hsw-peppy fi-byt-clapper Missing (8): fi-ilk-m540 fi-bdw-5557u fi-byt-squawks fi-icl-u2 fi-bwr-2160 fi-skl-6260u fi-ctg-p8600 fi-bdw-samus Build changes ------------- * IGT: IGT_4956 -> IGTPW_2888 CI_DRM_5948: cb5afe9301dbef678a0af3bda9ed9f4ee0b3dbf7 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_2888: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2888/ IGT_4956: 1d921615b0b706f25c856aa0eb096f274380c199 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools == Testlist changes == +igt@audio@hdmi-integrity +igt@audio@hdmi-integrity-after-hibernate +igt@audio@hdmi-integrity-after-suspend == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2888/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✓ Fi.CI.IGT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala ` (5 preceding siblings ...) 2019-04-17 18:04 ` ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev3) Patchwork @ 2019-04-17 23:59 ` Patchwork 2019-04-18 0:44 ` ✓ Fi.CI.IGT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev2) Patchwork ` (3 subsequent siblings) 10 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2019-04-17 23:59 UTC (permalink / raw) To: Mika Kuoppala; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation URL : https://patchwork.freedesktop.org/series/59655/ State : success == Summary == CI Bug Log - changes from CI_DRM_5948_full -> IGTPW_2885_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/59655/revisions/1/mbox/ Known issues ------------ Here are the changes found in IGTPW_2885_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_eio@in-flight-suspend: - shard-kbl: PASS -> DMESG-WARN [fdo#108566] +4 * igt@gem_exec_params@no-blt: - shard-iclb: NOTRUN -> SKIP [fdo#109283] * igt@gem_mocs_settings@mocs-rc6-dirty-render: - shard-iclb: NOTRUN -> SKIP [fdo#110206] * igt@gem_pwrite@huge-cpu-fbr: - shard-iclb: NOTRUN -> SKIP [fdo#109290] +1 * igt@gem_stolen@stolen-clear: - shard-iclb: NOTRUN -> SKIP [fdo#109277] * igt@gem_tiled_swapping@non-threaded: - shard-iclb: PASS -> FAIL [fdo#108686] * igt@gem_userptr_blits@readonly-pwrite-unsync: - shard-iclb: NOTRUN -> SKIP [fdo#110426] +1 * igt@gen3_render_mixed_blits: - shard-iclb: NOTRUN -> SKIP [fdo#109289] +1 * igt@i915_pm_rc6_residency@rc6-accuracy: - shard-kbl: PASS -> SKIP [fdo#109271] - shard-snb: PASS -> SKIP [fdo#109271] * igt@i915_pm_rpm@dpms-non-lpsp: - shard-iclb: NOTRUN -> SKIP [fdo#109308] * igt@i915_pm_rpm@modeset-lpsp-stress: - shard-apl: NOTRUN -> SKIP [fdo#109271] +118 * igt@i915_pm_sseu@full-enable: - shard-iclb: NOTRUN -> SKIP [fdo#109288] * igt@i915_suspend@debugfs-reader: - shard-apl: PASS -> DMESG-WARN [fdo#108566] +4 * igt@i915_suspend@forcewake: - shard-apl: NOTRUN -> DMESG-WARN [fdo#108566] +1 * igt@kms_busy@extended-modeset-hang-oldfb-with-reset-render-f: - shard-kbl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_chamelium@hdmi-crc-planes-random: - shard-iclb: NOTRUN -> SKIP [fdo#109284] +5 * igt@kms_content_protection@atomic: - shard-apl: NOTRUN -> FAIL [fdo#110321] / [fdo#110336] +1 * igt@kms_cursor_crc@cursor-512x512-suspend: - shard-iclb: NOTRUN -> SKIP [fdo#109279] +1 * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic: - shard-iclb: NOTRUN -> SKIP [fdo#109274] +4 * igt@kms_flip@2x-flip-vs-expired-vblank: - shard-glk: PASS -> FAIL [fdo#105363] * igt@kms_flip@flip-vs-expired-vblank: - shard-glk: PASS -> FAIL [fdo#102887] / [fdo#105363] * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite: - shard-iclb: NOTRUN -> FAIL [fdo#103167] +2 * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render: - shard-iclb: PASS -> FAIL [fdo#103167] +5 * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-render: - shard-hsw: NOTRUN -> SKIP [fdo#109271] +19 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc: - shard-kbl: NOTRUN -> SKIP [fdo#109271] +2 * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt: - shard-iclb: NOTRUN -> SKIP [fdo#109280] +26 * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt: - shard-snb: NOTRUN -> SKIP [fdo#109271] +72 * igt@kms_lease@setcrtc_implicit_plane: - shard-apl: NOTRUN -> FAIL [fdo#110281] * igt@kms_pipe_crc_basic@hang-read-crc-pipe-d: - shard-hsw: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_pipe_crc_basic@hang-read-crc-pipe-e: - shard-apl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +8 * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc: - shard-apl: NOTRUN -> FAIL [fdo#108145] +3 * igt@kms_plane_scaling@2x-scaler-multi-pipe: - shard-iclb: NOTRUN -> SKIP [fdo#109274] / [fdo#109278] * igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping: - shard-glk: PASS -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_psr2_su@frontbuffer: - shard-iclb: PASS -> SKIP [fdo#109642] * igt@kms_psr@psr2_primary_mmap_cpu: - shard-iclb: NOTRUN -> SKIP [fdo#109441] +1 * igt@kms_psr@psr2_primary_page_flip: - shard-iclb: PASS -> SKIP [fdo#109441] +1 * igt@kms_tv_load_detect@load-detect: - shard-iclb: NOTRUN -> SKIP [fdo#109309] * igt@kms_universal_plane@disable-primary-vs-flip-pipe-d: - shard-snb: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +5 * igt@kms_universal_plane@universal-plane-gen9-features-pipe-d: - shard-iclb: NOTRUN -> SKIP [fdo#109278] +3 * igt@kms_vblank@pipe-c-accuracy-idle: - shard-glk: PASS -> FAIL [fdo#102583] * igt@prime_nv_api@i915_nv_import_twice_check_flink_name: - shard-iclb: NOTRUN -> SKIP [fdo#109291] +3 * igt@prime_vgem@fence-wait-bsd1: - shard-iclb: NOTRUN -> SKIP [fdo#109276] +13 * igt@v3d_get_bo_offset@create-get-offsets: - shard-iclb: NOTRUN -> SKIP [fdo#109315] #### Possible fixes #### * igt@gem_ctx_isolation@bcs0-s3: - shard-kbl: DMESG-WARN [fdo#108566] -> PASS +3 * igt@gem_eio@in-flight-immediate: - shard-apl: INCOMPLETE [fdo#103927] -> PASS * igt@gem_exec_suspend@basic-s3: - shard-kbl: INCOMPLETE [fdo#103665] -> PASS * igt@i915_suspend@fence-restore-tiled2untiled: - shard-apl: DMESG-WARN [fdo#108566] -> PASS +5 * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic: - shard-glk: FAIL [fdo#104873] -> PASS * igt@kms_flip@flip-vs-suspend-interruptible: - shard-hsw: INCOMPLETE [fdo#103540] -> PASS * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt: - shard-iclb: FAIL [fdo#103167] -> PASS * igt@kms_plane_lowres@pipe-a-tiling-x: - shard-iclb: FAIL [fdo#103166] -> PASS +1 * igt@kms_psr@psr2_primary_mmap_gtt: - shard-iclb: SKIP [fdo#109441] -> PASS +1 * igt@kms_setmode@basic: - shard-kbl: FAIL [fdo#99912] -> PASS #### Warnings #### * igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic: - shard-apl: INCOMPLETE [fdo#103927] -> SKIP [fdo#109271] [fdo#102583]: https://bugs.freedesktop.org/show_bug.cgi?id=102583 [fdo#102887]: https://bugs.freedesktop.org/show_bug.cgi?id=102887 [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#104873]: https://bugs.freedesktop.org/show_bug.cgi?id=104873 [fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363 [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 [fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274 [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276 [fdo#109277]: https://bugs.freedesktop.org/show_bug.cgi?id=109277 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279 [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280 [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283 [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284 [fdo#109288]: https://bugs.freedesktop.org/show_bug.cgi?id=109288 [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289 [fdo#109290]: https://bugs.freedesktop.org/show_bug.cgi?id=109290 [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291 [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308 [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#110206]: https://bugs.freedesktop.org/show_bug.cgi?id=110206 [fdo#110281]: https://bugs.freedesktop.org/show_bug.cgi?id=110281 [fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321 [fdo#110336]: https://bugs.freedesktop.org/show_bug.cgi?id=110336 [fdo#110426]: https://bugs.freedesktop.org/show_bug.cgi?id=110426 [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912 Participating hosts (10 -> 6) ------------------------------ Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005 Build changes ------------- * IGT: IGT_4956 -> IGTPW_2885 * Piglit: piglit_4509 -> None CI_DRM_5948: cb5afe9301dbef678a0af3bda9ed9f4ee0b3dbf7 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_2885: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2885/ IGT_4956: 1d921615b0b706f25c856aa0eb096f274380c199 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2885/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✓ Fi.CI.IGT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev2) 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala ` (6 preceding siblings ...) 2019-04-17 23:59 ` ✓ Fi.CI.IGT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation Patchwork @ 2019-04-18 0:44 ` Patchwork 2019-04-18 2:09 ` ✗ Fi.CI.IGT: failure for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev3) Patchwork ` (2 subsequent siblings) 10 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2019-04-18 0:44 UTC (permalink / raw) To: Mika Kuoppala; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev2) URL : https://patchwork.freedesktop.org/series/59655/ State : success == Summary == CI Bug Log - changes from CI_DRM_5948_full -> IGTPW_2886_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/59655/revisions/2/mbox/ Known issues ------------ Here are the changes found in IGTPW_2886_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ctx_isolation@bcs0-s3: - shard-apl: PASS -> DMESG-WARN [fdo#108566] +2 * igt@gem_exec_params@no-blt: - shard-iclb: NOTRUN -> SKIP [fdo#109283] * igt@gem_mocs_settings@mocs-rc6-dirty-render: - shard-iclb: NOTRUN -> SKIP [fdo#110206] * igt@gem_pwrite@huge-cpu-fbr: - shard-iclb: NOTRUN -> SKIP [fdo#109290] +1 * igt@gem_stolen@stolen-clear: - shard-iclb: NOTRUN -> SKIP [fdo#109277] * igt@gem_tiled_swapping@non-threaded: - shard-hsw: PASS -> INCOMPLETE [fdo#103540] * igt@gem_userptr_blits@readonly-pwrite-unsync: - shard-iclb: NOTRUN -> SKIP [fdo#110426] +1 * igt@gen3_render_mixed_blits: - shard-iclb: NOTRUN -> SKIP [fdo#109289] +1 * igt@i915_pm_rc6_residency@rc6-accuracy: - shard-snb: PASS -> SKIP [fdo#109271] * igt@i915_pm_rpm@dpms-non-lpsp: - shard-iclb: NOTRUN -> SKIP [fdo#109308] * igt@i915_pm_rpm@modeset-lpsp-stress: - shard-apl: NOTRUN -> SKIP [fdo#109271] +118 * igt@i915_pm_sseu@full-enable: - shard-iclb: NOTRUN -> SKIP [fdo#109288] * igt@kms_busy@extended-modeset-hang-oldfb-with-reset-render-f: - shard-kbl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_chamelium@hdmi-crc-planes-random: - shard-iclb: NOTRUN -> SKIP [fdo#109284] +5 * igt@kms_content_protection@atomic: - shard-apl: NOTRUN -> FAIL [fdo#110321] / [fdo#110336] +1 * igt@kms_cursor_crc@cursor-256x85-random: - shard-apl: PASS -> FAIL [fdo#103232] - shard-kbl: PASS -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-512x512-suspend: - shard-iclb: NOTRUN -> SKIP [fdo#109279] +1 * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic: - shard-iclb: NOTRUN -> SKIP [fdo#109274] +4 * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render: - shard-iclb: PASS -> FAIL [fdo#103167] +7 * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render: - shard-iclb: NOTRUN -> FAIL [fdo#103167] +1 * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-render: - shard-hsw: NOTRUN -> SKIP [fdo#109271] +19 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc: - shard-kbl: NOTRUN -> SKIP [fdo#109271] +2 * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt: - shard-iclb: NOTRUN -> SKIP [fdo#109280] +26 * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt: - shard-snb: NOTRUN -> SKIP [fdo#109271] +70 * igt@kms_lease@setcrtc_implicit_plane: - shard-apl: NOTRUN -> FAIL [fdo#110281] * igt@kms_pipe_crc_basic@hang-read-crc-pipe-d: - shard-hsw: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_pipe_crc_basic@hang-read-crc-pipe-e: - shard-apl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +8 * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc: - shard-apl: NOTRUN -> FAIL [fdo#108145] +3 * igt@kms_plane_scaling@2x-scaler-multi-pipe: - shard-iclb: NOTRUN -> SKIP [fdo#109274] / [fdo#109278] * igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping: - shard-glk: PASS -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_psr2_su@frontbuffer: - shard-iclb: PASS -> SKIP [fdo#109642] * igt@kms_psr@no_drrs: - shard-iclb: PASS -> FAIL [fdo#108341] * igt@kms_psr@psr2_primary_mmap_cpu: - shard-iclb: NOTRUN -> SKIP [fdo#109441] +2 * igt@kms_psr@psr2_primary_page_flip: - shard-iclb: PASS -> SKIP [fdo#109441] +2 * igt@kms_rotation_crc@multiplane-rotation: - shard-kbl: PASS -> INCOMPLETE [fdo#103665] * igt@kms_rotation_crc@multiplane-rotation-cropping-top: - shard-kbl: PASS -> FAIL [fdo#109016] * igt@kms_tv_load_detect@load-detect: - shard-iclb: NOTRUN -> SKIP [fdo#109309] * igt@kms_universal_plane@disable-primary-vs-flip-pipe-d: - shard-snb: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +5 * igt@kms_universal_plane@universal-plane-gen9-features-pipe-d: - shard-iclb: NOTRUN -> SKIP [fdo#109278] +3 * igt@perf_pmu@rc6: - shard-kbl: PASS -> SKIP [fdo#109271] * igt@prime_nv_api@i915_nv_import_twice_check_flink_name: - shard-iclb: NOTRUN -> SKIP [fdo#109291] +3 * igt@prime_vgem@fence-wait-bsd1: - shard-iclb: NOTRUN -> SKIP [fdo#109276] +13 * igt@v3d_get_bo_offset@create-get-offsets: - shard-iclb: NOTRUN -> SKIP [fdo#109315] #### Possible fixes #### * igt@gem_ctx_isolation@bcs0-s3: - shard-kbl: DMESG-WARN [fdo#108566] -> PASS +3 * igt@gem_eio@in-flight-immediate: - shard-apl: INCOMPLETE [fdo#103927] -> PASS * igt@gem_exec_suspend@basic-s3: - shard-kbl: INCOMPLETE [fdo#103665] -> PASS * igt@i915_suspend@fence-restore-tiled2untiled: - shard-apl: DMESG-WARN [fdo#108566] -> PASS +5 * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic: - shard-glk: FAIL [fdo#104873] -> PASS * igt@kms_dp_dsc@basic-dsc-enable-edp: - shard-iclb: SKIP [fdo#109349] -> PASS * igt@kms_flip@flip-vs-suspend-interruptible: - shard-hsw: INCOMPLETE [fdo#103540] -> PASS * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt: - shard-iclb: FAIL [fdo#103167] -> PASS +1 * igt@kms_plane_lowres@pipe-a-tiling-x: - shard-iclb: FAIL [fdo#103166] -> PASS * igt@kms_psr2_su@page_flip: - shard-iclb: SKIP [fdo#109642] -> PASS * igt@kms_psr@psr2_cursor_plane_move: - shard-iclb: SKIP [fdo#109441] -> PASS #### Warnings #### * igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic: - shard-apl: INCOMPLETE [fdo#103927] -> SKIP [fdo#109271] [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232 [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#104873]: https://bugs.freedesktop.org/show_bug.cgi?id=104873 [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#108341]: https://bugs.freedesktop.org/show_bug.cgi?id=108341 [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 [fdo#109016]: https://bugs.freedesktop.org/show_bug.cgi?id=109016 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274 [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276 [fdo#109277]: https://bugs.freedesktop.org/show_bug.cgi?id=109277 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279 [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280 [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283 [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284 [fdo#109288]: https://bugs.freedesktop.org/show_bug.cgi?id=109288 [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289 [fdo#109290]: https://bugs.freedesktop.org/show_bug.cgi?id=109290 [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291 [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308 [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#110206]: https://bugs.freedesktop.org/show_bug.cgi?id=110206 [fdo#110281]: https://bugs.freedesktop.org/show_bug.cgi?id=110281 [fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321 [fdo#110336]: https://bugs.freedesktop.org/show_bug.cgi?id=110336 [fdo#110426]: https://bugs.freedesktop.org/show_bug.cgi?id=110426 Participating hosts (10 -> 6) ------------------------------ Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005 Build changes ------------- * IGT: IGT_4956 -> IGTPW_2886 * Piglit: piglit_4509 -> None CI_DRM_5948: cb5afe9301dbef678a0af3bda9ed9f4ee0b3dbf7 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_2886: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2886/ IGT_4956: 1d921615b0b706f25c856aa0eb096f274380c199 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2886/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✗ Fi.CI.IGT: failure for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev3) 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala ` (7 preceding siblings ...) 2019-04-18 0:44 ` ✓ Fi.CI.IGT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev2) Patchwork @ 2019-04-18 2:09 ` Patchwork 2019-04-18 9:59 ` ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev4) Patchwork 2019-04-18 12:14 ` ✓ Fi.CI.IGT: " Patchwork 10 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2019-04-18 2:09 UTC (permalink / raw) To: Mika Kuoppala; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev3) URL : https://patchwork.freedesktop.org/series/59655/ State : failure == Summary == CI Bug Log - changes from CI_DRM_5948_full -> IGTPW_2888_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with IGTPW_2888_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in IGTPW_2888_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://patchwork.freedesktop.org/api/1.0/series/59655/revisions/3/mbox/ Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_2888_full: ### IGT changes ### #### Possible regressions #### * {igt@audio@hdmi-integrity} (NEW): - shard-kbl: NOTRUN -> FAIL +1 - shard-glk: NOTRUN -> FAIL +1 - shard-snb: NOTRUN -> FAIL +1 * {igt@audio@hdmi-integrity-after-suspend} (NEW): - shard-hsw: NOTRUN -> FAIL +1 - shard-apl: NOTRUN -> FAIL +1 - shard-iclb: NOTRUN -> FAIL * igt@perf_pmu@most-busy-check-all-bcs0: - shard-hsw: PASS -> FAIL +9 * igt@perf_pmu@most-busy-check-all-vcs0: - shard-snb: PASS -> FAIL +7 New tests --------- New tests have been introduced between CI_DRM_5948_full and IGTPW_2888_full: ### New IGT tests (2) ### * igt@audio@hdmi-integrity: - Statuses : 5 fail(s) 1 timeout(s) - Exec time: [0.14, 363.81] s * igt@audio@hdmi-integrity-after-suspend: - Statuses : 6 fail(s) - Exec time: [0.11, 5.11] s Known issues ------------ Here are the changes found in IGTPW_2888_full that come from known issues: ### IGT changes ### #### Issues hit #### * {igt@audio@hdmi-integrity} (NEW): - shard-iclb: NOTRUN -> TIMEOUT [fdo#109673] * igt@gem_exec_params@no-blt: - shard-iclb: NOTRUN -> SKIP [fdo#109283] * igt@gem_mocs_settings@mocs-rc6-dirty-render: - shard-iclb: NOTRUN -> SKIP [fdo#110206] * igt@gem_pwrite@huge-cpu-fbr: - shard-iclb: NOTRUN -> SKIP [fdo#109290] +1 * igt@gem_stolen@stolen-clear: - shard-iclb: NOTRUN -> SKIP [fdo#109277] * igt@gem_tiled_swapping@non-threaded: - shard-hsw: PASS -> FAIL [fdo#108686] * igt@gem_userptr_blits@readonly-pwrite-unsync: - shard-iclb: NOTRUN -> SKIP [fdo#110426] +1 * igt@gen3_render_mixed_blits: - shard-iclb: NOTRUN -> SKIP [fdo#109289] +1 * igt@i915_pm_rc6_residency@rc6-accuracy: - shard-snb: PASS -> SKIP [fdo#109271] +1 * igt@i915_pm_rpm@dpms-non-lpsp: - shard-iclb: NOTRUN -> SKIP [fdo#109308] * igt@i915_pm_rpm@i2c: - shard-iclb: PASS -> DMESG-WARN [fdo#109982] * igt@i915_pm_rpm@modeset-lpsp-stress: - shard-apl: NOTRUN -> SKIP [fdo#109271] +118 * igt@i915_pm_sseu@full-enable: - shard-iclb: NOTRUN -> SKIP [fdo#109288] * igt@kms_busy@extended-modeset-hang-oldfb-with-reset-render-f: - shard-kbl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_chamelium@hdmi-crc-planes-random: - shard-iclb: NOTRUN -> SKIP [fdo#109284] +5 * igt@kms_content_protection@atomic: - shard-apl: NOTRUN -> FAIL [fdo#110321] / [fdo#110336] +1 * igt@kms_cursor_crc@cursor-512x512-suspend: - shard-iclb: NOTRUN -> SKIP [fdo#109279] +1 * igt@kms_cursor_crc@cursor-64x64-suspend: - shard-apl: NOTRUN -> DMESG-WARN [fdo#108566] * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic: - shard-iclb: NOTRUN -> SKIP [fdo#109274] +4 * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw: - shard-iclb: PASS -> FAIL [fdo#103167] +4 * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite: - shard-iclb: NOTRUN -> FAIL [fdo#103167] +2 * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-render: - shard-hsw: NOTRUN -> SKIP [fdo#109271] +18 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc: - shard-kbl: NOTRUN -> SKIP [fdo#109271] +2 * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt: - shard-iclb: NOTRUN -> SKIP [fdo#109280] +26 * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt: - shard-snb: NOTRUN -> SKIP [fdo#109271] +71 * igt@kms_lease@setcrtc_implicit_plane: - shard-apl: NOTRUN -> FAIL [fdo#110281] * igt@kms_pipe_crc_basic@hang-read-crc-pipe-d: - shard-hsw: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_pipe_crc_basic@hang-read-crc-pipe-e: - shard-apl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +8 * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes: - shard-apl: PASS -> DMESG-WARN [fdo#108566] +4 * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc: - shard-apl: NOTRUN -> FAIL [fdo#108145] +3 * igt@kms_plane_scaling@2x-scaler-multi-pipe: - shard-iclb: NOTRUN -> SKIP [fdo#109274] / [fdo#109278] * igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping: - shard-glk: PASS -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_psr2_su@frontbuffer: - shard-iclb: PASS -> SKIP [fdo#109642] * igt@kms_psr@no_drrs: - shard-iclb: PASS -> FAIL [fdo#108341] * igt@kms_psr@psr2_primary_mmap_cpu: - shard-iclb: NOTRUN -> SKIP [fdo#109441] +2 * igt@kms_psr@psr2_primary_page_flip: - shard-iclb: PASS -> SKIP [fdo#109441] +2 * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom: - shard-kbl: PASS -> DMESG-FAIL [fdo#105763] +1 * igt@kms_tv_load_detect@load-detect: - shard-iclb: NOTRUN -> SKIP [fdo#109309] * igt@kms_universal_plane@disable-primary-vs-flip-pipe-d: - shard-snb: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +5 * igt@kms_universal_plane@universal-plane-gen9-features-pipe-d: - shard-iclb: NOTRUN -> SKIP [fdo#109278] +3 * igt@prime_nv_api@i915_nv_import_twice_check_flink_name: - shard-iclb: NOTRUN -> SKIP [fdo#109291] +3 * igt@prime_vgem@fence-wait-bsd1: - shard-iclb: NOTRUN -> SKIP [fdo#109276] +13 * igt@v3d_get_bo_offset@create-get-offsets: - shard-iclb: NOTRUN -> SKIP [fdo#109315] #### Possible fixes #### * igt@gem_ctx_isolation@bcs0-s3: - shard-kbl: DMESG-WARN [fdo#108566] -> PASS +3 * igt@gem_eio@in-flight-immediate: - shard-apl: INCOMPLETE [fdo#103927] -> PASS * igt@gem_eio@in-flight-suspend: - shard-apl: DMESG-WARN [fdo#108566] -> PASS +3 * igt@gem_exec_suspend@basic-s3: - shard-kbl: INCOMPLETE [fdo#103665] -> PASS * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic: - shard-glk: FAIL [fdo#104873] -> PASS * igt@kms_dp_dsc@basic-dsc-enable-edp: - shard-iclb: SKIP [fdo#109349] -> PASS * igt@kms_flip@flip-vs-suspend-interruptible: - shard-hsw: INCOMPLETE [fdo#103540] -> PASS * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt: - shard-iclb: FAIL [fdo#103167] -> PASS * igt@kms_plane_lowres@pipe-a-tiling-x: - shard-iclb: FAIL [fdo#103166] -> PASS * igt@kms_psr@psr2_cursor_blt: - shard-iclb: SKIP [fdo#109441] -> PASS +2 * igt@kms_setmode@basic: - shard-kbl: FAIL [fdo#99912] -> PASS #### Warnings #### * igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic: - shard-apl: INCOMPLETE [fdo#103927] -> SKIP [fdo#109271] {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#104873]: https://bugs.freedesktop.org/show_bug.cgi?id=104873 [fdo#105763]: https://bugs.freedesktop.org/show_bug.cgi?id=105763 [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#108341]: https://bugs.freedesktop.org/show_bug.cgi?id=108341 [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 [fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274 [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276 [fdo#109277]: https://bugs.freedesktop.org/show_bug.cgi?id=109277 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279 [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280 [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283 [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284 [fdo#109288]: https://bugs.freedesktop.org/show_bug.cgi?id=109288 [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289 [fdo#109290]: https://bugs.freedesktop.org/show_bug.cgi?id=109290 [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291 [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308 [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#109673]: https://bugs.freedesktop.org/show_bug.cgi?id=109673 [fdo#109982]: https://bugs.freedesktop.org/show_bug.cgi?id=109982 [fdo#110206]: https://bugs.freedesktop.org/show_bug.cgi?id=110206 [fdo#110281]: https://bugs.freedesktop.org/show_bug.cgi?id=110281 [fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321 [fdo#110336]: https://bugs.freedesktop.org/show_bug.cgi?id=110336 [fdo#110426]: https://bugs.freedesktop.org/show_bug.cgi?id=110426 [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912 Participating hosts (10 -> 6) ------------------------------ Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005 Build changes ------------- * IGT: IGT_4956 -> IGTPW_2888 * Piglit: piglit_4509 -> None CI_DRM_5948: cb5afe9301dbef678a0af3bda9ed9f4ee0b3dbf7 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_2888: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2888/ IGT_4956: 1d921615b0b706f25c856aa0eb096f274380c199 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2888/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev4) 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala ` (8 preceding siblings ...) 2019-04-18 2:09 ` ✗ Fi.CI.IGT: failure for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev3) Patchwork @ 2019-04-18 9:59 ` Patchwork 2019-04-18 12:14 ` ✓ Fi.CI.IGT: " Patchwork 10 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2019-04-18 9:59 UTC (permalink / raw) To: Mika Kuoppala; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev4) URL : https://patchwork.freedesktop.org/series/59655/ State : success == Summary == CI Bug Log - changes from CI_DRM_5952 -> IGTPW_2891 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/59655/revisions/4/mbox/ Known issues ------------ Here are the changes found in IGTPW_2891 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@amdgpu/amd_basic@query-info: - fi-bsw-kefka: NOTRUN -> SKIP [fdo#109271] +50 * igt@gem_exec_basic@basic-blt: - fi-icl-y: PASS -> INCOMPLETE [fdo#107713] / [fdo#110246] * igt@gem_exec_basic@gtt-bsd2: - fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] +52 * igt@gem_exec_suspend@basic-s3: - fi-blb-e6850: PASS -> INCOMPLETE [fdo#107718] * igt@kms_addfb_basic@addfb25-y-tiled-small: - fi-byt-n2820: NOTRUN -> SKIP [fdo#109271] +51 * igt@kms_busy@basic-flip-c: - fi-skl-6770hq: PASS -> SKIP [fdo#109271] / [fdo#109278] +2 - fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] - fi-bsw-kefka: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] - fi-byt-n2820: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_chamelium@hdmi-edid-read: - fi-hsw-peppy: NOTRUN -> SKIP [fdo#109271] +46 * igt@kms_flip@basic-flip-vs-dpms: - fi-skl-6770hq: PASS -> SKIP [fdo#109271] +23 * igt@kms_frontbuffer_tracking@basic: - fi-hsw-peppy: NOTRUN -> DMESG-FAIL [fdo#102614] / [fdo#107814] #### Possible fixes #### * igt@i915_selftest@live_execlists: - fi-apl-guc: INCOMPLETE [fdo#103927] / [fdo#109720] -> PASS {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614 [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718 [fdo#107814]: https://bugs.freedesktop.org/show_bug.cgi?id=107814 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285 [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289 [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#109316]: https://bugs.freedesktop.org/show_bug.cgi?id=109316 [fdo#109593]: https://bugs.freedesktop.org/show_bug.cgi?id=109593 [fdo#109720]: https://bugs.freedesktop.org/show_bug.cgi?id=109720 [fdo#110246]: https://bugs.freedesktop.org/show_bug.cgi?id=110246 Participating hosts (44 -> 41) ------------------------------ Additional (6): fi-hsw-peppy fi-icl-u2 fi-byt-clapper fi-bsw-kefka fi-byt-n2820 fi-icl-dsi Missing (9): fi-ilk-m540 fi-bxt-dsi fi-bsw-n3050 fi-byt-j1900 fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-pnv-d510 fi-bdw-samus Build changes ------------- * IGT: IGT_4956 -> IGTPW_2891 CI_DRM_5952: 65305a057be0e155321a0765a3a24115063f3a32 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_2891: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2891/ IGT_4956: 1d921615b0b706f25c856aa0eb096f274380c199 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools == Testlist changes == +igt@audio@hdmi-integrity +igt@audio@hdmi-integrity-after-hibernate +igt@audio@hdmi-integrity-after-suspend == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2891/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✓ Fi.CI.IGT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev4) 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala ` (9 preceding siblings ...) 2019-04-18 9:59 ` ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev4) Patchwork @ 2019-04-18 12:14 ` Patchwork 10 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2019-04-18 12:14 UTC (permalink / raw) To: Mika Kuoppala; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev4) URL : https://patchwork.freedesktop.org/series/59655/ State : success == Summary == CI Bug Log - changes from CI_DRM_5952_full -> IGTPW_2891_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/59655/revisions/4/mbox/ Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_2891_full: ### IGT changes ### #### Possible regressions #### * {igt@audio@hdmi-integrity} (NEW): - shard-kbl: NOTRUN -> FAIL - shard-glk: NOTRUN -> FAIL +1 - shard-iclb: NOTRUN -> FAIL +1 * {igt@audio@hdmi-integrity-after-suspend} (NEW): - shard-hsw: NOTRUN -> FAIL +1 - shard-apl: NOTRUN -> FAIL +1 - shard-snb: NOTRUN -> FAIL New tests --------- New tests have been introduced between CI_DRM_5952_full and IGTPW_2891_full: ### New IGT tests (2) ### * igt@audio@hdmi-integrity: - Statuses : 5 fail(s) - Exec time: [0.30, 5.19] s * igt@audio@hdmi-integrity-after-suspend: - Statuses : 5 fail(s) - Exec time: [0.16, 4.25] s Known issues ------------ Here are the changes found in IGTPW_2891_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_eio@in-flight-suspend: - shard-apl: PASS -> DMESG-WARN [fdo#108566] +6 * igt@gem_mocs_settings@mocs-reset-bsd2: - shard-snb: NOTRUN -> SKIP [fdo#109271] +32 * igt@i915_pm_rc6_residency@rc6-accuracy: - shard-snb: PASS -> SKIP [fdo#109271] * igt@kms_busy@extended-modeset-hang-oldfb-with-reset-render-f: - shard-kbl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-gtt: - shard-iclb: PASS -> FAIL [fdo#103167] +7 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc: - shard-kbl: NOTRUN -> SKIP [fdo#109271] +2 * igt@kms_lease@cursor_implicit_plane: - shard-snb: NOTRUN -> FAIL [fdo#110278] * igt@kms_pipe_crc_basic@hang-read-crc-pipe-f: - shard-snb: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +3 * igt@kms_plane_lowres@pipe-a-tiling-x: - shard-iclb: PASS -> FAIL [fdo#103166] * igt@kms_plane_scaling@pipe-b-scaler-with-pixel-format: - shard-glk: PASS -> SKIP [fdo#109271] / [fdo#109278] * igt@kms_psr@psr2_cursor_mmap_cpu: - shard-iclb: PASS -> SKIP [fdo#109441] +1 * igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend: - shard-kbl: PASS -> INCOMPLETE [fdo#103665] #### Possible fixes #### * igt@gem_eio@unwedge-stress: - shard-glk: FAIL [fdo#109661] -> PASS * igt@gem_exec_suspend@basic-s3: - shard-kbl: INCOMPLETE [fdo#103665] -> PASS * igt@kms_dp_dsc@basic-dsc-enable-edp: - shard-iclb: SKIP [fdo#109349] -> PASS * igt@kms_frontbuffer_tracking@basic: - shard-snb: SKIP [fdo#109271] -> PASS +1 * igt@kms_frontbuffer_tracking@fbc-suspend: - shard-kbl: DMESG-WARN [fdo#103313] -> PASS - shard-apl: DMESG-WARN [fdo#108566] -> PASS +5 * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render: - shard-iclb: FAIL [fdo#103167] -> PASS +5 * igt@kms_psr@psr2_primary_mmap_cpu: - shard-iclb: SKIP [fdo#109441] -> PASS +1 * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom: - shard-kbl: DMESG-FAIL [fdo#105763] -> PASS * igt@kms_setmode@basic: - shard-kbl: FAIL [fdo#99912] -> PASS {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103313]: https://bugs.freedesktop.org/show_bug.cgi?id=103313 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#105763]: https://bugs.freedesktop.org/show_bug.cgi?id=105763 [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#109661]: https://bugs.freedesktop.org/show_bug.cgi?id=109661 [fdo#110278]: https://bugs.freedesktop.org/show_bug.cgi?id=110278 [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912 Participating hosts (10 -> 6) ------------------------------ Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005 Build changes ------------- * IGT: IGT_4956 -> IGTPW_2891 * Piglit: piglit_4509 -> None CI_DRM_5952: 65305a057be0e155321a0765a3a24115063f3a32 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_2891: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2891/ IGT_4956: 1d921615b0b706f25c856aa0eb096f274380c199 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2891/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2019-04-18 12:14 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-17 15:28 [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Mika Kuoppala 2019-04-17 15:28 ` [PATCH i-g-t 2/3] lib/igt_dummyload: Get rid of 'batch' on spinner accessors Mika Kuoppala 2019-04-17 20:04 ` Chris Wilson 2019-04-17 15:28 ` [PATCH i-g-t 3/3] lib/igt_dummyload: Introduce igt_spin_reset Mika Kuoppala 2019-04-17 20:06 ` Chris Wilson 2019-04-17 15:37 ` [PATCH i-g-t 1/3] lib/igt_dummyload: libify checks for spin batch activation Chris Wilson 2019-04-17 15:54 ` Mika Kuoppala 2019-04-17 16:00 ` Chris Wilson 2019-04-17 16:43 ` Mika Kuoppala 2019-04-17 20:04 ` Chris Wilson 2019-04-18 8:54 ` Mika Kuoppala 2019-04-17 16:15 ` ✓ Fi.CI.BAT: success for series starting with [1/3] " Patchwork 2019-04-17 17:03 ` ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev2) Patchwork 2019-04-17 18:04 ` ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev3) Patchwork 2019-04-17 23:59 ` ✓ Fi.CI.IGT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation Patchwork 2019-04-18 0:44 ` ✓ Fi.CI.IGT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev2) Patchwork 2019-04-18 2:09 ` ✗ Fi.CI.IGT: failure for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev3) Patchwork 2019-04-18 9:59 ` ✓ Fi.CI.BAT: success for series starting with [1/3] lib/igt_dummyload: libify checks for spin batch activation (rev4) Patchwork 2019-04-18 12:14 ` ✓ Fi.CI.IGT: " Patchwork
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.