[PATCH v2 i-g-t 1/2] tests/intel/xe_drm_fdinfo: Check prerequisites for utilization subtests

Kamil Konieczny kamil.konieczny at linux.intel.com
Wed Mar 12 10:26:24 UTC 2025


Hi Marcin,
On 2025-03-06 at 21:01:17 +0100, Marcin Bernatowicz wrote:
> Introduce require_engine_utilization_data() to verify utilization
> data availability in each utilization subtest.
> 
> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz at linux.intel.com>
> Suggested-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> Cc: Lucas De Marchi <lucas.demarchi at intel.com>
> Cc: Lukasz Laguna <lukasz.laguna at intel.com>
> Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
> ---

LGTM
Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>

>  tests/intel/xe_drm_fdinfo.c | 54 +++++++++++++++++++++++++++++--------
>  1 file changed, 43 insertions(+), 11 deletions(-)
> 
> diff --git a/tests/intel/xe_drm_fdinfo.c b/tests/intel/xe_drm_fdinfo.c
> index f17245bea..f166b73d6 100644
> --- a/tests/intel/xe_drm_fdinfo.c
> +++ b/tests/intel/xe_drm_fdinfo.c
> @@ -358,6 +358,16 @@ static void basic_memory(int xe)
>  	}
>  }
>  
> +static void require_engine_utilization_data(int xe)
> +{
> +	struct drm_client_fdinfo info = {};
> +
> +	igt_require(igt_parse_drm_fdinfo(xe, &info, engine_map,
> +					 ARRAY_SIZE(engine_map), NULL, 0));
> +	igt_require(info.num_engines);
> +	igt_require(info.utilization_mask & DRM_FDINFO_UTILIZATION_CYCLES);
> +}
> +
>  static void basic_engine_utilization(int xe)
>  {
>  	struct drm_client_fdinfo info = { };
> @@ -736,8 +746,10 @@ igt_main
>  		basic_memory(xe);
>  
>  	igt_describe("Check if basic fdinfo content is present for engine utilization");
> -	igt_subtest("basic-utilization")
> +	igt_subtest("basic-utilization") {
> +		require_engine_utilization_data(xe);
>  		basic_engine_utilization(xe);
> +	}
>  
>  	igt_describe("Create and compare total and resident memory consumption by client");
>  	igt_subtest("mem-total-resident")
> @@ -751,50 +763,69 @@ igt_main
>  	igt_subtest("mem-active")
>  		mem_active(xe, xe_engine(xe, 0));
>  
> -	igt_subtest("utilization-single-idle")
> +	igt_subtest("utilization-single-idle") {
> +		require_engine_utilization_data(xe);
>  		xe_for_each_engine(xe, hwe)
>  			utilization_single(xe, hwe, 0);
> +	}
>  
> -	igt_subtest("utilization-single-full-load")
> +	igt_subtest("utilization-single-full-load") {
> +		require_engine_utilization_data(xe);
>  		xe_for_each_engine(xe, hwe)
>  			utilization_single(xe, hwe, TEST_BUSY | TEST_TRAILING_IDLE);
> +	}
>  
> -	igt_subtest("utilization-single-full-load-isolation")
> +	igt_subtest("utilization-single-full-load-isolation") {
> +		require_engine_utilization_data(xe);
>  		xe_for_each_engine(xe, hwe)
>  			utilization_single(xe, hwe, TEST_BUSY | TEST_TRAILING_IDLE | TEST_ISOLATION);
> +	}
>  
> -	igt_subtest("utilization-single-full-load-destroy-queue")
> +	igt_subtest("utilization-single-full-load-destroy-queue") {
> +		require_engine_utilization_data(xe);
>  		xe_for_each_engine(xe, hwe)
>  			utilization_single_destroy_queue(xe, hwe);
> +	}
>  
> -	igt_subtest("utilization-others-idle")
> +	igt_subtest("utilization-others-idle") {
> +		require_engine_utilization_data(xe);
>  		xe_for_each_engine(xe, hwe)
>  			utilization_others_idle(xe, hwe);
> +	}
>  
> -	igt_subtest("utilization-others-full-load")
> +	igt_subtest("utilization-others-full-load") {
> +		require_engine_utilization_data(xe);
>  		xe_for_each_engine(xe, hwe)
>  			utilization_others_full_load(xe, hwe);
> +	}
>  
> -	igt_subtest("utilization-all-full-load")
> +	igt_subtest("utilization-all-full-load") {
> +		require_engine_utilization_data(xe);
>  		utilization_all_full_load(xe);
> +	}
>  
>  
>  	for (const struct section *s = sections; s->name; s++) {
> -		igt_subtest_f("%s-utilization-single-idle", s->name)
> +		igt_subtest_f("%s-utilization-single-idle", s->name) {
> +			require_engine_utilization_data(xe);
>  			xe_for_each_gt(xe, gt)
>  				xe_for_each_engine_class(class)
>  					utilization_multi(xe, gt, class, s->flags);
> +		}
>  
> -		igt_subtest_f("%s-utilization-single-full-load", s->name)
> +		igt_subtest_f("%s-utilization-single-full-load", s->name) {
> +			require_engine_utilization_data(xe);
>  			xe_for_each_gt(xe, gt)
>  				xe_for_each_engine_class(class)
>  					utilization_multi(xe, gt, class,
>  							  s->flags |
>  							  TEST_BUSY |
>  							  TEST_TRAILING_IDLE);
> +		}
>  
>  		igt_subtest_f("%s-utilization-single-full-load-isolation",
> -			      s->name)
> +			      s->name) {
> +			require_engine_utilization_data(xe);
>  			xe_for_each_gt(xe, gt)
>  				xe_for_each_engine_class(class)
>  					utilization_multi(xe, gt, class,
> @@ -802,6 +833,7 @@ igt_main
>  							  TEST_BUSY |
>  							  TEST_TRAILING_IDLE |
>  							  TEST_ISOLATION);
> +		}
>  	}
>  
>  	igt_fixture {
> -- 
> 2.31.1
> 


More information about the igt-dev mailing list