All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] tests/kms_content_protection: Convert tests to Dynamic
@ 2022-09-01  6:37 Karthik B S
  2022-09-01  8:21 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Karthik B S @ 2022-09-01  6:37 UTC (permalink / raw)
  To: igt-dev

Covert the existing subtests to dynamic subtests at pipe/output level.
Also move the cleanup part outside the subtest so that it is run even if
a failure is seen in the subtest.

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

diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 3041f1cd..dde6345c 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -273,17 +273,6 @@ static void test_cp_enable_with_retry(igt_output_t *output,
 
 }
 
-static bool igt_pipe_is_free(igt_display_t *display, enum pipe pipe)
-{
-	int i;
-
-	for (i = 0; i < display->n_outputs; i++)
-		if (display->outputs[i].pending_pipe == pipe)
-			return false;
-
-	return true;
-}
-
 static void test_cp_lic(igt_output_t *output)
 {
 	bool ret;
@@ -317,90 +306,62 @@ 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");
+	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);
+	}
 
-			/* 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);
 	}
 }
 
@@ -499,26 +460,64 @@ 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);
+}
+
 static void
 test_content_protection(enum igt_commit_style s, int content_type)
 {
 	igt_display_t *display = &data.display;
 	igt_output_t *output;
+	enum pipe pipe;
 	int valid_tests = 0;
 
 	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);
+	}
+
+	igt_display_reset(display);
+
 	for_each_connected_output(display, output) {
 		if (!output_hdcp_capable(output, content_type))
 			continue;
 
-		test_content_protection_on_output(output, s, content_type);
+		for_each_pipe(display, pipe) {
+			if (!igt_pipe_connector_valid(pipe, output))
+				continue;
+
+			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
+			 * pipes. So Break the loop on pipe.
+			 */
+			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)
@@ -723,6 +722,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 {
@@ -733,107 +820,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);
-	}
-
-	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);
-	}
+					ret = write_srm_as_fw((const __u8 *)facsimile_srm,
+							     sizeof(facsimile_srm));
+					igt_assert_f(ret, "SRM update failed");
+				}
 
-	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] 7+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_content_protection: Convert tests to Dynamic
  2022-09-01  6:37 [igt-dev] [PATCH i-g-t] tests/kms_content_protection: Convert tests to Dynamic Karthik B S
@ 2022-09-01  8:21 ` Patchwork
  2022-09-01 23:30 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  2022-09-05  9:43 ` [igt-dev] [PATCH i-g-t] " Modem, Bhanuprakash
  2 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2022-09-01  8:21 UTC (permalink / raw)
  To: Karthik B S; +Cc: igt-dev

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

== Series Details ==

Series: tests/kms_content_protection: Convert tests to Dynamic
URL   : https://patchwork.freedesktop.org/series/107998/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12058 -> IGTPW_7716
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (37 -> 34)
------------------------------

  Missing    (3): fi-adl-ddr5 fi-hsw-4770 fi-bdw-samus 

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

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

### IGT changes ###

