Provide the iterator name as an explicit macro parameter so that it is
known to the caller, and allows for them to properly nest loops over all
engines.

Fixes:
../tests/i915/gem_exec_schedule.c: In function ‘semaphore_noskip’:
../lib/igt_gt.h:84:44: warning: declaration of ‘e__’ shadows a previous local 
[-Wshadow]
  for (const struct intel_execution_engine *e__ = intel_execution_engines;\
                                            ^~~
../tests/i915/gem_exec_schedule.c:653:2: note: in expansion of macro 
‘for_each_physical_engine’
  for_each_physical_engine(i915, other) {
  ^~~~~~~~~~~~~~~~~~~~~~~~
../lib/igt_gt.h:84:44: note: shadowed declaration is here
  for (const struct intel_execution_engine *e__ = intel_execution_engines;\
                                            ^~~
../tests/i915/gem_exec_schedule.c:652:2: note: in expansion of macro 
‘for_each_physical_engine’
  for_each_physical_engine(i915, engine) {
  ^~~~~~~~~~~~~~~~~~~~~~~~
../tests/i915/gem_exec_schedule.c: In function ‘measure_semaphore_power’:
../lib/igt_gt.h:84:44: warning: declaration of ‘e__’ shadows a previous local 
[-Wshadow]
  for (const struct intel_execution_engine *e__ = intel_execution_engines;\
                                            ^~~
../tests/i915/gem_exec_schedule.c:1740:3: note: in expansion of macro 
‘for_each_physical_engine’
   for_each_physical_engine(i915, engine) {
   ^~~~~~~~~~~~~~~~~~~~~~~~
../lib/igt_gt.h:84:44: note: shadowed declaration is here
  for (const struct intel_execution_engine *e__ = intel_execution_engines;\
                                            ^~~
../tests/i915/gem_exec_schedule.c:1719:2: note: in expansion of macro 
‘for_each_physical_engine’
  for_each_physical_engine(i915, signaler) {
  ^~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursu...@intel.com>
Cc: Andi Shyti <andi.sh...@intel.com>
---
 benchmarks/gem_syslatency.c     |  16 +--
 lib/i915/gem_ring.c             |   4 +-
 lib/igt_gt.h                    |  24 +++--
 tests/amdgpu/amd_prime.c        |   6 +-
 tests/i915/gem_bad_reloc.c      |   4 +-
 tests/i915/gem_busy.c           |   4 +-
 tests/i915/gem_concurrent_all.c |   7 +-
 tests/i915/gem_cs_prefetch.c    |   2 +-
 tests/i915/gem_ctx_create.c     |  12 +--
 tests/i915/gem_ctx_shared.c     |  43 ++++----
 tests/i915/gem_ctx_switch.c     |   2 +-
 tests/i915/gem_ctx_thrash.c     |  14 ++-
 tests/i915/gem_eio.c            |  29 +++---
 tests/i915/gem_exec_async.c     |  13 ++-
 tests/i915/gem_exec_await.c     |   7 +-
 tests/i915/gem_exec_capture.c   |   6 +-
 tests/i915/gem_exec_create.c    |   8 +-
 tests/i915/gem_exec_fence.c     |  61 ++++++-----
 tests/i915/gem_exec_flush.c     |   2 +-
 tests/i915/gem_exec_gttfill.c   |  11 +-
 tests/i915/gem_exec_latency.c   |  33 +++---
 tests/i915/gem_exec_nop.c       |  44 ++++----
 tests/i915/gem_exec_params.c    |  14 +--
 tests/i915/gem_exec_reloc.c     |   8 +-
 tests/i915/gem_exec_reuse.c     |   6 +-
 tests/i915/gem_exec_schedule.c  | 172 +++++++++++++++-----------------
 tests/i915/gem_exec_suspend.c   |  20 ++--
 tests/i915/gem_exec_whisper.c   |   8 +-
 tests/i915/gem_mocs_settings.c  |   6 +-
 tests/i915/gem_reset_stats.c    |  10 +-
 tests/i915/gem_ring_sync_loop.c |   5 +-
 tests/i915/gem_ringfill.c       |   3 +-
 tests/i915/gem_shrink.c         |   5 +-
 tests/i915/gem_spin_batch.c     |   2 +-
 tests/i915/gem_storedw_loop.c   |   2 +-
 tests/i915/gem_sync.c           |  97 +++++++++---------
 tests/i915/gem_userptr_blits.c  |   7 +-
 tests/i915/i915_module_load.c   |  12 +--
 tests/kms_busy.c                |  30 +++---
 tests/prime_busy.c              |   8 +-
 tests/prime_vgem.c              |  16 +--
 41 files changed, 363 insertions(+), 420 deletions(-)

diff --git a/benchmarks/gem_syslatency.c b/benchmarks/gem_syslatency.c
index d7cf0ed49..402306300 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 5ca2a728b..99f4741cb 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 73b5002a0..66088d391 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 dc71ac70c..fdb8a0283 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 c03e5beb3..96c9babe6 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 a55358708..a8388149b 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 266995d14..992bea62e 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 2b8653687..171908576 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 1e2c40c4f..83da05690 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 f78524822..6d8cbcce2 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 c071def78..36ecd5376 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 b25f95f13..62c26e9a0 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 892f3657c..8d6cb9760 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 9a06af7e2..d83e9f6db 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 5cfeb8ec8..33e2ee45e 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 4457496d6..54da57aca 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 54a2429e4..88c5ddfd9 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 2f04d7af4..3657c4b27 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 f820b2a8d..28708460b 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 efd612bb6..fa9161b4e 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 9ddb348c0..3d99182a0 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 8922685af..1a6906f30 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 49c56a8d7..8f15e6454 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 fdd9661d1..5f59fe99f 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 935bfa9ac..971eb4137 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 8695cbe9d..47f614eec 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 e43a16e9e..561a10a4b 100644
--- a/tests/i915/gem_exec_suspend.c
+++ b/tests/i915/gem_exec_suspend.c
@@ -64,11 +64,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)
@@ -106,9 +104,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));
@@ -267,11 +265,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 1135c6497..a33847608 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 3ad941491..fc2ccb216 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 ac9af23f2..0931641a7 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 118f3638a..32b936373 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 c728e1cd3..af66d0012 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 3db754f55..d2ea2ed84 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 e0623f4c9..df59512a5 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 b00555e0c..bbd640431 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 8c5aaa144..79fbef6d4 100644
--- a/tests/i915/gem_sync.c
+++ b/tests/i915/gem_sync.c
@@ -86,8 +86,8 @@ 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;
+               for_each_physical_engine(e, fd) {
+                       names[num_engines] = e->name;
                        engines[num_engines++] = ring;
                        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 18e806fed..11d6f4a1c 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 7fe835207..d3db89827 100644
--- a/tests/i915/i915_module_load.c
+++ b/tests/i915/i915_module_load.c
@@ -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 * (eb_ring(e) + 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;
@@ -287,8 +287,8 @@ gem_exec_store(void)
        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);
+               if (gem_can_store_dword(fd, eb_ring(e)))
+                       store_dword(fd, eb_ring(e));
        }
 
        store_all(fd);
diff --git a/tests/kms_busy.c b/tests/kms_busy.c
index 5ff2b8460..faad73092 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 4f237f68f..8ee23bb3f 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 bebf9edc6..2b21ff414 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);
-- 
2.24.0.rc0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to