summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--benchmarks/gem_syslatency.c16
-rw-r--r--lib/i915/gem_ring.c4
-rw-r--r--lib/igt_gt.h24
-rw-r--r--tests/amdgpu/amd_prime.c6
-rw-r--r--tests/i915/gem_bad_reloc.c4
-rw-r--r--tests/i915/gem_busy.c4
-rw-r--r--tests/i915/gem_concurrent_all.c7
-rw-r--r--tests/i915/gem_cs_prefetch.c2
-rw-r--r--tests/i915/gem_ctx_create.c12
-rw-r--r--tests/i915/gem_ctx_shared.c43
-rw-r--r--tests/i915/gem_ctx_switch.c2
-rw-r--r--tests/i915/gem_ctx_thrash.c14
-rw-r--r--tests/i915/gem_eio.c29
-rw-r--r--tests/i915/gem_exec_async.c13
-rw-r--r--tests/i915/gem_exec_await.c7
-rw-r--r--tests/i915/gem_exec_capture.c6
-rw-r--r--tests/i915/gem_exec_create.c8
-rw-r--r--tests/i915/gem_exec_fence.c61
-rw-r--r--tests/i915/gem_exec_flush.c2
-rw-r--r--tests/i915/gem_exec_gttfill.c11
-rw-r--r--tests/i915/gem_exec_latency.c33
-rw-r--r--tests/i915/gem_exec_nop.c44
-rw-r--r--tests/i915/gem_exec_params.c14
-rw-r--r--tests/i915/gem_exec_reloc.c8
-rw-r--r--tests/i915/gem_exec_reuse.c6
-rw-r--r--tests/i915/gem_exec_schedule.c172
-rw-r--r--tests/i915/gem_exec_suspend.c20
-rw-r--r--tests/i915/gem_exec_whisper.c8
-rw-r--r--tests/i915/gem_mocs_settings.c6
-rw-r--r--tests/i915/gem_reset_stats.c10
-rw-r--r--tests/i915/gem_ring_sync_loop.c5
-rw-r--r--tests/i915/gem_ringfill.c3
-rw-r--r--tests/i915/gem_shrink.c5
-rw-r--r--tests/i915/gem_spin_batch.c2
-rw-r--r--tests/i915/gem_storedw_loop.c2
-rw-r--r--tests/i915/gem_sync.c99
-rw-r--r--tests/i915/gem_userptr_blits.c7
-rw-r--r--tests/i915/i915_module_load.c22
-rw-r--r--tests/kms_busy.c30
-rw-r--r--tests/prime_busy.c8
-rw-r--r--tests/prime_vgem.c16
41 files changed, 368 insertions, 427 deletions
diff --git a/benchmarks/gem_syslatency.c b/benchmarks/gem_syslatency.c
index d7cf0ed4..40230630 100644
--- a/benchmarks/gem_syslatency.c
+++ b/benchmarks/gem_syslatency.c
@@ -79,17 +79,6 @@ static void force_low_latency(void)
#define ENGINE_FLAGS (I915_EXEC_RING_MASK | LOCAL_I915_EXEC_BSD_MASK)
-static bool ignore_engine(int fd, unsigned engine)
-{
- if (engine == 0)
- return true;
-
- if (gem_has_bsd2(fd) && engine == I915_EXEC_BSD)
- return true;
-
- return false;
-}
-
static void *gem_busyspin(void *arg)
{
const uint32_t bbe = MI_BATCH_BUFFER_END;
@@ -100,14 +89,13 @@ static void *gem_busyspin(void *arg)
bs->sz ? bs->sz + sizeof(bbe) : bs->leak ? 16 << 20 : 4 << 10;
unsigned engines[16];
unsigned nengine;
- unsigned engine;
int fd;
fd = drm_open_driver(DRIVER_INTEL);
nengine = 0;
- for_each_engine(fd, engine)
- if (!ignore_engine(fd, engine)) engines[nengine++] = engine;
+ for_each_physical_engine(e, fd)
+ engines[nengine++] = eb_ring(e);
memset(obj, 0, sizeof(obj));
obj[0].handle = gem_create(fd, 4096);
diff --git a/lib/i915/gem_ring.c b/lib/i915/gem_ring.c
index 5ca2a728..99f4741c 100644
--- a/lib/i915/gem_ring.c
+++ b/lib/i915/gem_ring.c
@@ -153,9 +153,9 @@ gem_measure_ring_inflight(int fd, unsigned int engine, enum measure_ring_flags f
fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | O_NONBLOCK);
if (engine == ALL_ENGINES) {
- for_each_physical_engine(fd, engine) {
+ for_each_physical_engine(e, fd) {
unsigned int count =
- __gem_measure_ring_inflight(fd, engine, flags);
+ __gem_measure_ring_inflight(fd, eb_ring(e), flags);
if (count < min)
min = count;
diff --git a/lib/igt_gt.h b/lib/igt_gt.h
index 73b5002a..66088d39 100644
--- a/lib/igt_gt.h
+++ b/lib/igt_gt.h
@@ -72,19 +72,21 @@ extern const struct intel_execution_engine {
unsigned flags;
} intel_execution_engines[];
+#define eb_ring(e) ((e)->exec_id | (e)->flags)
+
#define for_if(expr__) if (!(expr__)) {} else
-#define for_each_engine(fd__, flags__) \
- for (const struct intel_execution_engine *e__ = intel_execution_engines;\
- e__->name; \
- e__++) \
- for_if (gem_has_ring(fd__, flags__ = e__->exec_id | e__->flags))
-
-#define for_each_physical_engine(fd__, flags__) \
- for (const struct intel_execution_engine *e__ = intel_execution_engines;\
- e__->name; \
- e__++) \
- for_if (gem_ring_has_physical_engine(fd__, flags__ = e__->exec_id | e__->flags))
+#define for_each_engine(it__, fd__) \
+ for (const struct intel_execution_engine *it__ = intel_execution_engines;\
+ it__->name; \
+ it__++) \
+ for_if (gem_has_ring(fd__, eb_ring(it__)))
+
+#define for_each_physical_engine(it__, fd__) \
+ for (const struct intel_execution_engine *it__ = intel_execution_engines;\
+ it__->name; \
+ it__++) \
+ for_if (gem_ring_has_physical_engine(fd__, eb_ring(it__)))
bool gem_ring_is_physical_engine(int fd, unsigned int ring);
bool gem_ring_has_physical_engine(int fd, unsigned int ring);
diff --git a/tests/amdgpu/amd_prime.c b/tests/amdgpu/amd_prime.c
index dc71ac70..fdb8a028 100644
--- a/tests/amdgpu/amd_prime.c
+++ b/tests/amdgpu/amd_prime.c
@@ -173,14 +173,14 @@ static void i915_to_amd(int i915, int amd, amdgpu_device_handle device)
const uint32_t bbe = MI_BATCH_BUFFER_END;
struct drm_i915_gem_exec_object2 obj[2];
struct drm_i915_gem_execbuffer2 execbuf;
- unsigned int engines[16], engine;
+ unsigned int engines[16];
unsigned int nengine;
unsigned long count;
struct cork c;
nengine = 0;
- for_each_physical_engine(i915, engine)
- engines[nengine++] = engine;
+ for_each_physical_engine(e, i915)
+ engines[nengine++] = eb_ring(e);
igt_require(nengine);
memset(obj, 0, sizeof(obj));
diff --git a/tests/i915/gem_bad_reloc.c b/tests/i915/gem_bad_reloc.c
index c03e5beb..96c9babe 100644
--- a/tests/i915/gem_bad_reloc.c
+++ b/tests/i915/gem_bad_reloc.c
@@ -196,10 +196,10 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
igt_subtest_f("negative-reloc-%s", e->name)
- negative_reloc(fd, e->exec_id | e->flags, 0);
+ negative_reloc(fd, eb_ring(e), 0);
igt_subtest_f("negative-reloc-lut-%s", e->name)
- negative_reloc(fd, e->exec_id | e->flags, USE_LUT);
+ negative_reloc(fd, eb_ring(e), USE_LUT);
}
igt_subtest("negative-reloc-bltcopy")
diff --git a/tests/i915/gem_busy.c b/tests/i915/gem_busy.c
index a5535870..a8388149 100644
--- a/tests/i915/gem_busy.c
+++ b/tests/i915/gem_busy.c
@@ -319,8 +319,8 @@ static void close_race(int fd)
*/
nengine = 0;
- for_each_engine(fd, i)
- engines[nengine++] = i;
+ for_each_engine(e, fd)
+ engines[nengine++] = eb_ring(e);
igt_require(nengine);
control = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
diff --git a/tests/i915/gem_concurrent_all.c b/tests/i915/gem_concurrent_all.c
index 266995d1..992bea62 100644
--- a/tests/i915/gem_concurrent_all.c
+++ b/tests/i915/gem_concurrent_all.c
@@ -949,15 +949,14 @@ static igt_hang_t rcs_hang(void)
static igt_hang_t all_hang(void)
{
igt_hang_t hang = igt_hang_ring(fd, I915_EXEC_RENDER);
- unsigned engine;
- for_each_physical_engine(fd, engine) {
+ for_each_physical_engine(e, fd) {
struct drm_i915_gem_execbuffer2 eb = hang.spin->execbuf;
- if (engine == I915_EXEC_RENDER)
+ eb.flags = eb_ring(e);
+ if (eb.flags == I915_EXEC_RENDER)
continue;
- eb.flags = engine;
__gem_execbuf(fd, &eb);
}
diff --git a/tests/i915/gem_cs_prefetch.c b/tests/i915/gem_cs_prefetch.c
index 2b865368..17190857 100644
--- a/tests/i915/gem_cs_prefetch.c
+++ b/tests/i915/gem_cs_prefetch.c
@@ -145,5 +145,5 @@ igt_main
for (e = intel_execution_engines; e->name; e++)
igt_subtest_f("%s", e->name)
- test_ring(e->exec_id | e->flags);
+ test_ring(eb_ring(e));
}
diff --git a/tests/i915/gem_ctx_create.c b/tests/i915/gem_ctx_create.c
index 1e2c40c4..83da0569 100644
--- a/tests/i915/gem_ctx_create.c
+++ b/tests/i915/gem_ctx_create.c
@@ -527,14 +527,12 @@ igt_main
int fd = -1;
igt_fixture {
- unsigned engine;
-
fd = drm_open_driver(DRIVER_INTEL);
igt_require_gem(fd);
gem_require_contexts(fd);
- for_each_physical_engine(fd, engine)
- all_engines[all_nengine++] = engine;
+ for_each_physical_engine(e, fd)
+ all_engines[all_nengine++] = eb_ring(e);
igt_require(all_nengine);
if (gem_uses_full_ppgtt(fd)) {
@@ -582,12 +580,12 @@ igt_main
for (const struct intel_execution_engine *e = intel_execution_engines;
e->name; e++) {
igt_subtest_f("active-%s", e->name)
- active(fd, e->exec_id | e->flags, 20, 1);
+ active(fd, eb_ring(e), 20, 1);
igt_subtest_f("forked-active-%s", e->name)
- active(fd, e->exec_id | e->flags, 20, ncpus);
+ active(fd, eb_ring(e), 20, ncpus);
if (e->exec_id) {
igt_subtest_f("hog-%s", e->name)
- active(fd, e->exec_id | e->flags, 20, -1);
+ active(fd, eb_ring(e), 20, -1);
}
}
diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
index f7852482..6d8cbcce 100644
--- a/tests/i915/gem_ctx_shared.c
+++ b/tests/i915/gem_ctx_shared.c
@@ -326,7 +326,6 @@ static void single_timeline(int i915)
struct sync_file_info sync_file_info = {
.num_fences = 1,
};
- unsigned int engine;
int n;
igt_require(has_single_timeline(i915));
@@ -347,7 +346,7 @@ static void single_timeline(int i915)
I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE);
execbuf.flags = I915_EXEC_FENCE_OUT;
n = 0;
- for_each_engine(i915, engine) {
+ for_each_engine(e, i915) {
gem_execbuf_wr(i915, &execbuf);
sync_file_info.sync_fence_info = to_user_pointer(&rings[n]);
do_ioctl(execbuf.rsvd2 >> 32, SYNC_IOC_FILE_INFO, &sync_file_info);
@@ -368,7 +367,6 @@ static void single_timeline(int i915)
static void exec_single_timeline(int i915, unsigned int engine)
{
- unsigned int other;
igt_spin_t *spin;
uint32_t ctx;
@@ -381,17 +379,17 @@ static void exec_single_timeline(int i915, unsigned int engine)
*/
ctx = 0;
spin = NULL;
- for_each_physical_engine(i915, other) {
- if (other == engine)
+ for_each_physical_engine(e, i915) {
+ if (eb_ring(e) == engine)
continue;
if (spin == NULL) {
- spin = __igt_spin_new(i915, .ctx = ctx, .engine = other);
+ spin = __igt_spin_new(i915, .ctx = ctx, .engine = eb_ring(e));
} else {
struct drm_i915_gem_execbuffer2 execbuf = {
.buffers_ptr = spin->execbuf.buffers_ptr,
.buffer_count = spin->execbuf.buffer_count,
- .flags = other,
+ .flags = eb_ring(e),
.rsvd1 = ctx,
};
gem_execbuf(i915, &execbuf);
@@ -409,17 +407,17 @@ static void exec_single_timeline(int i915, unsigned int engine)
ctx = gem_context_clone(i915, 0, 0,
I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE);
spin = NULL;
- for_each_physical_engine(i915, other) {
- if (other == engine)
+ for_each_physical_engine(e, i915) {
+ if (eb_ring(e) == engine)
continue;
if (spin == NULL) {
- spin = __igt_spin_new(i915, .ctx = ctx, .engine = other);
+ spin = __igt_spin_new(i915, .ctx = ctx, .engine = eb_ring(e));
} else {
struct drm_i915_gem_execbuffer2 execbuf = {
.buffers_ptr = spin->execbuf.buffers_ptr,
.buffer_count = spin->execbuf.buffer_count,
- .flags = other,
+ .flags = eb_ring(e),
.rsvd1 = ctx,
};
gem_execbuf(i915, &execbuf);
@@ -742,8 +740,8 @@ static void smoketest(int i915, unsigned ring, unsigned timeout)
uint32_t *ptr;
nengine = 0;
- for_each_physical_engine(i915, engine)
- engines[nengine++] = engine;
+ for_each_physical_engine(e, i915)
+ engines[nengine++] = eb_ring(e);
igt_require(nengine);
scratch = gem_create(i915, 4096);
@@ -827,11 +825,10 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
igt_subtest_f("exec-shared-gtt-%s", e->name)
- exec_shared_gtt(i915, e->exec_id | e->flags);
+ exec_shared_gtt(i915, eb_ring(e));
igt_subtest_f("exec-single-timeline-%s", e->name)
- exec_single_timeline(i915,
- e->exec_id | e->flags);
+ exec_single_timeline(i915, eb_ring(e));
/*
* Check that the shared contexts operate independently,
@@ -842,26 +839,26 @@ igt_main
*/
igt_subtest_group {
igt_fixture {
- gem_require_ring(i915, e->exec_id | e->flags);
- igt_require(gem_can_store_dword(i915, e->exec_id | e->flags));
+ gem_require_ring(i915, eb_ring(e));
+ igt_require(gem_can_store_dword(i915, eb_ring(e)));
igt_require(gem_scheduler_enabled(i915));
igt_require(gem_scheduler_has_ctx_priority(i915));
}
igt_subtest_f("Q-independent-%s", e->name)
- independent(i915, e->exec_id | e->flags, 0);
+ independent(i915, eb_ring(e), 0);
igt_subtest_f("Q-in-order-%s", e->name)
- reorder(i915, e->exec_id | e->flags, EQUAL);
+ reorder(i915, eb_ring(e), EQUAL);
igt_subtest_f("Q-out-order-%s", e->name)
- reorder(i915, e->exec_id | e->flags, 0);
+ reorder(i915, eb_ring(e), 0);
igt_subtest_f("Q-promotion-%s", e->name)
- promotion(i915, e->exec_id | e->flags);
+ promotion(i915, eb_ring(e));
igt_subtest_f("Q-smoketest-%s", e->name)
- smoketest(i915, e->exec_id | e->flags, 5);
+ smoketest(i915, eb_ring(e), 5);
}
}
diff --git a/tests/i915/gem_ctx_switch.c b/tests/i915/gem_ctx_switch.c
index c071def7..36ecd537 100644
--- a/tests/i915/gem_ctx_switch.c
+++ b/tests/i915/gem_ctx_switch.c
@@ -349,7 +349,7 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
struct intel_execution_engine2 e2__;
- e2__ = gem_eb_flags_to_engine(e->exec_id | e->flags);
+ e2__ = gem_eb_flags_to_engine(eb_ring(e));
if (e2__.flags == -1)
continue; /* I915_EXEC_BSD with no ring selectors */
diff --git a/tests/i915/gem_ctx_thrash.c b/tests/i915/gem_ctx_thrash.c
index b25f95f1..62c26e9a 100644
--- a/tests/i915/gem_ctx_thrash.c
+++ b/tests/i915/gem_ctx_thrash.c
@@ -103,13 +103,11 @@ static void single(const char *name, bool all_engines)
num_engines = 0;
if (all_engines) {
- unsigned engine;
-
- for_each_physical_engine(fd, engine) {
- if (!gem_can_store_dword(fd, engine))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- engines[num_engines++] = engine;
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
@@ -220,7 +218,7 @@ static void single(const char *name, bool all_engines)
static void processes(void)
{
- unsigned engines[16], engine;
+ unsigned engines[16];
int num_engines;
struct rlimit rlim;
unsigned num_ctx;
@@ -230,8 +228,8 @@ static void processes(void)
fd = drm_open_driver(DRIVER_INTEL);
num_engines = 0;
- for_each_physical_engine(fd, engine) {
- engines[num_engines++] = engine;
+ for_each_physical_engine(e, fd) {
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
index 892f3657..8d6cb976 100644
--- a/tests/i915/gem_eio.c
+++ b/tests/i915/gem_eio.c
@@ -427,7 +427,6 @@ static void test_suspend(int fd, int state)
static void test_inflight(int fd, unsigned int wait)
{
int parent_fd = fd;
- unsigned int engine;
int fence[64]; /* mostly conservative estimate of ring size */
int max;
@@ -439,7 +438,7 @@ static void test_inflight(int fd, unsigned int wait)
max = min(max - 1, ARRAY_SIZE(fence));
igt_debug("Using %d inflight batches\n", max);
- for_each_engine(parent_fd, engine) {
+ for_each_engine(e, parent_fd) {
const uint32_t bbe = MI_BATCH_BUFFER_END;
struct drm_i915_gem_exec_object2 obj[2];
struct drm_i915_gem_execbuffer2 execbuf;
@@ -454,16 +453,16 @@ static void test_inflight(int fd, unsigned int wait)
gem_write(fd, obj[1].handle, 0, &bbe, sizeof(bbe));
gem_quiescent_gpu(fd);
- igt_debug("Starting %s on engine '%s'\n", __func__, e__->name);
+ igt_debug("Starting %s on engine '%s'\n", __func__, e->name);
igt_require(i915_reset_control(false));
- hang = spin_sync(fd, 0, engine);
+ hang = spin_sync(fd, 0, eb_ring(e));
obj[0].handle = hang->handle;
memset(&execbuf, 0, sizeof(execbuf));
execbuf.buffers_ptr = to_user_pointer(obj);
execbuf.buffer_count = 2;
- execbuf.flags = engine | I915_EXEC_FENCE_OUT;
+ execbuf.flags = eb_ring(e) | I915_EXEC_FENCE_OUT;
for (unsigned int n = 0; n < max; n++) {
gem_execbuf_wr(fd, &execbuf);
@@ -563,13 +562,12 @@ static uint32_t context_create_safe(int i915)
static void test_inflight_contexts(int fd, unsigned int wait)
{
int parent_fd = fd;
- unsigned int engine;
igt_require_gem(fd);
igt_require(gem_has_exec_fence(fd));
gem_require_contexts(fd);
- for_each_engine(parent_fd, engine) {
+ for_each_engine(e, parent_fd) {
const uint32_t bbe = MI_BATCH_BUFFER_END;
struct drm_i915_gem_exec_object2 obj[2];
struct drm_i915_gem_execbuffer2 execbuf;
@@ -586,7 +584,7 @@ static void test_inflight_contexts(int fd, unsigned int wait)
gem_quiescent_gpu(fd);
- igt_debug("Starting %s on engine '%s'\n", __func__, e__->name);
+ igt_debug("Starting %s on engine '%s'\n", __func__, e->name);
igt_require(i915_reset_control(false));
memset(obj, 0, sizeof(obj));
@@ -594,13 +592,13 @@ static void test_inflight_contexts(int fd, unsigned int wait)
obj[1].handle = gem_create(fd, 4096);
gem_write(fd, obj[1].handle, 0, &bbe, sizeof(bbe));
- hang = spin_sync(fd, 0, engine);
+ hang = spin_sync(fd, 0, eb_ring(e));
obj[0].handle = hang->handle;
memset(&execbuf, 0, sizeof(execbuf));
execbuf.buffers_ptr = to_user_pointer(obj);
execbuf.buffer_count = 2;
- execbuf.flags = engine | I915_EXEC_FENCE_OUT;
+ execbuf.flags = eb_ring(e) | I915_EXEC_FENCE_OUT;
count = 0;
for (unsigned int n = 0; n < ARRAY_SIZE(fence); n++) {
@@ -691,7 +689,7 @@ static void test_inflight_internal(int fd, unsigned int wait)
struct drm_i915_gem_execbuffer2 execbuf;
struct drm_i915_gem_exec_object2 obj[2];
uint32_t bbe = MI_BATCH_BUFFER_END;
- unsigned engine, nfence = 0;
+ unsigned nfence = 0;
int fences[16];
igt_spin_t *hang;
@@ -712,8 +710,8 @@ static void test_inflight_internal(int fd, unsigned int wait)
memset(&execbuf, 0, sizeof(execbuf));
execbuf.buffers_ptr = to_user_pointer(obj);
execbuf.buffer_count = 2;
- for_each_engine(fd, engine) {
- execbuf.flags = engine | I915_EXEC_FENCE_OUT;
+ for_each_engine(e, fd) {
+ execbuf.flags = eb_ring(e) | I915_EXEC_FENCE_OUT;
gem_execbuf_wr(fd, &execbuf);
@@ -822,10 +820,9 @@ static void reset_stress(int fd, uint32_t ctx0,
static void test_reset_stress(int fd, unsigned int flags)
{
uint32_t ctx0 = context_create_safe(fd);
- unsigned int engine;
- for_each_engine(fd, engine)
- reset_stress(fd, ctx0, e__->name, engine, flags);
+ for_each_engine(e, fd)
+ reset_stress(fd, ctx0, e->name, eb_ring(e), flags);
gem_context_destroy(fd, ctx0);
}
diff --git a/tests/i915/gem_exec_async.c b/tests/i915/gem_exec_async.c
index 9a06af7e..d83e9f6d 100644
--- a/tests/i915/gem_exec_async.c
+++ b/tests/i915/gem_exec_async.c
@@ -88,7 +88,6 @@ static void one(int fd, unsigned ring, uint32_t flags)
#define BATCH 1
struct drm_i915_gem_relocation_entry reloc;
struct drm_i915_gem_execbuffer2 execbuf;
- unsigned int other;
uint32_t *batch;
int i;
@@ -143,14 +142,14 @@ static void one(int fd, unsigned ring, uint32_t flags)
gem_close(fd, obj[BATCH].handle);
i = 0;
- for_each_physical_engine(fd, other) {
- if (other == ring)
+ for_each_physical_engine(e, fd) {
+ if (eb_ring(e) == ring)
continue;
- if (!gem_can_store_dword(fd, other))
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- store_dword(fd, other, obj[SCRATCH].handle, 4*i, i);
+ store_dword(fd, eb_ring(e), obj[SCRATCH].handle, 4*i, i);
i++;
}
@@ -205,8 +204,8 @@ igt_main
continue;
igt_subtest_f("concurrent-writes-%s", e->name) {
- igt_require(gem_ring_has_physical_engine(fd, e->exec_id | e->flags));
- igt_require(gem_can_store_dword(fd, e->exec_id | e->flags));
+ igt_require(gem_ring_has_physical_engine(fd, eb_ring(e)));
+ igt_require(gem_can_store_dword(fd, eb_ring(e)));
one(fd, e->exec_id, e->flags);
}
}
diff --git a/tests/i915/gem_exec_await.c b/tests/i915/gem_exec_await.c
index 5cfeb8ec..33e2ee45 100644
--- a/tests/i915/gem_exec_await.c
+++ b/tests/i915/gem_exec_await.c
@@ -73,14 +73,13 @@ static void wide(int fd, int ring_size, int timeout, unsigned int flags)
} *exec;
struct drm_i915_gem_exec_object2 *obj;
struct drm_i915_gem_execbuffer2 execbuf;
- unsigned engines[16];
- unsigned nengine, engine;
+ unsigned engines[16], nengine;
unsigned long count;
double time;
nengine = 0;
- for_each_physical_engine(fd, engine)
- engines[nengine++] = engine;
+ for_each_physical_engine(e, fd)
+ engines[nengine++] = eb_ring(e);
igt_require(nengine);
exec = calloc(nengine, sizeof(*exec));
diff --git a/tests/i915/gem_exec_capture.c b/tests/i915/gem_exec_capture.c
index 4457496d..54da57ac 100644
--- a/tests/i915/gem_exec_capture.c
+++ b/tests/i915/gem_exec_capture.c
@@ -558,9 +558,9 @@ igt_main
continue;
igt_subtest_f("capture-%s", e->name) {
- igt_require(gem_ring_has_physical_engine(fd, e->exec_id | e->flags));
- igt_require(gem_can_store_dword(fd, e->exec_id | e->flags));
- capture(fd, dir, e->exec_id | e->flags);
+ igt_require(gem_ring_has_physical_engine(fd, eb_ring(e)));
+ igt_require(gem_can_store_dword(fd, eb_ring(e)));
+ capture(fd, dir, eb_ring(e));
}
}
diff --git a/tests/i915/gem_exec_create.c b/tests/i915/gem_exec_create.c
index 54a2429e..88c5ddfd 100644
--- a/tests/i915/gem_exec_create.c
+++ b/tests/i915/gem_exec_create.c
@@ -61,13 +61,11 @@ static void all(int fd, unsigned flags, int timeout, int ncpus)
const uint32_t bbe = MI_BATCH_BUFFER_END;
struct drm_i915_gem_execbuffer2 execbuf;
struct drm_i915_gem_exec_object2 obj;
- unsigned engines[16];
- unsigned nengine;
- unsigned engine;
+ unsigned engines[16], nengine;
nengine = 0;
- for_each_physical_engine(fd, engine)
- engines[nengine++] = engine;
+ for_each_physical_engine(e, fd)
+ engines[nengine++] = eb_ring(e);
igt_require(nengine);
memset(&obj, 0, sizeof(obj));
diff --git a/tests/i915/gem_exec_fence.c b/tests/i915/gem_exec_fence.c
index 2f04d7af..3657c4b2 100644
--- a/tests/i915/gem_exec_fence.c
+++ b/tests/i915/gem_exec_fence.c
@@ -216,7 +216,6 @@ static void test_fence_busy_all(int fd, unsigned flags)
struct drm_i915_gem_execbuffer2 execbuf;
struct timespec tv;
uint32_t *batch;
- unsigned int engine;
int all, i, timeout;
gem_quiescent_gpu(fd);
@@ -263,10 +262,10 @@ static void test_fence_busy_all(int fd, unsigned flags)
i++;
all = -1;
- for_each_engine(fd, engine) {
+ for_each_engine(e, fd) {
int fence, new;
- execbuf.flags = engine | LOCAL_EXEC_FENCE_OUT;
+ execbuf.flags = eb_ring(e) | LOCAL_EXEC_FENCE_OUT;
execbuf.rsvd2 = -1;
gem_execbuf_wr(fd, &execbuf);
fence = execbuf.rsvd2 >> 32;
@@ -319,7 +318,6 @@ static void test_fence_await(int fd, unsigned ring, unsigned flags)
{
uint32_t scratch = gem_create(fd, 4096);
igt_spin_t *spin;
- unsigned engine;
uint32_t *out;
int i;
@@ -336,15 +334,15 @@ static void test_fence_await(int fd, unsigned ring, unsigned flags)
igt_assert(spin->out_fence != -1);
i = 0;
- for_each_physical_engine(fd, engine) {
- if (!gem_can_store_dword(fd, engine))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
if (flags & NONBLOCK) {
- store(fd, engine, spin->out_fence, scratch, i);
+ store(fd, eb_ring(e), spin->out_fence, scratch, i);
} else {
igt_fork(child, 1)
- store(fd, engine, spin->out_fence, scratch, i);
+ store(fd, eb_ring(e), spin->out_fence, scratch, i);
}
i++;
@@ -412,7 +410,6 @@ static void test_parallel(int fd, unsigned int master)
uint32_t handle[16];
uint32_t batch[16];
igt_spin_t *spin;
- unsigned engine;
IGT_CORK_HANDLE(c);
uint32_t plug;
int i, x = 0;
@@ -498,11 +495,11 @@ static void test_parallel(int fd, unsigned int master)
obj[BATCH].relocation_count = 1;
/* Queue all secondaries */
- for_each_physical_engine(fd, engine) {
- if (engine == master)
+ for_each_physical_engine(e, fd) {
+ if (eb_ring(e) == master)
continue;
- execbuf.flags = engine | LOCAL_EXEC_FENCE_SUBMIT;
+ execbuf.flags = eb_ring(e) | LOCAL_EXEC_FENCE_SUBMIT;
if (gen < 6)
execbuf.flags |= I915_EXEC_SECURE;
@@ -663,8 +660,7 @@ static void test_long_history(int fd, long ring_size, unsigned flags)
const uint32_t bbe = MI_BATCH_BUFFER_END;
struct drm_i915_gem_exec_object2 obj[2];
struct drm_i915_gem_execbuffer2 execbuf;
- unsigned int engines[16], engine;
- unsigned int nengine, n, s;
+ unsigned int engines[16], nengine, n, s;
unsigned long limit;
int all_fences;
IGT_CORK_HANDLE(c);
@@ -674,8 +670,8 @@ static void test_long_history(int fd, long ring_size, unsigned flags)
limit = ring_size / 3;
nengine = 0;
- for_each_physical_engine(fd, engine)
- engines[nengine++] = engine;
+ for_each_physical_engine(e, fd)
+ engines[nengine++] = eb_ring(e);
igt_require(nengine);
gem_quiescent_gpu(fd);
@@ -1156,7 +1152,6 @@ static void test_syncobj_wait(int fd)
.handle = syncobj_create(fd),
};
igt_spin_t *spin;
- unsigned engine;
unsigned handle[16];
int n;
@@ -1189,13 +1184,13 @@ static void test_syncobj_wait(int fd)
gem_write(fd, obj.handle, 0, &bbe, sizeof(bbe));
n = 0;
- for_each_engine(fd, engine) {
+ for_each_engine(e, fd) {
obj.handle = gem_create(fd, 4096);
gem_write(fd, obj.handle, 0, &bbe, sizeof(bbe));
/* No inter-engine synchronisation, will complete */
- if (engine == I915_EXEC_BLT) {
- execbuf.flags = engine;
+ if (eb_ring(e) == I915_EXEC_BLT) {
+ execbuf.flags = eb_ring(e);
execbuf.cliprects_ptr = 0;
execbuf.num_cliprects = 0;
gem_execbuf(fd, &execbuf);
@@ -1205,7 +1200,7 @@ static void test_syncobj_wait(int fd)
igt_assert(gem_bo_busy(fd, spin->handle));
/* Now wait upon the blocked engine */
- execbuf.flags = LOCAL_EXEC_FENCE_ARRAY | engine;
+ execbuf.flags = LOCAL_EXEC_FENCE_ARRAY | eb_ring(e);
execbuf.cliprects_ptr = to_user_pointer(&fence);
execbuf.num_cliprects = 1;
fence.flags = LOCAL_EXEC_FENCE_WAIT;
@@ -1549,8 +1544,8 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
igt_subtest_group {
igt_fixture {
- igt_require(gem_has_ring(i915, e->exec_id | e->flags));
- igt_require(gem_can_store_dword(i915, e->exec_id | e->flags));
+ igt_require(gem_has_ring(i915, eb_ring(e)));
+ igt_require(gem_can_store_dword(i915, eb_ring(e)));
}
igt_subtest_group {
@@ -1561,27 +1556,27 @@ igt_main
igt_subtest_f("%sbusy-%s",
e->exec_id == 0 ? "basic-" : "",
e->name)
- test_fence_busy(i915, e->exec_id | e->flags, 0);
+ test_fence_busy(i915, eb_ring(e), 0);
igt_subtest_f("%swait-%s",
e->exec_id == 0 ? "basic-" : "",
e->name)
- test_fence_busy(i915, e->exec_id | e->flags, WAIT);
+ test_fence_busy(i915, eb_ring(e), WAIT);
igt_subtest_f("%sawait-%s",
e->exec_id == 0 ? "basic-" : "",
e->name)
- test_fence_await(i915, e->exec_id | e->flags, 0);
+ test_fence_await(i915, eb_ring(e), 0);
igt_subtest_f("nb-await-%s", e->name)
- test_fence_await(i915, e->exec_id | e->flags, NONBLOCK);
+ test_fence_await(i915, eb_ring(e), NONBLOCK);
igt_subtest_f("keep-in-fence-%s", e->name)
- test_keep_in_fence(i915, e->exec_id | e->flags, 0);
+ test_keep_in_fence(i915, eb_ring(e), 0);
if (e->exec_id &&
!(e->exec_id == I915_EXEC_BSD && !e->flags)) {
igt_subtest_f("parallel-%s", e->name) {
igt_require(has_submit_fence(i915));
igt_until_timeout(2)
- test_parallel(i915, e->exec_id | e->flags);
+ test_parallel(i915, eb_ring(e));
}
}
@@ -1600,13 +1595,13 @@ igt_main
}
igt_subtest_f("busy-hang-%s", e->name)
- test_fence_busy(i915, e->exec_id | e->flags, HANG);
+ test_fence_busy(i915, eb_ring(e), HANG);
igt_subtest_f("wait-hang-%s", e->name)
- test_fence_busy(i915, e->exec_id | e->flags, HANG | WAIT);
+ test_fence_busy(i915, eb_ring(e), HANG | WAIT);
igt_subtest_f("await-hang-%s", e->name)
- test_fence_await(i915, e->exec_id | e->flags, HANG);
+ test_fence_await(i915, eb_ring(e), HANG);
igt_subtest_f("nb-await-hang-%s", e->name)
- test_fence_await(i915, e->exec_id | e->flags, NONBLOCK | HANG);
+ test_fence_await(i915, eb_ring(e), NONBLOCK | HANG);
igt_fixture {
igt_disallow_hang(i915, hang);
}
diff --git a/tests/i915/gem_exec_flush.c b/tests/i915/gem_exec_flush.c
index f820b2a8..28708460 100644
--- a/tests/i915/gem_exec_flush.c
+++ b/tests/i915/gem_exec_flush.c
@@ -600,7 +600,7 @@ igt_main
}
for (e = intel_execution_engines; e->name; e++) igt_subtest_group {
- unsigned ring = e->exec_id | e->flags;
+ unsigned ring = eb_ring(e);
unsigned timeout = 5 + 120*!!e->exec_id;
igt_fixture {
diff --git a/tests/i915/gem_exec_gttfill.c b/tests/i915/gem_exec_gttfill.c
index efd612bb..fa9161b4 100644
--- a/tests/i915/gem_exec_gttfill.c
+++ b/tests/i915/gem_exec_gttfill.c
@@ -113,20 +113,19 @@ static void fillgtt(int fd, unsigned ring, int timeout)
struct batch *batches;
unsigned engines[16];
unsigned nengine;
- unsigned engine;
- uint64_t size;
unsigned count;
+ uint64_t size;
shared = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
igt_assert(shared != MAP_FAILED);
nengine = 0;
if (ring == 0) {
- for_each_physical_engine(fd, engine) {
- if (!gem_can_store_dword(fd, engine))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- engines[nengine++] = engine;
+ engines[nengine++] = eb_ring(e);
}
} else {
gem_require_ring(fd, ring);
@@ -224,7 +223,7 @@ igt_main
for (e = intel_execution_engines; e->name; e++)
igt_subtest_f("%s", e->name)
- fillgtt(device, e->exec_id | e->flags, 20);
+ fillgtt(device, eb_ring(e), 20);
igt_subtest("all")
fillgtt(device, 0, 150);
diff --git a/tests/i915/gem_exec_latency.c b/tests/i915/gem_exec_latency.c
index 9ddb348c..3d99182a 100644
--- a/tests/i915/gem_exec_latency.c
+++ b/tests/i915/gem_exec_latency.c
@@ -267,7 +267,6 @@ static void latency_from_ring(int fd,
struct drm_i915_gem_relocation_entry reloc;
struct drm_i915_gem_execbuffer2 execbuf;
const unsigned int repeats = ring_size / 2;
- unsigned int other;
uint32_t *map, *results;
uint32_t ctx[2] = {};
int i, j;
@@ -313,7 +312,7 @@ static void latency_from_ring(int fd,
reloc.presumed_offset = obj[1].offset;
reloc.target_handle = flags & CORK ? 1 : 0;
- for_each_physical_engine(fd, other) {
+ for_each_physical_engine(e, fd) {
igt_spin_t *spin = NULL;
IGT_CORK_HANDLE(c);
@@ -361,7 +360,7 @@ static void latency_from_ring(int fd,
gem_execbuf(fd, &execbuf);
execbuf.flags &= ~ENGINE_FLAGS;
- execbuf.flags |= other;
+ execbuf.flags |= eb_ring(e);
execbuf.batch_start_offset = 64 * (j + repeats);
reloc.offset =
@@ -394,7 +393,7 @@ static void latency_from_ring(int fd,
igt_spin_free(fd, spin);
igt_info("%s-%s delay: %.2fns\n",
- name, e__->name,
+ name, e->name,
(results[2*repeats-1] - results[0]) / (double)repeats * rcs_clock);
}
@@ -475,12 +474,12 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in
nengine = 0;
if (engine == ALL_ENGINES) {
- for_each_physical_engine(fd, engine) {
- if (!gem_can_store_dword(fd, engine))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- engines[nengine] = engine;
- names[nengine] = e__->name;
+ engines[nengine] = eb_ring(e);
+ names[nengine] = e->name;
nengine++;
}
igt_require(nengine > 1);
@@ -692,22 +691,22 @@ igt_main
igt_subtest_group {
igt_fixture {
- igt_require(gem_ring_has_physical_engine(device, e->exec_id | e->flags));
+ igt_require(gem_ring_has_physical_engine(device, eb_ring(e)));
}
igt_subtest_f("%s-dispatch", e->name)
latency_on_ring(device,
- e->exec_id | e->flags,
+ eb_ring(e),
e->name, 0);
igt_subtest_f("%s-live-dispatch", e->name)
latency_on_ring(device,
- e->exec_id | e->flags,
+ eb_ring(e),
e->name, LIVE);
igt_subtest_f("%s-poll", e->name)
poll_ring(device,
- e->exec_id | e->flags,
+ eb_ring(e),
e->name);
igt_subtest_f("%s-rtidle-submit", e->name)
@@ -726,21 +725,21 @@ igt_main
igt_subtest_f("%s-live-dispatch-queued", e->name)
latency_on_ring(device,
- e->exec_id | e->flags,
+ eb_ring(e),
e->name, LIVE | CORK);
igt_subtest_f("%s-dispatch-queued", e->name)
latency_on_ring(device,
- e->exec_id | e->flags,
+ eb_ring(e),
e->name, CORK);
igt_subtest_f("%s-synchronisation", e->name)
latency_from_ring(device,
- e->exec_id | e->flags,
+ eb_ring(e),
e->name, 0);
igt_subtest_f("%s-synchronisation-queued", e->name)
latency_from_ring(device,
- e->exec_id | e->flags,
+ eb_ring(e),
e->name, CORK);
igt_subtest_group {
@@ -751,7 +750,7 @@ igt_main
igt_subtest_f("%s-preemption", e->name)
latency_from_ring(device,
- e->exec_id | e->flags,
+ eb_ring(e),
e->name, PREEMPT);
}
}
diff --git a/tests/i915/gem_exec_nop.c b/tests/i915/gem_exec_nop.c
index 8922685a..1a6906f3 100644
--- a/tests/i915/gem_exec_nop.c
+++ b/tests/i915/gem_exec_nop.c
@@ -222,7 +222,7 @@ static void poll_sequential(int fd, const char *name, int timeout)
struct drm_i915_gem_exec_object2 obj[2];
struct drm_i915_gem_relocation_entry reloc[4], *r;
uint32_t *bbe[2], *state, *batch;
- unsigned engines[16], nengine, engine, flags;
+ unsigned engines[16], nengine, flags;
struct timespec tv = {};
unsigned long cycles;
uint64_t elapsed;
@@ -233,11 +233,11 @@ static void poll_sequential(int fd, const char *name, int timeout)
flags |= I915_EXEC_SECURE;
nengine = 0;
- for_each_physical_engine(fd, engine) {
- if (!gem_can_store_dword(fd, engine))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- engines[nengine++] = engine;
+ engines[nengine++] = eb_ring(e);
}
igt_require(nengine);
@@ -438,14 +438,14 @@ static void parallel(int fd, uint32_t handle, int timeout)
sum = 0;
nengine = 0;
- for_each_physical_engine(fd, engine) {
- engines[nengine] = engine;
- names[nengine] = e__->name;
+ for_each_physical_engine(e, fd) {
+ engines[nengine] = eb_ring(e);
+ names[nengine] = e->name;
nengine++;
time = nop_on_ring(fd, handle, engine, 1, &count) / count;
sum += time;
- igt_debug("%s: %.3fus\n", e__->name, 1e6*time);
+ igt_debug("%s: %.3fus\n", e->name, 1e6*time);
}
igt_require(nengine);
igt_info("average (individually): %.3fus\n", sum/nengine*1e6);
@@ -494,22 +494,21 @@ static void series(int fd, uint32_t handle, int timeout)
struct timespec start, now, sync;
unsigned engines[16];
unsigned nengine;
- unsigned engine;
unsigned long count;
double time, max = 0, min = HUGE_VAL, sum = 0;
const char *name;
nengine = 0;
- for_each_physical_engine(fd, engine) {
- time = nop_on_ring(fd, handle, engine, 1, &count) / count;
+ for_each_physical_engine(e, fd) {
+ time = nop_on_ring(fd, handle, eb_ring(e), 1, &count) / count;
if (time > max) {
- name = e__->name;
+ name = e->name;
max = time;
}
if (time < min)
min = time;
sum += time;
- engines[nengine++] = engine;
+ engines[nengine++] = eb_ring(e);
}
igt_require(nengine);
igt_info("Maximum execution latency on %s, %.3fus, min %.3fus, total %.3fus per cycle, average %.3fus\n",
@@ -595,14 +594,14 @@ static void sequential(int fd, uint32_t handle, unsigned flags, int timeout)
nengine = 0;
sum = 0;
- for_each_physical_engine(fd, n) {
+ for_each_physical_engine(e, fd) {
unsigned long count;
time = nop_on_ring(fd, handle, n, 1, &count) / count;
sum += time;
- igt_debug("%s: %.3fus\n", e__->name, 1e6*time);
+ igt_debug("%s: %.3fus\n", e->name, 1e6*time);
- engines[nengine++] = n;
+ engines[nengine++] = eb_ring(e);
}
igt_require(nengine);
igt_info("Total (individual) execution latency %.3fus per cycle\n",
@@ -726,8 +725,8 @@ static void fence_signal(int fd, uint32_t handle,
nengine = 0;
if (ring_id == ALL_ENGINES) {
- for_each_physical_engine(fd, n)
- engines[nengine++] = n;
+ for_each_physical_engine(e, fd)
+ engines[nengine++] = eb_ring(e);
} else {
gem_require_ring(fd, ring_id);
engines[nengine++] = ring_id;
@@ -875,9 +874,9 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
igt_subtest_f("%s", e->name)
- single(device, handle, e->exec_id | e->flags, e->name);
+ single(device, handle, eb_ring(e), e->name);
igt_subtest_f("signal-%s", e->name)
- fence_signal(device, handle, e->exec_id | e->flags, e->name, 5);
+ fence_signal(device, handle, eb_ring(e), e->name, 5);
}
igt_subtest("signal-all")
@@ -910,7 +909,7 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
igt_subtest_f("preempt-%s", e->name)
- preempt(device, handle, e->exec_id | e->flags, e->name);
+ preempt(device, handle, eb_ring(e), e->name);
}
}
@@ -922,8 +921,7 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
/* Requires master for STORE_DWORD on gen4/5 */
igt_subtest_f("poll-%s", e->name)
- poll_ring(device,
- e->exec_id | e->flags, e->name, 20);
+ poll_ring(device, eb_ring(e), e->name, 20);
}
igt_subtest("poll-sequential")
diff --git a/tests/i915/gem_exec_params.c b/tests/i915/gem_exec_params.c
index 49c56a8d..8f15e645 100644
--- a/tests/i915/gem_exec_params.c
+++ b/tests/i915/gem_exec_params.c
@@ -236,8 +236,8 @@ igt_main
igt_subtest("control") {
for (e = intel_execution_engines; e->name; e++) {
- if (has_ring(fd, e->exec_id | e->flags)) {
- execbuf.flags = e->exec_id | e->flags;
+ if (has_ring(fd, eb_ring(e))) {
+ execbuf.flags = eb_ring(e);
gem_execbuf(fd, &execbuf);
}
}
@@ -387,14 +387,16 @@ igt_main
igt_subtest("rs-invalid") {
bool has_rs = has_resource_streamer(fd);
- unsigned int engine;
- for_each_engine(fd, engine) {
+ for_each_engine(it, fd) {
int expect = -EINVAL;
- if (has_rs && (engine == 0 || engine == I915_EXEC_RENDER))
+ if (has_rs &&
+ (eb_ring(it) == 0 ||
+ eb_ring(it) == I915_EXEC_RENDER))
expect = 0;
- execbuf.flags = engine | LOCAL_I915_EXEC_RESOURCE_STREAMER;
+ execbuf.flags =
+ eb_ring(it) | LOCAL_I915_EXEC_RESOURCE_STREAMER;
igt_assert_eq(__gem_execbuf(fd, &execbuf), expect);
}
}
diff --git a/tests/i915/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c
index fdd9661d..5f59fe99 100644
--- a/tests/i915/gem_exec_reloc.c
+++ b/tests/i915/gem_exec_reloc.c
@@ -258,9 +258,9 @@ static void active(int fd, unsigned engine)
nengine = 0;
if (engine == ALL_ENGINES) {
- for_each_physical_engine(fd, engine) {
- if (gem_can_store_dword(fd, engine))
- engines[nengine++] = engine;
+ for_each_physical_engine(e, fd) {
+ if (gem_can_store_dword(fd, eb_ring(e)))
+ engines[nengine++] = eb_ring(e);
}
} else {
igt_require(gem_has_ring(fd, engine));
@@ -754,7 +754,7 @@ igt_main
for (const struct intel_execution_engine *e = intel_execution_engines;
e->name; e++) {
igt_subtest_f("active-%s", e->name)
- active(fd, e->exec_id | e->flags);
+ active(fd, eb_ring(e));
}
igt_fixture
close(fd);
diff --git a/tests/i915/gem_exec_reuse.c b/tests/i915/gem_exec_reuse.c
index 935bfa9a..971eb413 100644
--- a/tests/i915/gem_exec_reuse.c
+++ b/tests/i915/gem_exec_reuse.c
@@ -89,7 +89,6 @@ igt_main
igt_fixture {
uint64_t gtt_size, max;
uint32_t bbe = MI_BATCH_BUFFER_END;
- unsigned engine;
igt_allow_unlimited_files();
@@ -118,9 +117,8 @@ igt_main
no.obj = malloc(sizeof(struct drm_i915_gem_exec_object2) * (no.max_age + 1));
nengine = 0;
- for_each_engine(no.fd, engine)
- if (engine)
- engines[nengine++] = engine;
+ for_each_physical_engine(e, no.fd)
+ engines[nengine++] = eb_ring(e);
igt_require(nengine);
no.batch = gem_create(no.fd, 4096);
diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c
index 8695cbe9..47f614ee 100644
--- a/tests/i915/gem_exec_schedule.c
+++ b/tests/i915/gem_exec_schedule.c
@@ -240,7 +240,6 @@ static void independent(int fd, unsigned int engine)
IGT_CORK_FENCE(cork);
igt_spin_t *spin = NULL;
uint32_t scratch, batch;
- unsigned int other;
uint32_t *ptr;
int fence;
@@ -253,25 +252,25 @@ static void independent(int fd, unsigned int engine)
fence = igt_cork_plug(&cork, fd);
/* Check that we can submit to engine while all others are blocked */
- for_each_physical_engine(fd, other) {
- if (other == engine)
+ for_each_physical_engine(e, fd) {
+ if (eb_ring(e) == engine)
continue;
- if (!gem_can_store_dword(fd, other))
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
if (spin == NULL) {
- spin = __igt_spin_new(fd, .engine = other);
+ spin = __igt_spin_new(fd, .engine = eb_ring(e));
} else {
struct drm_i915_gem_execbuffer2 eb = {
.buffer_count = 1,
.buffers_ptr = to_user_pointer(&spin->obj[IGT_SPIN_BATCH]),
- .flags = other,
+ .flags = eb_ring(e),
};
gem_execbuf(fd, &eb);
}
- store_dword_fenced(fd, 0, other, scratch, 0, other, fence, 0);
+ store_dword_fenced(fd, 0, eb_ring(e), scratch, 0, eb_ring(e), fence, 0);
}
igt_require(spin);
@@ -312,9 +311,9 @@ static void smoketest(int fd, unsigned ring, unsigned timeout)
nengine = 0;
if (ring == ALL_ENGINES) {
- for_each_physical_engine(fd, engine)
- if (gem_can_store_dword(fd, engine))
- engines[nengine++] = engine;
+ for_each_physical_engine(e, fd)
+ if (gem_can_store_dword(fd, eb_ring(e)))
+ engines[nengine++] = eb_ring(e);
} else {
if (gem_can_store_dword(fd, ring))
engines[nengine++] = ring;
@@ -385,7 +384,6 @@ static void semaphore_userlock(int i915)
.handle = batch_create(i915),
};
igt_spin_t *spin = NULL;
- unsigned int engine;
uint32_t scratch;
igt_require(gem_scheduler_has_semaphores(i915));
@@ -398,16 +396,16 @@ static void semaphore_userlock(int i915)
*/
scratch = gem_create(i915, 4096);
- for_each_physical_engine(i915, engine) {
+ for_each_physical_engine(e, i915) {
if (!spin) {
spin = igt_spin_new(i915,
.dependency = scratch,
- .engine = engine);
+ .engine = eb_ring(e));
} else {
uint64_t saved = spin->execbuf.flags;
spin->execbuf.flags &= ~ENGINE_MASK;
- spin->execbuf.flags |= engine;
+ spin->execbuf.flags |= eb_ring(e);
gem_execbuf(i915, &spin->execbuf);
@@ -423,15 +421,15 @@ static void semaphore_userlock(int i915)
* taking precedence.
*/
scratch = gem_context_create(i915);
- for_each_physical_engine(i915, engine) {
+ for_each_physical_engine(e, i915) {
struct drm_i915_gem_execbuffer2 execbuf = {
.buffers_ptr = to_user_pointer(&obj),
.buffer_count = 1,
- .flags = engine,
+ .flags = eb_ring(e),
.rsvd1 = scratch,
};
- if (engine == (spin->execbuf.flags & ENGINE_MASK))
+ if (eb_ring(e) == (spin->execbuf.flags & ENGINE_MASK))
continue;
gem_execbuf(i915, &execbuf);
@@ -448,7 +446,6 @@ static void semaphore_codependency(int i915)
struct {
igt_spin_t *xcs, *rcs;
} task[2];
- unsigned int engine;
int i;
/*
@@ -462,13 +459,13 @@ static void semaphore_codependency(int i915)
*/
i = 0;
- for_each_physical_engine(i915, engine) {
+ for_each_physical_engine(e, i915) {
uint32_t ctx;
- if (engine == I915_EXEC_RENDER)
+ if (eb_ring(e) == I915_EXEC_RENDER)
continue;
- if (!gem_can_store_dword(i915, engine))
+ if (!gem_can_store_dword(i915, eb_ring(e)))
continue;
ctx = gem_context_create(i915);
@@ -476,7 +473,7 @@ static void semaphore_codependency(int i915)
task[i].xcs =
__igt_spin_new(i915,
.ctx = ctx,
- .engine = engine,
+ .engine = eb_ring(e),
.flags = IGT_SPIN_POLL_RUN);
igt_spin_busywait_until_started(task[i].xcs);
@@ -514,7 +511,6 @@ static void semaphore_resolve(int i915)
{
const uint32_t SEMAPHORE_ADDR = 64 << 10;
uint32_t semaphore, outer, inner, *sema;
- unsigned int engine;
/*
* Userspace may submit batches that wait upon unresolved
@@ -534,7 +530,7 @@ static void semaphore_resolve(int i915)
semaphore = gem_create(i915, 4096);
sema = gem_mmap__wc(i915, semaphore, 0, 4096, PROT_WRITE);
- for_each_physical_engine(i915, engine) {
+ for_each_physical_engine(e, i915) {
struct drm_i915_gem_exec_object2 obj[3];
struct drm_i915_gem_execbuffer2 eb;
uint32_t handle, cancel;
@@ -542,10 +538,10 @@ static void semaphore_resolve(int i915)
igt_spin_t *spin;
int64_t poke = 1;
- if (!gem_can_store_dword(i915, engine))
+ if (!gem_can_store_dword(i915, eb_ring(e)))
continue;
- spin = __igt_spin_new(i915, .engine = engine);
+ spin = __igt_spin_new(i915, .engine = eb_ring(e));
igt_spin_end(spin); /* we just want its address for later */
gem_sync(i915, spin->handle);
igt_spin_reset(spin);
@@ -642,26 +638,27 @@ static void semaphore_resolve(int i915)
static void semaphore_noskip(int i915)
{
const int gen = intel_gen(intel_get_drm_devid(i915));
- unsigned int engine, other;
+ unsigned int other;
uint32_t ctx;
igt_require(gen >= 6); /* MI_STORE_DWORD_IMM convenience */
ctx = gem_context_create(i915);
- for_each_physical_engine(i915, engine) {
- for_each_physical_engine(i915, other) {
+ for_each_physical_engine(outer, i915) {
+ for_each_physical_engine(inner, i915) {
struct drm_i915_gem_exec_object2 obj[3];
struct drm_i915_gem_execbuffer2 eb;
uint32_t handle, *cs, *map;
igt_spin_t *chain, *spin;
- if (other == engine || !gem_can_store_dword(i915, other))
+ if (eb_ring(inner) == eb_ring(outer) ||
+ !gem_can_store_dword(i915, eb_ring(inner)))
continue;
- chain = __igt_spin_new(i915, .engine = engine);
+ chain = __igt_spin_new(i915, .engine = eb_ring(outer));
- spin = __igt_spin_new(i915, .engine = other);
+ spin = __igt_spin_new(i915, .engine = eb_ring(inner));
igt_spin_end(spin); /* we just want its address for later */
gem_sync(i915, spin->handle);
igt_spin_reset(spin);
@@ -867,21 +864,19 @@ static void preempt(int fd, unsigned ring, unsigned flags)
static igt_spin_t *__noise(int fd, uint32_t ctx, int prio, igt_spin_t *spin)
{
- unsigned other;
-
gem_context_set_priority(fd, ctx, prio);
- for_each_physical_engine(fd, other) {
+ for_each_physical_engine(e, fd) {
if (spin == NULL) {
spin = __igt_spin_new(fd,
.ctx = ctx,
- .engine = other);
+ .engine = eb_ring(e));
} else {
struct drm_i915_gem_execbuffer2 eb = {
.buffer_count = 1,
.buffers_ptr = to_user_pointer(&spin->obj[IGT_SPIN_BATCH]),
.rsvd1 = ctx,
- .flags = other,
+ .flags = eb_ring(e),
};
gem_execbuf(fd, &eb);
}
@@ -897,7 +892,7 @@ static void __preempt_other(int fd,
{
uint32_t result = gem_create(fd, 4096);
uint32_t result_read[4096 / sizeof(uint32_t)];
- unsigned int n, i, other;
+ unsigned int n, i;
n = 0;
store_dword(fd, ctx[LO], primary,
@@ -906,8 +901,8 @@ static void __preempt_other(int fd,
n++;
if (flags & CHAIN) {
- for_each_physical_engine(fd, other) {
- store_dword(fd, ctx[LO], other,
+ for_each_physical_engine(e, fd) {
+ store_dword(fd, ctx[LO], eb_ring(e),
result, (n + 1)*sizeof(uint32_t), n + 1,
I915_GEM_DOMAIN_RENDER);
n++;
@@ -932,7 +927,6 @@ static void __preempt_other(int fd,
static void preempt_other(int fd, unsigned ring, unsigned int flags)
{
- unsigned int primary;
igt_spin_t *spin = NULL;
uint32_t ctx[3];
@@ -955,9 +949,9 @@ static void preempt_other(int fd, unsigned ring, unsigned int flags)
ctx[HI] = gem_context_create(fd);
gem_context_set_priority(fd, ctx[HI], MAX_PRIO);
- for_each_physical_engine(fd, primary) {
- igt_debug("Primary engine: %s\n", e__->name);
- __preempt_other(fd, ctx, ring, primary, flags);
+ for_each_physical_engine(e, fd) {
+ igt_debug("Primary engine: %s\n", e->name);
+ __preempt_other(fd, ctx, ring, eb_ring(e), flags);
}
@@ -976,13 +970,13 @@ static void __preempt_queue(int fd,
uint32_t result = gem_create(fd, 4096);
uint32_t result_read[4096 / sizeof(uint32_t)];
igt_spin_t *above = NULL, *below = NULL;
- unsigned int other, n, i;
- int prio = MAX_PRIO;
uint32_t ctx[3] = {
gem_context_create(fd),
gem_context_create(fd),
gem_context_create(fd),
};
+ int prio = MAX_PRIO;
+ unsigned int n, i;
for (n = 0; n < depth; n++) {
if (flags & CONTEXTS) {
@@ -1011,8 +1005,8 @@ static void __preempt_queue(int fd,
n++;
if (flags & CHAIN) {
- for_each_physical_engine(fd, other) {
- store_dword(fd, ctx[LO], other,
+ for_each_physical_engine(e, fd) {
+ store_dword(fd, ctx[LO], eb_ring(e),
result, (n + 1)*sizeof(uint32_t), n + 1,
I915_GEM_DOMAIN_RENDER);
n++;
@@ -1052,11 +1046,9 @@ static void __preempt_queue(int fd,
static void preempt_queue(int fd, unsigned ring, unsigned int flags)
{
- unsigned other;
-
- for_each_physical_engine(fd, other) {
+ for_each_physical_engine(e, fd) {
for (unsigned depth = 0; depth <= MAX_ELSP_QLEN; depth++)
- __preempt_queue(fd, ring, other, depth, flags);
+ __preempt_queue(fd, ring, eb_ring(e), depth, flags);
}
}
@@ -1065,7 +1057,6 @@ static void preempt_self(int fd, unsigned ring)
uint32_t result = gem_create(fd, 4096);
uint32_t result_read[4096 / sizeof(uint32_t)];
igt_spin_t *spin[MAX_ELSP_QLEN];
- unsigned int other;
unsigned int n, i;
uint32_t ctx[3];
@@ -1083,11 +1074,11 @@ 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) {
+ for_each_physical_engine(e, fd) {
spin[n] = __igt_spin_new(fd,
.ctx = ctx[NOISE],
- .engine = other);
- store_dword(fd, ctx[HI], other,
+ .engine = eb_ring(e));
+ store_dword(fd, ctx[HI], eb_ring(e),
result, (n + 1)*sizeof(uint32_t), n + 1,
I915_GEM_DOMAIN_RENDER);
n++;
@@ -1608,13 +1599,12 @@ static void test_pi_ringfull(int fd, unsigned int engine)
static void measure_semaphore_power(int i915)
{
- unsigned int engine, signaler;
struct rapl gpu, pkg;
igt_require(gpu_power_open(&gpu) == 0);
pkg_power_open(&pkg);
- for_each_physical_engine(i915, signaler) {
+ for_each_physical_engine(signaler, i915) {
struct {
struct power_sample pkg, gpu;
} s_spin[2], s_sema[2];
@@ -1623,7 +1613,7 @@ static void measure_semaphore_power(int i915)
igt_spin_t *spin;
spin = __igt_spin_new(i915,
- .engine = signaler,
+ .engine = eb_ring(signaler),
.flags = IGT_SPIN_POLL_RUN);
gem_wait(i915, spin->handle, &jiffie); /* waitboost */
igt_spin_busywait_until_started(spin);
@@ -1635,14 +1625,14 @@ static void measure_semaphore_power(int i915)
rapl_read(&pkg, &s_spin[1].pkg);
/* Add a waiter to each engine */
- for_each_physical_engine(i915, engine) {
+ for_each_physical_engine(e, i915) {
igt_spin_t *sema;
- if (engine == signaler)
+ if (eb_ring(e) == eb_ring(signaler))
continue;
sema = __igt_spin_new(i915,
- .engine = engine,
+ .engine = eb_ring(e),
.dependency = spin->handle);
igt_spin_free(i915, sema);
@@ -1660,7 +1650,7 @@ static void measure_semaphore_power(int i915)
baseline = power_W(&gpu, &s_spin[0].gpu, &s_spin[1].gpu);
total = power_W(&gpu, &s_sema[0].gpu, &s_sema[1].gpu);
igt_info("%s: %.1fmW + %.1fmW (total %1.fmW)\n",
- e__->name,
+ signaler->name,
1e3 * baseline,
1e3 * (total - baseline),
1e3 * total);
@@ -1707,15 +1697,15 @@ igt_main
continue;
igt_subtest_f("fifo-%s", e->name) {
- igt_require(gem_ring_has_physical_engine(fd, e->exec_id | e->flags));
- igt_require(gem_can_store_dword(fd, e->exec_id | e->flags));
- fifo(fd, e->exec_id | e->flags);
+ igt_require(gem_ring_has_physical_engine(fd, eb_ring(e)));
+ igt_require(gem_can_store_dword(fd, eb_ring(e)));
+ fifo(fd, eb_ring(e));
}
igt_subtest_f("independent-%s", e->name) {
- igt_require(gem_ring_has_physical_engine(fd, e->exec_id | e->flags));
- igt_require(gem_can_store_dword(fd, e->exec_id | e->flags));
- independent(fd, e->exec_id | e->flags);
+ igt_require(gem_ring_has_physical_engine(fd, eb_ring(e)));
+ igt_require(gem_can_store_dword(fd, eb_ring(e)));
+ independent(fd, eb_ring(e));
}
}
}
@@ -1744,18 +1734,18 @@ igt_main
igt_subtest_group {
igt_fixture {
- igt_require(gem_ring_has_physical_engine(fd, e->exec_id | e->flags));
- igt_require(gem_can_store_dword(fd, e->exec_id | e->flags));
+ igt_require(gem_ring_has_physical_engine(fd, eb_ring(e)));
+ igt_require(gem_can_store_dword(fd, eb_ring(e)));
}
igt_subtest_f("in-order-%s", e->name)
- reorder(fd, e->exec_id | e->flags, EQUAL);
+ reorder(fd, eb_ring(e), EQUAL);
igt_subtest_f("out-order-%s", e->name)
- reorder(fd, e->exec_id | e->flags, 0);
+ reorder(fd, eb_ring(e), 0);
igt_subtest_f("promotion-%s", e->name)
- promotion(fd, e->exec_id | e->flags);
+ promotion(fd, eb_ring(e));
igt_subtest_group {
igt_fixture {
@@ -1763,30 +1753,30 @@ igt_main
}
igt_subtest_f("preempt-%s", e->name)
- preempt(fd, e->exec_id | e->flags, 0);
+ preempt(fd, eb_ring(e), 0);
igt_subtest_f("preempt-contexts-%s", e->name)
- preempt(fd, e->exec_id | e->flags, NEW_CTX);
+ preempt(fd, eb_ring(e), NEW_CTX);
igt_subtest_f("preempt-self-%s", e->name)
- preempt_self(fd, e->exec_id | e->flags);
+ preempt_self(fd, eb_ring(e));
igt_subtest_f("preempt-other-%s", e->name)
- preempt_other(fd, e->exec_id | e->flags, 0);
+ preempt_other(fd, eb_ring(e), 0);
igt_subtest_f("preempt-other-chain-%s", e->name)
- preempt_other(fd, e->exec_id | e->flags, CHAIN);
+ preempt_other(fd, eb_ring(e), CHAIN);
igt_subtest_f("preempt-queue-%s", e->name)
- preempt_queue(fd, e->exec_id | e->flags, 0);
+ preempt_queue(fd, eb_ring(e), 0);
igt_subtest_f("preempt-queue-chain-%s", e->name)
- preempt_queue(fd, e->exec_id | e->flags, CHAIN);
+ preempt_queue(fd, eb_ring(e), CHAIN);
igt_subtest_f("preempt-queue-contexts-%s", e->name)
- preempt_queue(fd, e->exec_id | e->flags, CONTEXTS);
+ preempt_queue(fd, eb_ring(e), CONTEXTS);
igt_subtest_f("preempt-queue-contexts-chain-%s", e->name)
- preempt_queue(fd, e->exec_id | e->flags, CONTEXTS | CHAIN);
+ preempt_queue(fd, eb_ring(e), CONTEXTS | CHAIN);
igt_subtest_group {
igt_hang_t hang;
@@ -1797,11 +1787,11 @@ igt_main
}
igt_subtest_f("preempt-hang-%s", e->name) {
- preempt(fd, e->exec_id | e->flags, NEW_CTX | HANG_LP);
+ preempt(fd, eb_ring(e), NEW_CTX | HANG_LP);
}
igt_subtest_f("preemptive-hang-%s", e->name)
- preemptive_hang(fd, e->exec_id | e->flags);
+ preemptive_hang(fd, eb_ring(e));
igt_fixture {
igt_disallow_hang(fd, hang);
@@ -1811,16 +1801,16 @@ igt_main
}
igt_subtest_f("deep-%s", e->name)
- deep(fd, e->exec_id | e->flags);
+ deep(fd, eb_ring(e));
igt_subtest_f("wide-%s", e->name)
- wide(fd, e->exec_id | e->flags);
+ wide(fd, eb_ring(e));
igt_subtest_f("reorder-wide-%s", e->name)
- reorder_wide(fd, e->exec_id | e->flags);
+ reorder_wide(fd, eb_ring(e));
igt_subtest_f("smoketest-%s", e->name)
- smoketest(fd, e->exec_id | e->flags, 5);
+ smoketest(fd, eb_ring(e), 5);
}
}
}
@@ -1837,12 +1827,12 @@ igt_main
igt_subtest_group {
igt_fixture {
- igt_require(gem_ring_has_physical_engine(fd, e->exec_id | e->flags));
+ igt_require(gem_ring_has_physical_engine(fd, eb_ring(e)));
igt_require(gem_scheduler_has_preemption(fd));
}
igt_subtest_f("pi-ringfull-%s", e->name)
- test_pi_ringfull(fd, e->exec_id | e->flags);
+ test_pi_ringfull(fd, eb_ring(e));
}
}
}
diff --git a/tests/i915/gem_exec_suspend.c b/tests/i915/gem_exec_suspend.c
index f25f1a86..af6190dd 100644
--- a/tests/i915/gem_exec_suspend.c
+++ b/tests/i915/gem_exec_suspend.c
@@ -65,11 +65,9 @@ static void check_bo(int fd, uint32_t handle)
static void test_all(int fd, unsigned flags)
{
- unsigned engine;
-
- for_each_physical_engine(fd, engine)
- if (gem_can_store_dword(fd, engine))
- run_test(fd, engine, flags & ~0xff);
+ for_each_physical_engine(e, fd)
+ if (gem_can_store_dword(fd, eb_ring(e)))
+ run_test(fd, eb_ring(e), flags & ~0xff);
}
static bool has_semaphores(int fd)
@@ -107,9 +105,9 @@ static void run_test(int fd, unsigned engine, unsigned flags)
* GPU is then unlikely to be active!)
*/
if (has_semaphores(fd)) {
- for_each_physical_engine(fd, engine) {
- if (gem_can_store_dword(fd, engine))
- engines[nengine++] = engine;
+ for_each_physical_engine(e, fd) {
+ if (gem_can_store_dword(fd, eb_ring(e)))
+ engines[nengine++] = eb_ring(e);
}
} else {
igt_require(gem_has_ring(fd, 0));
@@ -275,11 +273,9 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
for (m = modes; m->suffix; m++) {
igt_subtest_f("%s-uncached%s", e->name, m->suffix)
- run_test(fd, e->exec_id | e->flags,
- m->mode | UNCACHED);
+ run_test(fd, eb_ring(e), m->mode | UNCACHED);
igt_subtest_f("%s-cached%s", e->name, m->suffix)
- run_test(fd, e->exec_id | e->flags,
- m->mode | CACHED);
+ run_test(fd, eb_ring(e), m->mode | CACHED);
}
}
diff --git a/tests/i915/gem_exec_whisper.c b/tests/i915/gem_exec_whisper.c
index 1135c649..a3384760 100644
--- a/tests/i915/gem_exec_whisper.c
+++ b/tests/i915/gem_exec_whisper.c
@@ -203,9 +203,9 @@ static void whisper(int fd, unsigned engine, unsigned flags)
nengine = 0;
if (engine == ALL_ENGINES) {
- for_each_physical_engine(fd, engine) {
- if (gem_can_store_dword(fd, engine))
- engines[nengine++] = engine;
+ for_each_physical_engine(e, fd) {
+ if (gem_can_store_dword(fd, eb_ring(e)))
+ engines[nengine++] = eb_ring(e);
}
} else {
igt_assert(!(flags & ALL));
@@ -578,7 +578,7 @@ igt_main
continue;
igt_subtest_f("%s-%s", e->name, m->name)
- whisper(fd, e->exec_id | e->flags, m->flags);
+ whisper(fd, eb_ring(e), m->flags);
}
}
diff --git a/tests/i915/gem_mocs_settings.c b/tests/i915/gem_mocs_settings.c
index 3ad94149..fc2ccb21 100644
--- a/tests/i915/gem_mocs_settings.c
+++ b/tests/i915/gem_mocs_settings.c
@@ -605,7 +605,7 @@ igt_main
if (flags & (MOCS_NON_DEFAULT_CTX | MOCS_DIRTY_VALUES))
gem_require_contexts(fd);
- run_test(fd, e->exec_id | e->flags, flags, mode);
+ run_test(fd, eb_ring(e), flags, mode);
}
}
@@ -617,10 +617,10 @@ igt_main
}
igt_subtest_f("mocs-isolation-%s", e->name) {
- gem_require_ring(fd, e->exec_id | e->flags);
+ gem_require_ring(fd, eb_ring(e));
gem_require_contexts(fd);
- isolation_test(fd, e->exec_id | e->flags);
+ isolation_test(fd, eb_ring(e));
}
}
diff --git a/tests/i915/gem_reset_stats.c b/tests/i915/gem_reset_stats.c
index ac9af23f..0931641a 100644
--- a/tests/i915/gem_reset_stats.c
+++ b/tests/i915/gem_reset_stats.c
@@ -88,7 +88,7 @@ static int noop(int fd, uint32_t ctx, const struct intel_execution_engine *e)
memset(&eb, 0, sizeof(eb));
eb.buffers_ptr = to_user_pointer(&exec);
eb.buffer_count = 1;
- eb.flags = e->exec_id | e->flags;
+ eb.flags = eb_ring(e);
i915_execbuffer2_set_context_id(eb, ctx);
ret = __gem_execbuf(fd, &eb);
@@ -164,7 +164,7 @@ static void inject_hang(int fd, uint32_t ctx,
clock_gettime(CLOCK_MONOTONIC, &ts_injected);
- hang = igt_hang_ctx(fd, ctx, e->exec_id | e->flags, flags & BAN);
+ hang = igt_hang_ctx(fd, ctx, eb_ring(e), flags & BAN);
if ((flags & ASYNC) == 0)
igt_post_hang_ring(fd, hang);
}
@@ -523,12 +523,12 @@ static void noop_on_each_ring(int fd, const bool reverse)
for (e = intel_execution_engines; e->name; e++)
;
while (--e >= intel_execution_engines) {
- eb.flags = e->exec_id | e->flags;
+ eb.flags = eb_ring(e);
__gem_execbuf(fd, &eb);
}
} else {
for (e = intel_execution_engines; e->name; e++) {
- eb.flags = e->exec_id | e->flags;
+ eb.flags = eb_ring(e);
__gem_execbuf(fd, &eb);
}
}
@@ -546,7 +546,7 @@ static void test_close_pending_fork(const struct intel_execution_engine *e,
assert_reset_status(fd, fd, 0, RS_NO_ERROR);
- hang = igt_hang_ctx(fd, 0, e->exec_id | e->flags, 0);
+ hang = igt_hang_ctx(fd, 0, eb_ring(e), 0);
sleep(1);
/* Avoid helpers as we need to kill the child
diff --git a/tests/i915/gem_ring_sync_loop.c b/tests/i915/gem_ring_sync_loop.c
index 118f3638..32b93637 100644
--- a/tests/i915/gem_ring_sync_loop.c
+++ b/tests/i915/gem_ring_sync_loop.c
@@ -44,12 +44,11 @@ sync_loop(int fd)
struct drm_i915_gem_relocation_entry reloc[1];
unsigned engines[16];
unsigned nengine;
- unsigned engine;
int i;
nengine = 0;
- for_each_physical_engine(fd, engine)
- engines[nengine++] = engine;
+ for_each_physical_engine(e, fd)
+ engines[nengine++] = eb_ring(e);
igt_require(nengine);
memset(object, 0, sizeof(object));
diff --git a/tests/i915/gem_ringfill.c b/tests/i915/gem_ringfill.c
index c728e1cd..af66d001 100644
--- a/tests/i915/gem_ringfill.c
+++ b/tests/i915/gem_ringfill.c
@@ -288,8 +288,7 @@ igt_main
igt_skip_on(m->flags & NEWFD && master);
if (m->flags & (HANG|SUSPEND|HIBERNATE))
igt_skip_on_simulation();
- run_test(fd, e->exec_id | e->flags,
- m->flags, m->timeout);
+ run_test(fd, eb_ring(e), m->flags, m->timeout);
}
}
}
diff --git a/tests/i915/gem_shrink.c b/tests/i915/gem_shrink.c
index 3db754f5..d2ea2ed8 100644
--- a/tests/i915/gem_shrink.c
+++ b/tests/i915/gem_shrink.c
@@ -428,7 +428,6 @@ igt_main
igt_fixture {
uint64_t mem_size = intel_get_total_ram_mb();
- unsigned int engine;
int fd;
fd = drm_open_driver(DRIVER_INTEL);
@@ -451,8 +450,8 @@ igt_main
CHECK_SWAP | CHECK_RAM);
nengine = 0;
- for_each_engine(fd, engine)
- engines[nengine++] = engine;
+ for_each_engine(e, fd)
+ engines[nengine++] = eb_ring(e);
igt_require(nengine);
close(fd);
diff --git a/tests/i915/gem_spin_batch.c b/tests/i915/gem_spin_batch.c
index e0623f4c..df59512a 100644
--- a/tests/i915/gem_spin_batch.c
+++ b/tests/i915/gem_spin_batch.c
@@ -152,7 +152,7 @@ igt_main
}
for (e = intel_execution_engines; e->name; e++) {
- e2__ = gem_eb_flags_to_engine(e->exec_id | e->flags);
+ e2__ = gem_eb_flags_to_engine(eb_ring(e));
if (e2__.flags == -1)
continue;
e2 = &e2__;
diff --git a/tests/i915/gem_storedw_loop.c b/tests/i915/gem_storedw_loop.c
index b00555e0..bbd64043 100644
--- a/tests/i915/gem_storedw_loop.c
+++ b/tests/i915/gem_storedw_loop.c
@@ -186,7 +186,7 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
igt_subtest_f("store-%s", e->name) {
check_test_requirements(fd, e->exec_id);
- store_test(fd, e->exec_id | e->flags);
+ store_test(fd, eb_ring(e));
}
}
diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c
index 8c5aaa14..9ffca415 100644
--- a/tests/i915/gem_sync.c
+++ b/tests/i915/gem_sync.c
@@ -86,9 +86,9 @@ sync_ring(int fd, unsigned ring, int num_children, int timeout)
int num_engines = 0;
if (ring == ALL_ENGINES) {
- for_each_physical_engine(fd, ring) {
- names[num_engines] = e__->name;
- engines[num_engines++] = ring;
+ for_each_physical_engine(e, fd) {
+ names[num_engines] = e->name;
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
@@ -185,12 +185,12 @@ wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
int num_engines = 0;
if (ring == ALL_ENGINES) {
- for_each_physical_engine(fd, ring) {
- if (!gem_can_store_dword(fd, ring))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- names[num_engines] = e__->name;
- engines[num_engines++] = ring;
+ names[num_engines] = e->name;
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
@@ -297,12 +297,12 @@ static void active_ring(int fd, unsigned ring, int timeout)
int num_engines = 0;
if (ring == ALL_ENGINES) {
- for_each_physical_engine(fd, ring) {
- if (!gem_can_store_dword(fd, ring))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- names[num_engines] = e__->name;
- engines[num_engines++] = ring;
+ names[num_engines] = e->name;
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
@@ -364,12 +364,12 @@ active_wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
int num_engines = 0;
if (ring == ALL_ENGINES) {
- for_each_physical_engine(fd, ring) {
- if (!gem_can_store_dword(fd, ring))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- names[num_engines] = e__->name;
- engines[num_engines++] = ring;
+ names[num_engines] = e->name;
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
@@ -499,12 +499,12 @@ store_ring(int fd, unsigned ring, int num_children, int timeout)
int num_engines = 0;
if (ring == ALL_ENGINES) {
- for_each_physical_engine(fd, ring) {
- if (!gem_can_store_dword(fd, ring))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- names[num_engines] = e__->name;
- engines[num_engines++] = ring;
+ names[num_engines] = e->name;
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
@@ -616,12 +616,12 @@ switch_ring(int fd, unsigned ring, int num_children, int timeout)
gem_require_contexts(fd);
if (ring == ALL_ENGINES) {
- for_each_physical_engine(fd, ring) {
- if (!gem_can_store_dword(fd, ring))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- names[num_engines] = e__->name;
- engines[num_engines++] = ring;
+ names[num_engines] = e->name;
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
@@ -943,17 +943,17 @@ store_many(int fd, unsigned ring, int timeout)
intel_detect_and_clear_missed_interrupts(fd);
if (ring == ALL_ENGINES) {
- for_each_physical_engine(fd, ring) {
- if (!gem_can_store_dword(fd, ring))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
igt_fork(child, 1)
__store_many(fd,
- ring,
+ eb_ring(e),
timeout,
&shared[n]);
- names[n++] = e__->name;
+ names[n++] = e->name;
}
igt_waitchildren();
} else {
@@ -974,11 +974,11 @@ store_many(int fd, unsigned ring, int timeout)
static void
sync_all(int fd, int num_children, int timeout)
{
- unsigned engines[16], engine;
+ unsigned engines[16];
int num_engines = 0;
- for_each_physical_engine(fd, engine) {
- engines[num_engines++] = engine;
+ for_each_physical_engine(e, fd) {
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
@@ -1028,13 +1028,12 @@ store_all(int fd, int num_children, int timeout)
const int gen = intel_gen(intel_get_drm_devid(fd));
unsigned engines[16];
int num_engines = 0;
- unsigned int ring;
- for_each_physical_engine(fd, ring) {
- if (!gem_can_store_dword(fd, ring))
+ for_each_physical_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- engines[num_engines++] = ring;
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
@@ -1139,9 +1138,9 @@ preempt(int fd, unsigned ring, int num_children, int timeout)
uint32_t ctx[2];
if (ring == ALL_ENGINES) {
- for_each_physical_engine(fd, ring) {
- names[num_engines] = e__->name;
- engines[num_engines++] = ring;
+ for_each_physical_engine(e, fd) {
+ names[num_engines] = e->name;
+ engines[num_engines++] = eb_ring(e);
if (num_engines == ARRAY_SIZE(engines))
break;
}
@@ -1227,29 +1226,29 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
igt_subtest_f("%s", e->name)
- sync_ring(fd, e->exec_id | e->flags, 1, 150);
+ sync_ring(fd, eb_ring(e), 1, 150);
igt_subtest_f("idle-%s", e->name)
- idle_ring(fd, e->exec_id | e->flags, 150);
+ idle_ring(fd, eb_ring(e), 150);
igt_subtest_f("active-%s", e->name)
- active_ring(fd, e->exec_id | e->flags, 150);
+ active_ring(fd, eb_ring(e), 150);
igt_subtest_f("wakeup-%s", e->name)
- wakeup_ring(fd, e->exec_id | e->flags, 150, 1);
+ wakeup_ring(fd, eb_ring(e), 150, 1);
igt_subtest_f("active-wakeup-%s", e->name)
- active_wakeup_ring(fd, e->exec_id | e->flags, 150, 1);
+ active_wakeup_ring(fd, eb_ring(e), 150, 1);
igt_subtest_f("double-wakeup-%s", e->name)
- wakeup_ring(fd, e->exec_id | e->flags, 150, 2);
+ wakeup_ring(fd, eb_ring(e), 150, 2);
igt_subtest_f("store-%s", e->name)
- store_ring(fd, e->exec_id | e->flags, 1, 150);
+ store_ring(fd, eb_ring(e), 1, 150);
igt_subtest_f("switch-%s", e->name)
- switch_ring(fd, e->exec_id | e->flags, 1, 150);
+ switch_ring(fd, eb_ring(e), 1, 150);
igt_subtest_f("forked-switch-%s", e->name)
- switch_ring(fd, e->exec_id | e->flags, ncpus, 150);
+ switch_ring(fd, eb_ring(e), ncpus, 150);
igt_subtest_f("many-%s", e->name)
- store_many(fd, e->exec_id | e->flags, 150);
+ store_many(fd, eb_ring(e), 150);
igt_subtest_f("forked-%s", e->name)
- sync_ring(fd, e->exec_id | e->flags, ncpus, 150);
+ sync_ring(fd, eb_ring(e), ncpus, 150);
igt_subtest_f("forked-store-%s", e->name)
- store_ring(fd, e->exec_id | e->flags, ncpus, 150);
+ store_ring(fd, eb_ring(e), ncpus, 150);
}
igt_subtest("basic-each")
@@ -1301,7 +1300,7 @@ igt_main
for (e = intel_execution_engines; e->name; e++) {
igt_subtest_f("preempt-%s", e->name)
- preempt(fd, e->exec_id | e->flags, ncpus, 150);
+ preempt(fd, eb_ring(e), ncpus, 150);
}
}
diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
index 18e806fe..11d6f4a1 100644
--- a/tests/i915/gem_userptr_blits.c
+++ b/tests/i915/gem_userptr_blits.c
@@ -1165,18 +1165,17 @@ static void test_readonly(int i915)
igt_assert(mprotect(space, total, PROT_READ) == 0);
igt_fork(child, 1) {
- unsigned int engine;
char *orig;
orig = g_compute_checksum_for_data(G_CHECKSUM_SHA1, pages, sz);
gem_userptr(i915, space, total, true, userptr_flags, &rhandle);
- for_each_engine(i915, engine) {
+ for_each_engine(e, i915) {
char *ref, *result;
/* First tweak the backing store through the write */
- store_dword_rand(i915, engine, whandle, sz, 1024);
+ store_dword_rand(i915, eb_ring(e), whandle, sz, 1024);
gem_sync(i915, whandle);
ref = g_compute_checksum_for_data(G_CHECKSUM_SHA1,
pages, sz);
@@ -1185,7 +1184,7 @@ static void test_readonly(int i915)
igt_assert(strcmp(ref, orig));
/* Now try the same through the read-only handle */
- store_dword_rand(i915, engine, rhandle, total, 1024);
+ store_dword_rand(i915, eb_ring(e), rhandle, total, 1024);
gem_sync(i915, rhandle);
result = g_compute_checksum_for_data(G_CHECKSUM_SHA1,
pages, sz);
diff --git a/tests/i915/i915_module_load.c b/tests/i915/i915_module_load.c
index 7fe83520..f42083f5 100644
--- a/tests/i915/i915_module_load.c
+++ b/tests/i915/i915_module_load.c
@@ -51,10 +51,10 @@ static void store_dword(int fd, unsigned ring)
uint32_t batch[16];
int i;
- if (!gem_can_store_dword(fd, ring))
+ if (!gem_has_ring(fd, ring))
return;
- if (!gem_has_ring(fd, ring))
+ if (!gem_can_store_dword(fd, ring))
return;
intel_detect_and_clear_missed_interrupts(fd);
@@ -113,7 +113,7 @@ static void store_all(int fd)
unsigned engines[16], permuted[16];
uint32_t batch[16];
uint64_t offset;
- unsigned engine, nengine;
+ unsigned nengine;
int value;
int i, j;
@@ -151,14 +151,14 @@ static void store_all(int fd)
nengine = 0;
intel_detect_and_clear_missed_interrupts(fd);
- for_each_engine(fd, engine) {
- if (!gem_can_store_dword(fd, engine))
+ for_each_engine(e, fd) {
+ if (!gem_can_store_dword(fd, eb_ring(e)))
continue;
- igt_assert(2*(nengine+1)*sizeof(batch) <= 4096);
+ igt_assert(2 * (nengine + 1) * sizeof(batch) <= 4096);
execbuf.flags &= ~ENGINE_MASK;
- execbuf.flags |= engine;
+ execbuf.flags |= eb_ring(e);
j = 2*nengine;
reloc[j].target_handle = obj[0].handle;
@@ -190,7 +190,7 @@ static void store_all(int fd)
execbuf.batch_start_offset = j*sizeof(batch);
gem_execbuf(fd, &execbuf);
- engines[nengine++] = engine;
+ engines[nengine++] = eb_ring(e);
}
gem_sync(fd, obj[1].handle);
@@ -286,10 +286,8 @@ gem_exec_store(void)
fd = __drm_open_driver(DRIVER_INTEL);
igt_fork_hang_detector(fd);
- for (e = intel_execution_engines; e->name; e++) {
- if (gem_can_store_dword(fd, e->exec_id | e->flags))
- store_dword(fd, e->exec_id | e->flags);
- }
+ for (e = intel_execution_engines; e->name; e++)
+ store_dword(fd, eb_ring(e));
store_all(fd);
diff --git a/tests/kms_busy.c b/tests/kms_busy.c
index 5ff2b846..faad7309 100644
--- a/tests/kms_busy.c
+++ b/tests/kms_busy.c
@@ -315,32 +315,28 @@ igt_main
igt_subtest_f("basic-flip-%s",
kmstest_pipe_name(n)) {
- igt_require(gem_has_ring(display.drm_fd,
- e->exec_id | e->flags));
+ igt_require(gem_has_ring(display.drm_fd, eb_ring(e)));
- test_flip(&display, e->exec_id | e->flags, n, false);
+ test_flip(&display, eb_ring(e), n, false);
}
igt_subtest_f("basic-modeset-%s",
kmstest_pipe_name(n)) {
- igt_require(gem_has_ring(display.drm_fd,
- e->exec_id | e->flags));
+ igt_require(gem_has_ring(display.drm_fd, eb_ring(e)));
- test_flip(&display, e->exec_id | e->flags, n, true);
+ test_flip(&display, eb_ring(e), n, true);
}
igt_fixture {
- igt_require(gem_has_ring(display.drm_fd,
- e->exec_id | e->flags));
+ igt_require(gem_has_ring(display.drm_fd, eb_ring(e)));
hang = igt_allow_hang(display.drm_fd, 0, 0);
}
igt_subtest_f("extended-pageflip-modeset-hang-oldfb-%s-%s",
e->name, kmstest_pipe_name(n)) {
- igt_require(gem_has_ring(display.drm_fd,
- e->exec_id | e->flags));
+ igt_require(gem_has_ring(display.drm_fd, eb_ring(e)));
- test_pageflip_modeset_hang(&display, e->exec_id | e->flags, n);
+ test_pageflip_modeset_hang(&display, eb_ring(e), n);
}
igt_fixture
@@ -348,25 +344,25 @@ igt_main
igt_subtest_f("extended-pageflip-hang-oldfb-%s-%s",
e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, false, false);
+ test_hang(&display, eb_ring(e), n, false, false);
igt_subtest_f("extended-pageflip-hang-newfb-%s-%s",
e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, false, true);
+ test_hang(&display, eb_ring(e), n, false, true);
igt_subtest_f("extended-modeset-hang-oldfb-%s-%s",
e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, true, false);
+ test_hang(&display, eb_ring(e), n, true, false);
igt_subtest_f("extended-modeset-hang-newfb-%s-%s",
e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, true, true);
+ test_hang(&display, eb_ring(e), n, true, true);
igt_subtest_f("extended-modeset-hang-oldfb-with-reset-%s-%s",
e->name, kmstest_pipe_name(n)) {
igt_set_module_param_int("force_reset_modeset_test", 1);
- test_hang(&display, e->exec_id | e->flags, n, true, false);
+ test_hang(&display, eb_ring(e), n, true, false);
igt_set_module_param_int("force_reset_modeset_test", 0);
}
@@ -375,7 +371,7 @@ igt_main
e->name, kmstest_pipe_name(n)) {
igt_set_module_param_int("force_reset_modeset_test", 1);
- test_hang(&display, e->exec_id | e->flags, n, true, true);
+ test_hang(&display, eb_ring(e), n, true, true);
igt_set_module_param_int("force_reset_modeset_test", 0);
}
diff --git a/tests/prime_busy.c b/tests/prime_busy.c
index 4f237f68..8ee23bb3 100644
--- a/tests/prime_busy.c
+++ b/tests/prime_busy.c
@@ -192,8 +192,8 @@ static void test_engine_mode(int fd,
igt_subtest_group {
igt_fixture {
- gem_require_ring(fd, e->exec_id | e->flags);
- igt_require(gem_can_store_dword(fd, e->exec_id | e->flags));
+ gem_require_ring(fd, eb_ring(e));
+ igt_require(gem_can_store_dword(fd, eb_ring(e)));
if ((flags & HANG) == 0)
{
@@ -209,12 +209,12 @@ static void test_engine_mode(int fd,
igt_subtest_f("%s%s-%s",
!e->exec_id && !(flags & HANG) ? "basic-" : "",
name, e->name)
- busy(fd, e->exec_id | e->flags, flags);
+ busy(fd, eb_ring(e), flags);
igt_subtest_f("%swait-%s-%s",
!e->exec_id && !(flags & HANG) ? "basic-" : "",
name, e->name)
- busy(fd, e->exec_id | e->flags, flags | POLL);
+ busy(fd, eb_ring(e), flags | POLL);
igt_fixture {
if ((flags & HANG) == 0)
diff --git a/tests/prime_vgem.c b/tests/prime_vgem.c
index bebf9edc..2b21ff41 100644
--- a/tests/prime_vgem.c
+++ b/tests/prime_vgem.c
@@ -848,8 +848,8 @@ igt_main
igt_subtest_f("%ssync-%s",
e->exec_id == 0 ? "basic-" : "",
e->name) {
- gem_require_ring(i915, e->exec_id | e->flags);
- igt_require(gem_can_store_dword(i915, e->exec_id | e->flags));
+ gem_require_ring(i915, eb_ring(e));
+ igt_require(gem_can_store_dword(i915, eb_ring(e)));
gem_quiescent_gpu(i915);
test_sync(i915, vgem, e->exec_id, e->flags);
@@ -860,8 +860,8 @@ igt_main
igt_subtest_f("%sbusy-%s",
e->exec_id == 0 ? "basic-" : "",
e->name) {
- gem_require_ring(i915, e->exec_id | e->flags);
- igt_require(gem_can_store_dword(i915, e->exec_id | e->flags));
+ gem_require_ring(i915, eb_ring(e));
+ igt_require(gem_can_store_dword(i915, eb_ring(e)));
gem_quiescent_gpu(i915);
test_busy(i915, vgem, e->exec_id, e->flags);
@@ -872,8 +872,8 @@ igt_main
igt_subtest_f("%swait-%s",
e->exec_id == 0 ? "basic-" : "",
e->name) {
- gem_require_ring(i915, e->exec_id | e->flags);
- igt_require(gem_can_store_dword(i915, e->exec_id | e->flags));
+ gem_require_ring(i915, eb_ring(e));
+ igt_require(gem_can_store_dword(i915, eb_ring(e)));
gem_quiescent_gpu(i915);
test_wait(i915, vgem, e->exec_id, e->flags);
@@ -895,8 +895,8 @@ igt_main
igt_subtest_f("%sfence-wait-%s",
e->exec_id == 0 ? "basic-" : "",
e->name) {
- gem_require_ring(i915, e->exec_id | e->flags);
- igt_require(gem_can_store_dword(i915, e->exec_id | e->flags));
+ gem_require_ring(i915, eb_ring(e));
+ igt_require(gem_can_store_dword(i915, eb_ring(e)));
gem_quiescent_gpu(i915);
test_fence_wait(i915, vgem, e->exec_id, e->flags);