summaryrefslogtreecommitdiff
path: root/tests/i915/gem_spin_batch.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2021-01-03 15:06:37 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2021-01-03 15:08:51 +0000
commit10629b2147503b8155485b0f433b5169c07b70a4 (patch)
tree17961e33642db856c310cb055f225280c67b2037 /tests/i915/gem_spin_batch.c
parent7fbd0fa5544d8b4d0f2996a2cfdb25170fa7f435 (diff)
i915/gem_spin_batch: Avoid igt_require() in the middle of a for loop of spinners
Don't accidentally SKIP a test after launching a bunch of spinners. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Diffstat (limited to 'tests/i915/gem_spin_batch.c')
-rw-r--r--tests/i915/gem_spin_batch.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/tests/i915/gem_spin_batch.c b/tests/i915/gem_spin_batch.c
index d625efe2..5cd02d55 100644
--- a/tests/i915/gem_spin_batch.c
+++ b/tests/i915/gem_spin_batch.c
@@ -142,20 +142,24 @@ spin_on_all_engines(int fd, unsigned long flags, unsigned int timeout_sec)
static void spin_all(int i915, unsigned int flags)
#define PARALLEL_SPIN_NEW_CTX BIT(0)
{
+ const struct intel_execution_engine2 *e;
struct igt_spin *spin, *n;
IGT_LIST_HEAD(list);
- for_each_physical_ring(e, i915) {
+ __for_each_physical_engine(i915, e) {
uint32_t ctx;
+ if (!gem_class_can_store_dword(i915, e->class))
+ continue;
+
ctx = 0;
if (flags & PARALLEL_SPIN_NEW_CTX)
- ctx = gem_context_create(i915);
+ ctx = gem_context_clone_with_engines(i915, 0);
/* Prevent preemption so only one is allowed on each engine */
spin = igt_spin_new(i915,
.ctx = ctx,
- .engine = eb_ring(e),
+ .engine = e->flags,
.flags = (IGT_SPIN_POLL_RUN |
IGT_SPIN_NO_PREEMPTION));
if (ctx)
@@ -167,6 +171,8 @@ static void spin_all(int i915, unsigned int flags)
igt_list_for_each_entry_safe(spin, n, &list, link) {
igt_assert(gem_bo_busy(i915, spin->handle));
+ igt_spin_end(spin);
+ gem_sync(i915, spin->handle);
igt_spin_free(i915, spin);
}
}