[igt-dev] [Intel-gfx] [PATCH i-g-t v2 2/3] test/gem_lmem_swapping: fix physical engine usage
Thomas Hellström
thomas.hellstrom at linux.intel.com
Mon Mar 28 09:16:57 UTC 2022
On 3/25/22 10:09, Matthew Auld wrote:
> During execbuf DG2 currently just hits:
>
> "execbuf with unknown ring: 5"
>
> It looks like the fix is to convert the test over to using the
> non-legacy API where we instead fill the ctx with all the physical
> engines and then engine/ring becomes the index into this.
>
> v2:
> - Make sure we destroy our newly created contexts(Ashutosh)
> - Tweak the commit message so that we are talking less nonsense(Tvrtko)
> - s/i915/fd/ when calling set_persistence
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/5192
> Signed-off-by: Matthew Auld <matthew.auld at intel.com>
> Cc: Thomas Hellström <thomas.hellstrom at linux.intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at linux.intel.com>
> Cc: Ashutosh Dixit <ashutosh.dixit at intel.com>
> Cc: Nirmoy Das <nirmoy.das at linux.intel.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom at linux.intel.com>
> ---
> tests/i915/gem_lmem_swapping.c | 29 +++++++++++++++++++++--------
> 1 file changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/tests/i915/gem_lmem_swapping.c b/tests/i915/gem_lmem_swapping.c
> index 193ff370..526835cc 100644
> --- a/tests/i915/gem_lmem_swapping.c
> +++ b/tests/i915/gem_lmem_swapping.c
> @@ -126,6 +126,7 @@ verify_object(int i915, const struct object *obj, unsigned int flags)
> }
>
> static void move_to_lmem(int i915,
> + const intel_ctx_t *ctx,
> struct object *list,
> unsigned int num,
> uint32_t batch,
> @@ -137,6 +138,7 @@ static void move_to_lmem(int i915,
> .buffers_ptr = to_user_pointer(obj),
> .buffer_count = 1 + num,
> .flags = I915_EXEC_NO_RELOC | I915_EXEC_HANDLE_LUT | engine,
> + .rsvd1 = ctx->id,
> };
> unsigned int i, ret;
>
> @@ -156,6 +158,7 @@ retry:
> }
>
> static void __do_evict(int i915,
> + const intel_ctx_t *ctx,
> struct drm_i915_gem_memory_class_instance *region,
> struct params *params,
> unsigned int seed)
> @@ -170,7 +173,6 @@ static void __do_evict(int i915,
> struct timespec t = {};
> unsigned int num;
>
> - __gem_context_set_persistence(i915, 0, false);
> size = 4096;
> batch = create_bo(i915, &size, region, params->oom_test);
>
> @@ -201,7 +203,7 @@ static void __do_evict(int i915,
> }
> obj->handle = create_bo(i915, &obj->size, region, params->oom_test);
>
> - move_to_lmem(i915, objects + i, 1, batch, engine,
> + move_to_lmem(i915, ctx, objects + i, 1, batch, engine,
> params->oom_test);
> if (params->flags & TEST_VERIFY)
> init_object(i915, obj, rand(), params->flags);
> @@ -226,7 +228,7 @@ static void __do_evict(int i915,
> idx = (idx + 1) % params->count;
> }
>
> - move_to_lmem(i915, list, num, batch, engine, params->oom_test);
> + move_to_lmem(i915, ctx, list, num, batch, engine, params->oom_test);
>
> if (params->flags & TEST_ENGINES)
> engine = (engine + 1) % __num_engines__;
> @@ -342,6 +344,7 @@ static void fill_params(int i915, struct params *params,
> }
>
> static void test_evict(int i915,
> + const intel_ctx_t *ctx,
> struct drm_i915_memory_region_info *region,
> unsigned int flags)
> {
> @@ -353,14 +356,18 @@ static void test_evict(int i915,
> if (flags & TEST_PARALLEL) {
> int fd = gem_reopen_driver(i915);
>
> + ctx = intel_ctx_create_all_physical(fd);
> + __gem_context_set_persistence(fd, ctx->id, false);
> +
> igt_fork(child, nproc)
> - __do_evict(fd, ®ion->region, ¶ms,
> + __do_evict(fd, ctx, ®ion->region, ¶ms,
> params.seed + child + 1);
>
> igt_waitchildren();
> + intel_ctx_destroy(fd, ctx);
> close(fd);
> } else {
> - __do_evict(i915, ®ion->region, ¶ms, params.seed);
> + __do_evict(i915, ctx, ®ion->region, ¶ms, params.seed);
> }
> }
>
> @@ -399,6 +406,7 @@ static void smem_oom_exit_handler(int sig)
> }
>
> static void test_smem_oom(int i915,
> + const intel_ctx_t *ctx,
> struct drm_i915_memory_region_info *region)
> {
> const uint64_t smem_size = intel_get_total_ram_mb() +
> @@ -421,7 +429,7 @@ static void test_smem_oom(int i915,
> fill_params(i915, ¶ms, region, 0, 1, true);
>
> igt_install_exit_handler(smem_oom_exit_handler);
> - __do_evict(fd, ®ion->region, ¶ms,
> + __do_evict(fd, ctx, ®ion->region, ¶ms,
> params.seed + child + 1);
>
> close(fd);
> @@ -513,6 +521,7 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
> { "parallel-multi", TEST_PARALLEL | TEST_RANDOM | TEST_VERIFY | TEST_ENGINES | TEST_MULTI },
> { }
> };
> + const intel_ctx_t *ctx;
> int i915 = -1;
>
> igt_fixture {
> @@ -528,19 +537,23 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
> for_each_physical_engine(i915, e)
> __num_engines__++;
> igt_require(__num_engines__);
> + ctx = intel_ctx_create_all_physical(i915);
> + __gem_context_set_persistence(i915, ctx->id, false);
> +
> }
>
> for (test = tests; test->name; test++) {
> igt_describe("Exercise local memory swapping to system memory");
> dynamic_lmem_subtest(region, regions, test->name)
> - test_evict(i915, region, test->flags);
> + test_evict(i915, ctx, region, test->flags);
> }
>
> igt_describe("Exercise local memory swapping during exhausting system memory");
> dynamic_lmem_subtest(region, regions, "smem-oom")
> - test_smem_oom(i915, region);
> + test_smem_oom(i915, ctx, region);
>
> igt_fixture {
> + intel_ctx_destroy(i915, ctx);
> free(regions);
> close(i915);
> }
More information about the igt-dev
mailing list