* [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
* [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 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
* ✓ 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
* [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
* ✓ 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
* 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
* 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
* 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
* ✓ 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
* [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 (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.