[igt-dev] [PATCH i-g-t 21/77] tests/i915/gem_ctx_exec: Convert to intel_ctx_t

Zbigniew Kempczyński zbigniew.kempczynski at intel.com
Mon Jun 14 17:26:31 UTC 2021


On Mon, Jun 14, 2021 at 11:36:36AM -0500, Jason Ekstrand wrote:
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
>  tests/i915/gem_ctx_exec.c | 51 ++++++++++++++++++++++++---------------
>  1 file changed, 31 insertions(+), 20 deletions(-)
> 
> diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c
> index 6db2d5983..fb18bb016 100644
> --- a/tests/i915/gem_ctx_exec.c
> +++ b/tests/i915/gem_ctx_exec.c
> @@ -268,7 +268,7 @@ static void nohangcheck_hostile(int i915)
>  	const struct intel_execution_engine2 *e;
>  	igt_hang_t hang;
>  	int fence = -1;
> -	uint32_t ctx;
> +	const intel_ctx_t *ctx;
>  	int err = 0;
>  	int dir;
>  
> @@ -282,12 +282,12 @@ static void nohangcheck_hostile(int i915)
>  	dir = igt_params_open(i915);
>  	igt_require(dir != -1);
>  
> -	ctx = gem_context_create(i915);
> -	hang = igt_allow_hang(i915, ctx, 0);
> +	ctx = intel_ctx_create_all_physical(i915);
> +	hang = igt_allow_hang(i915, ctx->id, 0);
>  
>  	igt_require(__enable_hangcheck(dir, false));
>  
> -	____for_each_physical_engine(i915, ctx, e) {
> +	for_each_ctx_engine(i915, ctx, e) {
>  		igt_spin_t *spin;
>  		int new;
>  
> @@ -295,7 +295,7 @@ static void nohangcheck_hostile(int i915)
>  		gem_engine_property_printf(i915, e->name,
>  					   "preempt_timeout_ms", "%d", 50);
>  
> -		spin = __igt_spin_new(i915, ctx,
> +		spin = __igt_spin_new(i915, .ctx = ctx,
>  				      .engine = e->flags,
>  				      .flags = (IGT_SPIN_NO_PREEMPTION |
>  						IGT_SPIN_FENCE_OUT));
> @@ -316,7 +316,7 @@ static void nohangcheck_hostile(int i915)
>  			fence = tmp;
>  		}
>  	}
> -	gem_context_destroy(i915, ctx);
> +	intel_ctx_destroy(i915, ctx);
>  	igt_assert(fence != -1);
>  
>  	if (sync_fence_wait(fence, MSEC_PER_SEC)) { /* 640ms preempt-timeout */
> @@ -341,30 +341,38 @@ static void nohangcheck_hostile(int i915)
>  static void close_race(int i915)
>  {
>  	const int ncpus = sysconf(_SC_NPROCESSORS_ONLN);
> -	uint32_t *contexts;
> +	const intel_ctx_t *base_ctx;
> +	const intel_ctx_t **ctx;
> +	uint32_t *ctx_id;
>  	igt_spin_t *spin;
>  
>  	/* Check we can execute a polling spinner */
> -	igt_spin_free(i915, igt_spin_new(i915, .flags = IGT_SPIN_POLL_RUN));
> +	base_ctx = intel_ctx_create(i915, NULL);
> +	igt_spin_free(i915, igt_spin_new(i915, .ctx = base_ctx,
> +					 .flags = IGT_SPIN_POLL_RUN));
>  
> -	contexts = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
> -	igt_assert(contexts != MAP_FAILED);
> +	ctx = calloc(ncpus, sizeof(*ctx));
> +	ctx_id = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
> +	igt_assert(ctx_id != MAP_FAILED);
>  
> -	for (int child = 0; child < ncpus; child++)
> -		contexts[child] = gem_context_create(i915);
> +	for (int child = 0; child < ncpus; child++) {
> +		ctx[child] = intel_ctx_create(i915, NULL);
> +		ctx_id[child] = ctx[child]->id;
> +	}
>  
>  	igt_fork(child, ncpus) {
> -		spin = __igt_spin_new(i915, .flags = IGT_SPIN_POLL_RUN);
> +		spin = __igt_spin_new(i915, .ctx = base_ctx,
> +				      .flags = IGT_SPIN_POLL_RUN);
>  		igt_spin_end(spin);
>  		gem_sync(i915, spin->handle);
>  
> -		while (!READ_ONCE(contexts[ncpus])) {
> +		while (!READ_ONCE(ctx_id[ncpus])) {
>  			int64_t timeout = 1;
>  
>  			igt_spin_reset(spin);
>  			igt_assert(!igt_spin_has_started(spin));
>  
> -			spin->execbuf.rsvd1 = READ_ONCE(contexts[child]);
> +			spin->execbuf.rsvd1 = READ_ONCE(ctx_id[child]);
>  			if (__gem_execbuf(i915, &spin->execbuf))
>  				continue;
>  
> @@ -404,19 +412,22 @@ static void close_race(int i915)
>  		 * and the kernel's context/request handling.
>  		 */
>  		for (int child = 0; child < ncpus; child++) {
> -			gem_context_destroy(i915, contexts[child]);
> -			contexts[child] = gem_context_create(i915);
> +			intel_ctx_destroy(i915, ctx[child]);
> +			ctx[child] = intel_ctx_create(i915, NULL);
> +			ctx_id[child] = ctx[child]->id;
>  		}
>  		usleep(1000 + hars_petruska_f54_1_random_unsafe() % 2000);
>  	}
>  
> -	contexts[ncpus] = 1;
> +	ctx_id[ncpus] = 1;
>  	igt_waitchildren();
>  
> +	intel_ctx_destroy(i915, base_ctx);
>  	for (int child = 0; child < ncpus; child++)
> -		gem_context_destroy(i915, contexts[child]);
> +		intel_ctx_destroy(i915, ctx[child]);
>  
> -	munmap(contexts, 4096);
> +	free(ctx);
> +	munmap(ctx_id, 4096);
>  }

As this is new series, I've already gave my rb in previous one,
so I copy it here:

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>

--
Zbigniew
>  
>  igt_main
> -- 
> 2.31.1
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev


More information about the igt-dev mailing list