#### Suppressed ####

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

  * igt@i915_module_load@reload:
    - {bat-adln-1}:       [PASS][1] -> [DMESG-WARN][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/bat-adln-1/igt@i915_module_load@reload.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/bat-adln-1/igt@i915_module_load@reload.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@requests:
    - fi-pnv-d510:        [PASS][3] -> [DMESG-FAIL][4] ([i915#4528])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/fi-pnv-d510/igt@i915_selftest@live@requests.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/fi-pnv-d510/igt@i915_selftest@live@requests.html

  * igt@i915_suspend@basic-s3-without-i915:
    - fi-rkl-11600:       [PASS][5] -> [INCOMPLETE][6] ([i915#5982])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/fi-rkl-11600/igt@i915_suspend@basic-s3-without-i915.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/fi-rkl-11600/igt@i915_suspend@basic-s3-without-i915.html

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

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size:
    - fi-bsw-kefka:       [PASS][8] -> [FAIL][9] ([i915#6298])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html

  * igt@runner@aborted:
    - fi-pnv-d510:        NOTRUN -> [FAIL][10] ([fdo#109271] / [i915#2403] / [i915#4312])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/fi-pnv-d510/igt@runner@aborted.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s0@smem:
    - {bat-rplp-1}:       [DMESG-WARN][11] ([i915#2867]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/bat-rplp-1/igt@gem_exec_suspend@basic-s0@smem.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/bat-rplp-1/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@i915_selftest@live@hangcheck:
    - fi-hsw-g3258:       [INCOMPLETE][13] ([i915#3303] / [i915#4785]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/fi-hsw-g3258/igt@i915_selftest@live@hangcheck.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/fi-hsw-g3258/igt@i915_selftest@live@hangcheck.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions:
    - fi-bsw-kefka:       [FAIL][15] ([i915#6298]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions.html

  
#### Warnings ####

  * igt@i915_selftest@live@hangcheck:
    - bat-dg1-5:          [DMESG-FAIL][17] ([i915#4494] / [i915#4957]) -> [DMESG-FAIL][18] ([i915#4957])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/bat-dg1-5/igt@i915_selftest@live@hangcheck.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/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#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#2403]: https://gitlab.freedesktop.org/drm/intel/issues/2403
  [i915#2867]: https://gitlab.freedesktop.org/drm/intel/issues/2867
  [i915#3303]: https://gitlab.freedesktop.org/drm/intel/issues/3303
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4785]: https://gitlab.freedesktop.org/drm/intel/issues/4785
  [i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
  [i915#5153]: https://gitlab.freedesktop.org/drm/intel/issues/5153
  [i915#5982]: https://gitlab.freedesktop.org/drm/intel/issues/5982
  [i915#6298]: https://gitlab.freedesktop.org/drm/intel/issues/6298
  [i915#6599]: https://gitlab.freedesktop.org/drm/intel/issues/6599


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6639 -> IGTPW_7716

  CI-20190529: 20190529
  CI_DRM_12058: 2ef8278465adc6572e0d22dffbaa332d56b4b40c @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7716: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/index.html
  IGT_6639: ba61c48dba71d5597d7297a07dc3e307665f961b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_content_protection: Convert tests to Dynamic
  2022-09-01  6:37 [igt-dev] [PATCH i-g-t] tests/kms_content_protection: Convert tests to Dynamic Karthik B S
  2022-09-01  8:21 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2022-09-01 23:30 ` Patchwork
  2022-09-05  9:43 ` [igt-dev] [PATCH i-g-t] " Modem, Bhanuprakash
  2 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2022-09-01 23:30 UTC (permalink / raw)
  To: Karthik B S; +Cc: igt-dev

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

== Series Details ==

Series: tests/kms_content_protection: Convert tests to Dynamic
URL   : https://patchwork.freedesktop.org/series/107998/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12058_full -> IGTPW_7716_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (12 -> 10)
------------------------------

  Additional (1): shard-dg1 
  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_7716_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_7716/shard-apl3/igt@kms_content_protection@lic@pipe-a-dp-1.html

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

  
#### Suppressed ####

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

  * igt@i915_pm_rps@engine-order:
    - {shard-rkl}:        NOTRUN -> [FAIL][4]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-rkl-5/igt@i915_pm_rps@engine-order.html

  
New tests
---------

  New tests have been introduced between CI_DRM_12058_full and IGTPW_7716_full:

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

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

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

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

  * igt@kms_content_protection@lic@pipe-a-dp-1:
    - Statuses : 2 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 : 2 fail(s)
    - Exec time: [34.63, 34.66] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@drm_buddy@all:
    - shard-iclb:         NOTRUN -> [SKIP][5] ([i915#6433])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb6/igt@drm_buddy@all.html

  * igt@gem_create@create-ext-cpu-access-big:
    - shard-iclb:         NOTRUN -> [SKIP][6] ([i915#6335])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb5/igt@gem_create@create-ext-cpu-access-big.html

  * igt@gem_create@create-massive:
    - shard-snb:          NOTRUN -> [DMESG-WARN][7] ([i915#4991])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-snb4/igt@gem_create@create-massive.html

  * igt@gem_ctx_persistence@file:
    - shard-snb:          NOTRUN -> [SKIP][8] ([fdo#109271] / [i915#1099]) +4 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-snb4/igt@gem_ctx_persistence@file.html

  * igt@gem_eio@in-flight-contexts-immediate:
    - shard-tglb:         [PASS][9] -> [TIMEOUT][10] ([i915#3063])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-tglb5/igt@gem_eio@in-flight-contexts-immediate.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb2/igt@gem_eio@in-flight-contexts-immediate.html

  * igt@gem_eio@unwedge-stress:
    - shard-snb:          NOTRUN -> [FAIL][11] ([i915#3354])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-snb6/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_balancer@parallel-bb-first:
    - shard-iclb:         [PASS][12] -> [SKIP][13] ([i915#4525])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-iclb1/igt@gem_exec_balancer@parallel-bb-first.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb6/igt@gem_exec_balancer@parallel-bb-first.html

  * igt@gem_exec_balancer@parallel-contexts:
    - shard-iclb:         NOTRUN -> [SKIP][14] ([i915#4525]) +1 similar issue
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb5/igt@gem_exec_balancer@parallel-contexts.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-glk:          [PASS][15] -> [FAIL][16] ([i915#2842])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-glk8/igt@gem_exec_fair@basic-none-share@rcs0.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk1/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-tglb:         [PASS][17] -> [FAIL][18] ([i915#2842])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-tglb6/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb1/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-apl:          [PASS][19] -> [FAIL][20] ([i915#2842]) +1 similar issue
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl3/igt@gem_exec_fair@basic-pace-solo@rcs0.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl8/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace@rcs0:
    - shard-kbl:          [PASS][21] -> [FAIL][22] ([i915#2842]) +1 similar issue
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-kbl4/igt@gem_exec_fair@basic-pace@rcs0.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@gem_exec_fair@basic-pace@rcs0.html

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

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][24] ([i915#2842])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk7/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@gem_exec_params@no-blt:
    - shard-iclb:         NOTRUN -> [SKIP][25] ([fdo#109283]) +1 similar issue
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@gem_exec_params@no-blt.html

  * igt@gem_exec_params@rsvd2-dirt:
    - shard-tglb:         NOTRUN -> [SKIP][26] ([fdo#109283])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb1/igt@gem_exec_params@rsvd2-dirt.html

  * igt@gem_lmem_swapping@heavy-verify-random:
    - shard-kbl:          NOTRUN -> [SKIP][27] ([fdo#109271] / [i915#4613])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl1/igt@gem_lmem_swapping@heavy-verify-random.html

  * igt@gem_lmem_swapping@verify:
    - shard-iclb:         NOTRUN -> [SKIP][28] ([i915#4613])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@gem_lmem_swapping@verify.html
    - shard-apl:          NOTRUN -> [SKIP][29] ([fdo#109271] / [i915#4613]) +1 similar issue
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl7/igt@gem_lmem_swapping@verify.html
    - shard-tglb:         NOTRUN -> [SKIP][30] ([i915#4613])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb3/igt@gem_lmem_swapping@verify.html
    - shard-glk:          NOTRUN -> [SKIP][31] ([fdo#109271] / [i915#4613])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk1/igt@gem_lmem_swapping@verify.html

  * igt@gem_pxp@reject-modify-context-protection-off-2:
    - shard-iclb:         NOTRUN -> [SKIP][32] ([i915#4270]) +1 similar issue
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@gem_pxp@reject-modify-context-protection-off-2.html
    - shard-tglb:         NOTRUN -> [SKIP][33] ([i915#4270])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb3/igt@gem_pxp@reject-modify-context-protection-off-2.html

  * igt@gem_render_copy@yf-tiled-to-vebox-x-tiled:
    - shard-iclb:         NOTRUN -> [SKIP][34] ([i915#768])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb5/igt@gem_render_copy@yf-tiled-to-vebox-x-tiled.html

  * igt@gem_userptr_blits@access-control:
    - shard-tglb:         NOTRUN -> [SKIP][35] ([i915#3297])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb1/igt@gem_userptr_blits@access-control.html

  * igt@gem_userptr_blits@coherency-unsync:
    - shard-iclb:         NOTRUN -> [SKIP][36] ([i915#3297]) +1 similar issue
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb8/igt@gem_userptr_blits@coherency-unsync.html

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-apl:          NOTRUN -> [SKIP][37] ([fdo#109271] / [i915#3323])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_vm_create@invalid-create:
    - shard-snb:          NOTRUN -> [SKIP][38] ([fdo#109271]) +287 similar issues
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-snb5/igt@gem_vm_create@invalid-create.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-iclb:         NOTRUN -> [SKIP][39] ([i915#2856])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb8/igt@gen9_exec_parse@allowed-single.html

  * igt@i915_pm_dc@dc6-dpms:
    - shard-iclb:         [PASS][40] -> [FAIL][41] ([i915#454])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-iclb1/igt@i915_pm_dc@dc6-dpms.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb3/igt@i915_pm_dc@dc6-dpms.html

  * igt@i915_pm_rpm@cursor:
    - shard-apl:          [PASS][42] -> [DMESG-WARN][43] ([i915#165] / [i915#62]) +7 similar issues
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl3/igt@i915_pm_rpm@cursor.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@i915_pm_rpm@cursor.html

  * igt@i915_query@query-topology-known-pci-ids:
    - shard-iclb:         NOTRUN -> [SKIP][44] ([fdo#109303])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb8/igt@i915_query@query-topology-known-pci-ids.html

  * igt@i915_selftest@live@hangcheck:
    - shard-snb:          [PASS][45] -> [INCOMPLETE][46] ([i915#3921])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-snb6/igt@i915_selftest@live@hangcheck.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-snb4/igt@i915_selftest@live@hangcheck.html
    - shard-tglb:         [PASS][47] -> [DMESG-WARN][48] ([i915#5591])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-tglb1/igt@i915_selftest@live@hangcheck.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb2/igt@i915_selftest@live@hangcheck.html

  * igt@i915_suspend@debugfs-reader:
    - shard-kbl:          [PASS][49] -> [DMESG-WARN][50] ([i915#180]) +11 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-kbl4/igt@i915_suspend@debugfs-reader.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@i915_suspend@debugfs-reader.html

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-tglb:         NOTRUN -> [SKIP][51] ([i915#3826])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb1/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
    - shard-iclb:         NOTRUN -> [SKIP][52] ([i915#3826])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb1/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_atomic@atomic_plane_damage:
    - shard-iclb:         NOTRUN -> [SKIP][53] ([i915#4765])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@kms_atomic@atomic_plane_damage.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-180:
    - shard-iclb:         NOTRUN -> [SKIP][54] ([i915#5286]) +3 similar issues
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb5/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-180:
    - shard-tglb:         NOTRUN -> [SKIP][55] ([i915#5286]) +2 similar issues
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb6/igt@kms_big_fb@4-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@linear-32bpp-rotate-270:
    - shard-tglb:         NOTRUN -> [SKIP][56] ([fdo#111614]) +1 similar issue
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb3/igt@kms_big_fb@linear-32bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-90:
    - shard-iclb:         NOTRUN -> [SKIP][57] ([fdo#110725] / [fdo#111614]) +2 similar issues
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb6/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0:
    - shard-tglb:         NOTRUN -> [SKIP][58] ([fdo#111615]) +1 similar issue
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180:
    - shard-apl:          [PASS][59] -> [DMESG-WARN][60] ([i915#165] / [i915#180] / [i915#62]) +4 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl7/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-iclb:         NOTRUN -> [SKIP][61] ([fdo#110723])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb1/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_joiner@basic:
    - shard-iclb:         NOTRUN -> [SKIP][62] ([i915#2705])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb6/igt@kms_big_joiner@basic.html
    - shard-tglb:         NOTRUN -> [SKIP][63] ([i915#2705])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb3/igt@kms_big_joiner@basic.html

  * igt@kms_ccs@pipe-a-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc:
    - shard-glk:          NOTRUN -> [SKIP][64] ([fdo#109271] / [i915#3886])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk5/igt@kms_ccs@pipe-a-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-b-bad-rotation-90-4_tiled_dg2_rc_ccs_cc:
    - shard-tglb:         NOTRUN -> [SKIP][65] ([i915#6095]) +2 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb3/igt@kms_ccs@pipe-b-bad-rotation-90-4_tiled_dg2_rc_ccs_cc.html

  * igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc:
    - shard-apl:          NOTRUN -> [SKIP][66] ([fdo#109271] / [i915#3886]) +4 similar issues
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-b-crc-primary-rotation-180-y_tiled_gen12_mc_ccs:
    - shard-kbl:          NOTRUN -> [SKIP][67] ([fdo#109271] / [i915#3886]) +3 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl1/igt@kms_ccs@pipe-b-crc-primary-rotation-180-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-b-crc-sprite-planes-basic-yf_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][68] ([fdo#111615] / [i915#3689]) +1 similar issue
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb1/igt@kms_ccs@pipe-b-crc-sprite-planes-basic-yf_tiled_ccs.html

  * igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_dg2_mc_ccs:
    - shard-iclb:         NOTRUN -> [SKIP][69] ([fdo#109278]) +14 similar issues
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb3/igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_dg2_mc_ccs.html

  * igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_dg2_rc_ccs_cc:
    - shard-tglb:         NOTRUN -> [SKIP][70] ([i915#3689] / [i915#6095]) +1 similar issue
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb6/igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_dg2_rc_ccs_cc.html

  * igt@kms_ccs@pipe-c-missing-ccs-buffer-y_tiled_gen12_mc_ccs:
    - shard-iclb:         NOTRUN -> [SKIP][71] ([fdo#109278] / [i915#3886]) +3 similar issues
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@kms_ccs@pipe-c-missing-ccs-buffer-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-c-random-ccs-data-y_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][72] ([i915#3689]) +2 similar issues
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb1/igt@kms_ccs@pipe-c-random-ccs-data-y_tiled_ccs.html

  * igt@kms_chamelium@common-hpd-after-suspend:
    - shard-apl:          NOTRUN -> [SKIP][73] ([fdo#109271] / [fdo#111827]) +6 similar issues
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl3/igt@kms_chamelium@common-hpd-after-suspend.html

  * igt@kms_chamelium@dp-edid-change-during-suspend:
    - shard-glk:          NOTRUN -> [SKIP][74] ([fdo#109271] / [fdo#111827]) +5 similar issues
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk5/igt@kms_chamelium@dp-edid-change-during-suspend.html

  * igt@kms_chamelium@hdmi-cmp-planar-formats:
    - shard-iclb:         NOTRUN -> [SKIP][75] ([fdo#109284] / [fdo#111827]) +2 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb8/igt@kms_chamelium@hdmi-cmp-planar-formats.html
    - shard-tglb:         NOTRUN -> [SKIP][76] ([fdo#109284] / [fdo#111827]) +1 similar issue
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb3/igt@kms_chamelium@hdmi-cmp-planar-formats.html

  * igt@kms_chamelium@hdmi-frame-dump:
    - shard-kbl:          NOTRUN -> [SKIP][77] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@kms_chamelium@hdmi-frame-dump.html

  * igt@kms_chamelium@vga-hpd-after-suspend:
    - shard-snb:          NOTRUN -> [SKIP][78] ([fdo#109271] / [fdo#111827]) +9 similar issues
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-snb5/igt@kms_chamelium@vga-hpd-after-suspend.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-tglb:         NOTRUN -> [SKIP][79] ([i915#3116] / [i915#3299])
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb7/igt@kms_content_protection@dp-mst-type-1.html
    - shard-iclb:         NOTRUN -> [SKIP][80] ([i915#3116])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@legacy:
    - shard-iclb:         NOTRUN -> [SKIP][81] ([fdo#109300] / [fdo#111066])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb6/igt@kms_content_protection@legacy.html

  * {igt@kms_content_protection@legacy@pipe-a-dp-1} (NEW):
    - shard-kbl:          NOTRUN -> [INCOMPLETE][82] ([i915#6637]) +3 similar issues
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl4/igt@kms_content_protection@legacy@pipe-a-dp-1.html

  * igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium:
    - shard-iclb:         NOTRUN -> [SKIP][83] ([i915#3528])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb3/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_draw_crc@draw-method-rgb565-blt-4tiled:
    - shard-tglb:         NOTRUN -> [SKIP][84] ([i915#5287])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb5/igt@kms_draw_crc@draw-method-rgb565-blt-4tiled.html

  * igt@kms_draw_crc@draw-method-xrgb8888-mmap-cpu-4tiled:
    - shard-iclb:         NOTRUN -> [SKIP][85] ([i915#5287]) +1 similar issue
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb1/igt@kms_draw_crc@draw-method-xrgb8888-mmap-cpu-4tiled.html

  * igt@kms_flip@2x-flip-vs-panning-vs-hang:
    - shard-tglb:         NOTRUN -> [SKIP][86] ([fdo#109274] / [fdo#111825] / [i915#3637]) +2 similar issues
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb2/igt@kms_flip@2x-flip-vs-panning-vs-hang.html

  * igt@kms_flip@2x-flip-vs-rmfb-interruptible:
    - shard-iclb:         NOTRUN -> [SKIP][87] ([fdo#109274]) +5 similar issues
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb8/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@c-hdmi-a1:
    - shard-glk:          [PASS][88] -> [FAIL][89] ([i915#79])
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-glk3/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-hdmi-a1.html
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk3/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-hdmi-a1.html

  * igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible@b-dp1:
    - shard-apl:          NOTRUN -> [DMESG-WARN][90] ([i915#62]) +3 similar issues
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible@b-dp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-valid-mode:
    - shard-tglb:         NOTRUN -> [SKIP][91] ([i915#2672])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb5/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-valid-mode:
    - shard-iclb:         NOTRUN -> [SKIP][92] ([i915#2672]) +11 similar issues
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb1/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling@pipe-a-default-mode:
    - shard-iclb:         [PASS][93] -> [SKIP][94] ([i915#3555])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-iclb3/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling@pipe-a-default-mode.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling@pipe-a-default-mode.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-cpu:
    - shard-tglb:         NOTRUN -> [SKIP][95] ([i915#6497]) +3 similar issues
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff:
    - shard-kbl:          NOTRUN -> [SKIP][96] ([fdo#109271]) +82 similar issues
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt:
    - shard-tglb:         NOTRUN -> [SKIP][97] ([fdo#109280] / [fdo#111825]) +11 similar issues
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb5/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-onoff:
    - shard-iclb:         NOTRUN -> [SKIP][98] ([fdo#109280]) +18 similar issues
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-onoff.html

  * igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1:
    - shard-kbl:          [PASS][99] -> [FAIL][100] ([i915#1188])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-kbl7/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl4/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1.html

  * igt@kms_lease@lease-uevent:
    - shard-apl:          [PASS][101] -> [DMESG-WARN][102] ([i915#62]) +16 similar issues
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl6/igt@kms_lease@lease-uevent.html
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@kms_lease@lease-uevent.html

  * igt@kms_panel_fitting@atomic-fastset@pipe-b-edp-1:
    - shard-iclb:         [PASS][103] -> [DMESG-WARN][104] ([i915#6316])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-iclb2/igt@kms_panel_fitting@atomic-fastset@pipe-b-edp-1.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@kms_panel_fitting@atomic-fastset@pipe-b-edp-1.html

  * igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c:
    - shard-iclb:         NOTRUN -> [SKIP][105] ([fdo#109289]) +1 similar issue
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb5/igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c.html
    - shard-tglb:         NOTRUN -> [SKIP][106] ([fdo#109289])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb5/igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c.html

  * igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb:
    - shard-kbl:          NOTRUN -> [FAIL][107] ([i915#265])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl4/igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb.html

  * igt@kms_plane_lowres@tiling-yf:
    - shard-tglb:         NOTRUN -> [SKIP][108] ([fdo#112054])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb6/igt@kms_plane_lowres@tiling-yf.html

  * igt@kms_plane_lowres@tiling-yf@pipe-b-edp-1:
    - shard-iclb:         NOTRUN -> [SKIP][109] ([i915#3536]) +2 similar issues
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb7/igt@kms_plane_lowres@tiling-yf@pipe-b-edp-1.html

  * igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-25@pipe-c-edp-1:
    - shard-iclb:         NOTRUN -> [SKIP][110] ([i915#5176]) +2 similar issues
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb1/igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-25@pipe-c-edp-1.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-c-dp-1:
    - shard-apl:          NOTRUN -> [SKIP][111] ([fdo#109271]) +122 similar issues
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-c-dp-1.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-c-hdmi-a-1:
    - shard-glk:          NOTRUN -> [SKIP][112] ([fdo#109271]) +75 similar issues
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk3/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-c-hdmi-a-1.html

  * igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-fully-sf:
    - shard-iclb:         NOTRUN -> [SKIP][113] ([i915#658])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb6/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area:
    - shard-apl:          NOTRUN -> [SKIP][114] ([fdo#109271] / [i915#658]) +2 similar issues
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl7/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html
    - shard-tglb:         NOTRUN -> [SKIP][115] ([i915#2920])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb3/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html
    - shard-glk:          NOTRUN -> [SKIP][116] ([fdo#109271] / [i915#658]) +2 similar issues
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk1/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html
    - shard-iclb:         NOTRUN -> [SKIP][117] ([i915#2920])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-tglb:         NOTRUN -> [SKIP][118] ([i915#1911]) +1 similar issue
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb5/igt@kms_psr2_su@page_flip-p010.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-iclb:         NOTRUN -> [SKIP][119] ([fdo#109642] / [fdo#111068] / [i915#658]) +1 similar issue
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb3/igt@kms_psr2_su@page_flip-xrgb8888.html
    - shard-kbl:          NOTRUN -> [SKIP][120] ([fdo#109271] / [i915#658]) +1 similar issue
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl4/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@psr2_cursor_mmap_gtt:
    - shard-iclb:         [PASS][121] -> [SKIP][122] ([fdo#109441]) +1 similar issue
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_gtt.html
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb6/igt@kms_psr@psr2_cursor_mmap_gtt.html

  * igt@kms_psr@psr2_sprite_mmap_cpu:
    - shard-iclb:         NOTRUN -> [SKIP][123] ([fdo#109441])
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb8/igt@kms_psr@psr2_sprite_mmap_cpu.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-iclb:         NOTRUN -> [SKIP][124] ([i915#5519])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb8/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_setmode@basic@pipe-a-vga-1:
    - shard-snb:          NOTRUN -> [FAIL][125] ([i915#5465]) +1 similar issue
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-snb5/igt@kms_setmode@basic@pipe-a-vga-1.html

  * igt@kms_vblank@pipe-a-wait-idle-hang:
    - shard-apl:          NOTRUN -> [DMESG-WARN][126] ([i915#165] / [i915#62]) +2 similar issues
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@kms_vblank@pipe-a-wait-idle-hang.html

  * igt@kms_vblank@pipe-d-wait-idle:
    - shard-kbl:          NOTRUN -> [SKIP][127] ([fdo#109271] / [i915#533])
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl1/igt@kms_vblank@pipe-d-wait-idle.html

  * igt@nouveau_crc@pipe-a-source-outp-inactive:
    - shard-iclb:         NOTRUN -> [SKIP][128] ([i915#2530])
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb8/igt@nouveau_crc@pipe-a-source-outp-inactive.html

  * igt@nouveau_crc@pipe-d-ctx-flip-skip-current-frame:
    - shard-iclb:         NOTRUN -> [SKIP][129] ([fdo#109278] / [i915#2530])
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb7/igt@nouveau_crc@pipe-d-ctx-flip-skip-current-frame.html
    - shard-tglb:         NOTRUN -> [SKIP][130] ([i915#2530])
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb6/igt@nouveau_crc@pipe-d-ctx-flip-skip-current-frame.html

  * igt@prime_nv_api@nv_self_import_to_different_fd:
    - shard-iclb:         NOTRUN -> [SKIP][131] ([fdo#109291]) +2 similar issues
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@prime_nv_api@nv_self_import_to_different_fd.html

  * igt@prime_nv_test@nv_i915_sharing:
    - shard-tglb:         NOTRUN -> [SKIP][132] ([fdo#109291])
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb5/igt@prime_nv_test@nv_i915_sharing.html

  * igt@sysfs_clients@fair-7:
    - shard-kbl:          NOTRUN -> [SKIP][133] ([fdo#109271] / [i915#2994]) +1 similar issue
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl4/igt@sysfs_clients@fair-7.html
    - shard-tglb:         NOTRUN -> [SKIP][134] ([i915#2994])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb7/igt@sysfs_clients@fair-7.html
    - shard-glk:          NOTRUN -> [SKIP][135] ([fdo#109271] / [i915#2994])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk6/igt@sysfs_clients@fair-7.html

  * igt@sysfs_clients@pidname:
    - shard-iclb:         NOTRUN -> [SKIP][136] ([i915#2994]) +1 similar issue
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb8/igt@sysfs_clients@pidname.html

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

  
#### Possible fixes ####

  * igt@gem_busy@close-race:
    - shard-snb:          [TIMEOUT][138] ([i915#5748]) -> [PASS][139]
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-snb4/igt@gem_busy@close-race.html
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-snb6/igt@gem_busy@close-race.html

  * igt@gem_eio@unwedge-stress:
    - shard-tglb:         [TIMEOUT][140] ([i915#3063]) -> [PASS][141]
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-tglb7/igt@gem_eio@unwedge-stress.html
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb7/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_balancer@parallel-keep-in-fence:
    - shard-iclb:         [SKIP][142] ([i915#4525]) -> [PASS][143] +3 similar issues
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-iclb3/igt@gem_exec_balancer@parallel-keep-in-fence.html
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb1/igt@gem_exec_balancer@parallel-keep-in-fence.html

  * igt@gem_exec_endless@dispatch@bcs0:
    - {shard-rkl}:        [SKIP][144] ([i915#6247]) -> [PASS][145]
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-rkl-5/igt@gem_exec_endless@dispatch@bcs0.html
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-rkl-4/igt@gem_exec_endless@dispatch@bcs0.html

  * igt@gem_exec_fair@basic-flow@rcs0:
    - shard-tglb:         [FAIL][146] ([i915#2842]) -> [PASS][147]
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-tglb6/igt@gem_exec_fair@basic-flow@rcs0.html
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb7/igt@gem_exec_fair@basic-flow@rcs0.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - {shard-tglu}:       [FAIL][148] ([i915#2842]) -> [PASS][149]
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-tglu-4/igt@gem_exec_fair@basic-none-share@rcs0.html
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglu-2/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - shard-apl:          [FAIL][150] ([i915#2842]) -> [PASS][151]
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl6/igt@gem_exec_fair@basic-none-solo@rcs0.html
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace@vcs0:
    - shard-kbl:          [FAIL][152] ([i915#2842]) -> [PASS][153] +1 similar issue
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-kbl4/igt@gem_exec_fair@basic-pace@vcs0.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@gem_exec_fair@basic-pace@vcs0.html

  * igt@gem_exec_fair@basic-sync@rcs0:
    - shard-kbl:          [SKIP][154] ([fdo#109271]) -> [PASS][155]
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-kbl1/igt@gem_exec_fair@basic-sync@rcs0.html
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@gem_exec_fair@basic-sync@rcs0.html

  * igt@gem_softpin@evict-single-offset:
    - shard-tglb:         [FAIL][156] ([i915#4171]) -> [PASS][157]
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-tglb5/igt@gem_softpin@evict-single-offset.html
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb1/igt@gem_softpin@evict-single-offset.html

  * igt@i915_pm_dc@dc5-psr:
    - shard-tglb:         [FAIL][158] ([i915#3989]) -> [PASS][159]
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-tglb3/igt@i915_pm_dc@dc5-psr.html
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-tglb3/igt@i915_pm_dc@dc5-psr.html

  * igt@kms_big_fb@linear-16bpp-rotate-0:
    - shard-glk:          [FAIL][160] ([i915#1888]) -> [PASS][161]
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-glk5/igt@kms_big_fb@linear-16bpp-rotate-0.html
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk7/igt@kms_big_fb@linear-16bpp-rotate-0.html

  * igt@kms_ccs@pipe-b-crc-primary-rotation-180-yf_tiled_ccs:
    - shard-glk:          [FAIL][162] -> [PASS][163]
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-glk6/igt@kms_ccs@pipe-b-crc-primary-rotation-180-yf_tiled_ccs.html
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk1/igt@kms_ccs@pipe-b-crc-primary-rotation-180-yf_tiled_ccs.html

  * igt@kms_flip@flip-vs-suspend-interruptible@c-dp1:
    - shard-apl:          [DMESG-WARN][164] ([i915#180]) -> [PASS][165] +1 similar issue
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl2/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl3/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html

  * igt@kms_psr@psr2_cursor_blt:
    - shard-iclb:         [SKIP][166] ([fdo#109441]) -> [PASS][167] +1 similar issue
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-iclb5/igt@kms_psr@psr2_cursor_blt.html
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@kms_psr@psr2_cursor_blt.html

  * igt@perf@polling-parameterized:
    - shard-iclb:         [FAIL][168] ([i915#5639]) -> [PASS][169]
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-iclb1/igt@perf@polling-parameterized.html
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb3/igt@perf@polling-parameterized.html
    - shard-glk:          [FAIL][170] ([i915#5639]) -> [PASS][171]
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-glk3/igt@perf@polling-parameterized.html
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-glk8/igt@perf@polling-parameterized.html

  
#### Warnings ####

  * igt@gem_userptr_blits@input-checking:
    - shard-apl:          [DMESG-WARN][172] ([i915#4991]) -> [DMESG-WARN][173] ([i915#4991] / [i915#62])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl3/igt@gem_userptr_blits@input-checking.html
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@gem_userptr_blits@input-checking.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-kbl:          [FAIL][174] ([i915#4767]) -> [INCOMPLETE][175] ([i915#180] / [i915#4939] / [i915#6598])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-kbl4/igt@kms_fbcon_fbt@fbc-suspend.html
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl4/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max:
    - shard-apl:          [FAIL][176] ([fdo#108145] / [i915#265]) -> [DMESG-FAIL][177] ([fdo#108145] / [i915#62])
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl3/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max.html
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max.html

  * igt@kms_psr2_sf@cursor-plane-move-continuous-sf:
    - shard-iclb:         [SKIP][178] ([i915#2920]) -> [SKIP][179] ([i915#658]) +1 similar issue
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-iclb2/igt@kms_psr2_sf@cursor-plane-move-continuous-sf.html
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb3/igt@kms_psr2_sf@cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-iclb:         [SKIP][180] ([fdo#109642] / [fdo#111068] / [i915#658]) -> [FAIL][181] ([i915#5939])
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-iclb1/igt@kms_psr2_su@page_flip-nv12.html
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-iclb2/igt@kms_psr2_su@page_flip-nv12.html

  * igt@runner@aborted:
    - shard-apl:          ([FAIL][182], [FAIL][183], [FAIL][184], [FAIL][185]) ([i915#180] / [i915#3002] / [i915#4312] / [i915#5257] / [i915#6599]) -> ([FAIL][186], [FAIL][187]) ([i915#3002] / [i915#4312] / [i915#5257] / [i915#6599])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl1/igt@runner@aborted.html
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl2/igt@runner@aborted.html
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl3/igt@runner@aborted.html
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-apl7/igt@runner@aborted.html
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl6/igt@runner@aborted.html
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-apl2/igt@runner@aborted.html
    - shard-kbl:          ([FAIL][188], [FAIL][189], [FAIL][190], [FAIL][191]) ([i915#180] / [i915#3002] / [i915#4312] / [i915#5257]) -> ([FAIL][192], [FAIL][193], [FAIL][194], [FAIL][195], [FAIL][196], [FAIL][197], [FAIL][198], [FAIL][199], [FAIL][200], [FAIL][201], [FAIL][202]) ([i915#180] / [i915#3002] / [i915#4312] / [i915#5257] / [i915#92])
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-kbl7/igt@runner@aborted.html
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-kbl7/igt@runner@aborted.html
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-kbl4/igt@runner@aborted.html
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12058/shard-kbl4/igt@runner@aborted.html
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@runner@aborted.html
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl4/igt@runner@aborted.html
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@runner@aborted.html
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@runner@aborted.html
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl4/igt@runner@aborted.html
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@runner@aborted.html
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@runner@aborted.html
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@runner@aborted.html
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@runner@aborted.html
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl7/igt@runner@aborted.html
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/shard-kbl4/igt@runner@aborted.html

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

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [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#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#110254]: https://bugs.freedesktop.org/show_bug.cgi?id=110254
  [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#111314]: https://bugs.freedesktop.org/show_bug.cgi?id=111314
  [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#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#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
  [i915#1257]: https://gitlab.freedesktop.org/drm/intel/issues/1257
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#165]: https://gitlab.freedesktop.org/drm/intel/issues/165
  [i915#1722]: https://gitlab.freedesktop.org/drm/intel/issues/1722
  [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
  [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [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#1911]: https://gitlab.freedesktop.org/drm/intel/issues/1911
  [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#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#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [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#3063]: https://gitlab.freedesktop.org/drm/intel/issues/3063
  [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#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#3354]: https://gitlab.freedesktop.org/drm/intel/issues/3354
  [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361
  [i915#3376]: https://gitlab.freedesktop.org/drm/intel/issues/3376
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [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#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [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#3692]: https://gitlab.freedesktop.org/drm/intel/issues/3692
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [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#3921]: https://gitlab.freedesktop.org/drm/intel/issues/3921
  [i915#3936]: https://gitlab.freedesktop.org/drm/intel/issues/3936
  [i915#3938]: https://gitlab.freedesktop.org/drm/intel/issues/3938
  [i915#3952]: https://gitlab.freedesktop.org/drm/intel/issues/3952
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#3989]: https://gitlab.freedesktop.org/drm/intel/issues/3989
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4171]: https://gitlab.freedesktop.org/drm/intel/issues/4171
  [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#426]: https://gitlab.freedesktop.org/drm/intel/issues/426
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4369]: https://gitlab.freedesktop.org/drm/intel/issues/4369
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4391]: https://gitlab.freedesktop.org/drm/intel/issues/4391
  [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4765]: https://gitlab.freedesktop.org/drm/intel/issues/4765
  [i915#4767]: https://gitlab.freedesktop.org/drm/intel/issues/4767
  [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4818]: https://gitlab.freedesktop.org/drm/intel/issues/4818
  [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4853]: https://gitlab.freedesktop.org/drm/intel/issues/4853
  [i915#4854]: https://gitlab.freedesktop.org/drm/intel/issues/4854
  [i915#4855]: https://gitlab.freedesktop.org/drm/intel/issues/4855
  [i915#4859]: https://gitlab.freedesktop.org/drm/intel/issues/4859
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4873]: https://gitlab.freedesktop.org/drm/intel/issues/4873
  [i915#4879]: https://gitlab.freedesktop.org/drm/intel/issues/4879
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [i915#4881]: https://gitlab.freedesktop.org/drm/intel/issues/4881
  [i915#4883]: https://gitlab.freedesktop.org/drm/intel/issues/4883
  [i915#4884]: https://gitlab.freedesktop.org/drm/intel/issues/4884
  [i915#4885]: https://gitlab.freedesktop.org/drm/intel/issues/4885
  [i915#4893]: https://gitlab.freedesktop.org/drm/intel/issues/4893
  [i915#4939]: https://gitlab.freedesktop.org/drm/intel/issues/4939
  [i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
  [i915#4958]: https://gitlab.freedesktop.org/drm/intel/issues/4958
  [i915#4991]: https://gitlab.freedesktop.org/drm/intel/issues/4991
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5182]: https://gitlab.freedesktop.org/drm/intel/issues/5182
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5257]: https://gitlab.freedesktop.org/drm/intel/issues/5257
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5287]: https://gitlab.freedesktop.org/drm/intel/issues/5287
  [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#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5465]: https://gitlab.freedesktop.org/drm/intel/issues/5465
  [i915#5519]: https://gitlab.freedesktop.org/drm/intel/issues/5519
  [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
  [i915#5591]: https://gitlab.freedesktop.org/drm/intel/issues/5591
  [i915#5639]: https://gitlab.freedesktop.org/drm/intel/issues/5639
  [i915#5723]: https://gitlab.freedesktop.org/drm/intel/issues/5723
  [i915#5748]: https://gitlab.freedesktop.org/drm/intel/issues/5748
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#5939]: https://gitlab.freedesktop.org/drm/intel/issues/5939
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230
  [i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245
  [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6316]: https://gitlab.freedesktop.org/drm/intel/issues/6316
  [i915#6331]: https://gitlab.freedesktop.org/drm/intel/issues/6331
  [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#6448]: https://gitlab.freedesktop.org/drm/intel/issues/6448
  [i915#6458]: https://gitlab.freedesktop.org/drm/intel/issues/6458
  [i915#6493]: https://gitlab.freedesktop.org/drm/intel/issues/6493
  [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#6598]: https://gitlab.freedesktop.org/drm/intel/issues/6598
  [i915#6599]: https://gitlab.freedesktop.org/drm/intel/issues/6599
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6637]: https://gitlab.freedesktop.org/drm/intel/issues/6637
  [i915#768]: https://gitlab.freedesktop.org/drm/intel/issues/768
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6639 -> IGTPW_7716
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_12058: 2ef8278465adc6572e0d22dffbaa332d56b4b40c @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7716: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7716/index.html
  IGT_6639: ba61c48dba71d5597d7297a07dc3e307665f961b @ 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_7716/index.html

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

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

* Re: [igt-dev] [PATCH i-g-t] tests/kms_content_protection: Convert tests to Dynamic
  2022-09-01  6:37 [igt-dev] [PATCH i-g-t] tests/kms_content_protection: Convert tests to Dynamic Karthik B S
  2022-09-01  8:21 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
  2022-09-01 23:30 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2022-09-05  9:43 ` Modem, Bhanuprakash
  2022-09-09  5:04   ` Karthik B S
  2 siblings, 1 reply; 7+ messages in thread
From: Modem, Bhanuprakash @ 2022-09-05  9:43 UTC (permalink / raw)
  To: Karthik B S, igt-dev

On Thu-01-09-2022 12:07 pm, Karthik B S wrote:
> Covert the existing subtests to dynamic subtests at pipe/output level.
> Also move the cleanup part outside the subtest so that it is run even if
> a failure is seen in the subtest.
> 
> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
> ---
>   tests/kms_content_protection.c | 366 ++++++++++++++++++---------------
>   1 file changed, 196 insertions(+), 170 deletions(-)
> 
> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> index 3041f1cd..dde6345c 100644
> --- a/tests/kms_content_protection.c
> +++ b/tests/kms_content_protection.c
> @@ -273,17 +273,6 @@ static void test_cp_enable_with_retry(igt_output_t *output,
>   
>   }
>   
> -static bool igt_pipe_is_free(igt_display_t *display, enum pipe pipe)
> -{
> -	int i;
> -
> -	for (i = 0; i < display->n_outputs; i++)
> -		if (display->outputs[i].pending_pipe == pipe)
> -			return false;
> -
> -	return true;
> -}
> -
>   static void test_cp_lic(igt_output_t *output)
>   {
>   	bool ret;
> @@ -317,90 +306,62 @@ 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");
> +	modeset_with_fb(pipe, output, s);

https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_content_protection.c#n169 


Overiding with default mode: Does it really required?

> +	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);
>   	}
>   }
>   
> @@ -499,26 +460,64 @@ static bool output_hdcp_capable(igt_output_t *output, int content_type)

Please fix the indentation in output_hdcp_capable()
https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_content_protection.c#n480 


>   		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);

Need a commit here.

> +}
> +
>   static void
>   test_content_protection(enum igt_commit_style s, int content_type)
>   {
>   	igt_display_t *display = &data.display;
>   	igt_output_t *output;
> +	enum pipe pipe;
>   	int valid_tests = 0;
>   
>   	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);
> +	}
> +
> +	igt_display_reset(display);

Reset could be inside igt_dynamic()?

> +
>   	for_each_connected_output(display, output) {
>   		if (!output_hdcp_capable(output, content_type))
>   			continue;
>   
> -		test_content_protection_on_output(output, s, content_type);
> +		for_each_pipe(display, pipe) {
> +			if (!igt_pipe_connector_valid(pipe, output))
> +				continue;
> +
> +			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
> +			 * pipes. So Break the loop on pipe.
> +			 */
> +			break;
> +		}
> +
>   		valid_tests++;
>   	}
>   
>   	igt_require_f(valid_tests, "No connector found with HDCP capability\n");

This check is not required, igt_subtest_with_dynamic() will throw a SKIP 
if igt_dynamic() is not executed.

> +
> +	if (data.cp_tests & CP_UEVENT)
> +		igt_cleanup_uevents(data.uevent_monitor);
>   }
>   
>   static int parse_path_blob(char *blob_data)
> @@ -723,6 +722,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 {
> @@ -733,107 +820,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);
> -	}
> -
> -	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);
> -	}
> +					ret = write_srm_as_fw((const __u8 *)facsimile_srm,
> +							     sizeof(facsimile_srm));
> +					igt_assert_f(ret, "SRM update failed");
> +				}
>   
> -	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);

https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_content_protection.c#n610

if pipe/output combo is invalid, we must try with another combo.

Also, do we need 2 or more outputs in case of MST?

> +			}
> +		}
>   	}
>   
>   	igt_fixture {

https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_content_protection.c#n840

Can we move test_content_protection_cleanup() to test_fini()?

- Bhanu


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

* Re: [igt-dev] [PATCH i-g-t] tests/kms_content_protection: Convert tests to Dynamic
  2022-09-05  9:43 ` [igt-dev] [PATCH i-g-t] " Modem, Bhanuprakash
@ 2022-09-09  5:04   ` Karthik B S
  2022-09-09 10:33     ` Kamil Konieczny
  0 siblings, 1 reply; 7+ messages in thread
From: Karthik B S @ 2022-09-09  5:04 UTC (permalink / raw)
  To: Modem, Bhanuprakash, igt-dev

On 9/5/2022 3:13 PM, Modem, Bhanuprakash wrote:
> On Thu-01-09-2022 12:07 pm, Karthik B S wrote:
>> Covert the existing subtests to dynamic subtests at pipe/output level.
>> Also move the cleanup part outside the subtest so that it is run even if
>> a failure is seen in the subtest.
>>
>> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
>> ---
>>   tests/kms_content_protection.c | 366 ++++++++++++++++++---------------
>>   1 file changed, 196 insertions(+), 170 deletions(-)
>>
>> diff --git a/tests/kms_content_protection.c 
>> b/tests/kms_content_protection.c
>> index 3041f1cd..dde6345c 100644
>> --- a/tests/kms_content_protection.c
>> +++ b/tests/kms_content_protection.c
>> @@ -273,17 +273,6 @@ static void 
>> test_cp_enable_with_retry(igt_output_t *output,
>>     }
>>   -static bool igt_pipe_is_free(igt_display_t *display, enum pipe pipe)
>> -{
>> -    int i;
>> -
>> -    for (i = 0; i < display->n_outputs; i++)
>> -        if (display->outputs[i].pending_pipe == pipe)
>> -            return false;
>> -
>> -    return true;
>> -}
>> -
>>   static void test_cp_lic(igt_output_t *output)
>>   {
>>       bool ret;
>> @@ -317,90 +306,62 @@ 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");
>> +    modeset_with_fb(pipe, output, s);

Hi,

Thank you for the review.

>
> https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_content_protection.c#n169 
>
>
> Overiding with default mode: Does it really required?
Agreed, don't think its required as we're trying to override with 
default mode only, will update this.
>
>> +    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);
>>       }
>>   }
>>   @@ -499,26 +460,64 @@ static bool output_hdcp_capable(igt_output_t 
>> *output, int content_type)
>
> Please fix the indentation in output_hdcp_capable()
> https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_content_protection.c#n480 
>
Sure, will fix this.
>
>>           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);
>
> Need a commit here.
Yes, will add this.
>
>> +}
>> +
>>   static void
>>   test_content_protection(enum igt_commit_style s, int content_type)
>>   {
>>       igt_display_t *display = &data.display;
>>       igt_output_t *output;
>> +    enum pipe pipe;
>>       int valid_tests = 0;
>>         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);
>> +    }
>> +
>> +    igt_display_reset(display);
>
> Reset could be inside igt_dynamic()?
I actually found an issue with the current test. Since the modeset is 
not being done before checking if output is HDCP capable, the test is 
skipping on the second output on MST configuration. So will move the 
modeset before the HDCP capable check and so will retain igt_reset also 
outside. Sounds good?
>
>> +
>>       for_each_connected_output(display, output) {
>>           if (!output_hdcp_capable(output, content_type))
>>               continue;
>>   -        test_content_protection_on_output(output, s, content_type);
>> +        for_each_pipe(display, pipe) {
>> +            if (!igt_pipe_connector_valid(pipe, output))
>> +                continue;
>> +
>> +            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
>> +             * pipes. So Break the loop on pipe.
>> +             */
>> +            break;
>> +        }
>> +
>>           valid_tests++;
>>       }
>>         igt_require_f(valid_tests, "No connector found with HDCP 
>> capability\n");
>
> This check is not required, igt_subtest_with_dynamic() will throw a 
> SKIP if igt_dynamic() is not executed.
Sure, will remove this.
>
>> +
>> +    if (data.cp_tests & CP_UEVENT)
>> +        igt_cleanup_uevents(data.uevent_monitor);
>>   }
>>     static int parse_path_blob(char *blob_data)
>> @@ -723,6 +722,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 {
>> @@ -733,107 +820,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);
>> -    }
>> -
>> -    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);
>> -    }
>> +                    ret = write_srm_as_fw((const __u8 *)facsimile_srm,
>> +                                 sizeof(facsimile_srm));
>> +                    igt_assert_f(ret, "SRM update failed");
>> +                }
>>   -    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);
>
> https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_content_protection.c#n610 
>
>
> if pipe/output combo is invalid, we must try with another combo.
Sure, will update this logic.
>
> Also, do we need 2 or more outputs in case of MST?
Yes, the test intends to test HDCP with MST config having 2 or more outputs.
>
>> +            }
>> +        }
>>       }
>>         igt_fixture {
>
> https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_content_protection.c#n840 
>
>
> Can we move test_content_protection_cleanup() to test_fini()?

This wouldn't be possible as we're using the same fb across all the 
subtests, we're removing the fb directly at the end.  And making sure 
all outputs have CP disabled. So could this be retained as is?

Thanks,
Karthik.B.S

>
> - Bhanu
>
>

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

* Re: [igt-dev] [PATCH i-g-t] tests/kms_content_protection: Convert tests to Dynamic
  2022-09-09  5:04   ` Karthik B S
@ 2022-09-09 10:33     ` Kamil Konieczny
  2022-09-12 10:19       ` Karthik B S
  0 siblings, 1 reply; 7+ messages in thread
From: Kamil Konieczny @ 2022-09-09 10:33 UTC (permalink / raw)
  To: igt-dev

Hi Karthik,

On 2022-09-09 at 10:34:27 +0530, Karthik B S wrote:
> On 9/5/2022 3:13 PM, Modem, Bhanuprakash wrote:
> > On Thu-01-09-2022 12:07 pm, Karthik B S wrote:
> > > Covert the existing subtests to dynamic subtests at pipe/output level.
> > > Also move the cleanup part outside the subtest so that it is run even if
> > > a failure is seen in the subtest.
> > > 
> > > Signed-off-by: Karthik B S <karthik.b.s@intel.com>
> > > ---
> > >   tests/kms_content_protection.c | 366 ++++++++++++++++++---------------
> > >   1 file changed, 196 insertions(+), 170 deletions(-)
> > > 
> > > diff --git a/tests/kms_content_protection.c
> > > b/tests/kms_content_protection.c
> > > index 3041f1cd..dde6345c 100644

[cut]

> > > +
> > >   static void
> > >   test_content_protection(enum igt_commit_style s, int content_type)
> > >   {
> > >       igt_display_t *display = &data.display;
> > >       igt_output_t *output;
> > > +    enum pipe pipe;
> > >       int valid_tests = 0;
> > >         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);
> > > +    }
> > > +
> > > +    igt_display_reset(display);
> > 
> > Reset could be inside igt_dynamic()?

> I actually found an issue with the current test. Since the modeset is not
> being done before checking if output is HDCP capable, the test is skipping
> on the second output on MST configuration. So will move the modeset before
> the HDCP capable check and so will retain igt_reset also outside. Sounds
> good?

imho if it is a fix, is it worth to do fix before convert to dynamic ?
What about sending fix first ?

--
Kamil

[cut]
> > 
> > https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_content_protection.c#n840
> > 
> > 
> > Can we move test_content_protection_cleanup() to test_fini()?
> 
> This wouldn't be possible as we're using the same fb across all the
> subtests, we're removing the fb directly at the end.  And making sure all
> outputs have CP disabled. So could this be retained as is?
> 
> Thanks,
> Karthik.B.S
> 
> > 
> > - Bhanu
> > 
> > 
> 

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

* Re: [igt-dev] [PATCH i-g-t] tests/kms_content_protection: Convert tests to Dynamic
  2022-09-09 10:33     ` Kamil Konieczny
@ 2022-09-12 10:19       ` Karthik B S
  0 siblings, 0 replies; 7+ messages in thread
From: Karthik B S @ 2022-09-12 10:19 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, Bhanuprakash Modem

On 9/9/2022 4:03 PM, Kamil Konieczny wrote:
> Hi Karthik,
>
> On 2022-09-09 at 10:34:27 +0530, Karthik B S wrote:
>> On 9/5/2022 3:13 PM, Modem, Bhanuprakash wrote:
>>> On Thu-01-09-2022 12:07 pm, Karthik B S wrote:
>>>> Covert the existing subtests to dynamic subtests at pipe/output level.
>>>> Also move the cleanup part outside the subtest so that it is run even if
>>>> a failure is seen in the subtest.
>>>>
>>>> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
>>>> ---
>>>>    tests/kms_content_protection.c | 366 ++++++++++++++++++---------------
>>>>    1 file changed, 196 insertions(+), 170 deletions(-)
>>>>
>>>> diff --git a/tests/kms_content_protection.c
>>>> b/tests/kms_content_protection.c
>>>> index 3041f1cd..dde6345c 100644
> [cut]
>
>>>> +
>>>>    static void
>>>>    test_content_protection(enum igt_commit_style s, int content_type)
>>>>    {
>>>>        igt_display_t *display = &data.display;
>>>>        igt_output_t *output;
>>>> +    enum pipe pipe;
>>>>        int valid_tests = 0;
>>>>          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);
>>>> +    }
>>>> +
>>>> +    igt_display_reset(display);
>>> Reset could be inside igt_dynamic()?
>> I actually found an issue with the current test. Since the modeset is not
>> being done before checking if output is HDCP capable, the test is skipping
>> on the second output on MST configuration. So will move the modeset before
>> the HDCP capable check and so will retain igt_reset also outside. Sounds
>> good?
> imho if it is a fix, is it worth to do fix before convert to dynamic ?
> What about sending fix first ?

Thank you for the review. Sure will split the patch and add the clean up 
in first patch and dynamic in second patch.

Regards,
Karthik.B.S
>
> --
> Kamil
>
> [cut]
>>> https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_content_protection.c#n840
>>>
>>>
>>> Can we move test_content_protection_cleanup() to test_fini()?
>> This wouldn't be possible as we're using the same fb across all the
>> subtests, we're removing the fb directly at the end.  And making sure all
>> outputs have CP disabled. So could this be retained as is?
>>
>> Thanks,
>> Karthik.B.S
>>
>>> - Bhanu
>>>
>>>

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

end of thread, other threads:[~2022-09-12 10:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-01  6:37 [igt-dev] [PATCH i-g-t] tests/kms_content_protection: Convert tests to Dynamic Karthik B S
2022-09-01  8:21 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2022-09-01 23:30 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2022-09-05  9:43 ` [igt-dev] [PATCH i-g-t] " Modem, Bhanuprakash
2022-09-09  5:04   ` Karthik B S
2022-09-09 10:33     ` Kamil Konieczny
2022-09-12 10:19       ` Karthik B S

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.