All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_content_protection: Test Refactoring
@ 2022-09-13  9:04 Karthik B S
  2022-09-13  9:04 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_content_protection: Test Cleanup Karthik B S
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Karthik B S @ 2022-09-13  9:04 UTC (permalink / raw)
  To: igt-dev

Series includes patches to:
-Cleanup the test
-Convert the test to dynamic

Signed-off-by: Karthik B S <karthik.b.s@intel.com>

Karthik B S (2):
  tests/kms_content_protection: Test Cleanup
  tests/kms_content_protectin: Convert test to dynamic

 tests/kms_content_protection.c | 393 ++++++++++++++++++---------------
 1 file changed, 215 insertions(+), 178 deletions(-)

-- 
2.22.0

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_content_protection: Test Cleanup
  2022-09-13  9:04 [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_content_protection: Test Refactoring Karthik B S
@ 2022-09-13  9:04 ` Karthik B S
  2022-09-21 11:23   ` Modem, Bhanuprakash
  2022-09-13  9:04 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_content_protectin: Convert test to dynamic Karthik B S
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Karthik B S @ 2022-09-13  9:04 UTC (permalink / raw)
  To: igt-dev

This patch includes:
    1.Add a modeset before checking output is HDCP capable.
      Test currently skips on multidisplay MST because we're checking
      if output is HDCP capable before doing a modeset on the output.
    2.Call igt_display_reset before starting the subtest.
    3.test_fini function added to prepare test for converting to dynamic.
    4.Remove redundant mode override.
    5.Try other pipe/output combo for MST if failure is seen on one.

Signed-off-by: Karthik B S <karthik.b.s@intel.com>
---
 tests/kms_content_protection.c | 179 +++++++++++++++++----------------
 1 file changed, 92 insertions(+), 87 deletions(-)

diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 3041f1cd..eb59f3fe 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -170,18 +170,15 @@ static void modeset_with_fb(const enum pipe pipe, igt_output_t *output,
 			    enum igt_commit_style s)
 {
 	igt_display_t *display = &data.display;
-	drmModeModeInfo mode;
+	drmModeModeInfo *mode;
 	igt_plane_t *primary;
 
-	igt_assert(kmstest_get_connector_default_mode(
-			display->drm_fd, output->config.connector, &mode));
-
-	igt_output_override_mode(output, &mode);
+	mode = igt_output_get_mode(output);
 	igt_output_set_pipe(output, pipe);
 
 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 	igt_plane_set_fb(primary, &data.red);
-	igt_fb_set_size(&data.red, primary, mode.hdisplay, mode.vdisplay);
+	igt_fb_set_size(&data.red, primary, mode->hdisplay, mode->vdisplay);
 
 	igt_display_commit2(display, s);
 
@@ -317,90 +314,61 @@ static bool write_srm_as_fw(const __u8 *srm, int len)
 }
 
 static void test_content_protection_on_output(igt_output_t *output,
+					      enum pipe pipe,
 					      enum igt_commit_style s,
 					      int content_type)
 {
 	igt_display_t *display = &data.display;
-	igt_plane_t *primary;
-	enum pipe pipe;
 	bool ret;
 
-	for_each_pipe(display, pipe) {
-		if (!igt_pipe_connector_valid(pipe, output))
-			continue;
-
-		/*
-		 * If previous subtest of connector failed, pipe
-		 * attached to that connector is not released.
-		 * Because of that we have to choose the non
-		 * attached pipe for this subtest.
-		 */
-		if (!igt_pipe_is_free(display, pipe))
-			continue;
-
-		modeset_with_fb(pipe, output, s);
-		test_cp_enable_with_retry(output, s, 3, content_type, false,
-					  false);
-
-		if (data.cp_tests & CP_TYPE_CHANGE) {
-			/* Type 1 -> Type 0 */
-			test_cp_enable_with_retry(output, s, 3,
-						  HDCP_CONTENT_TYPE_0, false,
-						  true);
-			/* Type 0 -> Type 1 */
-			test_cp_enable_with_retry(output, s, 3,
-						  content_type, false,
-						  true);
-		}
-
-		if (data.cp_tests & CP_MEI_RELOAD) {
-			igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
-				     "mei_hdcp unload failed");
+	test_cp_enable_with_retry(output, s, 3, content_type, false,
+				  false);
+
+	if (data.cp_tests & CP_TYPE_CHANGE) {
+		/* Type 1 -> Type 0 */
+		test_cp_enable_with_retry(output, s, 3,
+					  HDCP_CONTENT_TYPE_0, false,
+					  true);
+		/* Type 0 -> Type 1 */
+		test_cp_enable_with_retry(output, s, 3,
+					  content_type, false,
+					  true);
+	}
 
-			/* Expected to fail */
-			test_cp_enable_with_retry(output, s, 3,
-						  content_type, true, false);
+	if (data.cp_tests & CP_MEI_RELOAD) {
+		igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
+			     "mei_hdcp unload failed");
 
-			igt_assert_f(!igt_kmod_load("mei_hdcp", NULL),
-				     "mei_hdcp load failed");
+		/* Expected to fail */
+		test_cp_enable_with_retry(output, s, 3,
+					  content_type, true, false);
 
-			/* Expected to pass */
-			test_cp_enable_with_retry(output, s, 3,
-						  content_type, false, false);
-		}
+		igt_assert_f(!igt_kmod_load("mei_hdcp", NULL),
+			     "mei_hdcp load failed");
 
-		if (data.cp_tests & CP_LIC)
-			test_cp_lic(output);
+		/* Expected to pass */
+		test_cp_enable_with_retry(output, s, 3,
+					  content_type, false, false);
+	}
 
-		if (data.cp_tests & CP_DPMS) {
-			igt_pipe_set_prop_value(display, pipe,
-						IGT_CRTC_ACTIVE, 0);
-			igt_display_commit2(display, s);
+	if (data.cp_tests & CP_LIC)
+		test_cp_lic(output);
 
-			igt_pipe_set_prop_value(display, pipe,
-						IGT_CRTC_ACTIVE, 1);
-			igt_display_commit2(display, s);
+	if (data.cp_tests & CP_DPMS) {
+		igt_pipe_set_prop_value(display, pipe,
+					IGT_CRTC_ACTIVE, 0);
+		igt_display_commit2(display, s);
 
-			ret = wait_for_prop_value(output, CP_ENABLED,
-						  KERNEL_AUTH_TIME_ALLOWED_MSEC);
-			if (!ret)
-				test_cp_enable_with_retry(output, s, 2,
-							  content_type, false,
-							  false);
-		}
+		igt_pipe_set_prop_value(display, pipe,
+					IGT_CRTC_ACTIVE, 1);
+		igt_display_commit2(display, s);
 
-		test_cp_disable(output, s);
-		primary = igt_output_get_plane_type(output,
-						    DRM_PLANE_TYPE_PRIMARY);
-		igt_plane_set_fb(primary, NULL);
-		igt_output_set_pipe(output, PIPE_NONE);
-
-		/*
-		 * Testing a output with a pipe is enough for HDCP
-		 * testing. No ROI in testing the connector with other
-		 * pipes. So Break the loop on pipe.
-		 */
-		break;
+		ret = wait_for_prop_value(output, CP_ENABLED,
+					  KERNEL_AUTH_TIME_ALLOWED_MSEC);
+		if (!ret)
+			test_cp_enable_with_retry(output, s, 2,
+						  content_type, false,
+						  false);
 	}
 }
 
@@ -458,7 +426,8 @@ static bool sink_hdcp2_capable(igt_output_t *output)
 	return strstr(buf, "HDCP2.2");
 }
 
-static void prepare_modeset_on_mst_output(igt_output_t *output)
+static void
+prepare_modeset_on_mst_output(igt_output_t *output)
 {
 	drmModeModeInfo *mode;
 	igt_plane_t *primary;
@@ -477,7 +446,8 @@ static void prepare_modeset_on_mst_output(igt_output_t *output)
 	igt_plane_set_size(primary, width, height);
 }
 
-static bool output_hdcp_capable(igt_output_t *output, int content_type)
+static bool
+output_hdcp_capable(igt_output_t *output, int content_type)
 {
 		if (!output->props[IGT_CONNECTOR_CONTENT_PROTECTION])
 			return false;
@@ -499,6 +469,19 @@ static bool output_hdcp_capable(igt_output_t *output, int content_type)
 		return true;
 }
 
+static void
+test_fini(igt_output_t *output, enum igt_commit_style s)
+{
+	igt_plane_t *primary;
+
+	test_cp_disable(output, s);
+	primary = igt_output_get_plane_type(output,
+					    DRM_PLANE_TYPE_PRIMARY);
+	igt_plane_set_fb(primary, NULL);
+	igt_output_set_pipe(output, PIPE_NONE);
+	igt_display_commit2(&data.display, s);
+}
+
 static void
 test_content_protection(enum igt_commit_style s, int content_type)
 {
@@ -511,10 +494,27 @@ test_content_protection(enum igt_commit_style s, int content_type)
 			      "mei_hdcp module is not loaded\n");
 
 	for_each_connected_output(display, output) {
-		if (!output_hdcp_capable(output, content_type))
-			continue;
+		for_each_pipe(display, pipe) {
+			if (!igt_pipe_connector_valid(pipe, output))
+				continue;
+
+			igt_display_reset(display);
+			modeset_with_fb(pipe, output, s);
+
+			if (!output_hdcp_capable(output, content_type))
+				continue;
+
+			test_content_protection_on_output(output, pipe, s, content_type);
+			test_fini(output, s);
+
+			/*
+			 * Testing a output with a pipe is enough for HDCP
+			 * testing. No ROI in testing the connector with other
+			 * pipes. So Break the loop on pipe.
+			 */
+			break;
+		}
 
-		test_content_protection_on_output(output, s, content_type);
 		valid_tests++;
 	}
 
@@ -596,6 +596,7 @@ test_content_protection_mst(int content_type)
 	igt_output_t *output;
 	int valid_outputs = 0, dp_mst_outputs = 0, ret, count, max_pipe = 0, i;
 	enum pipe pipe;
+	bool pipe_found;
 	igt_output_t *mst_output[IGT_MAX_PIPES], *hdcp_mst_output[IGT_MAX_PIPES];
 
 	for_each_pipe(display, pipe)
@@ -607,16 +608,20 @@ test_content_protection_mst(int content_type)
 		if (!output_is_dp_mst(output, dp_mst_outputs))
 			continue;
 
-		igt_assert_f(igt_pipe_connector_valid(pipe, output), "Output-pipe combination invalid\n");
+		pipe_found = false;
+		for_each_pipe(display, pipe) {
+			if (igt_pipe_is_free(display, pipe) &&
+			    igt_pipe_connector_valid(pipe, output)) {
+				pipe_found = true;
+				break;
+			}
+		}
+
+		igt_assert_f(pipe_found, "No valid pipe found for %s\n", output->name);
 
 		igt_output_set_pipe(output, pipe);
 		prepare_modeset_on_mst_output(output);
 		mst_output[dp_mst_outputs++] = output;
