[igt-dev] [PATCH i-g-t 3/7] Revert "i915/gem_exec_reloc: Verify engine isolation"

Jason Ekstrand jason at jlekstrand.net
Wed Jun 9 17:59:46 UTC 2021


On Tue, Jun 8, 2021 at 4:40 AM Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
>
> This reverts commit 9fe244cb751c9d3be0581a943bb9baa8651d8d29.
>
> This validates gpu relocations, which we're about to delete.
>
> Cc: Jason Ekstrand <jason at jlekstrand.net>
> Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Cc: Dave Airlie <airlied at redhat.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> ---
>  tests/i915/gem_exec_reloc.c | 73 -------------------------------------
>  1 file changed, 73 deletions(-)
>
> diff --git a/tests/i915/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c
> index efe6e2e02c52..3b200f557b2c 100644
> --- a/tests/i915/gem_exec_reloc.c
> +++ b/tests/i915/gem_exec_reloc.c
> @@ -471,72 +471,6 @@ static void active_spin(int fd, unsigned engine)
>         igt_spin_free(fd, spin);
>  }
>
> -static void others_spin(int i915, unsigned engine)
> -{
> -       struct drm_i915_gem_relocation_entry reloc = {};
> -       struct drm_i915_gem_exec_object2 obj = {
> -               .relocs_ptr = to_user_pointer(&reloc),
> -               .relocation_count = 1,
> -       };
> -       struct drm_i915_gem_execbuffer2 execbuf = {
> -               .buffers_ptr = to_user_pointer(&obj),
> -               .buffer_count = 1,
> -               .flags = engine,
> -       };
> -       const struct intel_execution_engine2 *e;
> -       igt_spin_t *spin = NULL;
> -       uint64_t addr;
> -       int fence;
> -
> -       __for_each_physical_engine(i915, e) {
> -               if (e->flags == engine)
> -                       continue;
> -
> -               if (!spin) {
> -                       spin = igt_spin_new(i915,
> -                                           .engine = e->flags,
> -                                           .flags = IGT_SPIN_FENCE_OUT);
> -                       fence = dup(spin->out_fence);
> -               } else {
> -                       int old_fence;
> -
> -                       spin->execbuf.flags &= ~I915_EXEC_RING_MASK;
> -                       spin->execbuf.flags |= e->flags;
> -                       gem_execbuf_wr(i915, &spin->execbuf);
> -
> -                       old_fence = fence;
> -                       fence = sync_fence_merge(old_fence,
> -                                                spin->execbuf.rsvd2 >> 32);
> -                       close(spin->execbuf.rsvd2 >> 32);
> -                       close(old_fence);
> -               }
> -       }
> -       igt_require(spin);
> -
> -       /* All other engines are busy, let's relocate! */
> -       obj.handle = batch_create(i915);
> -       reloc.target_handle = obj.handle;
> -       reloc.presumed_offset = -1;
> -       reloc.offset = 64;
> -       gem_execbuf(i915, &execbuf);

Does this really depend on async relocs?  The spinners above ensure
that all the OTHER engines are busy and then we try to do something
with a relocation on a fresh BO here.  That should be fine.  We should
be able to place a relocation in a BO as long as that BO isn't busy.
Or am I missing something?

--Jason

> -
> -       /* Verify the relocation took place */
> -       gem_read(i915, obj.handle, 64, &addr, sizeof(addr));
> -       igt_assert_eq_u64(addr, obj.offset);
> -       gem_close(i915, obj.handle);
> -
> -       /* Even if the spinner was harmed in the process */
> -       igt_spin_end(spin);
> -       igt_assert_eq(sync_fence_wait(fence, 200), 0);
> -       igt_assert_neq(sync_fence_status(fence), 0);
> -       if (sync_fence_status(fence) < 0)
> -               igt_warn("Spinner was cancelled, %s\n",
> -                        strerror(-sync_fence_status(fence)));
> -       close(fence);
> -
> -       igt_spin_free(i915, spin);
> -}
> -
>  static bool has_64b_reloc(int fd)
>  {
>         return intel_gen(intel_get_drm_devid(fd)) >= 8;
> @@ -1329,13 +1263,6 @@ igt_main
>                 }
>         }
>
> -       igt_subtest_with_dynamic("basic-spin-others") {
> -               __for_each_physical_engine(fd, e) {
> -                       igt_dynamic_f("%s", e->name)
> -                               others_spin(fd, e->flags);
> -               }
> -       }
> -
>         igt_subtest_with_dynamic("basic-many-active") {
>                 __for_each_physical_engine(fd, e) {
>                         igt_dynamic_f("%s", e->name)
> --
> 2.24.1
>


More information about the igt-dev mailing list