[PATCH i-g-t] tests/intel/gem_pxp: Fix requirements

Piatkowski, Dominik Karol dominik.karol.piatkowski at intel.com
Wed Dec 18 10:40:38 UTC 2024


Hi Kamil,

> -----Original Message-----
> From: igt-dev <igt-dev-bounces at lists.freedesktop.org> On Behalf Of Kamil
> Konieczny
> Sent: Monday, December 16, 2024 4:31 PM
> To: igt-dev at lists.freedesktop.org
> Cc: Kamil Konieczny <kamil.konieczny at linux.intel.com>; Ceraolo Spurio,
> Daniele <daniele.ceraolospurio at intel.com>; Teres Alexis, Alan Previn
> <alan.previn.teres.alexis at intel.com>
> Subject: [PATCH i-g-t] tests/intel/gem_pxp: Fix requirements
> 
> Requirements should either be global in first igt_fixture or should be placed in
> each subtests. Placing them in later fixtures results in misleading reports like:
> 
> sudo ./gem_pxp --r hw-rejects-pxp-context Subtest hw-rejects-pxp-context:
> SUCCESS (0,001s) Test requirement not met in [...]
> ../tests/intel/gem_pxp.c:1317:
> Test requirement: pxp_supported
> 
> Created few helpers and used them in each subtest, also fixed closing power
> debugfs fd.
> 
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Cc: Alan Previn <alan.previn.teres.alexis at intel.com>
> Signed-off-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> ---
>  tests/intel/gem_pxp.c | 157 +++++++++++++++++++++++++++---------------
>  1 file changed, 101 insertions(+), 56 deletions(-)
> 
> diff --git a/tests/intel/gem_pxp.c b/tests/intel/gem_pxp.c index
> 94544240d..d1562a165 100644
> --- a/tests/intel/gem_pxp.c
> +++ b/tests/intel/gem_pxp.c
> @@ -1282,11 +1282,33 @@ static void test_display_protected_crc(int i915,
> igt_display_t *display)
>  	igt_remove_fb(i915, &protected_fb);
>  }
> 
> +static void require_nopxp(bool pxp_supported, uint32_t devid) {
> +	igt_require_f(!pxp_supported, "HW supports PXP, devid=%x\n",
> devid); }
> +
> +static void require_pxp(bool pxp_supported, uint32_t devid) {
> +	igt_require_f(pxp_supported, "HW do not supports PXP, devid=%x\n",

Nit: consider "HW does not support PXP"

Reviewed-by: Dominik Karol Piątkowski <dominik.karol.piatkowski at intel.com>

> +devid); }
> +
> +static void require_pxp_render(bool pxp_supported, uint32_t devid,
> +igt_render_copyfunc_t rendercopy) {
> +	require_pxp(pxp_supported, devid);
> +	igt_require_f(rendercopy, "No rendercopy found for devid=%x\n",
> +devid); }
> +
> +static void require_init_powermgt(int i915, struct powermgt_data *pm) {
> +	if (pm->debugfsdir == -1)
> +		init_powermgt_resources(i915, pm);
> +}
> +
>  igt_main
>  {
>  	int i915 = -1;
>  	bool pxp_supported = false;
> -	struct powermgt_data pm = {0};
> +	struct powermgt_data pm = {-1};
>  	igt_render_copyfunc_t rendercopy = NULL;
>  	uint32_t devid = 0;
>  	igt_display_t display;
> @@ -1296,110 +1318,133 @@ igt_main
>  		i915 = drm_open_driver(DRIVER_INTEL);
>  		igt_require(i915);
>  		igt_require_gem(i915);
> +		devid = intel_get_drm_devid(i915);
> +		igt_assert(devid);
>  		pxp_supported = is_pxp_hw_supported(i915);
> +		rendercopy = igt_get_render_copyfunc(devid);
>  	}
> 
>  	igt_subtest_group {
> -		igt_fixture {
> -			igt_require((pxp_supported == 0));
> -		}
> -
>  		igt_describe("Verify protected buffer on unsupported hw:");
> -		igt_subtest("hw-rejects-pxp-buffer")
> +		igt_subtest("hw-rejects-pxp-buffer") {
> +			require_nopxp(pxp_supported, devid);
>  			test_bo_alloc_pxp_nohw(i915);
> +		}
>  		igt_describe("Verify protected context on unsupported hw:");
> -		igt_subtest("hw-rejects-pxp-context")
> +		igt_subtest("hw-rejects-pxp-context") {
> +			require_nopxp(pxp_supported, devid);
>  			test_ctx_alloc_pxp_nohw(i915);
> +		}
>  	}
> 
>  	igt_subtest_group {
> -		igt_fixture {
> -			igt_require(pxp_supported);
> -		}
> -
>  		igt_describe("Verify protected buffer on supported hw:");
> -		igt_subtest("create-regular-buffer")
> +		igt_subtest("create-regular-buffer") {
> +			require_pxp(pxp_supported, devid);
>  			test_bo_alloc_pxp_off(i915);
> -		igt_subtest("create-protected-buffer")
> +		}
> +		igt_subtest("create-protected-buffer") {
> +			require_pxp(pxp_supported, devid);
>  			test_bo_alloc_pxp_on(i915);
> +		}
> 
>  		igt_describe("Verify protected context on supported hw:");
> -		igt_subtest("create-regular-context-1")
> +		igt_subtest("create-regular-context-1") {
> +			require_pxp(pxp_supported, devid);
>  			test_ctx_alloc_recover_off_protect_off(i915);
> -		igt_subtest("create-regular-context-2")
> +		}
> +		igt_subtest("create-regular-context-2") {
> +			require_pxp(pxp_supported, devid);
>  			test_ctx_alloc_recover_on_protect_off(i915);
> -		igt_subtest("fail-invalid-protected-context")
> +		}
> +		igt_subtest("fail-invalid-protected-context") {
> +			require_pxp(pxp_supported, devid);
>  			test_ctx_alloc_recover_on_protect_on(i915);
> -		igt_subtest("create-valid-protected-context")
> +		}
> +		igt_subtest("create-valid-protected-context") {
> +			require_pxp(pxp_supported, devid);
>  			test_ctx_alloc_recover_off_protect_on(i915);
> +		}
> 
>  		igt_describe("Verify protected context integrity:");
> -		igt_subtest("reject-modify-context-protection-on")
> +		igt_subtest("reject-modify-context-protection-on") {
> +			require_pxp(pxp_supported, devid);
>  			test_ctx_mod_regular_to_all_valid(i915);
> -		igt_subtest("reject-modify-context-protection-off-1")
> +		}
> +		igt_subtest("reject-modify-context-protection-off-1") {
> +			require_pxp(pxp_supported, devid);
>  			test_ctx_mod_recover_off_to_on(i915);
> -		igt_subtest("reject-modify-context-protection-off-2")
> +		}
> +		igt_subtest("reject-modify-context-protection-off-2") {
> +			require_pxp(pxp_supported, devid);
>  			test_ctx_mod_protected_on_to_off(i915);
> -		igt_subtest("reject-modify-context-protection-off-3")
> +		}
> +		igt_subtest("reject-modify-context-protection-off-3") {
> +			require_pxp(pxp_supported, devid);
>  			test_ctx_mod_protected_to_all_invalid(i915);
> +		}
>  	}
>  	igt_subtest_group {
> -		igt_fixture {
> -			igt_require(pxp_supported);
> -			devid = intel_get_drm_devid(i915);
> -			igt_assert(devid);
> -			rendercopy = igt_get_render_copyfunc(devid);
> -			igt_require(rendercopy);
> -		}
> -
>  		igt_describe("Verify protected render operations:");
> -		igt_subtest("regular-baseline-src-copy-readible")
> +		igt_subtest("regular-baseline-src-copy-readible") {
> +			require_pxp_render(pxp_supported, devid,
> rendercopy);
>  			test_render_baseline(i915);
> -		igt_subtest("protected-raw-src-copy-not-readible")
> +		}
> +		igt_subtest("protected-raw-src-copy-not-readible") {
> +			require_pxp_render(pxp_supported, devid,
> rendercopy);
>  			test_render_pxp_src_to_protdest(i915);
> -		igt_subtest("protected-encrypted-src-copy-not-readible")
> +		}
> +		igt_subtest("protected-encrypted-src-copy-not-readible") {
> +			require_pxp_render(pxp_supported, devid,
> rendercopy);
>  			test_render_pxp_protsrc_to_protdest(i915);
> -		igt_subtest("dmabuf-shared-protected-dst-is-context-
> refcounted")
> +		}
> +		igt_subtest("dmabuf-shared-protected-dst-is-context-
> refcounted") {
> +			require_pxp_render(pxp_supported, devid,
> rendercopy);
>  			test_pxp_dmabuffshare_refcnt(i915);
> +		}
>  	}
>  	igt_subtest_group {
> -		igt_fixture {
> -			igt_require(pxp_supported);
> -			devid = intel_get_drm_devid(i915);
> -			igt_assert(devid);
> -			rendercopy = igt_get_render_copyfunc(devid);
> -			igt_require(rendercopy);
> -			init_powermgt_resources(i915, &pm);
> -		}
>  		igt_describe("Verify suspend-resume teardown
> management:");
> -		igt_subtest("verify-pxp-key-change-after-suspend-resume")
> +		igt_subtest("verify-pxp-key-change-after-suspend-resume") {
> +			require_pxp_render(pxp_supported, devid,
> rendercopy);
> +			require_init_powermgt(i915, &pm);
>  			test_pxp_pwrcycle_teardown_keychange(i915, &pm);
> -		igt_subtest("verify-pxp-stale-ctx-execution")
> +		}
> +		igt_subtest("verify-pxp-stale-ctx-execution") {
> +			require_pxp_render(pxp_supported, devid,
> rendercopy);
> +			require_init_powermgt(i915, &pm);
>  			test_pxp_stale_ctx_execution(i915);
> -		igt_subtest("verify-pxp-stale-buf-execution")
> +		}
> +		igt_subtest("verify-pxp-stale-buf-execution") {
> +			require_pxp_render(pxp_supported, devid,
> rendercopy);
> +			require_init_powermgt(i915, &pm);
>  			test_pxp_stale_buf_execution(i915);
> -		igt_subtest("verify-pxp-stale-buf-optout-execution")
> +		}
> +		igt_subtest("verify-pxp-stale-buf-optout-execution") {
> +			require_pxp_render(pxp_supported, devid,
> rendercopy);
> +			require_init_powermgt(i915, &pm);
>  			test_pxp_stale_buf_optout_execution(i915);
> -		igt_subtest("verify-pxp-execution-after-suspend-resume")
> +		}
> +		igt_subtest("verify-pxp-execution-after-suspend-resume") {
> +			require_pxp_render(pxp_supported, devid,
> rendercopy);
> +			require_init_powermgt(i915, &pm);
>  			test_pxp_pwrcycle_staleasset_execution(i915, &pm);
> +		}
>  	}
>  	igt_subtest_group {
> -		igt_fixture {
> -			igt_require(pxp_supported);
> -			devid = intel_get_drm_devid(i915);
> -			igt_assert(devid);
> -			rendercopy = igt_get_render_copyfunc(devid);
> -			igt_require(rendercopy);
> -
> +		igt_describe("Test the display CRC");
> +		igt_subtest("display-protected-crc") {
> +			require_pxp_render(pxp_supported, devid,
> rendercopy);
>  			igt_require_pipe_crc(i915);
>  			igt_display_require(&display, i915);
> -		}
> -		igt_describe("Test the display CRC");
> -		igt_subtest("display-protected-crc")
>  			test_display_protected_crc(i915, &display);
> +		}
>  	}
> 
>  	igt_fixture {
> +		if (pm.debugfsdir != -1)
> +			close(pm.debugfsdir);
> +
>  		drm_close_driver(i915);
>  	}
>  }
> --
> 2.47.1



More information about the igt-dev mailing list