-
-		pipe++;
-
-		if (pipe > max_pipe)
-			break;
 	}
 
 	igt_require_f(dp_mst_outputs > 1, "No DP MST set up with >= 2 outputs found in a single topology\n");
-- 
2.22.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_content_protectin: Convert test to dynamic
  2022-09-13  9:04 [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_content_protection: Test Refactoring Karthik B S
  2022-09-13  9:04 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_content_protection: Test Cleanup Karthik B S
@ 2022-09-13  9:04 ` Karthik B S
  2022-09-21 11:54   ` Modem, Bhanuprakash
  2022-09-13 14:10 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_content_protection: Test Refactoring Patchwork
  2022-09-14  1:29 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 1 reply; 8+ messages in thread
From: Karthik B S @ 2022-09-13  9:04 UTC (permalink / raw)
  To: igt-dev

Covert the existing subtests to dynamic subtests at pipe/output level.

Signed-off-by: Karthik B S <karthik.b.s@intel.com>
---
 tests/kms_content_protection.c | 220 +++++++++++++++++++--------------
 1 file changed, 126 insertions(+), 94 deletions(-)

diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index eb59f3fe..aadc10af 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -487,12 +487,17 @@ test_content_protection(enum igt_commit_style s, int content_type)
 {
 	igt_display_t *display = &data.display;
 	igt_output_t *output;
-	int valid_tests = 0;
+	enum pipe pipe;
 
 	if (data.cp_tests & CP_MEI_RELOAD)
 		igt_require_f(igt_kmod_is_loaded("mei_hdcp"),
 			      "mei_hdcp module is not loaded\n");
 
+	if (data.cp_tests & CP_UEVENT) {
+		data.uevent_monitor = igt_watch_uevents();
+		igt_flush_uevents(data.uevent_monitor);
+	}
+
 	for_each_connected_output(display, output) {
 		for_each_pipe(display, pipe) {
 			if (!igt_pipe_connector_valid(pipe, output))
@@ -504,9 +509,10 @@ test_content_protection(enum igt_commit_style s, int content_type)
 			if (!output_hdcp_capable(output, content_type))
 				continue;
 
-			test_content_protection_on_output(output, pipe, s, content_type);
-			test_fini(output, s);
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
+				test_content_protection_on_output(output, pipe, s, content_type);
 
+			test_fini(output, s);
 			/*
 			 * Testing a output with a pipe is enough for HDCP
 			 * testing. No ROI in testing the connector with other
@@ -514,11 +520,10 @@ test_content_protection(enum igt_commit_style s, int content_type)
 			 */
 			break;
 		}
-
-		valid_tests++;
 	}
 
-	igt_require_f(valid_tests, "No connector found with HDCP capability\n");
+	if (data.cp_tests & CP_UEVENT)
+		igt_cleanup_uevents(data.uevent_monitor);
 }
 
 static int parse_path_blob(char *blob_data)
@@ -728,6 +733,94 @@ static void create_fbs(void)
 			    0.f, 1.f, 0.f, &data.green);
 }
 
