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

Kamil Konieczny kamil.konieczny at linux.intel.com
Mon Dec 16 15:31:29 UTC 2024


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", 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