[igt-dev] [PATCH i-g-t 24/31] i915/perf: Run non-zero-reason on media engines as well

Kamil Konieczny kamil.konieczny at linux.intel.com
Wed Mar 15 16:50:40 UTC 2023


On 2023-02-14 at 16:46:41 -0800, Umesh Nerlige Ramappa wrote:
> Enable non-zero-reason test to run on media engines as well.
> 
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>

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

> ---
>  tests/i915/perf.c | 25 +++++++++++++++----------
>  1 file changed, 15 insertions(+), 10 deletions(-)
> 
> diff --git a/tests/i915/perf.c b/tests/i915/perf.c
> index 15f9202d..2e902d74 100644
> --- a/tests/i915/perf.c
> +++ b/tests/i915/perf.c
> @@ -2908,18 +2908,23 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
>  }
>  
>  static void
> -test_non_zero_reason(void)
> +test_non_zero_reason(const struct intel_execution_engine2 *e)
>  {
>  	/* ~20 micro second period */
>  	int oa_exponent = max_oa_exponent_for_period_lte(20000);
> +	struct intel_perf_metric_set *test_set = metric_set(e);
> +	uint64_t fmt = test_set->perf_oa_format;
> +	size_t report_size = get_oa_format(fmt).size;
>  	uint64_t properties[] = {
>  		/* Include OA reports in samples */
>  		DRM_I915_PERF_PROP_SAMPLE_OA, true,
>  
>  		/* OA unit configuration */
> -		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
> -		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
> +		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
> +		DRM_I915_PERF_PROP_OA_FORMAT, fmt,
>  		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
> +		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
> +		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
>  	};
>  	struct drm_i915_perf_open_param param = {
>  		.flags = I915_PERF_FLAG_FD_CLOEXEC,
> @@ -2927,7 +2932,7 @@ test_non_zero_reason(void)
>  		.properties_ptr = to_user_pointer(properties),
>  	};
>  	struct drm_i915_perf_record_header *header;
> -	uint32_t buf_size = 3 * 65536 * (256 + sizeof(struct drm_i915_perf_record_header));
> +	uint32_t buf_size = 3 * 65536 * (report_size + sizeof(struct drm_i915_perf_record_header));
>  	uint8_t *buf = malloc(buf_size);
>  	uint32_t total_len = 0, reports_lost;
>  	const uint32_t *last_report;
> @@ -2972,10 +2977,9 @@ test_non_zero_reason(void)
>  
>  			igt_assert_neq(reason, 0);
>  
> -			if (last_report) {
> -				sanity_check_reports(last_report, report,
> -						     default_test_set->perf_oa_format);
> -			}
> +			if (last_report)
> +				sanity_check_reports(last_report, report, fmt);
> +
>  			last_report = report;
>  			break;
>  		}
> @@ -5797,10 +5801,11 @@ igt_main
>  			test_buffer_fill(e);
>  
>  	igt_describe("Test that reason field in OA reports is never 0 on Gen8+");
> -	igt_subtest("non-zero-reason") {
> +	igt_subtest_with_dynamic("non-zero-reason") {
>  		/* Reason field is only available on Gen8+ */
>  		igt_require(intel_gen(devid) >= 8);
> -		test_non_zero_reason();
> +		__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
> +			test_non_zero_reason(e);
>  	}
>  
>  	igt_subtest("disabled-read-error")
> -- 
> 2.36.1
> 


More information about the igt-dev mailing list