+static const struct {
+	const char *desc;
+	const char *name;
+	unsigned int cp_tests;
+	bool content_type;
+} subtests[] = {
+	{ .desc = "Test content protection with atomic modesetting",
+	  .name = "atomic",
+	  .cp_tests = 0,
+	  .content_type = HDCP_CONTENT_TYPE_0
+	},
+	{ .desc = "Test content protection with DPMS ON/OFF during atomic modesetting.",
+	  .name = "atomic-dpms",
+	  .cp_tests = CP_DPMS,
+	  .content_type = HDCP_CONTENT_TYPE_0
+	},
+	{ .desc = "Test for the integrity of link.",
+	  .name = "LIC",
+	  .cp_tests = CP_LIC,
+	  .content_type = HDCP_CONTENT_TYPE_0,
+	},
+	{ .desc = "Test content protection with content type 1 "
+		  "that can be handled only through HDCP2.2.",
+	  .name = "type1",
+	  .cp_tests = 0,
+	  .content_type = HDCP_CONTENT_TYPE_1,
+	},
+	{ .desc = "Test the teardown and rebuild of the interface between "
+		  "I915 and mei hdcp.",
+	  .name = "mei_interface",
+	  .cp_tests = CP_MEI_RELOAD,
+	  .content_type = HDCP_CONTENT_TYPE_1,
+	},
+	{ .desc = "Test the content type change when the content protection already enabled",
+	  .name = "content_type_change",
+	  .cp_tests = CP_TYPE_CHANGE,
+	  .content_type = HDCP_CONTENT_TYPE_1,
+	},
+	{ .desc = "Test to detect the HDCP status change when we are reading the uevent "
+		  "sent with the corresponding connector id and property id.",
+	  .name = "uevent",
+	  .cp_tests = CP_UEVENT,
+	  .content_type = HDCP_CONTENT_TYPE_0,
+	},
+	/*
+	 *  Testing the revocation check through SRM needs a HDCP sink with
+	 *  programmable Ksvs or we need a uAPI from kernel to read the
+	 *  connected HDCP sink's Ksv. With that we would be able to add that
+	 *  Ksv into a SRM and send in for revocation check. Since we dont have
+	 *  either of these options, we test SRM writing from userspace and
+	 *  validation of the same at kernel. Something is better than nothing.
+	 */
+	{ .desc = "This test writes the facsimile SRM into the /lib/firmware/ "
+		  "and check the kernel parsing of it by invoking the hdcp authentication.",
+	  .name = "srm",
+	  .cp_tests = 0,
+	  .content_type = HDCP_CONTENT_TYPE_0,
+	},
+};
+
+static const struct {
+	const char *desc;
+	const char *name;
+	unsigned int cp_tests;
+	bool content_type;
+} mst_subtests[] = {
+	{ .desc = "Test Content protection(Type 0) over DP MST.",
+	  .name = "dp-mst-type-0",
+	  .cp_tests = 0,
+	  .content_type = HDCP_CONTENT_TYPE_0
+	},
+	{ .desc = "Test Content protection(Type 0) over DP MST with LIC.",
+	  .name = "dp-mst-lic-type-0",
+	  .cp_tests = CP_LIC,
+	  .content_type = HDCP_CONTENT_TYPE_0
+	},
+	{ .desc = "Test Content protection(Type 1) over DP MST.",
+	  .name = "dp-mst-type-1",
+	  .cp_tests = 0,
+	  .content_type = HDCP_CONTENT_TYPE_1,
+	},
+	{ .desc = "Test Content protection(Type 1) over DP MST with LIC.",
+	  .name = "dp-mst-lic-type-1",
+	  .cp_tests = CP_LIC,
+	  .content_type = HDCP_CONTENT_TYPE_1,
+	},
+};
+
 igt_main
 {
 	igt_fixture {
@@ -738,107 +831,46 @@ igt_main
 	}
 
 	igt_describe("Test content protection with legacy style commit.");
-	igt_subtest("legacy") {
+	igt_subtest_with_dynamic("legacy") {
 		data.cp_tests = 0;
 		test_content_protection(COMMIT_LEGACY, HDCP_CONTENT_TYPE_0);
 	}
 
-	igt_describe("Test content protection with atomic modesetting");
-	igt_subtest("atomic") {
-		igt_require(data.display.is_atomic);
-		data.cp_tests = 0;
-		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
-	}
+	igt_subtest_group {
+		igt_fixture
+			igt_require(data.display.is_atomic);
 
-	igt_describe("Test content protection with DPMS ON/OFF during atomic modesetting.");
-	igt_subtest("atomic-dpms") {
-		igt_require(data.display.is_atomic);
-		data.cp_tests = CP_DPMS;
-		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
-	}
+		for (int i = 0; i < ARRAY_SIZE(subtests); i++) {
+			igt_describe_f("%s", subtests[i].desc);
 
-	igt_describe("Test for the integrity of link.");
-	igt_subtest("LIC") {
-		igt_require(data.display.is_atomic);
-		data.cp_tests = CP_LIC;
-		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
-	}
+			igt_subtest_with_dynamic(subtests[i].name) {
+				data.cp_tests = subtests[i].cp_tests;
 
-	igt_describe("Test content protection with content type 1 that "
-		     "can be handled only through HDCP2.2.");
-	igt_subtest("type1") {
-		igt_require(data.display.is_atomic);
-		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
-	}
+				if (!strcmp(subtests[i].name, "srm")) {
+					bool ret;
 
-	igt_describe("Test the teardown and rebuild of the interface between "
-		     "I915 and mei hdcp.");
-	igt_subtest("mei_interface") {
-		igt_require(data.display.is_atomic);
-		data.cp_tests = CP_MEI_RELOAD;
-		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
-	}
+					ret = write_srm_as_fw((const __u8 *)facsimile_srm,
+							     sizeof(facsimile_srm));
+					igt_assert_f(ret, "SRM update failed");
+				}
 
-	igt_describe("Test the content type change when the content protection already "
-		     "enabled.");
-	igt_subtest("content_type_change") {
-		igt_require(data.display.is_atomic);
-		data.cp_tests = CP_TYPE_CHANGE;
-		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
-	}
-
-	igt_describe("Test to detect the HDCP status change when we are reading the uevent "
-		     "sent with the corresponding connector id and property id.");
-	igt_subtest("uevent") {
-		igt_require(data.display.is_atomic);
-		data.cp_tests = CP_UEVENT;
-		data.uevent_monitor = igt_watch_uevents();
-		igt_flush_uevents(data.uevent_monitor);
-		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
-		igt_cleanup_uevents(data.uevent_monitor);
-	}
-
-	/*
-	 *  Testing the revocation check through SRM needs a HDCP sink with
-	 *  programmable Ksvs or we need a uAPI from kernel to read the
-	 *  connected HDCP sink's Ksv. With that we would be able to add that
-	 *  Ksv into a SRM and send in for revocation check. Since we dont have
-	 *  either of these options, we test SRM writing from userspace and
-	 *  validation of the same at kernel. Something is better than nothing.
-	 */
-	igt_describe("This test writes the facsimile SRM into the /lib/firmware/ "
-		     "and check the kernel parsing of it by invoking the hdcp authentication.");
-	igt_subtest("srm") {
-		bool ret;
-
-		igt_require(data.display.is_atomic);
-		data.cp_tests = 0;
-		ret = write_srm_as_fw((const __u8 *)facsimile_srm,
-				      sizeof(facsimile_srm));
-		igt_assert_f(ret, "SRM update failed");
-		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
-	}
-
-	igt_describe("Test Content protection over DP MST");
-	igt_subtest("dp-mst-type-0") {
-		test_content_protection_mst(HDCP_CONTENT_TYPE_0);
+				test_content_protection(COMMIT_ATOMIC, subtests[i].content_type);
+			}
+		}
 	}
 
-	igt_describe("Test Content protection over DP MST with LIC");
-	igt_subtest("dp-mst-lic-type-0") {
-		data.cp_tests = CP_LIC;
-		test_content_protection_mst(HDCP_CONTENT_TYPE_0);
-	}
+	igt_subtest_group {
+		igt_fixture
+			igt_require(data.display.is_atomic);
 
-	igt_describe("Test Content protection over DP MST");
-	igt_subtest("dp-mst-type-1") {
-		test_content_protection_mst(HDCP_CONTENT_TYPE_1);
-	}
+		for (int i = 0; i < ARRAY_SIZE(mst_subtests); i++) {
+			igt_describe_f("%s", mst_subtests[i].desc);
 
-	igt_describe("Test Content protection over DP MST with LIC");
-	igt_subtest("dp-mst-lic-type-1") {
-		data.cp_tests = CP_LIC;
-		test_content_protection_mst(HDCP_CONTENT_TYPE_1);
+			igt_subtest(mst_subtests[i].name) {
+				data.cp_tests = mst_subtests[i].cp_tests;
+				test_content_protection_mst(mst_subtests[i].content_type);
+			}
+		}
 	}
 
 	igt_fixture {
-- 
2.22.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_content_protection: Test Refactoring
  2022-09-13  9:04 [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_content_protection: Test Refactoring Karthik B S
  2022-09-13  9:04 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_content_protection: Test Cleanup Karthik B S
  2022-09-13  9:04 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_content_protectin: Convert test to dynamic Karthik B S
@ 2022-09-13 14:10 ` Patchwork
  2022-09-14  1:29 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2022-09-13 14:10 UTC (permalink / raw)
  To: Karthik B S; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 5011 bytes --]

== Series Details ==

Series: tests/kms_content_protection: Test Refactoring
URL   : https://patchwork.freedesktop.org/series/108484/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12128 -> IGTPW_7776
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/index.html

Participating hosts (42 -> 40)
------------------------------

  Additional (1): bat-dg2-11 
  Missing    (3): fi-ctg-p8600 fi-hsw-4770 fi-bdw-samus 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_7776:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@gem_exec_suspend@basic-s0@lmem0:
    - {bat-dg2-11}:       NOTRUN -> [DMESG-WARN][1] +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/bat-dg2-11/igt@gem_exec_suspend@basic-s0@lmem0.html

  
Known issues
------------

  Here are the changes found in IGTPW_7776 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-ivb-3770:        NOTRUN -> [SKIP][2] ([fdo#109271] / [fdo#111827])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/fi-ivb-3770/igt@kms_chamelium@common-hpd-after-suspend.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@hangcheck:
    - fi-ivb-3770:        [INCOMPLETE][3] ([i915#3303] / [i915#5370]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/fi-ivb-3770/igt@i915_selftest@live@hangcheck.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/fi-ivb-3770/igt@i915_selftest@live@hangcheck.html

  * igt@i915_selftest@live@slpc:
    - {bat-rpls-1}:       [DMESG-FAIL][5] ([i915#6367]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/bat-rpls-1/igt@i915_selftest@live@slpc.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/bat-rpls-1/igt@i915_selftest@live@slpc.html

  
#### Warnings ####

  * igt@i915_selftest@live@hangcheck:
    - bat-dg1-5:          [DMESG-FAIL][7] ([i915#4957]) -> [DMESG-FAIL][8] ([i915#4494] / [i915#4957])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/bat-dg1-5/igt@i915_selftest@live@hangcheck.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/bat-dg1-5/igt@i915_selftest@live@hangcheck.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1155]: https://gitlab.freedesktop.org/drm/intel/issues/1155
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3303]: https://gitlab.freedesktop.org/drm/intel/issues/3303
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3595]: https://gitlab.freedesktop.org/drm/intel/issues/3595
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
  [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
  [i915#4873]: https://gitlab.freedesktop.org/drm/intel/issues/4873
  [i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
  [i915#5370]: https://gitlab.freedesktop.org/drm/intel/issues/5370
  [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_6653 -> IGTPW_7776

  CI-20190529: 20190529
  CI_DRM_12128: 9508a7418e4beed93db88d42235449bc097eaf97 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7776: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/index.html
  IGT_6653: 4f927248ebbf11f03f4c1ea2254f011e7575322f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/index.html

[-- Attachment #2: Type: text/html, Size: 4426 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_content_protection: Test Refactoring
  2022-09-13  9:04 [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_content_protection: Test Refactoring Karthik B S
                   ` (2 preceding siblings ...)
  2022-09-13 14:10 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_content_protection: Test Refactoring Patchwork
@ 2022-09-14  1:29 ` Patchwork
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2022-09-14  1:29 UTC (permalink / raw)
  To: Karthik B S; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 39129 bytes --]

== Series Details ==

Series: tests/kms_content_protection: Test Refactoring
URL   : https://patchwork.freedesktop.org/series/108484/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12128_full -> IGTPW_7776_full
====================================================

Summary
-------

  **WARNING**

  Minor unknown changes coming with IGTPW_7776_full need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_7776_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/index.html

Participating hosts (11 -> 8)
------------------------------

  Missing    (3): pig-skl-6260u pig-kbl-iris pig-glk-j5005 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_7776_full:

### IGT changes ###

#### Possible regressions ####

  * {igt@kms_content_protection@lic@pipe-a-dp-1} (NEW):
    - shard-apl:          NOTRUN -> [INCOMPLETE][1] +4 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl4/igt@kms_content_protection@lic@pipe-a-dp-1.html

  * {igt@kms_content_protection@uevent@pipe-a-dp-1} (NEW):
    - shard-apl:          NOTRUN -> [FAIL][2]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl2/igt@kms_content_protection@uevent@pipe-a-dp-1.html

  
#### Warnings ####

  * igt@kms_content_protection@atomic-dpms:
    - shard-tglb:         [SKIP][3] ([i915#1063]) -> [SKIP][4] +8 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-tglb5/igt@kms_content_protection@atomic-dpms.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb6/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@uevent:
    - shard-iclb:         [SKIP][5] ([fdo#109300] / [fdo#111066]) -> [SKIP][6] +8 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb1/igt@kms_content_protection@uevent.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb8/igt@kms_content_protection@uevent.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@kms_content_protection@atomic:
    - {shard-tglu}:       NOTRUN -> [SKIP][7] +3 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglu-1/igt@kms_content_protection@atomic.html

  * igt@kms_content_protection@atomic-dpms:
    - {shard-tglu}:       [SKIP][8] ([i915#1063]) -> [SKIP][9] +3 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-tglu-2/igt@kms_content_protection@atomic-dpms.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglu-1/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@type1:
    - {shard-rkl}:        NOTRUN -> [SKIP][10] +1 similar issue
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-rkl-6/igt@kms_content_protection@type1.html

  
New tests
---------

  New tests have been introduced between CI_DRM_12128_full and IGTPW_7776_full:

### New IGT tests (6) ###

  * igt@kms_content_protection@atomic-dpms@pipe-a-dp-1:
    - Statuses : 1 incomplete(s)
    - Exec time: [0.0] s

  * igt@kms_content_protection@atomic@pipe-a-dp-1:
    - Statuses : 1 incomplete(s)
    - Exec time: [0.0] s

  * igt@kms_content_protection@legacy@pipe-a-dp-1:
    - Statuses : 1 incomplete(s)
    - Exec time: [0.0] s

  * igt@kms_content_protection@lic@pipe-a-dp-1:
    - Statuses : 1 incomplete(s)
    - Exec time: [0.0] s

  * igt@kms_content_protection@srm@pipe-a-dp-1:
    - Statuses : 1 incomplete(s)
    - Exec time: [0.0] s

  * igt@kms_content_protection@uevent@pipe-a-dp-1:
    - Statuses : 1 fail(s)
    - Exec time: [34.52] s

  

Known issues
------------

  Here are the changes found in IGTPW_7776_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-tglb:         NOTRUN -> [SKIP][11] ([i915#3555] / [i915#5325])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb3/igt@gem_ccs@ctrl-surf-copy.html
    - shard-iclb:         NOTRUN -> [SKIP][12] ([i915#5327])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb6/igt@gem_ccs@ctrl-surf-copy.html

  * igt@gem_ctx_persistence@engines-hostile-preempt:
    - shard-snb:          NOTRUN -> [SKIP][13] ([fdo#109271] / [i915#1099])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-snb5/igt@gem_ctx_persistence@engines-hostile-preempt.html

  * igt@gem_eio@kms:
    - shard-tglb:         [PASS][14] -> [FAIL][15] ([i915#5784])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-tglb7/igt@gem_eio@kms.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb3/igt@gem_eio@kms.html

  * igt@gem_exec_balancer@parallel-out-fence:
    - shard-iclb:         [PASS][16] -> [SKIP][17] ([i915#4525]) +1 similar issue
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb2/igt@gem_exec_balancer@parallel-out-fence.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb8/igt@gem_exec_balancer@parallel-out-fence.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-apl:          NOTRUN -> [FAIL][18] ([i915#2846])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl6/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none@vcs1:
    - shard-iclb:         NOTRUN -> [FAIL][19] ([i915#2842])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb2/igt@gem_exec_fair@basic-none@vcs1.html

  * igt@gem_exec_fair@basic-pace@vcs0:
    - shard-glk:          [PASS][20] -> [FAIL][21] ([i915#2842]) +2 similar issues
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-glk7/igt@gem_exec_fair@basic-pace@vcs0.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk2/igt@gem_exec_fair@basic-pace@vcs0.html

  * igt@gem_huc_copy@huc-copy:
    - shard-tglb:         [PASS][22] -> [SKIP][23] ([i915#2190])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-tglb3/igt@gem_huc_copy@huc-copy.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb7/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@heavy-verify-random:
    - shard-tglb:         NOTRUN -> [SKIP][24] ([i915#4613]) +1 similar issue
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb7/igt@gem_lmem_swapping@heavy-verify-random.html
    - shard-glk:          NOTRUN -> [SKIP][25] ([fdo#109271] / [i915#4613]) +2 similar issues
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk5/igt@gem_lmem_swapping@heavy-verify-random.html
    - shard-iclb:         NOTRUN -> [SKIP][26] ([i915#4613]) +1 similar issue
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb5/igt@gem_lmem_swapping@heavy-verify-random.html

  * igt@gem_lmem_swapping@parallel-random-verify-ccs:
    - shard-apl:          NOTRUN -> [SKIP][27] ([fdo#109271] / [i915#4613]) +2 similar issues
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl6/igt@gem_lmem_swapping@parallel-random-verify-ccs.html

  * igt@gen9_exec_parse@cmd-crossing-page:
    - shard-tglb:         NOTRUN -> [SKIP][28] ([i915#2527] / [i915#2856])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb7/igt@gen9_exec_parse@cmd-crossing-page.html
    - shard-iclb:         NOTRUN -> [SKIP][29] ([i915#2856])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb5/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@i915_pm_dc@dc6-dpms:
    - shard-iclb:         [PASS][30] -> [FAIL][31] ([i915#454])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb6/igt@i915_pm_dc@dc6-dpms.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb3/igt@i915_pm_dc@dc6-dpms.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-iclb:         [PASS][32] -> [SKIP][33] ([i915#4281])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb6/igt@i915_pm_dc@dc9-dpms.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb3/igt@i915_pm_dc@dc9-dpms.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-90:
    - shard-iclb:         NOTRUN -> [SKIP][34] ([fdo#110725] / [fdo#111614])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb7/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html
    - shard-tglb:         NOTRUN -> [SKIP][35] ([fdo#111614])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb3/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-0:
    - shard-iclb:         NOTRUN -> [SKIP][36] ([fdo#110723])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb2/igt@kms_big_fb@yf-tiled-8bpp-rotate-0.html
    - shard-tglb:         NOTRUN -> [SKIP][37] ([fdo#111615])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb5/igt@kms_big_fb@yf-tiled-8bpp-rotate-0.html

  * igt@kms_ccs@pipe-a-crc-primary-basic-4_tiled_dg2_mc_ccs:
    - shard-iclb:         NOTRUN -> [SKIP][38] ([fdo#109278]) +2 similar issues
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb5/igt@kms_ccs@pipe-a-crc-primary-basic-4_tiled_dg2_mc_ccs.html
    - shard-tglb:         NOTRUN -> [SKIP][39] ([i915#3689] / [i915#6095])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb7/igt@kms_ccs@pipe-a-crc-primary-basic-4_tiled_dg2_mc_ccs.html

  * igt@kms_ccs@pipe-b-crc-primary-rotation-180-y_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][40] ([i915#3689])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb7/igt@kms_ccs@pipe-b-crc-primary-rotation-180-y_tiled_ccs.html

  * igt@kms_ccs@pipe-c-crc-primary-basic-y_tiled_gen12_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][41] ([fdo#109271] / [i915#3886]) +3 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl6/igt@kms_ccs@pipe-c-crc-primary-basic-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-d-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc:
    - shard-tglb:         NOTRUN -> [SKIP][42] ([i915#6095])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb2/igt@kms_ccs@pipe-d-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc.html

  * igt@kms_chamelium@dp-hpd-for-each-pipe:
    - shard-glk:          NOTRUN -> [SKIP][43] ([fdo#109271] / [fdo#111827]) +4 similar issues
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk8/igt@kms_chamelium@dp-hpd-for-each-pipe.html
    - shard-iclb:         NOTRUN -> [SKIP][44] ([fdo#109284] / [fdo#111827]) +1 similar issue
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb2/igt@kms_chamelium@dp-hpd-for-each-pipe.html

  * igt@kms_chamelium@vga-hpd-after-suspend:
    - shard-apl:          NOTRUN -> [SKIP][45] ([fdo#109271] / [fdo#111827]) +7 similar issues
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl6/igt@kms_chamelium@vga-hpd-after-suspend.html
    - shard-snb:          NOTRUN -> [SKIP][46] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-snb7/igt@kms_chamelium@vga-hpd-after-suspend.html
    - shard-tglb:         NOTRUN -> [SKIP][47] ([fdo#109284] / [fdo#111827]) +1 similar issue
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb6/igt@kms_chamelium@vga-hpd-after-suspend.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size:
    - shard-glk:          [PASS][48] -> [FAIL][49] ([i915#2346])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html

  * igt@kms_flip@2x-flip-vs-modeset:
    - shard-tglb:         NOTRUN -> [SKIP][50] ([fdo#109274] / [fdo#111825] / [i915#3637])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb1/igt@kms_flip@2x-flip-vs-modeset.html
    - shard-iclb:         NOTRUN -> [SKIP][51] ([fdo#109274])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb1/igt@kms_flip@2x-flip-vs-modeset.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-default-mode:
    - shard-iclb:         NOTRUN -> [SKIP][52] ([i915#2672]) +4 similar issues
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb3/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-default-mode:
    - shard-iclb:         NOTRUN -> [SKIP][53] ([i915#2672] / [i915#3555])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-default-mode.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu:
    - shard-iclb:         [PASS][54] -> [FAIL][55] ([i915#1888] / [i915#2546])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu.html
    - shard-glk:          [PASS][56] -> [FAIL][57] ([i915#1888] / [i915#2546])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-glk5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-gtt:
    - shard-iclb:         NOTRUN -> [SKIP][58] ([fdo#109280]) +3 similar issues
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
    - shard-tglb:         NOTRUN -> [SKIP][59] ([fdo#109280] / [fdo#111825]) +3 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb3/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move:
    - shard-tglb:         NOTRUN -> [SKIP][60] ([i915#6497]) +2 similar issues
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt:
    - shard-glk:          NOTRUN -> [SKIP][61] ([fdo#109271]) +52 similar issues
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c:
    - shard-iclb:         NOTRUN -> [SKIP][62] ([fdo#109289])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb7/igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c.html
    - shard-tglb:         NOTRUN -> [SKIP][63] ([fdo#109289])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb1/igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb:
    - shard-apl:          NOTRUN -> [FAIL][64] ([i915#265])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl4/igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb.html
    - shard-glk:          NOTRUN -> [FAIL][65] ([i915#265])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk6/igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-basic:
    - shard-glk:          NOTRUN -> [FAIL][66] ([fdo#108145] / [i915#265])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk7/igt@kms_plane_alpha_blend@pipe-b-alpha-basic.html

  * igt@kms_plane_alpha_blend@pipe-d-alpha-transparent-fb:
    - shard-apl:          NOTRUN -> [SKIP][67] ([fdo#109271]) +100 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl3/igt@kms_plane_alpha_blend@pipe-d-alpha-transparent-fb.html

  * igt@kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-5@pipe-b-edp-1:
    - shard-iclb:         [PASS][68] -> [SKIP][69] ([i915#5176]) +2 similar issues
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb4/igt@kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-5@pipe-b-edp-1.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb2/igt@kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-5@pipe-b-edp-1.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1:
    - shard-iclb:         [PASS][70] -> [SKIP][71] ([i915#5235]) +2 similar issues
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb4/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1.html
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1.html

  * igt@kms_psr2_sf@overlay-plane-move-continuous-sf:
    - shard-apl:          NOTRUN -> [SKIP][72] ([fdo#109271] / [i915#658])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl2/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html

  * igt@kms_psr@psr2_primary_page_flip:
    - shard-iclb:         [PASS][73] -> [SKIP][74] ([fdo#109441])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb4/igt@kms_psr@psr2_primary_page_flip.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-iclb:         [PASS][75] -> [SKIP][76] ([i915#5519])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb8/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb4/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-tglb:         NOTRUN -> [SKIP][77] ([fdo#111615] / [i915#5289])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_vblank@pipe-c-query-busy-hang:
    - shard-snb:          NOTRUN -> [SKIP][78] ([fdo#109271]) +32 similar issues
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-snb5/igt@kms_vblank@pipe-c-query-busy-hang.html

  * igt@perf_pmu@event-wait@rcs0:
    - shard-iclb:         NOTRUN -> [SKIP][79] ([fdo#112283])
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb1/igt@perf_pmu@event-wait@rcs0.html
    - shard-tglb:         NOTRUN -> [SKIP][80] ([fdo#112283])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb1/igt@perf_pmu@event-wait@rcs0.html

  * igt@prime_nv_pcopy@test3_3:
    - shard-iclb:         NOTRUN -> [SKIP][81] ([fdo#109291])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb7/igt@prime_nv_pcopy@test3_3.html
    - shard-tglb:         NOTRUN -> [SKIP][82] ([fdo#109291])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb3/igt@prime_nv_pcopy@test3_3.html

  * igt@sysfs_clients@busy:
    - shard-tglb:         NOTRUN -> [SKIP][83] ([i915#2994])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb7/igt@sysfs_clients@busy.html
    - shard-glk:          NOTRUN -> [SKIP][84] ([fdo#109271] / [i915#2994])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk5/igt@sysfs_clients@busy.html
    - shard-iclb:         NOTRUN -> [SKIP][85] ([i915#2994])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb8/igt@sysfs_clients@busy.html

  * igt@sysfs_clients@create:
    - shard-apl:          NOTRUN -> [SKIP][86] ([fdo#109271] / [i915#2994]) +2 similar issues
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl6/igt@sysfs_clients@create.html

  
#### Possible fixes ####

  * igt@gem_eio@unwedge-stress:
    - shard-tglb:         [FAIL][87] ([i915#5784]) -> [PASS][88]
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-tglb1/igt@gem_eio@unwedge-stress.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb7/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_balancer@parallel-bb-first:
    - shard-iclb:         [SKIP][89] ([i915#4525]) -> [PASS][90]
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb7/igt@gem_exec_balancer@parallel-bb-first.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb1/igt@gem_exec_balancer@parallel-bb-first.html

  * igt@gem_exec_fair@basic-flow@rcs0:
    - shard-tglb:         [FAIL][91] ([i915#2842]) -> [PASS][92]
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-tglb6/igt@gem_exec_fair@basic-flow@rcs0.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb6/igt@gem_exec_fair@basic-flow@rcs0.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-glk:          [FAIL][93] ([i915#2842]) -> [PASS][94]
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-glk2/igt@gem_exec_fair@basic-none-share@rcs0.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk7/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-apl:          [FAIL][95] ([i915#2842]) -> [PASS][96]
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-apl6/igt@gem_exec_fair@basic-pace-solo@rcs0.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl1/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-iclb:         [FAIL][97] ([i915#2842]) -> [PASS][98]
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb5/igt@gem_exec_fair@basic-throttle@rcs0.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb4/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@gem_partial_pwrite_pread@writes-after-reads-display:
    - {shard-rkl}:        [SKIP][99] ([i915#3282]) -> [PASS][100]
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads-display.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-rkl-5/igt@gem_partial_pwrite_pread@writes-after-reads-display.html

  * igt@gem_userptr_blits@huge-split:
    - shard-tglb:         [FAIL][101] ([i915#3376]) -> [PASS][102]
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-tglb7/igt@gem_userptr_blits@huge-split.html
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb3/igt@gem_userptr_blits@huge-split.html

  * igt@gen9_exec_parse@bb-chained:
    - {shard-rkl}:        [SKIP][103] ([i915#2527]) -> [PASS][104]
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-rkl-6/igt@gen9_exec_parse@bb-chained.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-rkl-5/igt@gen9_exec_parse@bb-chained.html

  * igt@i915_pm_dc@dc6-psr:
    - shard-iclb:         [FAIL][105] ([i915#454]) -> [PASS][106]
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb7/igt@i915_pm_dc@dc6-psr.html
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb4/igt@i915_pm_dc@dc6-psr.html

  * igt@i915_selftest@live@gt_pm:
    - {shard-tglu}:       [DMESG-FAIL][107] ([i915#3987]) -> [PASS][108]
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-tglu-4/igt@i915_selftest@live@gt_pm.html
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglu-2/igt@i915_selftest@live@gt_pm.html

  * igt@i915_selftest@live@hangcheck:
    - shard-tglb:         [DMESG-WARN][109] ([i915#5591]) -> [PASS][110]
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-tglb3/igt@i915_selftest@live@hangcheck.html
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-tglb7/igt@i915_selftest@live@hangcheck.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-180:
    - shard-glk:          [FAIL][111] ([i915#1888] / [i915#5138]) -> [PASS][112]
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-glk2/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk8/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a1-hdmi-a2:
    - shard-glk:          [FAIL][113] -> [PASS][114]
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-glk1/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a1-hdmi-a2.html
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-glk1/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a1-hdmi-a2.html

  * igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1:
    - shard-apl:          [DMESG-WARN][115] ([i915#180]) -> [PASS][116]
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-apl1/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1.html
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-apl3/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-iclb:         [SKIP][117] ([fdo#109642] / [fdo#111068] / [i915#658]) -> [PASS][118]
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb8/igt@kms_psr2_su@frontbuffer-xrgb8888.html
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb2/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@psr2_dpms:
    - shard-iclb:         [SKIP][119] ([fdo#109441]) -> [PASS][120] +1 similar issue
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb4/igt@kms_psr@psr2_dpms.html
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb2/igt@kms_psr@psr2_dpms.html

  
#### Warnings ####

  * igt@i915_pm_dc@dc3co-vpb-simulation:
    - shard-iclb:         [SKIP][121] ([i915#658]) -> [SKIP][122] ([i915#588])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb1/igt@i915_pm_dc@dc3co-vpb-simulation.html
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb2/igt@i915_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area:
    - shard-iclb:         [SKIP][123] ([fdo#111068] / [i915#658]) -> [SKIP][124] ([i915#2920])
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb3/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb2/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb:
    - shard-iclb:         [SKIP][125] ([i915#2920]) -> [SKIP][126] ([i915#658]) +1 similar issue
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12128/shard-iclb2/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/shard-iclb6/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300
  [fdo#109302]: https://bugs.freedesktop.org/show_bug.cgi?id=109302
  [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303
  [fdo#109307]: https://bugs.freedesktop.org/show_bug.cgi?id=109307
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312
  [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#110725]: https://bugs.freedesktop.org/show_bug.cgi?id=110725
  [fdo#111066]: https://bugs.freedesktop.org/show_bug.cgi?id=111066
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1063]: https://gitlab.freedesktop.org/drm/intel/issues/1063
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
  [i915#1155]: https://gitlab.freedesktop.org/drm/intel/issues/1155
  [i915#1257]: https://gitlab.freedesktop.org/drm/intel/issues/1257
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1850]: https://gitlab.freedesktop.org/drm/intel/issues/1850
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#1902]: https://gitlab.freedesktop.org/drm/intel/issues/1902
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434
  [i915#2435]: https://gitlab.freedesktop.org/drm/intel/issues/2435
  [i915#2436]: https://gitlab.freedesktop.org/drm/intel/issues/2436
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2530]: https://gitlab.freedesktop.org/drm/intel/issues/2530
  [i915#2532]: https://gitlab.freedesktop.org/drm/intel/issues/2532
  [i915#2546]: https://gitlab.freedesktop.org/drm/intel/issues/2546
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2876]: https://gitlab.freedesktop.org/drm/intel/issues/2876
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994
  [i915#3002]: https://gitlab.freedesktop.org/drm/intel/issues/3002
  [i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3376]: https://gitlab.freedesktop.org/drm/intel/issues/3376
  [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469
  [i915#3528]: https://gitlab.freedesktop.org/drm/intel/issues/3528
  [i915#3536]: https://gitlab.freedesktop.org/drm/intel/issues/3536
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3804]: https://gitlab.freedesktop.org/drm/intel/issues/3804
  [i915#3825]: https://gitlab.freedesktop.org/drm/intel/issues/3825
  [i915#3826]: https://gitlab.freedesktop.org/drm/intel/issues/3826
  [i915#3828]: https://gitlab.freedesktop.org/drm/intel/issues/3828
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#3987]: https://gitlab.freedesktop.org/drm/intel/issues/3987
  [i915#4016]: https://gitlab.freedesktop.org/drm/intel/issues/4016
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#426]: https://gitlab.freedesktop.org/drm/intel/issues/426
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4877]: https://gitlab.freedesktop.org/drm/intel/issues/4877
  [i915#4991]: https://gitlab.freedesktop.org/drm/intel/issues/4991
  [i915#4998]: https://gitlab.freedesktop.org/drm/intel/issues/4998
  [i915#5138]: https://gitlab.freedesktop.org/drm/intel/issues/5138
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#5327]: https://gitlab.freedesktop.org/drm/intel/issues/5327
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5519]: https://gitlab.freedesktop.org/drm/intel/issues/5519
  [i915#5591]: https://gitlab.freedesktop.org/drm/intel/issues/5591
  [i915#5723]: https://gitlab.freedesktop.org/drm/intel/issues/5723
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#588]: https://gitlab.freedesktop.org/drm/intel/issues/588
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6117]: https://gitlab.freedesktop.org/drm/intel/issues/6117
  [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230
  [i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6251]: https://gitlab.freedesktop.org/drm/intel/issues/6251
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#6344]: https://gitlab.freedesktop.org/drm/intel/issues/6344
  [i915#6412]: https://gitlab.freedesktop.org/drm/intel/issues/6412
  [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
  [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6590]: https://gitlab.freedesktop.org/drm/intel/issues/6590
  [i915#6599]: https://gitlab.freedesktop.org/drm/intel/issues/6599


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_6653 -> IGTPW_7776
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_12128: 9508a7418e4beed93db88d42235449bc097eaf97 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7776: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/index.html
  IGT_6653: 4f927248ebbf11f03f4c1ea2254f011e7575322f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7776/index.html

[-- Attachment #2: Type: text/html, Size: 39321 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_content_protection: Test Cleanup
  2022-09-13  9:04 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_content_protection: Test Cleanup Karthik B S
@ 2022-09-21 11:23   ` Modem, Bhanuprakash
  2022-09-22  6:46     ` Karthik B S
  0 siblings, 1 reply; 8+ messages in thread
From: Modem, Bhanuprakash @ 2022-09-21 11:23 UTC (permalink / raw)
  To: Karthik B S, igt-dev

On Tue-13-09-2022 02:34 pm, Karthik B S wrote:
> This patch includes:
>      1.Add a modeset before checking output is HDCP capable.
>        Test currently skips on multidisplay MST because we're checking
>        if output is HDCP capable before doing a modeset on the output.
>      2.Call igt_display_reset before starting the subtest.
>      3.test_fini function added to prepare test for converting to dynamic.
>      4.Remove redundant mode override.
>      5.Try other pipe/output combo for MST if failure is seen on one.
> 
> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
> ---
>   tests/kms_content_protection.c | 179 +++++++++++++++++----------------
>   1 file changed, 92 insertions(+), 87 deletions(-)
> 
> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> index 3041f1cd..eb59f3fe 100644
> --- a/tests/kms_content_protection.c
> +++ b/tests/kms_content_protection.c

Do we need test_cp_disable() inside the test_content_protection_cleanup()?

If Yes, then you need to update the commit style arg based on the system.

Else please drop it.

- Bhanu

> @@ -170,18 +170,15 @@ static void modeset_with_fb(const enum pipe pipe, igt_output_t *output,
>   			    enum igt_commit_style s)
>   {
>   	igt_display_t *display = &data.display;
> -	drmModeModeInfo mode;
> +	drmModeModeInfo *mode;
>   	igt_plane_t *primary;
>   
> -	igt_assert(kmstest_get_connector_default_mode(
> -			display->drm_fd, output->config.connector, &mode));
> -
> -	igt_output_override_mode(output, &mode);
> +	mode = igt_output_get_mode(output);
>   	igt_output_set_pipe(output, pipe);
>   
>   	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>   	igt_plane_set_fb(primary, &data.red);
> -	igt_fb_set_size(&data.red, primary, mode.hdisplay, mode.vdisplay);
> +	igt_fb_set_size(&data.red, primary, mode->hdisplay, mode->vdisplay);
>   
>   	igt_display_commit2(display, s);
>   
> @@ -317,90 +314,61 @@ static bool write_srm_as_fw(const __u8 *srm, int len)
>   }
>   
>   static void test_content_protection_on_output(igt_output_t *output,
> +					      enum pipe pipe,
>   					      enum igt_commit_style s,
>   					      int content_type)
>   {
>   	igt_display_t *display = &data.display;
> -	igt_plane_t *primary;
> -	enum pipe pipe;
>   	bool ret;
>   
> -	for_each_pipe(display, pipe) {
> -		if (!igt_pipe_connector_valid(pipe, output))
> -			continue;
> -
> -		/*
> -		 * If previous subtest of connector failed, pipe
> -		 * attached to that connector is not released.
> -		 * Because of that we have to choose the non
> -		 * attached pipe for this subtest.
> -		 */
> -		if (!igt_pipe_is_free(display, pipe))
> -			continue;
> -
> -		modeset_with_fb(pipe, output, s);
> -		test_cp_enable_with_retry(output, s, 3, content_type, false,
> -					  false);
> -
> -		if (data.cp_tests & CP_TYPE_CHANGE) {
> -			/* Type 1 -> Type 0 */
> -			test_cp_enable_with_retry(output, s, 3,
> -						  HDCP_CONTENT_TYPE_0, false,
> -						  true);
> -			/* Type 0 -> Type 1 */
> -			test_cp_enable_with_retry(output, s, 3,
> -						  content_type, false,
> -						  true);
> -		}
> -
> -		if (data.cp_tests & CP_MEI_RELOAD) {
> -			igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
> -				     "mei_hdcp unload failed");
> +	test_cp_enable_with_retry(output, s, 3, content_type, false,
> +				  false);
> +
> +	if (data.cp_tests & CP_TYPE_CHANGE) {
> +		/* Type 1 -> Type 0 */
> +		test_cp_enable_with_retry(output, s, 3,
> +					  HDCP_CONTENT_TYPE_0, false,
> +					  true);
> +		/* Type 0 -> Type 1 */
> +		test_cp_enable_with_retry(output, s, 3,
> +					  content_type, false,
> +					  true);
> +	}
>   
> -			/* Expected to fail */
> -			test_cp_enable_with_retry(output, s, 3,
> -						  content_type, true, false);
> +	if (data.cp_tests & CP_MEI_RELOAD) {
> +		igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
> +			     "mei_hdcp unload failed");
>   
> -			igt_assert_f(!igt_kmod_load("mei_hdcp", NULL),
> -				     "mei_hdcp load failed");
> +		/* Expected to fail */
> +		test_cp_enable_with_retry(output, s, 3,
> +					  content_type, true, false);
>   
> -			/* Expected to pass */
> -			test_cp_enable_with_retry(output, s, 3,
> -						  content_type, false, false);
> -		}
> +		igt_assert_f(!igt_kmod_load("mei_hdcp", NULL),
> +			     "mei_hdcp load failed");
>   
> -		if (data.cp_tests & CP_LIC)
> -			test_cp_lic(output);
> +		/* Expected to pass */
> +		test_cp_enable_with_retry(output, s, 3,
> +					  content_type, false, false);
> +	}
>   
> -		if (data.cp_tests & CP_DPMS) {
> -			igt_pipe_set_prop_value(display, pipe,
> -						IGT_CRTC_ACTIVE, 0);
> -			igt_display_commit2(display, s);
> +	if (data.cp_tests & CP_LIC)
> +		test_cp_lic(output);
>   
> -			igt_pipe_set_prop_value(display, pipe,
> -						IGT_CRTC_ACTIVE, 1);
> -			igt_display_commit2(display, s);
> +	if (data.cp_tests & CP_DPMS) {
> +		igt_pipe_set_prop_value(display, pipe,
> +					IGT_CRTC_ACTIVE, 0);
> +		igt_display_commit2(display, s);
>   
> -			ret = wait_for_prop_value(output, CP_ENABLED,
> -						  KERNEL_AUTH_TIME_ALLOWED_MSEC);
> -			if (!ret)
> -				test_cp_enable_with_retry(output, s, 2,
> -							  content_type, false,
> -							  false);
> -		}
> +		igt_pipe_set_prop_value(display, pipe,
> +					IGT_CRTC_ACTIVE, 1);
> +		igt_display_commit2(display, s);
>   
> -		test_cp_disable(output, s);
> -		primary = igt_output_get_plane_type(output,
> -						    DRM_PLANE_TYPE_PRIMARY);
> -		igt_plane_set_fb(primary, NULL);
> -		igt_output_set_pipe(output, PIPE_NONE);
> -
> -		/*
> -		 * Testing a output with a pipe is enough for HDCP
> -		 * testing. No ROI in testing the connector with other
> -		 * pipes. So Break the loop on pipe.
> -		 */
> -		break;
> +		ret = wait_for_prop_value(output, CP_ENABLED,
> +					  KERNEL_AUTH_TIME_ALLOWED_MSEC);
> +		if (!ret)
> +			test_cp_enable_with_retry(output, s, 2,
> +						  content_type, false,
> +						  false);
>   	}
>   }
>   
> @@ -458,7 +426,8 @@ static bool sink_hdcp2_capable(igt_output_t *output)
>   	return strstr(buf, "HDCP2.2");
>   }
>   
> -static void prepare_modeset_on_mst_output(igt_output_t *output)
> +static void
> +prepare_modeset_on_mst_output(igt_output_t *output)
>   {
>   	drmModeModeInfo *mode;
>   	igt_plane_t *primary;
> @@ -477,7 +446,8 @@ static void prepare_modeset_on_mst_output(igt_output_t *output)
>   	igt_plane_set_size(primary, width, height);
>   }
>   
> -static bool output_hdcp_capable(igt_output_t *output, int content_type)
> +static bool
> +output_hdcp_capable(igt_output_t *output, int content_type)
>   {
>   		if (!output->props[IGT_CONNECTOR_CONTENT_PROTECTION])
>   			return false;
> @@ -499,6 +469,19 @@ static bool output_hdcp_capable(igt_output_t *output, int content_type)
>   		return true;
>   }
>   
> +static void
> +test_fini(igt_output_t *output, enum igt_commit_style s)
> +{
> +	igt_plane_t *primary;
> +
> +	test_cp_disable(output, s);
> +	primary = igt_output_get_plane_type(output,
> +					    DRM_PLANE_TYPE_PRIMARY);
> +	igt_plane_set_fb(primary, NULL);
> +	igt_output_set_pipe(output, PIPE_NONE);
> +	igt_display_commit2(&data.display, s);
> +}
> +
>   static void
>   test_content_protection(enum igt_commit_style s, int content_type)
>   {
> @@ -511,10 +494,27 @@ test_content_protection(enum igt_commit_style s, int content_type)
>   			      "mei_hdcp module is not loaded\n");
>   
>   	for_each_connected_output(display, output) {
> -		if (!output_hdcp_capable(output, content_type))
> -			continue;
> +		for_each_pipe(display, pipe) {
> +			if (!igt_pipe_connector_valid(pipe, output))
> +				continue;
> +
> +			igt_display_reset(display);
> +			modeset_with_fb(pipe, output, s);
> +
> +			if (!output_hdcp_capable(output, content_type))
> +				continue;
> +
> +			test_content_protection_on_output(output, pipe, s, content_type);
> +			test_fini(output, s);
> +
> +			/*
> +			 * Testing a output with a pipe is enough for HDCP
> +			 * testing. No ROI in testing the connector with other
> +			 * pipes. So Break the loop on pipe.
> +			 */
> +			break;
> +		}
>   
> -		test_content_protection_on_output(output, s, content_type);
>   		valid_tests++;
>   	}
>   
> @@ -596,6 +596,7 @@ test_content_protection_mst(int content_type)
>   	igt_output_t *output;
>   	int valid_outputs = 0, dp_mst_outputs = 0, ret, count, max_pipe = 0, i;
>   	enum pipe pipe;
> +	bool pipe_found;
>   	igt_output_t *mst_output[IGT_MAX_PIPES], *hdcp_mst_output[IGT_MAX_PIPES];
>   
>   	for_each_pipe(display, pipe)
> @@ -607,16 +608,20 @@ test_content_protection_mst(int content_type)
>   		if (!output_is_dp_mst(output, dp_mst_outputs))
>   			continue;
>   
> -		igt_assert_f(igt_pipe_connector_valid(pipe, output), "Output-pipe combination invalid\n");
> +		pipe_found = false;
> +		for_each_pipe(display, pipe) {
> +			if (igt_pipe_is_free(display, pipe) &&
> +			    igt_pipe_connector_valid(pipe, output)) {
> +				pipe_found = true;
> +				break;
> +			}
> +		}
> +
> +		igt_assert_f(pipe_found, "No valid pipe found for %s\n", output->name);
>   
>   		igt_output_set_pipe(output, pipe);
>   		prepare_modeset_on_mst_output(output);
>   		mst_output[dp_mst_outputs++] = output;
> -
> -		pipe++;
> -
> -		if (pipe > max_pipe)
> -			break;
>   	}
>   
>   	igt_require_f(dp_mst_outputs > 1, "No DP MST set up with >= 2 outputs found in a single topology\n");

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_content_protectin: Convert test to dynamic
  2022-09-13  9:04 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_content_protectin: Convert test to dynamic Karthik B S
@ 2022-09-21 11:54   ` Modem, Bhanuprakash
  0 siblings, 0 replies; 8+ messages in thread
From: Modem, Bhanuprakash @ 2022-09-21 11:54 UTC (permalink / raw)
  To: Karthik B S, igt-dev

On Tue-13-09-2022 02:34 pm, Karthik B S wrote:
> Covert the existing subtests to dynamic subtests at pipe/output level.
> 
> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
Reviewed-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>   tests/kms_content_protection.c | 220 +++++++++++++++++++--------------
>   1 file changed, 126 insertions(+), 94 deletions(-)
> 
> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> index eb59f3fe..aadc10af 100644
> --- a/tests/kms_content_protection.c
> +++ b/tests/kms_content_protection.c
> @@ -487,12 +487,17 @@ test_content_protection(enum igt_commit_style s, int content_type)
>   {
>   	igt_display_t *display = &data.display;
>   	igt_output_t *output;
> -	int valid_tests = 0;
> +	enum pipe pipe;
>   
>   	if (data.cp_tests & CP_MEI_RELOAD)
>   		igt_require_f(igt_kmod_is_loaded("mei_hdcp"),
>   			      "mei_hdcp module is not loaded\n");
>   
> +	if (data.cp_tests & CP_UEVENT) {
> +		data.uevent_monitor = igt_watch_uevents();
> +		igt_flush_uevents(data.uevent_monitor);
> +	}
> +
>   	for_each_connected_output(display, output) {
>   		for_each_pipe(display, pipe) {
>   			if (!igt_pipe_connector_valid(pipe, output))
> @@ -504,9 +509,10 @@ test_content_protection(enum igt_commit_style s, int content_type)
>   			if (!output_hdcp_capable(output, content_type))
>   				continue;
>   
> -			test_content_protection_on_output(output, pipe, s, content_type);
> -			test_fini(output, s);
> +			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
> +				test_content_protection_on_output(output, pipe, s, content_type);
>   
> +			test_fini(output, s);
>   			/*
>   			 * Testing a output with a pipe is enough for HDCP
>   			 * testing. No ROI in testing the connector with other
> @@ -514,11 +520,10 @@ test_content_protection(enum igt_commit_style s, int content_type)
>   			 */
>   			break;
>   		}
> -
> -		valid_tests++;
>   	}
>   
> -	igt_require_f(valid_tests, "No connector found with HDCP capability\n");
> +	if (data.cp_tests & CP_UEVENT)
> +		igt_cleanup_uevents(data.uevent_monitor);
>   }
>   
>   static int parse_path_blob(char *blob_data)
> @@ -728,6 +733,94 @@ static void create_fbs(void)
>   			    0.f, 1.f, 0.f, &data.green);
>   }
>   
> +static const struct {
> +	const char *desc;
> +	const char *name;
> +	unsigned int cp_tests;
> +	bool content_type;
> +} subtests[] = {
> +	{ .desc = "Test content protection with atomic modesetting",
> +	  .name = "atomic",
> +	  .cp_tests = 0,
> +	  .content_type = HDCP_CONTENT_TYPE_0
> +	},
> +	{ .desc = "Test content protection with DPMS ON/OFF during atomic modesetting.",
> +	  .name = "atomic-dpms",
> +	  .cp_tests = CP_DPMS,
> +	  .content_type = HDCP_CONTENT_TYPE_0
> +	},
> +	{ .desc = "Test for the integrity of link.",
> +	  .name = "LIC",
> +	  .cp_tests = CP_LIC,
> +	  .content_type = HDCP_CONTENT_TYPE_0,
> +	},
> +	{ .desc = "Test content protection with content type 1 "
> +		  "that can be handled only through HDCP2.2.",
> +	  .name = "type1",
> +	  .cp_tests = 0,
> +	  .content_type = HDCP_CONTENT_TYPE_1,
> +	},
> +	{ .desc = "Test the teardown and rebuild of the interface between "
> +		  "I915 and mei hdcp.",
> +	  .name = "mei_interface",
> +	  .cp_tests = CP_MEI_RELOAD,
> +	  .content_type = HDCP_CONTENT_TYPE_1,
> +	},
> +	{ .desc = "Test the content type change when the content protection already enabled",
> +	  .name = "content_type_change",
> +	  .cp_tests = CP_TYPE_CHANGE,
> +	  .content_type = HDCP_CONTENT_TYPE_1,
> +	},
> +	{ .desc = "Test to detect the HDCP status change when we are reading the uevent "
> +		  "sent with the corresponding connector id and property id.",
> +	  .name = "uevent",
> +	  .cp_tests = CP_UEVENT,
> +	  .content_type = HDCP_CONTENT_TYPE_0,
> +	},
> +	/*
> +	 *  Testing the revocation check through SRM needs a HDCP sink with
> +	 *  programmable Ksvs or we need a uAPI from kernel to read the
> +	 *  connected HDCP sink's Ksv. With that we would be able to add that
> +	 *  Ksv into a SRM and send in for revocation check. Since we dont have
> +	 *  either of these options, we test SRM writing from userspace and
> +	 *  validation of the same at kernel. Something is better than nothing.
> +	 */
> +	{ .desc = "This test writes the facsimile SRM into the /lib/firmware/ "
> +		  "and check the kernel parsing of it by invoking the hdcp authentication.",
> +	  .name = "srm",
> +	  .cp_tests = 0,
> +	  .content_type = HDCP_CONTENT_TYPE_0,
> +	},
> +};
> +
> +static const struct {
> +	const char *desc;
> +	const char *name;
> +	unsigned int cp_tests;
> +	bool content_type;
> +} mst_subtests[] = {
> +	{ .desc = "Test Content protection(Type 0) over DP MST.",
> +	  .name = "dp-mst-type-0",
> +	  .cp_tests = 0,
> +	  .content_type = HDCP_CONTENT_TYPE_0
> +	},
> +	{ .desc = "Test Content protection(Type 0) over DP MST with LIC.",
> +	  .name = "dp-mst-lic-type-0",
> +	  .cp_tests = CP_LIC,
> +	  .content_type = HDCP_CONTENT_TYPE_0
> +	},
> +	{ .desc = "Test Content protection(Type 1) over DP MST.",
> +	  .name = "dp-mst-type-1",
> +	  .cp_tests = 0,
> +	  .content_type = HDCP_CONTENT_TYPE_1,
> +	},
> +	{ .desc = "Test Content protection(Type 1) over DP MST with LIC.",
> +	  .name = "dp-mst-lic-type-1",
> +	  .cp_tests = CP_LIC,
> +	  .content_type = HDCP_CONTENT_TYPE_1,
> +	},
> +};
> +
>   igt_main
>   {
>   	igt_fixture {
> @@ -738,107 +831,46 @@ igt_main
>   	}
>   
>   	igt_describe("Test content protection with legacy style commit.");
> -	igt_subtest("legacy") {
> +	igt_subtest_with_dynamic("legacy") {
>   		data.cp_tests = 0;
>   		test_content_protection(COMMIT_LEGACY, HDCP_CONTENT_TYPE_0);
>   	}
>   
> -	igt_describe("Test content protection with atomic modesetting");
> -	igt_subtest("atomic") {
> -		igt_require(data.display.is_atomic);
> -		data.cp_tests = 0;
> -		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
> -	}
> +	igt_subtest_group {
> +		igt_fixture
> +			igt_require(data.display.is_atomic);
>   
> -	igt_describe("Test content protection with DPMS ON/OFF during atomic modesetting.");
> -	igt_subtest("atomic-dpms") {
> -		igt_require(data.display.is_atomic);
> -		data.cp_tests = CP_DPMS;
> -		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
> -	}
> +		for (int i = 0; i < ARRAY_SIZE(subtests); i++) {
> +			igt_describe_f("%s", subtests[i].desc);
>   
> -	igt_describe("Test for the integrity of link.");
> -	igt_subtest("LIC") {
> -		igt_require(data.display.is_atomic);
> -		data.cp_tests = CP_LIC;
> -		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
> -	}
> +			igt_subtest_with_dynamic(subtests[i].name) {
> +				data.cp_tests = subtests[i].cp_tests;
>   
> -	igt_describe("Test content protection with content type 1 that "
> -		     "can be handled only through HDCP2.2.");
> -	igt_subtest("type1") {
> -		igt_require(data.display.is_atomic);
> -		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
> -	}
> +				if (!strcmp(subtests[i].name, "srm")) {
> +					bool ret;
>   
> -	igt_describe("Test the teardown and rebuild of the interface between "
> -		     "I915 and mei hdcp.");
> -	igt_subtest("mei_interface") {
> -		igt_require(data.display.is_atomic);
> -		data.cp_tests = CP_MEI_RELOAD;
> -		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
> -	}
> +					ret = write_srm_as_fw((const __u8 *)facsimile_srm,
> +							     sizeof(facsimile_srm));
> +					igt_assert_f(ret, "SRM update failed");
> +				}
>   
> -	igt_describe("Test the content type change when the content protection already "
> -		     "enabled.");
> -	igt_subtest("content_type_change") {
> -		igt_require(data.display.is_atomic);
> -		data.cp_tests = CP_TYPE_CHANGE;
> -		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
> -	}
> -
> -	igt_describe("Test to detect the HDCP status change when we are reading the uevent "
> -		     "sent with the corresponding connector id and property id.");
> -	igt_subtest("uevent") {
> -		igt_require(data.display.is_atomic);
> -		data.cp_tests = CP_UEVENT;
> -		data.uevent_monitor = igt_watch_uevents();
> -		igt_flush_uevents(data.uevent_monitor);
> -		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
> -		igt_cleanup_uevents(data.uevent_monitor);
> -	}
> -
> -	/*
> -	 *  Testing the revocation check through SRM needs a HDCP sink with
> -	 *  programmable Ksvs or we need a uAPI from kernel to read the
> -	 *  connected HDCP sink's Ksv. With that we would be able to add that
> -	 *  Ksv into a SRM and send in for revocation check. Since we dont have
> -	 *  either of these options, we test SRM writing from userspace and
> -	 *  validation of the same at kernel. Something is better than nothing.
> -	 */
> -	igt_describe("This test writes the facsimile SRM into the /lib/firmware/ "
> -		     "and check the kernel parsing of it by invoking the hdcp authentication.");
> -	igt_subtest("srm") {
> -		bool ret;
> -
> -		igt_require(data.display.is_atomic);
> -		data.cp_tests = 0;
> -		ret = write_srm_as_fw((const __u8 *)facsimile_srm,
> -				      sizeof(facsimile_srm));
> -		igt_assert_f(ret, "SRM update failed");
> -		test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
> -	}
> -
> -	igt_describe("Test Content protection over DP MST");
> -	igt_subtest("dp-mst-type-0") {
> -		test_content_protection_mst(HDCP_CONTENT_TYPE_0);
> +				test_content_protection(COMMIT_ATOMIC, subtests[i].content_type);
> +			}
> +		}
>   	}
>   
> -	igt_describe("Test Content protection over DP MST with LIC");
> -	igt_subtest("dp-mst-lic-type-0") {
> -		data.cp_tests = CP_LIC;
> -		test_content_protection_mst(HDCP_CONTENT_TYPE_0);
> -	}
> +	igt_subtest_group {
> +		igt_fixture
> +			igt_require(data.display.is_atomic);
>   
> -	igt_describe("Test Content protection over DP MST");
> -	igt_subtest("dp-mst-type-1") {
> -		test_content_protection_mst(HDCP_CONTENT_TYPE_1);
> -	}
> +		for (int i = 0; i < ARRAY_SIZE(mst_subtests); i++) {
> +			igt_describe_f("%s", mst_subtests[i].desc);
>   
> -	igt_describe("Test Content protection over DP MST with LIC");
> -	igt_subtest("dp-mst-lic-type-1") {
> -		data.cp_tests = CP_LIC;
> -		test_content_protection_mst(HDCP_CONTENT_TYPE_1);
> +			igt_subtest(mst_subtests[i].name) {
> +				data.cp_tests = mst_subtests[i].cp_tests;
> +				test_content_protection_mst(mst_subtests[i].content_type);
> +			}
> +		}
>   	}
>   
>   	igt_fixture {

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_content_protection: Test Cleanup
  2022-09-21 11:23   ` Modem, Bhanuprakash
@ 2022-09-22  6:46     ` Karthik B S
  0 siblings, 0 replies; 8+ messages in thread
From: Karthik B S @ 2022-09-22  6:46 UTC (permalink / raw)
  To: Modem, Bhanuprakash, igt-dev

On 9/21/2022 4:53 PM, Modem, Bhanuprakash wrote:
> On Tue-13-09-2022 02:34 pm, Karthik B S wrote:
>> This patch includes:
>>      1.Add a modeset before checking output is HDCP capable.
>>        Test currently skips on multidisplay MST because we're checking
>>        if output is HDCP capable before doing a modeset on the output.
>>      2.Call igt_display_reset before starting the subtest.
>>      3.test_fini function added to prepare test for converting to 
>> dynamic.
>>      4.Remove redundant mode override.
>>      5.Try other pipe/output combo for MST if failure is seen on one.
>>
>> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
>> ---
>>   tests/kms_content_protection.c | 179 +++++++++++++++++----------------
>>   1 file changed, 92 insertions(+), 87 deletions(-)
>>
>> diff --git a/tests/kms_content_protection.c 
>> b/tests/kms_content_protection.c
>> index 3041f1cd..eb59f3fe 100644
>> --- a/tests/kms_content_protection.c
>> +++ b/tests/kms_content_protection.c
>
> Do we need test_cp_disable() inside the 
> test_content_protection_cleanup()?
>
> If Yes, then you need to update the commit style arg based on the system.
>
> Else please drop it.

Thank you for the review.

test_cp_disable() is required to ensure all displays have CP disabled, 
especially on multidisplay and MST setups. Will add the is_atomic check 
while passing the commit style arg.

Thanks,
Karthik.B.S
>
> - Bhanu
>
>> @@ -170,18 +170,15 @@ static void modeset_with_fb(const enum pipe 
>> pipe, igt_output_t *output,
>>                   enum igt_commit_style s)
>>   {
>>       igt_display_t *display = &data.display;
>> -    drmModeModeInfo mode;
>> +    drmModeModeInfo *mode;
>>       igt_plane_t *primary;
>>   -    igt_assert(kmstest_get_connector_default_mode(
>> -            display->drm_fd, output->config.connector, &mode));
>> -
>> -    igt_output_override_mode(output, &mode);
>> +    mode = igt_output_get_mode(output);
>>       igt_output_set_pipe(output, pipe);
>>         primary = igt_output_get_plane_type(output, 
>> DRM_PLANE_TYPE_PRIMARY);
>>       igt_plane_set_fb(primary, &data.red);
>> -    igt_fb_set_size(&data.red, primary, mode.hdisplay, mode.vdisplay);
>> +    igt_fb_set_size(&data.red, primary, mode->hdisplay, 
>> mode->vdisplay);
>>         igt_display_commit2(display, s);
>>   @@ -317,90 +314,61 @@ static bool write_srm_as_fw(const __u8 *srm, 
>> int len)
>>   }
>>     static void test_content_protection_on_output(igt_output_t *output,
>> +                          enum pipe pipe,
>>                             enum igt_commit_style s,
>>                             int content_type)
>>   {
>>       igt_display_t *display = &data.display;
>> -    igt_plane_t *primary;
>> -    enum pipe pipe;
>>       bool ret;
>>   -    for_each_pipe(display, pipe) {
>> -        if (!igt_pipe_connector_valid(pipe, output))
>> -            continue;
>> -
>> -        /*
>> -         * If previous subtest of connector failed, pipe
>> -         * attached to that connector is not released.
>> -         * Because of that we have to choose the non
>> -         * attached pipe for this subtest.
>> -         */
>> -        if (!igt_pipe_is_free(display, pipe))
>> -            continue;
>> -
>> -        modeset_with_fb(pipe, output, s);
>> -        test_cp_enable_with_retry(output, s, 3, content_type, false,
>> -                      false);
>> -
>> -        if (data.cp_tests & CP_TYPE_CHANGE) {
>> -            /* Type 1 -> Type 0 */
>> -            test_cp_enable_with_retry(output, s, 3,
>> -                          HDCP_CONTENT_TYPE_0, false,
>> -                          true);
>> -            /* Type 0 -> Type 1 */
>> -            test_cp_enable_with_retry(output, s, 3,
>> -                          content_type, false,
>> -                          true);
>> -        }
>> -
>> -        if (data.cp_tests & CP_MEI_RELOAD) {
>> -            igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
>> -                     "mei_hdcp unload failed");
>> +    test_cp_enable_with_retry(output, s, 3, content_type, false,
>> +                  false);
>> +
>> +    if (data.cp_tests & CP_TYPE_CHANGE) {
>> +        /* Type 1 -> Type 0 */
>> +        test_cp_enable_with_retry(output, s, 3,
>> +                      HDCP_CONTENT_TYPE_0, false,
>> +                      true);
>> +        /* Type 0 -> Type 1 */
>> +        test_cp_enable_with_retry(output, s, 3,
>> +                      content_type, false,
>> +                      true);
>> +    }
>>   -            /* Expected to fail */
>> -            test_cp_enable_with_retry(output, s, 3,
>> -                          content_type, true, false);
>> +    if (data.cp_tests & CP_MEI_RELOAD) {
>> +        igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
>> +                 "mei_hdcp unload failed");
>>   -            igt_assert_f(!igt_kmod_load("mei_hdcp", NULL),
>> -                     "mei_hdcp load failed");
>> +        /* Expected to fail */
>> +        test_cp_enable_with_retry(output, s, 3,
>> +                      content_type, true, false);
>>   -            /* Expected to pass */
>> -            test_cp_enable_with_retry(output, s, 3,
>> -                          content_type, false, false);
>> -        }
>> +        igt_assert_f(!igt_kmod_load("mei_hdcp", NULL),
>> +                 "mei_hdcp load failed");
>>   -        if (data.cp_tests & CP_LIC)
>> -            test_cp_lic(output);
>> +        /* Expected to pass */
>> +        test_cp_enable_with_retry(output, s, 3,
>> +                      content_type, false, false);
>> +    }
>>   -        if (data.cp_tests & CP_DPMS) {
>> -            igt_pipe_set_prop_value(display, pipe,
>> -                        IGT_CRTC_ACTIVE, 0);
>> -            igt_display_commit2(display, s);
>> +    if (data.cp_tests & CP_LIC)
>> +        test_cp_lic(output);
>>   -            igt_pipe_set_prop_value(display, pipe,
>> -                        IGT_CRTC_ACTIVE, 1);
>> -            igt_display_commit2(display, s);
>> +    if (data.cp_tests & CP_DPMS) {
>> +        igt_pipe_set_prop_value(display, pipe,
>> +                    IGT_CRTC_ACTIVE, 0);
>> +        igt_display_commit2(display, s);
>>   -            ret = wait_for_prop_value(output, CP_ENABLED,
>> -                          KERNEL_AUTH_TIME_ALLOWED_MSEC);
>> -            if (!ret)
>> -                test_cp_enable_with_retry(output, s, 2,
>> -                              content_type, false,
>> -                              false);
>> -        }
>> +        igt_pipe_set_prop_value(display, pipe,
>> +                    IGT_CRTC_ACTIVE, 1);
>> +        igt_display_commit2(display, s);
>>   -        test_cp_disable(output, s);
>> -        primary = igt_output_get_plane_type(output,
>> -                            DRM_PLANE_TYPE_PRIMARY);
>> -        igt_plane_set_fb(primary, NULL);
>> -        igt_output_set_pipe(output, PIPE_NONE);
>> -
>> -        /*
>> -         * Testing a output with a pipe is enough for HDCP
>> -         * testing. No ROI in testing the connector with other
>> -         * pipes. So Break the loop on pipe.
>> -         */
>> -        break;
>> +        ret = wait_for_prop_value(output, CP_ENABLED,
>> +                      KERNEL_AUTH_TIME_ALLOWED_MSEC);
>> +        if (!ret)
>> +            test_cp_enable_with_retry(output, s, 2,
>> +                          content_type, false,
>> +                          false);
>>       }
>>   }
>>   @@ -458,7 +426,8 @@ static bool sink_hdcp2_capable(igt_output_t 
>> *output)
>>       return strstr(buf, "HDCP2.2");
>>   }
>>   -static void prepare_modeset_on_mst_output(igt_output_t *output)
>> +static void
>> +prepare_modeset_on_mst_output(igt_output_t *output)
>>   {
>>       drmModeModeInfo *mode;
>>       igt_plane_t *primary;
>> @@ -477,7 +446,8 @@ static void 
>> prepare_modeset_on_mst_output(igt_output_t *output)
>>       igt_plane_set_size(primary, width, height);
>>   }
>>   -static bool output_hdcp_capable(igt_output_t *output, int 
>> content_type)
>> +static bool
>> +output_hdcp_capable(igt_output_t *output, int content_type)
>>   {
>>           if (!output->props[IGT_CONNECTOR_CONTENT_PROTECTION])
>>               return false;
>> @@ -499,6 +469,19 @@ static bool output_hdcp_capable(igt_output_t 
>> *output, int content_type)
>>           return true;
>>   }
>>   +static void
>> +test_fini(igt_output_t *output, enum igt_commit_style s)
>> +{
>> +    igt_plane_t *primary;
>> +
>> +    test_cp_disable(output, s);
>> +    primary = igt_output_get_plane_type(output,
>> +                        DRM_PLANE_TYPE_PRIMARY);
>> +    igt_plane_set_fb(primary, NULL);
>> +    igt_output_set_pipe(output, PIPE_NONE);
>> +    igt_display_commit2(&data.display, s);
>> +}
>> +
>>   static void
>>   test_content_protection(enum igt_commit_style s, int content_type)
>>   {
>> @@ -511,10 +494,27 @@ test_content_protection(enum igt_commit_style 
>> s, int content_type)
>>                     "mei_hdcp module is not loaded\n");
>>         for_each_connected_output(display, output) {
>> -        if (!output_hdcp_capable(output, content_type))
>> -            continue;
>> +        for_each_pipe(display, pipe) {
>> +            if (!igt_pipe_connector_valid(pipe, output))
>> +                continue;
>> +
>> +            igt_display_reset(display);
>> +            modeset_with_fb(pipe, output, s);
>> +
>> +            if (!output_hdcp_capable(output, content_type))
>> +                continue;
>> +
>> +            test_content_protection_on_output(output, pipe, s, 
>> content_type);
>> +            test_fini(output, s);
>> +
>> +            /*
>> +             * Testing a output with a pipe is enough for HDCP
>> +             * testing. No ROI in testing the connector with other
>> +             * pipes. So Break the loop on pipe.
>> +             */
>> +            break;
>> +        }
>>   -        test_content_protection_on_output(output, s, content_type);
>>           valid_tests++;
>>       }
>>   @@ -596,6 +596,7 @@ test_content_protection_mst(int content_type)
>>       igt_output_t *output;
>>       int valid_outputs = 0, dp_mst_outputs = 0, ret, count, max_pipe 
>> = 0, i;
>>       enum pipe pipe;
>> +    bool pipe_found;
>>       igt_output_t *mst_output[IGT_MAX_PIPES], 
>> *hdcp_mst_output[IGT_MAX_PIPES];
>>         for_each_pipe(display, pipe)
>> @@ -607,16 +608,20 @@ test_content_protection_mst(int content_type)
>>           if (!output_is_dp_mst(output, dp_mst_outputs))
>>               continue;
>>   -        igt_assert_f(igt_pipe_connector_valid(pipe, output), 
>> "Output-pipe combination invalid\n");
>> +        pipe_found = false;
>> +        for_each_pipe(display, pipe) {
>> +            if (igt_pipe_is_free(display, pipe) &&
>> +                igt_pipe_connector_valid(pipe, output)) {
>> +                pipe_found = true;
>> +                break;
>> +            }
>> +        }
>> +
>> +        igt_assert_f(pipe_found, "No valid pipe found for %s\n", 
>> output->name);
>>             igt_output_set_pipe(output, pipe);
>>           prepare_modeset_on_mst_output(output);
>>           mst_output[dp_mst_outputs++] = output;
>> -
>> -        pipe++;
>> -
>> -        if (pipe > max_pipe)
>> -            break;
>>       }
>>         igt_require_f(dp_mst_outputs > 1, "No DP MST set up with >= 2 
>> outputs found in a single topology\n");
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-09-22  6:47 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-13  9:04 [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_content_protection: Test Refactoring Karthik B S
2022-09-13  9:04 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_content_protection: Test Cleanup Karthik B S
2022-09-21 11:23   ` Modem, Bhanuprakash
2022-09-22  6:46     ` Karthik B S
2022-09-13  9:04 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_content_protectin: Convert test to dynamic Karthik B S
2022-09-21 11:54   ` Modem, Bhanuprakash
2022-09-13 14:10 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_content_protection: Test Refactoring Patchwork
2022-09-14  1:29 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.