Re: [igt-dev] [RFC v2 13/43] tests/i915/gem_ctx_isolation: use the gem_engine_topology library

Stimson, Dale B
2019-06-28T22:12:06Z

For tests/i915/gem_ctx_isolation the changes you have made look good,
but you will also need something like the following:

----------------------------------------------------------------
diff --git a/tests/i915/gem_ctx_isolation.c b/tests/i915/gem_ctx_isolation.c
index 2001d562..d91d8952 100644
--- a/tests/i915/gem_ctx_isolation.c
+++ b/tests/i915/gem_ctx_isolation.c
@@ -812,6 +812,7 @@ static unsigned int __has_context_isolation(int fd)
igt_main
{
unsigned int has_context_isolation = 0;
+ const struct intel_execution_engine2 *e;
int fd = -1;
uint16_t devid;

@@ -833,8 +834,7 @@ igt_main
igt_skip_on(gen > LAST_KNOWN_GEN);
}

- for (const struct intel_execution_engine2 *e = intel_execution_engines2;
- e->name; e++) {
+ __for_each_physical_engine(fd, e) {
igt_subtest_group {
igt_fixture {
igt_require(has_context_isolation & (1 << e->class));
----------------------------------------------------------------

On 2019-06-21 15:33:15, Ramalingam C wrote:
> Date: Fri, 21 Jun 2019 15:33:15 +0530
> From: Ramalingam C <ramalingam.c@intel.com>
> To: igt-dev@lists.freedesktop.org, tvrtko.ursulin@linux.intel.com,
> andi@etezian.org
> Subject: [igt-dev] [RFC v2 13/43] tests/i915/gem_ctx_isolation: use the
> gem_engine_topology library
> X-Mailer: git-send-email 2.19.1
>
> Replace the legacy for_each_engine* defines with the ones
> implemented in the gem_engine_topology library.
>
> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
> ---
> tests/i915/gem_ctx_isolation.c | 19 ++++++++-----------
> 1 file changed, 8 insertions(+), 11 deletions(-)
>
> diff --git a/tests/i915/gem_ctx_isolation.c b/tests/i915/gem_ctx_isolation.c
> index 5b054c81d449..47e20403ce1f 100644
> --- a/tests/i915/gem_ctx_isolation.c
> +++ b/tests/i915/gem_ctx_isolation.c
> @@ -556,7 +556,6 @@ static void nonpriv(int fd,
> 0x0505c0c0,
> 0xdeadbeef
> };
> - unsigned int engine = e->flags;
> unsigned int num_values = ARRAY_SIZE(values);
>
> /* Sigh -- hsw: we need cmdparser access to our own registers! */
> @@ -574,7 +573,7 @@ static void nonpriv(int fd,
>
> tmpl_regs(fd, ctx, e, tmpl, values[v]);
>
> - spin = igt_spin_new(fd, .ctx = ctx, .engine = engine);
> + spin = igt_spin_new(fd, .ctx = ctx, .engine = e->flags);
>
> igt_debug("%s[%d]: Setting all registers to 0x%08x\n",
> __func__, v, values[v]);
> @@ -612,7 +611,6 @@ static void isolation(int fd,
> 0xaaaaaaaa,
> 0xdeadbeef
> };
> - unsigned int engine = e->flags;
> unsigned int num_values =
> flags & (DIRTY1 | DIRTY2) ? ARRAY_SIZE(values) : 1;
>
> @@ -625,7 +623,7 @@ static void isolation(int fd,
> ctx[0] = gem_context_create(fd);
> regs[0] = read_regs(fd, ctx[0], e, flags);
>
> - spin = igt_spin_new(fd, .ctx = ctx[0], .engine = engine);
> + spin = igt_spin_new(fd, .ctx = ctx[0], .engine = e->flags);
>
> if (flags & DIRTY1) {
> igt_debug("%s[%d]: Setting all registers of ctx 0 to 0x%08x\n",
> @@ -678,11 +676,11 @@ static void isolation(int fd,
> #define S4 (4 << 8)
> #define SLEEP_MASK (0xf << 8)
>
> -static void inject_reset_context(int fd, unsigned int engine)
> +static void inject_reset_context(int fd, const struct intel_execution_engine2 *e)
> {
> struct igt_spin_factory opts = {
> .ctx = gem_context_create(fd),
> - .engine = engine,
> + .engine = e->flags,
> .flags = IGT_SPIN_FAST,
> };
> igt_spin_t *spin;
> @@ -693,7 +691,7 @@ static void inject_reset_context(int fd, unsigned int engine)
> * HW for screwing up if the context was already broken.
> */
>
> - if (gem_can_store_dword(fd, engine))
> + if (gem_class_can_store_dword(fd, e->class))
> opts.flags |= IGT_SPIN_POLL_RUN;
>
> spin = __igt_spin_factory(fd, &opts);
> @@ -723,7 +721,6 @@ static void preservation(int fd,
> 0xdeadbeef
> };
> const unsigned int num_values = ARRAY_SIZE(values);
> - unsigned int engine = e->flags;
> uint32_t ctx[num_values +1 ];
> uint32_t regs[num_values + 1][2];
> igt_spin_t *spin;
> @@ -731,7 +728,7 @@ static void preservation(int fd,
> gem_quiescent_gpu(fd);
>
> ctx[num_values] = gem_context_create(fd);
> - spin = igt_spin_new(fd, .ctx = ctx[num_values], .engine = engine);
> + spin = igt_spin_new(fd, .ctx = ctx[num_values], .engine = e->flags);
> regs[num_values][0] = read_regs(fd, ctx[num_values], e, flags);
> for (int v = 0; v < num_values; v++) {
> ctx[v] = gem_context_create(fd);
> @@ -744,7 +741,7 @@ static void preservation(int fd,
> igt_spin_free(fd, spin);
>
> if (flags & RESET)
> - inject_reset_context(fd, engine);
> + inject_reset_context(fd, e);
>
> switch (flags & SLEEP_MASK) {
> case NOSLEEP:
> @@ -771,7 +768,7 @@ static void preservation(int fd,
> break;
> }
>
> - spin = igt_spin_new(fd, .ctx = ctx[num_values], .engine = engine);
> + spin = igt_spin_new(fd, .ctx = ctx[num_values], .engine = e->flags);
> for (int v = 0; v < num_values; v++)
> regs[v][1] = read_regs(fd, ctx[v], e, flags);
> regs[num_values][1] = read_regs(fd, ctx[num_values], e, flags);
> --
> 2.19.1
>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev