Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t 00/14] add test to validate fallback
@ 2024-08-25 18:14 Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 01/14] lib/igt_kms: add enum for link rate and lane count Kunal Joshi
                   ` (16 more replies)
  0 siblings, 17 replies; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

[1] provides debugfs interfaces to force link training
failures, retrain link, set/get current/max link rate/lane count.

add new test using newly exposed interfaces to validate fallback.

[1] https://patchwork.freedesktop.org/series/133624/

Kunal Joshi (14):
  lib/igt_kms: add enum for link rate and lane count
  lib/igt_kms: add helper to get current link rate/ lane count for
    connector
  lib/igt_kms: add function to get max link rate/lane count
  lib/igt_kms: add function to force link retrain
  lib/igt_kms: add function to force link training failure
  lib/igt_kms: add function to check if retrain disabled
  lib/igt_kms: add function to check force link training failure support
  lib/igt_kms: add helper to get pending lt failures
  lib/igt_kms: add helper to get pending retrain count
  lib/igt_kms: add helper to set connector link status
  lib/igt_kms: add function to reset link params
  lib/igt_kms: allow set and reset value to be same
  tests/intel/kms_dp_fallback: add test for validating fallback
  HAX: Do not merge

 lib/igt_kms.c                            | 334 ++++++++++++++-
 lib/igt_kms.h                            |  36 ++
 tests/intel-ci/fast-feedback.testlist    |   1 +
 tests/intel-ci/xe-fast-feedback.testlist |   2 +
 tests/intel/kms_fallback.c               | 506 +++++++++++++++++++++++
 tests/meson.build                        |   1 +
 6 files changed, 877 insertions(+), 3 deletions(-)
 create mode 100644 tests/intel/kms_fallback.c

-- 
2.43.0


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

* [PATCH i-g-t 01/14] lib/igt_kms: add enum for link rate and lane count
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-08-27  5:30   ` B, Jeevan
  2024-08-25 18:14 ` [PATCH i-g-t 02/14] lib/igt_kms: add helper to get current link rate/ lane count for connector Kunal Joshi
                   ` (15 subsequent siblings)
  16 siblings, 1 reply; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

add enums for link rate, lane count

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.h | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 25ba50916..999921f9f 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -258,6 +258,29 @@ enum intel_broadcast_rgb_mode {
 	BROADCAST_RGB_16_235
 };
 
+enum dp_link_rate {
+	DP_LINK_RATE_162000 = 162000,
+	DP_LINK_RATE_216000 = 216000,
+	DP_LINK_RATE_243000 = 243000,
+	DP_LINK_RATE_270000 = 270000,
+	DP_LINK_RATE_324000 = 324000,
+	DP_LINK_RATE_432000 = 432000,
+	DP_LINK_RATE_540000 = 540000,
+	DP_LINK_RATE_675000 = 675000,
+	DP_LINK_RATE_810000 = 810000,
+	DP_LINK_RATE_1000000 = 1000000,
+	DP_LINK_RATE_1350000 = 1350000,
+	DP_LINK_RATE_2000000 = 2000000
+};
+
+#define DP_MAX_LINK_RATE_COUNT 12
+
+enum dp_lane_count {
+	DP_LANE_COUNT_1 = 1,
+	DP_LANE_COUNT_2 = 2,
+	DP_LANE_COUNT_4 = 4
+};
+
 struct edid;
 
 bool kmstest_force_connector(int fd, drmModeConnector *connector,
-- 
2.43.0


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

* [PATCH i-g-t 02/14] lib/igt_kms: add helper to get current link rate/ lane count for connector
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 01/14] lib/igt_kms: add enum for link rate and lane count Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 03/14] lib/igt_kms: add function to get max link rate/lane count Kunal Joshi
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

i915_dp_force_(lane_count/link_rate) debugfs files expoose
current link rate/lane count for connector.add helper to get
current link rate/ lane count for connector

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h |  2 ++
 2 files changed, 60 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index dd530dbab..4ef7f4d7f 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6705,3 +6705,61 @@ int get_num_scalers(igt_display_t *display, enum pipe pipe)
 
 	return num_scalers;
 }
+
+/**
+ * igt_get_dp_link_rate_set_for_output:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ *
+ * Returns: Link rate set for the output.
+ */
+enum dp_link_rate igt_get_dp_link_rate_set_for_output(int drm_fd, igt_output_t *output)
+{
+	char buf[512];
+	int dir, res;
+	int link_rate;
+
+	igt_require_f(output->name, "Invalid output");
+	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
+	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
+				 igt_output_name(output));
+	res = igt_debugfs_simple_read(dir, "i915_dp_force_link_rate", buf, sizeof(buf));
+	close(dir);
+	igt_require(res > 0);
+
+	if (strstr(buf, "[auto]"))
+		igt_assert(sscanf(strstr(buf, "*") - 6, "%d", &link_rate) == 1);
+	else
+		igt_assert(sscanf(strstr(buf, "[") + 1, "%d", &link_rate) == 1);
+
+	return link_rate;
+}
+
+/**
+ * igt_get_dp_lane_count_set_for_output:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ *
+ * Returns: Lane count set for the output.
+ */
+enum dp_lane_count igt_get_dp_lane_count_set_for_output(int drm_fd, igt_output_t *output)
+{
+	char buf[512];
+	int dir, res;
+	int lane_count;
+
+	igt_require_f(output->name, "Invalid output");
+	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
+	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
+				 igt_output_name(output));
+	res = igt_debugfs_simple_read(dir, "i915_dp_force_lane_count", buf, sizeof(buf));
+	close(dir);
+	igt_require(res > 0);
+
+	if (strstr(buf, "[auto]"))
+		igt_assert(sscanf(strstr(buf, "*") - 2, "%d", &lane_count) == 1);
+	else
+		igt_assert(sscanf(strstr(buf, "[") + 1, "%d", &lane_count) == 1);
+
+	return lane_count;
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 999921f9f..9d42a2b35 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1247,5 +1247,7 @@ bool intel_pipe_output_combo_valid(igt_display_t *display);
 bool igt_check_output_is_dp_mst(igt_output_t *output);
 int igt_get_dp_mst_connector_id(igt_output_t *output);
 int get_num_scalers(igt_display_t *display, enum pipe pipe);
+enum dp_link_rate igt_get_dp_link_rate_set_for_output(int drm_fd, igt_output_t *output);
+enum dp_lane_count igt_get_dp_lane_count_set_for_output(int drm_fd, igt_output_t *output);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.43.0


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

* [PATCH i-g-t 03/14] lib/igt_kms: add function to get max link rate/lane count
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 01/14] lib/igt_kms: add enum for link rate and lane count Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 02/14] lib/igt_kms: add helper to get current link rate/ lane count for connector Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-09-04  3:59   ` Samala, Pranay
  2024-08-25 18:14 ` [PATCH i-g-t 04/14] lib/igt_kms: add function to force link retrain Kunal Joshi
                   ` (13 subsequent siblings)
  16 siblings, 1 reply; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

i915_dp_max_(lane_count/link_rate) debugfs files expose max link
rate/lane count for connector.add function to get max link rate/lane
lane count for connector

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h |  2 ++
 2 files changed, 60 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 4ef7f4d7f..21ea8550c 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6763,3 +6763,61 @@ enum dp_lane_count igt_get_dp_lane_count_set_for_output(int drm_fd, igt_output_t
 
 	return lane_count;
 }
+
+/**
+ * igt_get_dp_max_link_rate:
+ * @drm_fd: A drm file descriptor
+ * @output: The output to query
+ *
+ * Get the max link rate supported by the sink.
+ *
+ * Returns: Max link rate supported by the sink.
+ */
+enum dp_link_rate igt_get_dp_max_link_rate(int drm_fd, igt_output_t *output)
+{
+	char buf[512];
+	int dir, res;
+	int max_link_rate;
+
+	igt_require_f(output->name, "Invalid output");
+	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_DIRECTORY);
+	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
+				 igt_output_name(output));
+	res = igt_debugfs_simple_read(dir, "i915_dp_max_link_rate",
+								  buf, sizeof(buf));
+	close(dir);
+	igt_require_f(res > 0, "Couldn't read i915_dp_max_link_rate");
+
+	igt_assert(sscanf(buf, "%d", &max_link_rate) == 1);
+
+	return max_link_rate;
+}
+
+/**
+ * igt_get_dp_max_lane_count:
+ * @drm_fd: A drm file descriptor
+ * @output: The output to query
+ *
+ * Get the max lane count supported by the sink.
+ *
+ * Returns: Max lane count supported by the sink.
+ */
+enum dp_lane_count igt_get_dp_max_lane_count(int drm_fd, igt_output_t *output)
+{
+	char buf[512];
+	int dir, res;
+	int max_lane_count;
+
+	igt_require_f(output->name, "Invalid output");
+	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
+	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
+				 igt_output_name(output));
+	res = igt_debugfs_simple_read(dir, "i915_dp_max_lane_count",
+								  buf, sizeof(buf));
+	close(dir);
+	igt_require(res > 0);
+
+	igt_assert(sscanf(buf, "%d", &max_lane_count) == 1);
+
+	return max_lane_count;
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 9d42a2b35..1d3226c5c 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1249,5 +1249,7 @@ int igt_get_dp_mst_connector_id(igt_output_t *output);
 int get_num_scalers(igt_display_t *display, enum pipe pipe);
 enum dp_link_rate igt_get_dp_link_rate_set_for_output(int drm_fd, igt_output_t *output);
 enum dp_lane_count igt_get_dp_lane_count_set_for_output(int drm_fd, igt_output_t *output);
+enum dp_link_rate igt_get_dp_max_link_rate(int drm_fd, igt_output_t *output);
+enum dp_lane_count igt_get_dp_max_lane_count(int drm_fd, igt_output_t *output);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.43.0


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

* [PATCH i-g-t 04/14] lib/igt_kms: add function to force link retrain
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (2 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 03/14] lib/igt_kms: add function to get max link rate/lane count Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 05/14] lib/igt_kms: add function to force link training failure Kunal Joshi
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

i915_dp_force_link_retrain debugfs allow forcing retraing
on the connector. add a helper to write given retraining count
to the same.

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.c | 22 ++++++++++++++++++++++
 lib/igt_kms.h |  1 +
 2 files changed, 23 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 21ea8550c..553a08f2f 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6821,3 +6821,25 @@ enum dp_lane_count igt_get_dp_max_lane_count(int drm_fd, igt_output_t *output)
 
 	return max_lane_count;
 }
+
+/**
+ * igt_force_link_retrain:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ * @retrain_count: number of retraining required
+ *
+ * Force link retrain on the output.
+ */
+void igt_force_link_retrain(int drm_fd, igt_output_t *output, int retrain_count)
+{
+	int dir;
+	char value[2];
+
+	snprintf(value, sizeof(value), "%d", retrain_count);
+	igt_require_f(output->name, "Invalid output");
+	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
+	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
+			       igt_output_name(output));
+	igt_sysfs_write(dir, "i915_dp_force_link_retrain", value, sizeof(value));
+	close(dir);
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 1d3226c5c..9ba8c6394 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1251,5 +1251,6 @@ enum dp_link_rate igt_get_dp_link_rate_set_for_output(int drm_fd, igt_output_t *
 enum dp_lane_count igt_get_dp_lane_count_set_for_output(int drm_fd, igt_output_t *output);
 enum dp_link_rate igt_get_dp_max_link_rate(int drm_fd, igt_output_t *output);
 enum dp_lane_count igt_get_dp_max_lane_count(int drm_fd, igt_output_t *output);
+void igt_force_link_retrain(int drm_fd, igt_output_t *output, int retrain_count);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.43.0


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

* [PATCH i-g-t 05/14] lib/igt_kms: add function to force link training failure
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (3 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 04/14] lib/igt_kms: add function to force link retrain Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 06/14] lib/igt_kms: add function to check if retrain disabled Kunal Joshi
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

i915_dp_force_link_training_failure debugfs
file is used to force link training failure.
add a function to force link training failure.

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.c | 26 ++++++++++++++++++++++++++
 lib/igt_kms.h |  1 +
 2 files changed, 27 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 553a08f2f..683989e84 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6843,3 +6843,29 @@ void igt_force_link_retrain(int drm_fd, igt_output_t *output, int retrain_count)
 	igt_sysfs_write(dir, "i915_dp_force_link_retrain", value, sizeof(value));
 	close(dir);
 }
+
+/**
+ * igt_force_lt_failure:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ * @failure_count: 1 for same link param and
+ *                2 for reduced link params
+ *
+ * Force link training failure on the output.
+ * @failure_count: 1 for retraining with same link params
+ * 				   2 for retraining with reduced link params
+ */
+void igt_force_lt_failure(int drm_fd, igt_output_t *output, int failure_count)
+{
+	int dir;
+	char value[2];
+
+	snprintf(value, sizeof(value), "%d", failure_count);
+	igt_require_f(output->name, "Invalid output");
+	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
+	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
+			       igt_output_name(output));
+	igt_sysfs_write(dir, "i915_dp_force_link_training_failure",
+			     value, sizeof(value));
+	close(dir);
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 9ba8c6394..57829416a 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1252,5 +1252,6 @@ enum dp_lane_count igt_get_dp_lane_count_set_for_output(int drm_fd, igt_output_t
 enum dp_link_rate igt_get_dp_max_link_rate(int drm_fd, igt_output_t *output);
 enum dp_lane_count igt_get_dp_max_lane_count(int drm_fd, igt_output_t *output);
 void igt_force_link_retrain(int drm_fd, igt_output_t *output, int retrain_count);
+void igt_force_lt_failure(int drm_fd, igt_output_t *output, int failure_count);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.43.0


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

* [PATCH i-g-t 06/14] lib/igt_kms: add function to check if retrain disabled
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (4 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 05/14] lib/igt_kms: add function to force link training failure Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-09-04  5:13   ` Samala, Pranay
  2024-08-25 18:14 ` [PATCH i-g-t 07/14] lib/igt_kms: add function to check force link training failure support Kunal Joshi
                   ` (10 subsequent siblings)
  16 siblings, 1 reply; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

add helper to check if retraining is disabled,
retraining will be disable if we are at the lowest
link parameters or the lowest mode supported on a panel

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.c | 24 ++++++++++++++++++++++++
 lib/igt_kms.h |  1 +
 2 files changed, 25 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 683989e84..2720095d4 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6869,3 +6869,27 @@ void igt_force_lt_failure(int drm_fd, igt_output_t *output, int failure_count)
 			     value, sizeof(value));
 	close(dir);
 }
+
+/**
+ * igt_get_dp_link_retrain_disabled:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ *
+ * Returns: True if link retrain disabled, false otherwise
+ */
+bool igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output)
+{
+	int dir, res;
+	char buf[512];
+
+	igt_require_f(output->name, "Invalid output");
+	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
+	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
+			       igt_output_name(output));
+	res = igt_debugfs_simple_read(dir,
+				      "i915_dp_link_retrain_disabled",
+				      buf, sizeof(buf));
+	close(dir);
+	igt_require(res > 0);
+	return strstr(buf, "yes");
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 57829416a..2d69d794a 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1253,5 +1253,6 @@ enum dp_link_rate igt_get_dp_max_link_rate(int drm_fd, igt_output_t *output);
 enum dp_lane_count igt_get_dp_max_lane_count(int drm_fd, igt_output_t *output);
 void igt_force_link_retrain(int drm_fd, igt_output_t *output, int retrain_count);
 void igt_force_lt_failure(int drm_fd, igt_output_t *output, int failure_count);
+bool igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.43.0


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

* [PATCH i-g-t 07/14] lib/igt_kms: add function to check force link training failure support
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (5 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 06/14] lib/igt_kms: add function to check if retrain disabled Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-09-03  8:08   ` Samala, Pranay
  2024-08-25 18:14 ` [PATCH i-g-t 08/14] lib/igt_kms: add helper to get pending lt failures Kunal Joshi
                   ` (9 subsequent siblings)
  16 siblings, 1 reply; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

add helper to check if platform support forcing
link training failures

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.c | 25 +++++++++++++++++++++++++
 lib/igt_kms.h |  1 +
 2 files changed, 26 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 2720095d4..4ab47e2e9 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6893,3 +6893,28 @@ bool igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output)
 	igt_require(res > 0);
 	return strstr(buf, "yes");
 }
+
+/**
+ * Checks if the force link training failure debugfs
+ * is available for a specific output.
+ *
+ * @drmfd: file descriptor of the DRM device.
+ * @output: output to check.
+ * Returns:
+ *  true if the debugfs is available, false otherwise.
+ */
+bool igt_has_force_link_training_failure_debugfs(int drmfd, igt_output_t *output)
+{
+	int debugfs_fd, ret;
+	char buf[512];
+
+	igt_assert_f(output->name, "Invalid output\n");
+	debugfs_fd = igt_debugfs_connector_dir(drmfd, output->name, O_RDONLY);
+	if (debugfs_fd < 0)
+		return false;
+	ret = igt_debugfs_simple_read(debugfs_fd,
+				      "i915_dp_force_link_training_failure",
+				      buf, sizeof(buf));
+	close(debugfs_fd);
+	return ret >= 0;
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 2d69d794a..5ae324f6f 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1254,5 +1254,6 @@ enum dp_lane_count igt_get_dp_max_lane_count(int drm_fd, igt_output_t *output);
 void igt_force_link_retrain(int drm_fd, igt_output_t *output, int retrain_count);
 void igt_force_lt_failure(int drm_fd, igt_output_t *output, int failure_count);
 bool igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output);
+bool igt_has_force_link_training_failure_debugfs(int drmfd, igt_output_t *output);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.43.0


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

* [PATCH i-g-t 08/14] lib/igt_kms: add helper to get pending lt failures
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (6 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 07/14] lib/igt_kms: add function to check force link training failure support Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 09/14] lib/igt_kms: add helper to get pending retrain count Kunal Joshi
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

i915_dp_force_link_training_failure can be written to
written to trigger link trainig failures on retrain.
add helper to get pending link training failure count.

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.c | 23 +++++++++++++++++++++++
 lib/igt_kms.h |  1 +
 2 files changed, 24 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 4ab47e2e9..727fa83f1 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6918,3 +6918,26 @@ bool igt_has_force_link_training_failure_debugfs(int drmfd, igt_output_t *output
 	close(debugfs_fd);
 	return ret >= 0;
 }
+
+/**
+ * igt_get_dp_pending_lt_failures:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ *
+ * Returns: Number of pending link training failures.
+ */
+int igt_get_dp_pending_lt_failures(int drm_fd, igt_output_t *output)
+{
+	int dir, res, ret;
+	char buf[512];
+
+	igt_require_f(output->name, "Invalid output");
+	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
+	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
+			       igt_output_name(output));
+	res = igt_debugfs_simple_read(dir, "i915_dp_force_link_training_failure", buf, sizeof(buf));
+	close(dir);
+	igt_require(res > 0);
+	sscanf(buf, "%d", &ret);
+	return ret;
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 5ae324f6f..07dbcb263 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1255,5 +1255,6 @@ void igt_force_link_retrain(int drm_fd, igt_output_t *output, int retrain_count)
 void igt_force_lt_failure(int drm_fd, igt_output_t *output, int failure_count);
 bool igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output);
 bool igt_has_force_link_training_failure_debugfs(int drmfd, igt_output_t *output);
+int igt_get_dp_pending_lt_failures(int drm_fd, igt_output_t *output);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.43.0


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

* [PATCH i-g-t 09/14] lib/igt_kms: add helper to get pending retrain count
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (7 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 08/14] lib/igt_kms: add helper to get pending lt failures Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 10/14] lib/igt_kms: add helper to set connector link status Kunal Joshi
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

i915_dp_force_link_retrain can be written to trigger
link retraining. add helper to get pending retrainig
failure count.

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.c | 23 +++++++++++++++++++++++
 lib/igt_kms.h |  1 +
 2 files changed, 24 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 727fa83f1..91f75243d 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6941,3 +6941,26 @@ int igt_get_dp_pending_lt_failures(int drm_fd, igt_output_t *output)
 	sscanf(buf, "%d", &ret);
 	return ret;
 }
+
+/**
+ * igt_dp_pending_retrain:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ * 
+ * Returns: Number of pending link retrains.
+ */
+int igt_get_dp_pending_retrain(int drm_fd, igt_output_t *output)
+{
+	int dir, res, ret;
+	char buf[512];
+
+	igt_require_f(output->name, "Invalid output");
+	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
+	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
+			       igt_output_name(output));
+	res = igt_debugfs_simple_read(dir, "i915_dp_force_link_retrain", buf, sizeof(buf));
+	close(dir);
+	igt_require(res > 0);
+	sscanf(buf, "%d", &ret);
+	return ret;
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 07dbcb263..640ec4e09 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1256,5 +1256,6 @@ void igt_force_lt_failure(int drm_fd, igt_output_t *output, int failure_count);
 bool igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output);
 bool igt_has_force_link_training_failure_debugfs(int drmfd, igt_output_t *output);
 int igt_get_dp_pending_lt_failures(int drm_fd, igt_output_t *output);
+int igt_get_dp_pending_retrain(int drm_fd, igt_output_t *output);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.43.0


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

* [PATCH i-g-t 10/14] lib/igt_kms: add helper to set connector link status
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (8 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 09/14] lib/igt_kms: add helper to get pending retrain count Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 11/14] lib/igt_kms: add function to reset link params Kunal Joshi
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

add helper to set connector's link status property

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.c | 36 ++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h |  2 ++
 2 files changed, 38 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 91f75243d..e0533f6ae 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2213,6 +2213,42 @@ void kmstest_set_connector_dpms(int fd, drmModeConnector *connector, int mode)
 					       dpms, mode) == 0);
 }
 
+/**
+ * kmstest_set_connector_link_status
+ * @drm_fd: drm file descriptor
+ * @connector: libdrm connector
+ * @link_status: DRM link status value
+ * 
+ * This function sets the link status of @connector to @link_status.
+ */
+void kmstest_set_connector_link_status(int drm_fd, drmModeConnector *connector,
+				       int link_status)
+{
+	int i, link_status_prop = 0;
+	bool found_it = false;
+
+	for (i = 0; i < connector->count_props; i++) {
+		struct drm_mode_get_property prop = {
+			.prop_id = connector->props[i],
+		};
+
+		if (drmIoctl(drm_fd, DRM_IOCTL_MODE_GETPROPERTY, &prop))
+			continue;
+
+		if (strcmp(prop.name, "link-status"))
+			continue;
+
+		link_status_prop = prop.prop_id;
+		found_it = true;
+		break;
+	}
+	igt_assert_f(found_it, "LINK_STATUS property not found on %d\n",
+		     connector->connector_id);
+
+	igt_assert(drmModeConnectorSetProperty(drm_fd, connector->connector_id,
+					       link_status_prop, link_status) == 0);
+}
+
 /**
  * kmstest_get_property:
  * @drm_fd: drm file descriptor
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 640ec4e09..3d7842b36 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -301,6 +301,8 @@ bool kmstest_probe_connector_config(int drm_fd, uint32_t connector_id,
 void kmstest_free_connector_config(struct kmstest_connector_config *config);
 
 void kmstest_set_connector_dpms(int fd, drmModeConnector *connector, int mode);
+void kmstest_set_connector_link_status(int drm_fd, drmModeConnector *connector,
+				       int link_status);
 bool kmstest_get_property(int drm_fd, uint32_t object_id, uint32_t object_type,
 			  const char *name, uint32_t *prop_id, uint64_t *value,
 			  drmModePropertyPtr *prop);
-- 
2.43.0


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

* [PATCH i-g-t 11/14] lib/igt_kms: add function to reset link params
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (9 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 10/14] lib/igt_kms: add helper to set connector link status Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 12/14] lib/igt_kms: allow set and reset value to be same Kunal Joshi
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

Writing auto to i915_dp_force_(link_rate/lane_count) and retraing
afterwards sets max link param's supported by sink.Reset link rate
and lane count to auto, also installs exit handler to set link rate
and lane count to auto on exit
---
 lib/igt_kms.c | 36 ++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h |  1 +
 2 files changed, 37 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index e0533f6ae..b7511ccfc 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -7000,3 +7000,39 @@ int igt_get_dp_pending_retrain(int drm_fd, igt_output_t *output)
 	sscanf(buf, "%d", &ret);
 	return ret;
 }
+
+/**
+ * igt_reset_link_params:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ *
+ * Reset link rate and lane count to auto, also installs exit handler
+ * to set link rate and lane count to auto on exit
+ */
+void igt_reset_link_params(int drm_fd, igt_output_t *output)
+{
+	bool valid;
+	drmModeConnector *temp;
+
+	igt_require_f(output->name, "Invalid output");
+	valid = true;
+	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
+						    "i915_dp_force_link_rate",
+						    "auto", "auto");
+	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
+						    "i915_dp_force_lane_count",
+						    "auto", "auto");
+	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
+						    "i915_dp_force_link_retrain",
+						    "1", "1");
+	igt_assert_f(valid, "Unable to set attr or install exit handler\n");
+	dump_connector_attrs();
+	igt_install_exit_handler(reset_connectors_at_exit);
+
+	/*
+	 * To allow callers to always use GetConnectorCurrent we need to force a
+	 * redetection here.
+	 */
+	temp = drmModeGetConnector(drm_fd, output->config.connector->connector_id);
+	drmModeFreeConnector(temp);
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 3d7842b36..847609379 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1259,5 +1259,6 @@ bool igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output);
 bool igt_has_force_link_training_failure_debugfs(int drmfd, igt_output_t *output);
 int igt_get_dp_pending_lt_failures(int drm_fd, igt_output_t *output);
 int igt_get_dp_pending_retrain(int drm_fd, igt_output_t *output);
+void igt_reset_link_params(int drm_fd, igt_output_t *output);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.43.0


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

* [PATCH i-g-t 12/14] lib/igt_kms: allow set and reset value to be same
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (10 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 11/14] lib/igt_kms: add function to reset link params Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-08-25 18:14 ` [PATCH i-g-t 13/14] tests/intel/kms_dp_fallback: add test for validating fallback Kunal Joshi
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

allow set and reset value to be same, let the caller handle
this scenario instead.

example scenario where this is required.
i915_dp_force_link_rate should be auto before starting test
should be auto at exit

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 lib/igt_kms.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index b7511ccfc..5427a849e 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -1572,9 +1572,6 @@ static bool connector_attr_set(int idx, drmModeConnector *connector,
 		return false;
 	}
 
-	if (!strcmp(c->value, c->reset_value))
-		connector_attr_free(c);
-
 	return true;
 }
 
-- 
2.43.0


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

* [PATCH i-g-t 13/14] tests/intel/kms_dp_fallback: add test for validating fallback
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (11 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 12/14] lib/igt_kms: allow set and reset value to be same Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-09-03  8:07   ` Samala, Pranay
  2024-08-25 18:14 ` [PATCH i-g-t 14/14] HAX: Do not merge Kunal Joshi
                   ` (3 subsequent siblings)
  16 siblings, 1 reply; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, Imre Deak

add test to valdiate fallback for DP connector,
eDP subtest will be added later.

How does test validates fallback?
- test start by doing initial modeset on default mode
   (if connector is DP then we enable just that connector,
    if its DP-MST we enable all on the same topology)
- force link training failures and retrain until we reach
  lowest param or retrain is disabled
- expect hotplug and link-status to turn bad
- expect link params reduce after fallback

v2: add test for mst (imre)
    refresh mode list (imre)
    monitor got hotplugs (imre)
    check link parameter are reduced (imre)

v3: call check_fn (Santosh)

v4: handle buggy lg monitor (Imre)
    remove reset in between (Imre)

Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Suggested-by: Imre Deak <imre.deak@intel.com>
---
 tests/intel/kms_fallback.c | 506 +++++++++++++++++++++++++++++++++++++
 tests/meson.build          |   1 +
 2 files changed, 507 insertions(+)
 create mode 100644 tests/intel/kms_fallback.c

diff --git a/tests/intel/kms_fallback.c b/tests/intel/kms_fallback.c
new file mode 100644
index 000000000..e5da3c579
--- /dev/null
+++ b/tests/intel/kms_fallback.c
@@ -0,0 +1,506 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+/**
+ * TEST: kms fallback
+ * Category: Display
+ * Description: Test link training fallback for eDP/DP connectors
+ * Driver requirement: i915, xe
+ * Functionality: link training
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
+#include <sys/types.h>
+
+#include "igt.h"
+#include "igt_psr.h"
+
+/**
+ * SUBTEST: dp-fallback
+ * Description: Test fallback on DP connectors
+ */
+
+#define RETRAIN_COUNT 1
+#define LT_FAILURE_SAME_CAPS 1
+#define LT_FAILURE_REDUCED_CAPS 2
+#define SPURIOUS_HPD_RETRY 3
+
+static int traversed_mst_outputs[IGT_MAX_PIPES];
+static int traversed_mst_output_count;
+typedef struct {
+	int drm_fd;
+	igt_display_t display;
+	drmModeModeInfo *mode;
+	igt_output_t *output;
+	enum pipe pipe;
+	struct igt_fb fb;
+	struct igt_plane *primary;
+	int n_pipes;
+} data_t;
+
+typedef int (*condition_check_fn)(int drm_fd, igt_output_t *output);
+
+IGT_TEST_DESCRIPTION("Test link training fallback");
+
+static const char *str_link_rate(enum dp_link_rate link_rate)
+{
+	switch (link_rate) {
+	case DP_LINK_RATE_162000:
+		return "1.62 Gbps";
+	case DP_LINK_RATE_216000:
+		return "2.16 Gbps";
+	case DP_LINK_RATE_243000:
+		return "2.43 Gbps";
+	case DP_LINK_RATE_270000:
+		return "2.70 Gbps";
+	case DP_LINK_RATE_324000:
+		return "3.24 Gbps";
+	case DP_LINK_RATE_432000:
+		return "4.32 Gbps";
+	case DP_LINK_RATE_540000:
+		return "5.40 Gbps";
+	case DP_LINK_RATE_675000:
+		return "6.75 Gbps";
+	case DP_LINK_RATE_810000:
+		return "8.10 Gbps";
+	case DP_LINK_RATE_1000000:
+		return "10.00 Gbps";
+	case DP_LINK_RATE_1350000:
+		return "13.50 Gbps";
+	case DP_LINK_RATE_2000000:
+		return "20.00 Gbps";
+	default:
+		igt_assert_f(0, "Invalid link rate %d\n", link_rate);
+	}
+}
+
+static const char *str_lane_count(enum dp_lane_count lane_count)
+{
+	switch (lane_count) {
+	case DP_LANE_COUNT_1:
+		return "1";
+	case DP_LANE_COUNT_2:
+		return "2";
+	case DP_LANE_COUNT_4:
+		return "4";
+	default:
+		igt_assert_f(0, "Invalid lane count %d\n", lane_count);
+	}
+}
+
+static void find_mst_outputs(int drm_fd, data_t *data,
+			     igt_output_t *output,
+			     igt_output_t **mst_outputs,
+			     int *num_mst_outputs)
+{
+	bool is_output_mst;
+	uint64_t path_blob_id;
+	igt_output_t *connector_output;
+	drmModePropertyPtr path_prop = NULL;
+	drmModePropertyPtr connector_path_prop = NULL;
+
+	igt_assert_f(output, "Invalid output\n");
+
+	/*
+	 * Check if given output is MST by checking if it has PATH property
+	 */
+	is_output_mst = kmstest_get_property(drm_fd,
+			output->config.connector->connector_id,
+			DRM_MODE_OBJECT_CONNECTOR, "PATH", NULL,
+			&path_blob_id, &path_prop);
+
+	if (!is_output_mst)
+		return;
+
+	/*
+	 * If output is MST check all other connected output which shares
+	 * same path and fill mst_outputs and num_mst_outputs
+	 */
+	for_each_connected_output(&data->display, connector_output) {
+
+		connector_path_prop = NULL;
+
+		kmstest_get_property(drm_fd,
+				     connector_output->config.connector->connector_id,
+				     DRM_MODE_OBJECT_CONNECTOR, "PATH",
+				     NULL, &path_blob_id,
+				     &connector_path_prop);
+
+		if (connector_path_prop && path_prop &&
+		    connector_path_prop->prop_id == path_prop->prop_id)
+			mst_outputs[(*num_mst_outputs)++] = connector_output;
+
+		if (connector_path_prop)
+			drmModeFreeProperty(connector_path_prop);
+	}
+	if (path_prop)
+		drmModeFreeProperty(path_prop);
+}
+
+static bool setup_mst_outputs(data_t *data, igt_output_t *mst_output[],
+			      int *dp_mst_outputs)
+{
+	int i;
+	igt_output_t *output;
+
+	igt_require_f(igt_check_output_is_dp_mst(data->output),
+		      "Not a valid MST connector\n");
+
+	/*
+	 * Check if this is already traversed
+	 */
+	for (i = 0; i < traversed_mst_output_count; i++)
+		if (traversed_mst_outputs[i] == data->output->config.connector->connector_id)
+			return false;
+
+	find_mst_outputs(data->drm_fd, data, data->output,
+			 mst_output, dp_mst_outputs);
+
+	for (i = 0; i < *dp_mst_outputs; i++) {
+		output = mst_output[i];
+		traversed_mst_outputs[traversed_mst_output_count++] = output->config.connector->connector_id;
+		igt_info("Output %s is in same topology as %s\n",
+			 igt_output_name(output),
+			 igt_output_name(data->output));
+	}
+
+	return true;
+}
+
+static void setup_pipe_on_mst_outputs(data_t *data,
+				      igt_output_t *mst_output[],
+				      int *dp_mst_outputs)
+{
+	int i = 0;
+
+	igt_require_f(data->n_pipes >= *dp_mst_outputs,
+		      "Need %d pipes to assign to %d MST outputs\n",
+		      data->n_pipes, *dp_mst_outputs);
+
+	for_each_pipe(&data->display, data->pipe) {
+		if (i >= *dp_mst_outputs)
+			break;
+		igt_info("Setting pipe %s on output %s\n",
+			 kmstest_pipe_name(data->pipe),
+			 igt_output_name(mst_output[i]));
+		igt_output_set_pipe(mst_output[i++], data->pipe);
+	}
+}
+
+static void setup_modeset_on_mst_outputs(data_t *data,
+					 igt_output_t *mst_output[],
+					 int *dp_mst_outputs,
+					 drmModeModeInfo *mode[],
+					 struct igt_fb fb[],
+					 struct igt_plane *primary[])
+{
+	int i;
+
+	for (i = 0; i < *dp_mst_outputs; i++) {
+		mst_output[i]->force_reprobe = true;
+		igt_output_refresh(mst_output[i]);
+		mode[i] = igt_output_get_mode(mst_output[i]);
+		igt_info("Mode %dx%d@%d on output %s\n",
+			 mode[i]->hdisplay, mode[i]->vdisplay,
+			 mode[i]->vrefresh,
+			 igt_output_name(mst_output[i]));
+		primary[i] = igt_output_get_plane_type(mst_output[i],
+							DRM_PLANE_TYPE_PRIMARY);
+		igt_create_color_fb(data->drm_fd,
+				    mode[i]->hdisplay,
+				    mode[i]->vdisplay,
+				    DRM_FORMAT_XRGB8888,
+				    DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0,
+				    &fb[i]);
+		igt_plane_set_fb(primary[i], &fb[i]);
+	}
+}
+
+static bool validate_modeset_mst_output(data_t *data,
+					igt_output_t *mst_output[],
+					int *dp_mst_outputs,
+					drmModeModeInfo *mode[],
+					struct igt_fb fb[],
+					struct igt_plane *primary[])
+{
+	bool found;
+	int ret;
+
+	igt_require_f(*dp_mst_outputs > 0, "No MST outputs found\n");
+	setup_pipe_on_mst_outputs(data, mst_output, dp_mst_outputs);
+	setup_modeset_on_mst_outputs(data, mst_output,
+				     dp_mst_outputs,
+				     mode, fb, primary);
+	if (!igt_display_try_commit2(&data->display, COMMIT_ATOMIC)) {
+		igt_info("Modes overridden\n");
+		found = igt_override_all_active_output_modes_to_fit_bw(&data->display);
+
+		igt_require_f(found,
+			      "No valid mode combo found for MST modeset\n");
+		ret = igt_display_try_commit2(&data->display, COMMIT_ATOMIC);
+		igt_require_f(ret == 0,
+			      "Commit failure during MST modeset\n");
+	}
+	return true;
+}
+
+static bool setup_mst(data_t *data, bool is_mst,
+		      igt_output_t *mst_output[],
+		      int *dp_mst_outputs, drmModeModeInfo *mode[],
+		      struct igt_fb fb[], struct igt_plane *primary[])
+{
+	bool ret;
+
+	*dp_mst_outputs = 0;
+	ret = setup_mst_outputs(data, mst_output, dp_mst_outputs);
+	if (!ret) {
+		igt_info("Skipping MST output %s as already tested\n",
+			 igt_output_name(data->output));
+		return false;
+	}
+
+	ret = validate_modeset_mst_output(data, mst_output,
+					  dp_mst_outputs, mode,
+					  fb, primary);
+	if (!ret) {
+		igt_info("Skipping MST output %s as validpipe/output combo not found\n",
+			 igt_output_name(data->output));
+		return false;
+	}
+
+	igt_display_commit2(&data->display, COMMIT_ATOMIC);
+	return true;
+}
+
+static int check_condition_with_timeout(int drm_fd, igt_output_t *output,
+					condition_check_fn check_fn,
+					double interval, double timeout)
+{
+	struct timespec start_time, current_time;
+	double elapsed_time;
+
+	clock_gettime(CLOCK_MONOTONIC, &start_time);
+
+	while (1) {
+		if (check_fn(drm_fd, output) == 0) {
+			return 0;
+		}
+
+		clock_gettime(CLOCK_MONOTONIC, &current_time);
+		elapsed_time = (current_time.tv_sec - start_time.tv_sec) +
+			(current_time.tv_nsec - start_time.tv_nsec) / 1e9;
+
+		if (elapsed_time >= timeout) {
+			return -1;
+		}
+
+		usleep((useconds_t)(interval * 1000000));
+	}
+}
+
+static void test_fallback(data_t *data, bool is_mst)
+{
+	int dp_mst_outputs, retries;
+	igt_output_t *mst_outputs[IGT_MAX_PIPES];
+	enum dp_link_rate max_link_rate, curr_link_rate, prev_link_rate;
+	enum dp_lane_count max_lane_count, curr_lane_count, prev_lane_count;
+	uint32_t link_status_prop_id;
+	uint64_t link_status_value;
+	drmModeModeInfo *mst_modes[IGT_MAX_PIPES], *mode;
+	drmModePropertyPtr link_status_prop;
+	struct igt_fb mst_fbs[IGT_MAX_PIPES], fb;
+	struct igt_plane *mst_primarys[IGT_MAX_PIPES], *primary;
+	struct udev_monitor *mon;
+
+	igt_display_reset(&data->display);
+	retries = SPURIOUS_HPD_RETRY;
+
+	if (is_mst) {
+		if (!setup_mst(data, is_mst, mst_outputs,
+			       &dp_mst_outputs, mst_modes, mst_fbs,
+			       mst_primarys))
+			return;
+	} else {
+		data->pipe = PIPE_A;
+		igt_output_set_pipe(data->output, data->pipe);
+		mode = igt_output_get_mode(data->output);
+		primary = igt_output_get_plane_type(data->output,
+						    DRM_PLANE_TYPE_PRIMARY);
+		igt_create_color_fb(data->drm_fd,
+				    mode->hdisplay, mode->vdisplay,
+				    DRM_FORMAT_XRGB8888,
+				    DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0,
+				    &fb);
+		igt_plane_set_fb(primary, &fb);
+		igt_display_commit2(&data->display, COMMIT_ATOMIC);
+	}
+
+	igt_info("Testing link training fallback on %s\n",
+		 igt_output_name(data->output));
+
+	igt_reset_link_params(data->drm_fd, data->output);
+	igt_assert_eq(check_condition_with_timeout(data->drm_fd,
+						   data->output,
+						   igt_get_dp_pending_retrain,
+						   1.0, 20.0), 0);
+
+	max_link_rate = igt_get_dp_max_link_rate(data->drm_fd, data->output);
+	max_lane_count = igt_get_dp_max_lane_count(data->drm_fd, data->output);
+
+	while (!igt_get_dp_link_retrain_disabled(data->drm_fd,
+						 data->output)) {
+
+		prev_link_rate = igt_get_dp_link_rate_set_for_output(data->drm_fd, data->output);
+		prev_lane_count = igt_get_dp_lane_count_set_for_output(data->drm_fd, data->output);
+
+		igt_info("Current link rate: %s, Current lane count: %s\n",
+			 str_link_rate(prev_link_rate),
+			 str_lane_count(prev_lane_count));
+		mon = igt_watch_uevents();
+		igt_force_lt_failure(data->drm_fd, data->output,
+				     LT_FAILURE_REDUCED_CAPS);
+		igt_force_link_retrain(data->drm_fd, data->output,
+				       RETRAIN_COUNT);
+
+		igt_assert_eq(check_condition_with_timeout(data->drm_fd,
+							   data->output,
+							   igt_get_dp_pending_retrain,
+							   1.0, 20.0), 0);
+		igt_assert_eq(check_condition_with_timeout(data->drm_fd,
+							   data->output,
+							   igt_get_dp_pending_lt_failures,
+							   1.0, 20.0), 0);
+
+		if (igt_get_dp_link_retrain_disabled(data->drm_fd,
+						     data->output)) {
+			igt_reset_connectors();
+			return;
+		}
+
+		igt_assert_f(igt_hotplug_detected(mon, 20),
+			     "Didn't get hotplug for force link training failure\n");
+
+		kmstest_get_property(data->drm_fd,
+				data->output->config.connector->connector_id,
+				DRM_MODE_OBJECT_CONNECTOR, "link-status",
+				&link_status_prop_id, &link_status_value,
+				&link_status_prop);
+
+		igt_assert_eq(link_status_value, DRM_MODE_LINK_STATUS_BAD);
+
+		igt_flush_uevents(mon);
+
+		if (is_mst) {
+			igt_assert_f(validate_modeset_mst_output(data,
+								 mst_outputs,
+								 &dp_mst_outputs,
+								 mst_modes,
+								 mst_fbs,
+								 mst_primarys),
+				     "MST modeset failed\n");
+		} else {
+			data->output->force_reprobe = true;
+			igt_output_refresh(data->output);
+			data->pipe = PIPE_A;
+			igt_output_set_pipe(data->output, data->pipe);
+			mode = igt_output_get_mode(data->output);
+			igt_info("Mode %dx%d@%d on output %s\n",
+				 mode->hdisplay, mode->vdisplay,
+				 mode->vrefresh,
+				 igt_output_name(data->output));
+			primary = igt_output_get_plane_type(data->output,
+							    DRM_PLANE_TYPE_PRIMARY);
+			igt_create_color_fb(data->drm_fd,
+					    mode->hdisplay,
+					    mode->vdisplay,
+					    DRM_FORMAT_XRGB8888,
+					    DRM_FORMAT_MOD_LINEAR,
+					    0.0, 1.0, 0.0, &fb);
+			igt_plane_set_fb(primary, &fb);
+		}
+
+		kmstest_set_connector_link_status(data->drm_fd,
+						  data->output->config.connector,
+						  DRM_MODE_LINK_STATUS_GOOD);
+		igt_display_commit2(&data->display, COMMIT_ATOMIC);
+
+		kmstest_get_property(data->drm_fd,
+				data->output->config.connector->connector_id,
+				DRM_MODE_OBJECT_CONNECTOR, "link-status",
+				&link_status_prop_id, &link_status_value,
+				&link_status_prop);
+		igt_assert_eq(link_status_value, DRM_MODE_LINK_STATUS_GOOD);
+
+		curr_link_rate = igt_get_dp_link_rate_set_for_output(data->drm_fd, data->output);
+		curr_lane_count = igt_get_dp_lane_count_set_for_output(data->drm_fd, data->output);
+
+		igt_assert_f((curr_link_rate < prev_link_rate ||
+			     curr_lane_count < prev_lane_count) ||
+			     ((curr_link_rate == max_link_rate && curr_lane_count == max_lane_count) && --retries),
+			     "Fallback unsuccessful\n");
+
+		prev_link_rate = curr_link_rate;
+		prev_lane_count = curr_lane_count;
+	}
+}
+
+igt_main
+{
+	data_t data = {};
+
+	igt_fixture {
+		data.drm_fd = drm_open_driver_master(DRIVER_INTEL |
+						     DRIVER_XE);
+		kmstest_set_vt_graphics_mode();
+		igt_display_require(&data.display, data.drm_fd);
+		igt_display_require_output(&data.display);
+		for_each_pipe(&data.display, data.pipe) {
+			data.n_pipes++;
+		}
+	}
+
+	igt_subtest("dp-fallback") {
+		bool ran = false;
+		igt_output_t *output;
+
+		for_each_connected_output(&data.display, output) {
+
+			data.output = output;
+			if (!igt_has_force_link_training_failure_debugfs(data.drm_fd,
+								    data.output)) {
+				igt_info("Output %s unsupported\n", igt_output_name(data.output));
+				continue;
+			}
+
+			if (output->config.connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) {
+				igt_info("Skipping output %s as it's not DP\n", output->name);
+				continue;
+			}
+
+			ran = true;
+
+			/*
+			 * Check output is MST
+			 */
+			if (igt_check_output_is_dp_mst(data.output)) {
+				igt_info("Testing MST output %s\n",
+					 igt_output_name(data.output));
+				test_fallback(&data, true);
+			} else {
+				igt_info("Testing DP output %s\n",
+					 igt_output_name(data.output));
+				test_fallback(&data, false);
+			}
+		}
+		igt_require_f(ran, "No output supports fallback\n");
+	}
+
+	igt_fixture {
+		igt_remove_fb(data.drm_fd, &data.fb);
+		igt_display_fini(&data.display);
+		close(data.drm_fd);
+	}
+}
diff --git a/tests/meson.build b/tests/meson.build
index 00556c9d6..86fab423b 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -249,6 +249,7 @@ intel_kms_progs = [
 	'kms_dirtyfb',
 	'kms_draw_crc',
 	'kms_dsc',
+        'kms_fallback',
 	'kms_fb_coherency',
 	'kms_fbcon_fbt',
 	'kms_fence_pin_leak',
-- 
2.43.0


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

* [PATCH i-g-t 14/14] HAX: Do not merge
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (12 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 13/14] tests/intel/kms_dp_fallback: add test for validating fallback Kunal Joshi
@ 2024-08-25 18:14 ` Kunal Joshi
  2024-08-25 18:32 ` ✗ CI.xeBAT: failure for add test to validate fallback (rev4) Patchwork
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 18:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

---
 tests/intel-ci/fast-feedback.testlist    | 1 +
 tests/intel-ci/xe-fast-feedback.testlist | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index be0965110..7b84ccffc 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -1,6 +1,7 @@
 # Try to load the driver if it's not available yet.
 igt@i915_module_load@load
 
+igt@kms_fallback@dp-fallback
 # Keep alphabetically sorted by default
 igt@core_auth@basic-auth
 igt@debugfs_test@read_all_entries
diff --git a/tests/intel-ci/xe-fast-feedback.testlist b/tests/intel-ci/xe-fast-feedback.testlist
index 01b01dcf9..110675cd3 100644
--- a/tests/intel-ci/xe-fast-feedback.testlist
+++ b/tests/intel-ci/xe-fast-feedback.testlist
@@ -1,6 +1,8 @@
 # Should be the first test
 igt@xe_module_load@load
 
+igt@kms_fallback@dp-fallback
+
 igt@fbdev@eof
 igt@fbdev@info
 igt@fbdev@nullptr
-- 
2.43.0


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

* ✗ CI.xeBAT: failure for add test to validate fallback (rev4)
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (13 preceding siblings ...)
  2024-08-25 18:14 ` [PATCH i-g-t 14/14] HAX: Do not merge Kunal Joshi
@ 2024-08-25 18:32 ` Patchwork
  2024-08-25 18:45 ` ✗ Fi.CI.BAT: " Patchwork
  2024-08-25 19:32 ` ✗ CI.xeFULL: " Patchwork
  16 siblings, 0 replies; 26+ messages in thread
From: Patchwork @ 2024-08-25 18:32 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev

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

== Series Details ==

Series: add test to validate fallback (rev4)
URL   : https://patchwork.freedesktop.org/series/134660/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_7990_BAT -> XEIGTPW_11632_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_11632_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_11632_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (9 -> 9)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_fallback@dp-fallback (NEW):
    - {bat-bmg-2}:        NOTRUN -> [SKIP][1]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/bat-bmg-2/igt@kms_fallback@dp-fallback.html
    - bat-adlp-7:         NOTRUN -> [SKIP][2]
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/bat-adlp-7/igt@kms_fallback@dp-fallback.html
    - bat-bmg-1:          NOTRUN -> [SKIP][3]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/bat-bmg-1/igt@kms_fallback@dp-fallback.html
    - bat-lnl-2:          NOTRUN -> [SKIP][4]
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/bat-lnl-2/igt@kms_fallback@dp-fallback.html
    - bat-dg2-oem2:       NOTRUN -> [FAIL][5]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/bat-dg2-oem2/igt@kms_fallback@dp-fallback.html
    - bat-adlp-vf:        NOTRUN -> [SKIP][6]
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/bat-adlp-vf/igt@kms_fallback@dp-fallback.html
    - bat-lnl-1:          NOTRUN -> [SKIP][7]
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/bat-lnl-1/igt@kms_fallback@dp-fallback.html

  
New tests
---------

  New tests have been introduced between XEIGT_7990_BAT and XEIGTPW_11632_BAT:

### New IGT tests (1) ###

  * igt@kms_fallback@dp-fallback:
    - Statuses : 1 fail(s) 8 skip(s)
    - Exec time: [0.0, 1.23] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_fallback@dp-fallback (NEW):
    - bat-atsm-2:         NOTRUN -> [SKIP][8] ([Intel XE#1024])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/bat-atsm-2/igt@kms_fallback@dp-fallback.html
    - bat-pvc-2:          NOTRUN -> [SKIP][9] ([Intel XE#1024])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/bat-pvc-2/igt@kms_fallback@dp-fallback.html

  * igt@xe_exec_reset@cm-close-fd-no-exec:
    - bat-lnl-1:          [PASS][10] -> [FAIL][11] ([Intel XE#1069])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/bat-lnl-1/igt@xe_exec_reset@cm-close-fd-no-exec.html
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/bat-lnl-1/igt@xe_exec_reset@cm-close-fd-no-exec.html

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

  [Intel XE#1024]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1024
  [Intel XE#1069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1069


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

  * IGT: IGT_7990 -> IGTPW_11632
  * Linux: xe-1822-411a047925bb7e169a075a2ddfb63ba96f26a8c8 -> xe-1823-5626fe5d6eeb0949727861375b27d67ee71feaa7

  IGTPW_11632: 11632
  IGT_7990: 9ca5ff0afa3636478b6ba5a97e5ba440cfb2e55e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1822-411a047925bb7e169a075a2ddfb63ba96f26a8c8: 411a047925bb7e169a075a2ddfb63ba96f26a8c8
  xe-1823-5626fe5d6eeb0949727861375b27d67ee71feaa7: 5626fe5d6eeb0949727861375b27d67ee71feaa7

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/index.html

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

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

* ✗ Fi.CI.BAT: failure for add test to validate fallback (rev4)
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (14 preceding siblings ...)
  2024-08-25 18:32 ` ✗ CI.xeBAT: failure for add test to validate fallback (rev4) Patchwork
@ 2024-08-25 18:45 ` Patchwork
  2024-08-25 19:32 ` ✗ CI.xeFULL: " Patchwork
  16 siblings, 0 replies; 26+ messages in thread
From: Patchwork @ 2024-08-25 18:45 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev

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

== Series Details ==

Series: add test to validate fallback (rev4)
URL   : https://patchwork.freedesktop.org/series/134660/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_15288 -> IGTPW_11632
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_11632 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_11632, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

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

Participating hosts (38 -> 35)
------------------------------

  Additional (2): fi-cfl-8109u fi-kbl-8809g 
  Missing    (5): bat-dg1-7 fi-tgl-1115g4 fi-snb-2520m fi-glk-j4005 fi-blb-e6850 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_fallback@dp-fallback (NEW):
    - fi-rkl-11600:       NOTRUN -> [SKIP][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-rkl-11600/igt@kms_fallback@dp-fallback.html
    - fi-cfl-8109u:       NOTRUN -> [FAIL][2]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-cfl-8109u/igt@kms_fallback@dp-fallback.html
    - bat-arls-2:         NOTRUN -> [SKIP][3]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-arls-2/igt@kms_fallback@dp-fallback.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][4]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-mtlp-8/igt@kms_fallback@dp-fallback.html
    - bat-dg2-8:          NOTRUN -> [FAIL][5]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-dg2-8/igt@kms_fallback@dp-fallback.html
    - bat-adls-6:         NOTRUN -> [FAIL][6]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-adls-6/igt@kms_fallback@dp-fallback.html
    - bat-jsl-1:          NOTRUN -> [SKIP][7]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-jsl-1/igt@kms_fallback@dp-fallback.html
    - bat-arls-1:         NOTRUN -> [SKIP][8]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-arls-1/igt@kms_fallback@dp-fallback.html
    - bat-adlp-6:         NOTRUN -> [SKIP][9]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-adlp-6/igt@kms_fallback@dp-fallback.html
    - bat-arlh-2:         NOTRUN -> [SKIP][10]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-arlh-2/igt@kms_fallback@dp-fallback.html
    - bat-adlp-9:         NOTRUN -> [FAIL][11]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-adlp-9/igt@kms_fallback@dp-fallback.html
    - bat-twl-2:          NOTRUN -> [SKIP][12]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-twl-2/igt@kms_fallback@dp-fallback.html
    - bat-dg2-11:         NOTRUN -> [SKIP][13]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-dg2-11/igt@kms_fallback@dp-fallback.html
    - bat-rpls-4:         NOTRUN -> [SKIP][14]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-rpls-4/igt@kms_fallback@dp-fallback.html
    - fi-kbl-7567u:       NOTRUN -> [FAIL][15]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-kbl-7567u/igt@kms_fallback@dp-fallback.html
    - bat-twl-1:          NOTRUN -> [SKIP][16]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-twl-1/igt@kms_fallback@dp-fallback.html
    - bat-apl-1:          NOTRUN -> [FAIL][17]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-apl-1/igt@kms_fallback@dp-fallback.html
    - bat-dg2-14:         NOTRUN -> [SKIP][18]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-dg2-14/igt@kms_fallback@dp-fallback.html
    - bat-arls-5:         NOTRUN -> [FAIL][19]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-arls-5/igt@kms_fallback@dp-fallback.html
    - bat-rplp-1:         NOTRUN -> [SKIP][20]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-rplp-1/igt@kms_fallback@dp-fallback.html

  
New tests
---------

  New tests have been introduced between CI_DRM_15288 and IGTPW_11632:

### New IGT tests (1) ###

  * igt@kms_fallback@dp-fallback:
    - Statuses : 7 fail(s) 27 skip(s)
    - Exec time: [0.0, 10.43] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_huc_copy@huc-copy:
    - fi-cfl-8109u:       NOTRUN -> [SKIP][21] ([i915#2190])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-cfl-8109u/igt@gem_huc_copy@huc-copy.html
    - fi-kbl-8809g:       NOTRUN -> [SKIP][22] ([i915#2190])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][23] ([i915#4613]) +3 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-kbl-8809g/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@verify-random:
    - fi-cfl-8109u:       NOTRUN -> [SKIP][24] ([i915#4613]) +3 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-cfl-8109u/igt@gem_lmem_swapping@verify-random.html

  * igt@i915_pm_rpm@module-reload:
    - bat-apl-1:          [PASS][25] -> [DMESG-WARN][26] ([i915#11621] / [i915#1982])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15288/bat-apl-1/igt@i915_pm_rpm@module-reload.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-apl-1/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live@hangcheck:
    - bat-arls-2:         [PASS][27] -> [DMESG-WARN][28] ([i915#11349])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15288/bat-arls-2/igt@i915_selftest@live@hangcheck.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-arls-2/igt@i915_selftest@live@hangcheck.html
    - bat-adlm-1:         [PASS][29] -> [INCOMPLETE][30] ([i915#9413])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15288/bat-adlm-1/igt@i915_selftest@live@hangcheck.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-adlm-1/igt@i915_selftest@live@hangcheck.html
    - bat-arls-1:         [PASS][31] -> [DMESG-WARN][32] ([i915#11349])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15288/bat-arls-1/igt@i915_selftest@live@hangcheck.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-arls-1/igt@i915_selftest@live@hangcheck.html
    - bat-dg2-11:         [PASS][33] -> [DMESG-FAIL][34] ([i915#9500])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15288/bat-dg2-11/igt@i915_selftest@live@hangcheck.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-dg2-11/igt@i915_selftest@live@hangcheck.html

  * igt@i915_selftest@live@requests:
    - bat-apl-1:          [PASS][35] -> [DMESG-WARN][36] ([i915#11621]) +31 other tests dmesg-warn
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15288/bat-apl-1/igt@i915_selftest@live@requests.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-apl-1/igt@i915_selftest@live@requests.html

  * igt@kms_fallback@dp-fallback (NEW):
    - fi-cfl-guc:         NOTRUN -> [SKIP][37]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-cfl-guc/igt@kms_fallback@dp-fallback.html
    - bat-mtlp-6:         NOTRUN -> [SKIP][38] ([i915#9792])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-mtlp-6/igt@kms_fallback@dp-fallback.html
    - bat-dg2-9:          NOTRUN -> [SKIP][39] ([i915#9197])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-dg2-9/igt@kms_fallback@dp-fallback.html
    - fi-kbl-x1275:       NOTRUN -> [SKIP][40]
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-kbl-x1275/igt@kms_fallback@dp-fallback.html
    - bat-adlp-11:        NOTRUN -> [SKIP][41] ([i915#10470])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-adlp-11/igt@kms_fallback@dp-fallback.html
    - fi-ivb-3770:        NOTRUN -> [SKIP][42]
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-ivb-3770/igt@kms_fallback@dp-fallback.html
    - fi-kbl-guc:         NOTRUN -> [SKIP][43]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-kbl-guc/igt@kms_fallback@dp-fallback.html
    - fi-ilk-650:         NOTRUN -> [SKIP][44]
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-ilk-650/igt@kms_fallback@dp-fallback.html
    - fi-bsw-n3050:       NOTRUN -> [SKIP][45]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-bsw-n3050/igt@kms_fallback@dp-fallback.html
    - fi-pnv-d510:        NOTRUN -> [SKIP][46]
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-pnv-d510/igt@kms_fallback@dp-fallback.html
    - fi-cfl-8700k:       NOTRUN -> [SKIP][47]
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-cfl-8700k/igt@kms_fallback@dp-fallback.html
    - bat-kbl-2:          NOTRUN -> [SKIP][48]
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-kbl-2/igt@kms_fallback@dp-fallback.html
    - bat-adlm-1:         NOTRUN -> [SKIP][49] ([i915#9900])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/bat-adlm-1/igt@kms_fallback@dp-fallback.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][50] +31 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-kbl-8809g/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_pm_backlight@basic-brightness:
    - fi-cfl-8109u:       NOTRUN -> [SKIP][51] +11 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11632/fi-cfl-8109u/igt@kms_pm_backlight@basic-brightness.html

  
  [i915#10470]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10470
  [i915#11349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11349
  [i915#11621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11621
  [i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197
  [i915#9413]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9413
  [i915#9500]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9500
  [i915#9792]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9792
  [i915#9900]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9900


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7990 -> IGTPW_11632

  CI-20190529: 20190529
  CI_DRM_15288: 5626fe5d6eeb0949727861375b27d67ee71feaa7 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_11632: 11632
  IGT_7990: 9ca5ff0afa3636478b6ba5a97e5ba440cfb2e55e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* ✗ CI.xeFULL: failure for add test to validate fallback (rev4)
  2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
                   ` (15 preceding siblings ...)
  2024-08-25 18:45 ` ✗ Fi.CI.BAT: " Patchwork
@ 2024-08-25 19:32 ` Patchwork
  16 siblings, 0 replies; 26+ messages in thread
From: Patchwork @ 2024-08-25 19:32 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev

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

== Series Details ==

Series: add test to validate fallback (rev4)
URL   : https://patchwork.freedesktop.org/series/134660/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_7990_full -> XEIGTPW_11632_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_11632_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_11632_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (4 -> 4)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_fallback@dp-fallback (NEW):
    - {shard-bmg}:        NOTRUN -> [FAIL][1]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-4/igt@kms_fallback@dp-fallback.html
    - shard-dg2-set2:     NOTRUN -> [FAIL][2]
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@kms_fallback@dp-fallback.html

  * igt@kms_pm_rpm@i2c:
    - shard-dg2-set2:     [PASS][3] -> [FAIL][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_pm_rpm@i2c.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_pm_rpm@i2c.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-lnl:          [PASS][5] -> [DMESG-WARN][6]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-1/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-imm:
    - shard-lnl:          [PASS][7] -> [FAIL][8]
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-8/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-imm.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-imm.html

  * igt@xe_exec_fault_mode@twice-userptr-prefetch:
    - shard-lnl:          NOTRUN -> [FAIL][9]
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@xe_exec_fault_mode@twice-userptr-prefetch.html

  
#### Warnings ####

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
    - shard-dg2-set2:     [SKIP][10] ([Intel XE#1201]) -> [SKIP][11] +2 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html

  
#### Suppressed ####

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

  * igt@kms_async_flips@crc@pipe-a-dp-2:
    - {shard-bmg}:        [FAIL][12] ([Intel XE#1656]) -> [DMESG-FAIL][13]
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-1/igt@kms_async_flips@crc@pipe-a-dp-2.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-7/igt@kms_async_flips@crc@pipe-a-dp-2.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - {shard-bmg}:        [FAIL][14] ([Intel XE#1659]) -> [SKIP][15]
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-4/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
    - {shard-bmg}:        [SKIP][16] ([Intel XE#607]) -> [SKIP][17]
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-1/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - {shard-bmg}:        [SKIP][18] ([Intel XE#1124]) -> [SKIP][19]
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-4/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_bw@linear-tiling-2-displays-2160x1440p:
    - {shard-bmg}:        [SKIP][20] ([Intel XE#367]) -> [SKIP][21]
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-6/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs:
    - {shard-bmg}:        [SKIP][22] ([Intel XE#2251]) -> [SKIP][23]
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs.html
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs.html

  * igt@kms_chamelium_edid@hdmi-edid-read:
    - {shard-bmg}:        [SKIP][24] ([Intel XE#2252]) -> [SKIP][25] +1 other test skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-5/igt@kms_chamelium_edid@hdmi-edid-read.html
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_chamelium_edid@hdmi-edid-read.html

  * igt@kms_content_protection@type1:
    - {shard-bmg}:        [SKIP][26] ([Intel XE#2341]) -> [SKIP][27]
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-4/igt@kms_content_protection@type1.html
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_content_protection@type1.html

  * igt@kms_cursor_crc@cursor-onscreen-32x10:
    - {shard-bmg}:        [SKIP][28] ([Intel XE#2320]) -> [SKIP][29]
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-6/igt@kms_cursor_crc@cursor-onscreen-32x10.html
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_cursor_crc@cursor-onscreen-32x10.html

  * igt@kms_flip@2x-plain-flip:
    - {shard-bmg}:        [PASS][30] -> [SKIP][31] +19 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-3/igt@kms_flip@2x-plain-flip.html
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_flip@2x-plain-flip.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling:
    - {shard-bmg}:        [SKIP][32] ([Intel XE#2293] / [Intel XE#2380]) -> [SKIP][33]
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-4/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling.html
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-move:
    - {shard-bmg}:        [SKIP][34] ([Intel XE#2311]) -> [SKIP][35] +1 other test skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-move.html
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbc-2p-rte:
    - {shard-bmg}:        [FAIL][36] ([Intel XE#2333]) -> [SKIP][37]
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-rte.html
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-rte.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-wc:
    - {shard-bmg}:        NOTRUN -> [SKIP][38] +1 other test skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-blt:
    - {shard-bmg}:        [SKIP][39] ([Intel XE#2313]) -> [SKIP][40] +4 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-blt.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-blt.html

  * igt@kms_hdr@bpc-switch-suspend:
    - {shard-bmg}:        [PASS][41] -> [INCOMPLETE][42]
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-1/igt@kms_hdr@bpc-switch-suspend.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-8/igt@kms_hdr@bpc-switch-suspend.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75:
    - {shard-bmg}:        [SKIP][43] ([Intel XE#2318]) -> [SKIP][44]
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-3/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75.html

  * igt@kms_pm_rpm@i2c:
    - {shard-bmg}:        [PASS][45] -> [FAIL][46]
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-1/igt@kms_pm_rpm@i2c.html
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-1/igt@kms_pm_rpm@i2c.html

  * igt@kms_psr2_sf@fbc-overlay-plane-move-continuous-sf:
    - {shard-bmg}:        [SKIP][47] ([Intel XE#1489]) -> [SKIP][48] +1 other test skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-1/igt@kms_psr2_sf@fbc-overlay-plane-move-continuous-sf.html
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_psr2_sf@fbc-overlay-plane-move-continuous-sf.html

  * igt@kms_psr@psr-cursor-plane-move:
    - {shard-bmg}:        [SKIP][49] ([Intel XE#2234]) -> [SKIP][50] +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-8/igt@kms_psr@psr-cursor-plane-move.html
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_psr@psr-cursor-plane-move.html

  * igt@kms_rotation_crc@bad-tiling:
    - {shard-bmg}:        [SKIP][51] ([Intel XE#2329]) -> [SKIP][52] +1 other test skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-2/igt@kms_rotation_crc@bad-tiling.html
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_rotation_crc@bad-tiling.html

  * igt@kms_vrr@max-min:
    - {shard-bmg}:        [SKIP][53] ([Intel XE#1499]) -> [SKIP][54]
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-6/igt@kms_vrr@max-min.html
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-5/igt@kms_vrr@max-min.html

  * igt@xe_evict@evict-beng-mixed-threads-large:
    - {shard-bmg}:        [PASS][55] -> [DMESG-FAIL][56]
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-1/igt@xe_evict@evict-beng-mixed-threads-large.html
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-3/igt@xe_evict@evict-beng-mixed-threads-large.html

  
New tests
---------

  New tests have been introduced between XEIGT_7990_full and XEIGTPW_11632_full:

### New IGT tests (1) ###

  * igt@kms_fallback@dp-fallback:
    - Statuses : 2 fail(s)
    - Exec time: [5.08, 5.23] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-lnl:          NOTRUN -> [SKIP][57] ([Intel XE#1466])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1:
    - shard-lnl:          [PASS][58] -> [FAIL][59] ([Intel XE#1426]) +3 other tests fail
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-4/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-lnl:          [PASS][60] -> [FAIL][61] ([Intel XE#1659])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@linear-64bpp-rotate-270:
    - shard-dg2-set2:     NOTRUN -> [SKIP][62] ([Intel XE#1201] / [Intel XE#316])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@kms_big_fb@linear-64bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-90:
    - shard-lnl:          NOTRUN -> [SKIP][63] ([Intel XE#1407])
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-1/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - shard-lnl:          NOTRUN -> [SKIP][64] ([Intel XE#1124]) +6 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-7/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html

  * igt@kms_big_joiner@invalid-modeset:
    - shard-lnl:          NOTRUN -> [SKIP][65] ([Intel XE#346])
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@kms_big_joiner@invalid-modeset.html

  * igt@kms_bw@linear-tiling-2-displays-2160x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][66] ([Intel XE#367]) +1 other test skip
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][67] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +3 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [SKIP][68] ([Intel XE#1201] / [Intel XE#787]) +13 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-6.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][69] ([Intel XE#1399]) +9 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-1/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs.html

  * igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs-cc:
    - shard-dg2-set2:     NOTRUN -> [SKIP][70] ([Intel XE#455] / [Intel XE#787]) +1 other test skip
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [SKIP][71] ([Intel XE#787]) +6 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-6.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-lnl:          NOTRUN -> [SKIP][72] ([Intel XE#314])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_chamelium_hpd@hdmi-hpd:
    - shard-dg2-set2:     NOTRUN -> [SKIP][73] ([Intel XE#1201] / [Intel XE#373]) +1 other test skip
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_chamelium_hpd@hdmi-hpd.html

  * igt@kms_chamelium_hpd@hdmi-hpd-storm:
    - shard-lnl:          NOTRUN -> [SKIP][74] ([Intel XE#373]) +4 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@kms_chamelium_hpd@hdmi-hpd-storm.html

  * igt@kms_cursor_crc@cursor-onscreen-32x10:
    - shard-lnl:          NOTRUN -> [SKIP][75] ([Intel XE#1424])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_cursor_crc@cursor-onscreen-32x10.html

  * igt@kms_cursor_crc@cursor-random-32x10:
    - shard-dg2-set2:     NOTRUN -> [SKIP][76] ([Intel XE#1201] / [Intel XE#455])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@kms_cursor_crc@cursor-random-32x10.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-dg2-set2:     NOTRUN -> [SKIP][77] ([Intel XE#1201] / [Intel XE#308])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
    - shard-lnl:          NOTRUN -> [SKIP][78] ([Intel XE#309])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-5/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html

  * igt@kms_feature_discovery@chamelium:
    - shard-lnl:          NOTRUN -> [SKIP][79] ([Intel XE#701])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-4/igt@kms_feature_discovery@chamelium.html

  * igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
    - shard-lnl:          NOTRUN -> [SKIP][80] ([Intel XE#1421]) +3 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-5/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html

  * igt@kms_flip@blocking-wf_vblank:
    - shard-lnl:          NOTRUN -> [FAIL][81] ([Intel XE#886]) +1 other test fail
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-3/igt@kms_flip@blocking-wf_vblank.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][82] ([Intel XE#1397] / [Intel XE#1745])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][83] ([Intel XE#1397])
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][84] ([Intel XE#1401] / [Intel XE#1745]) +1 other test skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][85] ([Intel XE#1401]) +1 other test skip
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-default-mode.html

  * igt@kms_frontbuffer_tracking@drrs-suspend:
    - shard-dg2-set2:     NOTRUN -> [SKIP][86] ([Intel XE#1201] / [Intel XE#651]) +2 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@kms_frontbuffer_tracking@drrs-suspend.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][87] ([Intel XE#656]) +21 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][88] ([Intel XE#651])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][89] ([Intel XE#651]) +10 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][90] ([Intel XE#1201] / [Intel XE#653])
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][91] ([Intel XE#653])
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render.html

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][92] ([Intel XE#605])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-4/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_plane@plane-position-covered:
    - shard-lnl:          [PASS][93] -> [DMESG-FAIL][94] ([Intel XE#324]) +2 other tests dmesg-fail
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-8/igt@kms_plane@plane-position-covered.html
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-4/igt@kms_plane@plane-position-covered.html

  * igt@kms_plane@plane-position-covered@pipe-b-plane-4:
    - shard-lnl:          [PASS][95] -> [DMESG-WARN][96] ([Intel XE#324]) +2 other tests dmesg-warn
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-8/igt@kms_plane@plane-position-covered@pipe-b-plane-4.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-4/igt@kms_plane@plane-position-covered@pipe-b-plane-4.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [PASS][97] -> [FAIL][98] ([Intel XE#361]) +2 other tests fail
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-435/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][99] ([Intel XE#498]) +3 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-5/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b-edp-1.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][100] ([Intel XE#2318]) +3 other tests skip
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-4/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-lnl:          NOTRUN -> [SKIP][101] ([Intel XE#736])
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-3/igt@kms_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_pm_dc@dc5-dpms:
    - shard-lnl:          [PASS][102] -> [FAIL][103] ([Intel XE#718])
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-4/igt@kms_pm_dc@dc5-dpms.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_pm_dc@dc5-dpms.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-lnl:          NOTRUN -> [SKIP][104] ([Intel XE#1439])
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area:
    - shard-dg2-set2:     NOTRUN -> [SKIP][105] ([Intel XE#1201] / [Intel XE#1489])
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-dg2-set2:     NOTRUN -> [SKIP][106] ([Intel XE#1122] / [Intel XE#1201])
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-434/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-lnl:          NOTRUN -> [SKIP][107] ([Intel XE#1128])
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-5/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@pr-sprite-plane-move:
    - shard-lnl:          NOTRUN -> [SKIP][108] ([Intel XE#1406]) +2 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-8/igt@kms_psr@pr-sprite-plane-move.html

  * igt@kms_psr@psr-cursor-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][109] ([Intel XE#1201] / [Intel XE#929])
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-436/igt@kms_psr@psr-cursor-blt.html

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
    - shard-lnl:          NOTRUN -> [SKIP][110] ([Intel XE#1437])
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-1/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html

  * igt@kms_scaling_modes@scaling-mode-none:
    - shard-lnl:          NOTRUN -> [SKIP][111] ([Intel XE#374] / [Intel XE#599])
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@kms_scaling_modes@scaling-mode-none.html

  * igt@kms_scaling_modes@scaling-mode-none@pipe-a-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][112] ([Intel XE#374]) +2 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@kms_scaling_modes@scaling-mode-none@pipe-a-edp-1.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     [PASS][113] -> [FAIL][114] ([Intel XE#899])
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-433/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-6.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-436/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-6.html

  * igt@kms_vblank@ts-continuation-suspend:
    - shard-dg2-set2:     [PASS][115] -> [DMESG-WARN][116] ([Intel XE#2019]) +3 other tests dmesg-warn
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-435/igt@kms_vblank@ts-continuation-suspend.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_vblank@ts-continuation-suspend.html

  * igt@kms_vrr@flip-basic:
    - shard-lnl:          NOTRUN -> [FAIL][117] ([Intel XE#2443]) +1 other test fail
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-4/igt@kms_vrr@flip-basic.html

  * igt@kms_vrr@negative-basic:
    - shard-lnl:          NOTRUN -> [SKIP][118] ([Intel XE#1499] / [Intel XE#599])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@kms_vrr@negative-basic.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-dg2-set2:     NOTRUN -> [SKIP][119] ([Intel XE#1091] / [Intel XE#1201])
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@xe_evict@evict-beng-mixed-threads-large:
    - shard-dg2-set2:     [PASS][120] -> [TIMEOUT][121] ([Intel XE#1473])
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@xe_evict@evict-beng-mixed-threads-large.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@xe_evict@evict-beng-mixed-threads-large.html

  * igt@xe_evict@evict-beng-threads-large-multi-vm:
    - shard-lnl:          NOTRUN -> [SKIP][122] ([Intel XE#688]) +4 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-7/igt@xe_evict@evict-beng-threads-large-multi-vm.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][123] ([Intel XE#1392]) +4 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-rebind.html

  * igt@xe_exec_compute_mode@once-userptr-invalidate:
    - shard-lnl:          [PASS][124] -> [FAIL][125] ([Intel XE#1069])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-1/igt@xe_exec_compute_mode@once-userptr-invalidate.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@xe_exec_compute_mode@once-userptr-invalidate.html

  * igt@xe_exec_fault_mode@many-execqueues-invalid-userptr-fault:
    - shard-dg2-set2:     NOTRUN -> [SKIP][126] ([Intel XE#1201] / [Intel XE#288]) +1 other test skip
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@xe_exec_fault_mode@many-execqueues-invalid-userptr-fault.html

  * igt@xe_gt_freq@freq_reset_multiple:
    - shard-lnl:          [PASS][127] -> [DMESG-FAIL][128] ([Intel XE#1620])
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-1/igt@xe_gt_freq@freq_reset_multiple.html
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@xe_gt_freq@freq_reset_multiple.html

  * igt@xe_live_ktest@xe_migrate:
    - shard-dg2-set2:     [PASS][129] -> [SKIP][130] ([Intel XE#1192] / [Intel XE#1201])
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-466/igt@xe_live_ktest@xe_migrate.html
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@xe_live_ktest@xe_migrate.html

  * igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit:
    - shard-lnl:          NOTRUN -> [SKIP][131] ([Intel XE#2229])
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-5/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html

  * igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit:
    - shard-dg2-set2:     NOTRUN -> [FAIL][132] ([Intel XE#1999]) +1 other test fail
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit.html

  * igt@xe_oa@closed-fd-and-unmapped-access:
    - shard-dg2-set2:     NOTRUN -> [SKIP][133] ([Intel XE#1201] / [Intel XE#2541]) +1 other test skip
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-436/igt@xe_oa@closed-fd-and-unmapped-access.html

  * igt@xe_pm@d3hot-mmap-vram:
    - shard-lnl:          NOTRUN -> [SKIP][134] ([Intel XE#1948])
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@xe_pm@d3hot-mmap-vram.html

  * igt@xe_pm@s2idle-multiple-execs:
    - shard-dg2-set2:     [PASS][135] -> [INCOMPLETE][136] ([Intel XE#1195] / [Intel XE#1358])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-463/igt@xe_pm@s2idle-multiple-execs.html
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-434/igt@xe_pm@s2idle-multiple-execs.html

  * igt@xe_pm@s3-d3hot-basic-exec:
    - shard-dg2-set2:     [PASS][137] -> [DMESG-WARN][138] ([Intel XE#1551] / [Intel XE#569])
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@xe_pm@s3-d3hot-basic-exec.html
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@xe_pm@s3-d3hot-basic-exec.html

  * igt@xe_pm@s4-mocs:
    - shard-dg2-set2:     [PASS][139] -> [DMESG-WARN][140] ([Intel XE#2280])
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-434/igt@xe_pm@s4-mocs.html
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@xe_pm@s4-mocs.html

  * igt@xe_query@multigpu-query-invalid-query:
    - shard-lnl:          NOTRUN -> [SKIP][141] ([Intel XE#944])
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-4/igt@xe_query@multigpu-query-invalid-query.html

  * igt@xe_wedged@wedged-mode-toggle:
    - shard-lnl:          [PASS][142] -> [ABORT][143] ([Intel XE#2310])
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-7/igt@xe_wedged@wedged-mode-toggle.html
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-1/igt@xe_wedged@wedged-mode-toggle.html

  
#### Possible fixes ####

  * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [FAIL][144] ([Intel XE#1426]) -> [PASS][145] +1 other test pass
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-436/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-6.html
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-435/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-6.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
    - {shard-bmg}:        [FAIL][146] ([Intel XE#2436]) -> [PASS][147] +1 other test pass
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-3/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-3/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-c-dp-2:
    - {shard-bmg}:        [FAIL][148] -> [PASS][149]
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-3/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-c-dp-2.html
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-3/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-c-dp-2.html

  * igt@kms_cursor_crc@cursor-suspend:
    - shard-dg2-set2:     [DMESG-WARN][150] ([Intel XE#1551]) -> [PASS][151] +1 other test pass
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-435/igt@kms_cursor_crc@cursor-suspend.html
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_cursor_crc@cursor-suspend.html

  * igt@kms_flip@2x-flip-vs-panning-interruptible@cd-dp2-hdmi-a3:
    - {shard-bmg}:        [DMESG-WARN][152] ([Intel XE#877]) -> [PASS][153] +4 other tests pass
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-6/igt@kms_flip@2x-flip-vs-panning-interruptible@cd-dp2-hdmi-a3.html
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-4/igt@kms_flip@2x-flip-vs-panning-interruptible@cd-dp2-hdmi-a3.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a6-dp4:
    - shard-dg2-set2:     [DMESG-WARN][154] ([Intel XE#2019]) -> [PASS][155] +1 other test pass
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a6-dp4.html
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a6-dp4.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank:
    - shard-lnl:          [FAIL][156] ([Intel XE#886]) -> [PASS][157] +2 other tests pass
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-3/igt@kms_flip@flip-vs-absolute-wf_vblank.html
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-4/igt@kms_flip@flip-vs-absolute-wf_vblank.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank@c-hdmi-a3:
    - {shard-bmg}:        [INCOMPLETE][158] -> [PASS][159] +2 other tests pass
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-5/igt@kms_flip@flip-vs-absolute-wf_vblank@c-hdmi-a3.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-1/igt@kms_flip@flip-vs-absolute-wf_vblank@c-hdmi-a3.html

  * igt@kms_hdr@invalid-hdr:
    - {shard-bmg}:        [SKIP][160] ([Intel XE#1503]) -> [PASS][161]
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-1/igt@kms_hdr@invalid-hdr.html
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-8/igt@kms_hdr@invalid-hdr.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     [DMESG-WARN][162] ([Intel XE#1162]) -> [PASS][163]
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-434/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-hdmi-a-6.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-hdmi-a-6.html

  * igt@kms_plane_cursor@overlay:
    - shard-dg2-set2:     [INCOMPLETE][164] ([Intel XE#1195]) -> [PASS][165] +2 other tests pass
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-435/igt@kms_plane_cursor@overlay.html
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-436/igt@kms_plane_cursor@overlay.html

  * igt@kms_psr@fbc-psr-suspend:
    - shard-lnl:          [INCOMPLETE][166] -> [PASS][167]
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-4/igt@kms_psr@fbc-psr-suspend.html
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_psr@fbc-psr-suspend.html

  * igt@kms_psr@fbc-psr-suspend@edp-1:
    - shard-lnl:          [INCOMPLETE][168] ([Intel XE#2497]) -> [PASS][169]
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-4/igt@kms_psr@fbc-psr-suspend@edp-1.html
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-2/igt@kms_psr@fbc-psr-suspend@edp-1.html

  * igt@kms_universal_plane@cursor-fb-leak:
    - {shard-bmg}:        [FAIL][170] ([Intel XE#899]) -> [PASS][171] +2 other tests pass
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-5/igt@kms_universal_plane@cursor-fb-leak.html
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-1/igt@kms_universal_plane@cursor-fb-leak.html

  * igt@kms_vrr@flipline:
    - shard-lnl:          [FAIL][172] ([Intel XE#2443]) -> [PASS][173] +1 other test pass
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-2/igt@kms_vrr@flipline.html
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-8/igt@kms_vrr@flipline.html

  * igt@xe_evict@evict-cm-threads-large:
    - shard-dg2-set2:     [TIMEOUT][174] ([Intel XE#1473]) -> [PASS][175] +1 other test pass
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-466/igt@xe_evict@evict-cm-threads-large.html
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@xe_evict@evict-cm-threads-large.html

  * igt@xe_evict@evict-threads-large:
    - {shard-bmg}:        [TIMEOUT][176] ([Intel XE#1473] / [Intel XE#2472]) -> [PASS][177]
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-bmg-6/igt@xe_evict@evict-threads-large.html
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-bmg-6/igt@xe_evict@evict-threads-large.html

  * igt@xe_pm@s4-basic-exec:
    - shard-lnl:          [ABORT][178] ([Intel XE#1358] / [Intel XE#1607] / [Intel XE#1794]) -> [PASS][179] +1 other test pass
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-2/igt@xe_pm@s4-basic-exec.html
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-5/igt@xe_pm@s4-basic-exec.html

  * igt@xe_pm_residency@toggle-gt-c6:
    - shard-lnl:          [FAIL][180] ([Intel XE#958]) -> [PASS][181]
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-lnl-8/igt@xe_pm_residency@toggle-gt-c6.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-lnl-6/igt@xe_pm_residency@toggle-gt-c6.html

  
#### Warnings ####

  * igt@kms_async_flips@invalid-async-flip:
    - shard-dg2-set2:     [SKIP][182] ([Intel XE#873]) -> [SKIP][183] ([Intel XE#1201] / [Intel XE#873])
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_async_flips@invalid-async-flip.html
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_async_flips@invalid-async-flip.html

  * igt@kms_big_fb@4-tiled-16bpp-rotate-270:
    - shard-dg2-set2:     [SKIP][184] ([Intel XE#316]) -> [SKIP][185] ([Intel XE#1201] / [Intel XE#316])
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_big_fb@4-tiled-16bpp-rotate-270.html
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-436/igt@kms_big_fb@4-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][186] ([Intel XE#1201] / [Intel XE#316]) -> [SKIP][187] ([Intel XE#316]) +1 other test skip
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-434/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-dg2-set2:     [SKIP][188] ([Intel XE#1124] / [Intel XE#1201]) -> [SKIP][189] ([Intel XE#1124]) +8 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-434/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-180:
    - shard-dg2-set2:     [SKIP][190] ([Intel XE#1124]) -> [SKIP][191] ([Intel XE#1124] / [Intel XE#1201]) +7 other tests skip
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-436/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-dg2-set2:     [SKIP][192] ([Intel XE#1201] / [Intel XE#619]) -> [SKIP][193] ([Intel XE#619])
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-436/igt@kms_big_fb@yf-tiled-addfb.html
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-dg2-set2:     [SKIP][194] ([Intel XE#607]) -> [SKIP][195] ([Intel XE#1201] / [Intel XE#607])
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-434/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p:
    - shard-dg2-set2:     [SKIP][196] ([Intel XE#1201] / [Intel XE#367]) -> [SKIP][197] ([Intel XE#367]) +3 other tests skip
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-433/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html

  * igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p:
    - shard-dg2-set2:     [SKIP][198] ([Intel XE#367]) -> [SKIP][199] ([Intel XE#1201] / [Intel XE#367])
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html

  * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     [SKIP][200] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][201] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +17 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs@pipe-d-dp-4.html
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs@pipe-d-dp-4.html

  * igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc@pipe-a-dp-4:
    - shard-dg2-set2:     [SKIP][202] ([Intel XE#787]) -> [SKIP][203] ([Intel XE#1201] / [Intel XE#787]) +62 other tests skip
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc@pipe-a-dp-4.html
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc@pipe-a-dp-4.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-dp-4:
    - shard-dg2-set2:     [SKIP][204] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) -> [SKIP][205] ([Intel XE#455] / [Intel XE#787]) +19 other tests skip
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-463/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-dp-4.html
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-dp-4.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][206] ([Intel XE#1201] / [Intel XE#787]) -> [SKIP][207] ([Intel XE#787]) +69 other tests skip
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-466/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-6.html
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-6.html

  * igt@kms_chamelium_color@ctm-red-to-blue:
    - shard-dg2-set2:     [SKIP][208] ([Intel XE#1201] / [Intel XE#306]) -> [SKIP][209] ([Intel XE#306]) +1 other test skip
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-463/igt@kms_chamelium_color@ctm-red-to-blue.html
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_chamelium_color@ctm-red-to-blue.html

  * igt@kms_chamelium_edid@dp-edid-change-during-suspend:
    - shard-dg2-set2:     [SKIP][210] ([Intel XE#373]) -> [SKIP][211] ([Intel XE#1201] / [Intel XE#373]) +8 other tests skip
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_chamelium_edid@dp-edid-change-during-suspend.html
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@kms_chamelium_edid@dp-edid-change-during-suspend.html

  * igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode:
    - shard-dg2-set2:     [SKIP][212] ([Intel XE#1201] / [Intel XE#373]) -> [SKIP][213] ([Intel XE#373]) +9 other tests skip
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-434/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-dg2-set2:     [SKIP][214] ([Intel XE#1201] / [Intel XE#307]) -> [SKIP][215] ([Intel XE#307])
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-435/igt@kms_content_protection@dp-mst-type-0.html
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x170:
    - shard-dg2-set2:     [SKIP][216] ([Intel XE#1201] / [Intel XE#308]) -> [SKIP][217] ([Intel XE#308]) +2 other tests skip
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-466/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html

  * igt@kms_feature_discovery@chamelium:
    - shard-dg2-set2:     [SKIP][218] ([Intel XE#1201] / [Intel XE#701]) -> [SKIP][219] ([Intel XE#701])
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-466/igt@kms_feature_discovery@chamelium.html
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@display-3x:
    - shard-dg2-set2:     [SKIP][220] ([Intel XE#703]) -> [SKIP][221] ([Intel XE#1201] / [Intel XE#703])
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_feature_discovery@display-3x.html
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_feature_discovery@display-3x.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg2-set2:     [SKIP][222] ([Intel XE#1135] / [Intel XE#1201]) -> [SKIP][223] ([Intel XE#1135])
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-466/igt@kms_feature_discovery@psr1.html
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling:
    - shard-dg2-set2:     [SKIP][224] ([Intel XE#455]) -> [SKIP][225] ([Intel XE#1201] / [Intel XE#455]) +6 other tests skip
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling.html
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
    - shard-dg2-set2:     [SKIP][226] ([Intel XE#1201] / [Intel XE#455]) -> [SKIP][227] ([Intel XE#455]) +14 other tests skip
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-433/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff:
    - shard-dg2-set2:     [SKIP][228] ([Intel XE#651]) -> [SKIP][229] ([Intel XE#1201] / [Intel XE#651]) +17 other tests skip
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff.html
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-plflip-blt:
    - shard-dg2-set2:     [SKIP][230] ([Intel XE#1201] / [Intel XE#651]) -> [SKIP][231] ([Intel XE#651]) +24 other tests skip
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-plflip-blt.html
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y:
    - shard-dg2-set2:     [SKIP][232] ([Intel XE#658]) -> [SKIP][233] ([Intel XE#1201] / [Intel XE#658])
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt:
    - shard-dg2-set2:     [SKIP][234] ([Intel XE#1201] / [Intel XE#653]) -> [SKIP][235] ([Intel XE#653]) +24 other tests skip
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-dg2-set2:     [SKIP][236] ([Intel XE#653]) -> [SKIP][237] ([Intel XE#1201] / [Intel XE#653]) +16 other tests skip
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-wc.html
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-dg2-set2:     [SKIP][238] ([Intel XE#1201] / [Intel XE#605]) -> [SKIP][239] ([Intel XE#605])
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-466/igt@kms_getfb@getfb-reject-ccs.html
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-dg2-set2:     [SKIP][240] ([Intel XE#1201] / [Intel XE#356]) -> [SKIP][241] ([Intel XE#356])
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-435/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format:
    - shard-dg2-set2:     [SKIP][242] ([Intel XE#455] / [Intel XE#498]) -> [SKIP][243] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#498]) +1 other test skip
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format.html
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][244] ([Intel XE#498]) -> [SKIP][245] ([Intel XE#1201] / [Intel XE#498]) +2 other tests skip
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-c-hdmi-a-6.html
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-c-hdmi-a-6.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][246] ([Intel XE#1201] / [Intel XE#2318]) -> [SKIP][247] ([Intel XE#2318]) +2 other tests skip
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-466/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a-hdmi-a-6.html
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a-hdmi-a-6.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][248] ([Intel XE#1201] / [Intel XE#2318] / [Intel XE#455]) -> [SKIP][249] ([Intel XE#2318] / [Intel XE#455]) +1 other test skip
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-466/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d-hdmi-a-6.html
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d-hdmi-a-6.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][250] ([Intel XE#2318]) -> [SKIP][251] ([Intel XE#1201] / [Intel XE#2318]) +2 other tests skip
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-6.html
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-6.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][252] ([Intel XE#2318] / [Intel XE#455]) -> [SKIP][253] ([Intel XE#1201] / [Intel XE#2318] / [Intel XE#455]) +1 other test skip
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-d-hdmi-a-6.html
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-d-hdmi-a-6.html

  * igt@kms_pm_backlight@bad-brightness:
    - shard-dg2-set2:     [SKIP][254] ([Intel XE#870]) -> [SKIP][255] ([Intel XE#1201] / [Intel XE#870])
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_pm_backlight@bad-brightness.html
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@kms_pm_backlight@bad-brightness.html

  * igt@kms_pm_backlight@basic-brightness:
    - shard-dg2-set2:     [SKIP][256] ([Intel XE#1201] / [Intel XE#870]) -> [SKIP][257] ([Intel XE#870])
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-436/igt@kms_pm_backlight@basic-brightness.html
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-dg2-set2:     [SKIP][258] ([Intel XE#1129]) -> [SKIP][259] ([Intel XE#1129] / [Intel XE#1201]) +1 other test skip
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_pm_dc@dc5-psr.html
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-dg2-set2:     [SKIP][260] ([Intel XE#1201] / [Intel XE#908]) -> [SKIP][261] ([Intel XE#908]) +1 other test skip
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-433/igt@kms_pm_dc@dc6-dpms.html
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_psr2_sf@plane-move-sf-dmg-area:
    - shard-dg2-set2:     [SKIP][262] ([Intel XE#1201] / [Intel XE#1489]) -> [SKIP][263] ([Intel XE#1489]) +3 other tests skip
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-433/igt@kms_psr2_sf@plane-move-sf-dmg-area.html
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_psr2_sf@plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb:
    - shard-dg2-set2:     [SKIP][264] ([Intel XE#1489]) -> [SKIP][265] ([Intel XE#1201] / [Intel XE#1489]) +3 other tests skip
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr@fbc-psr2-cursor-plane-onoff:
    - shard-dg2-set2:     [SKIP][266] ([Intel XE#1201] / [Intel XE#929]) -> [SKIP][267] ([Intel XE#929]) +10 other tests skip
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-466/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html

  * igt@kms_psr@fbc-psr2-sprite-plane-move:
    - shard-dg2-set2:     [SKIP][268] ([Intel XE#929]) -> [SKIP][269] ([Intel XE#1201] / [Intel XE#929]) +6 other tests skip
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_psr@fbc-psr2-sprite-plane-move.html
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@kms_psr@fbc-psr2-sprite-plane-move.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-dg2-set2:     [SKIP][270] ([Intel XE#1201] / [Intel XE#327]) -> [SKIP][271] ([Intel XE#327]) +1 other test skip
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-435/igt@kms_rotation_crc@primary-rotation-270.html
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
    - shard-dg2-set2:     [SKIP][272] ([Intel XE#327]) -> [SKIP][273] ([Intel XE#1201] / [Intel XE#327])
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-dg2-set2:     [SKIP][274] ([Intel XE#1201] / [Intel XE#1500]) -> [SKIP][275] ([Intel XE#1201] / [Intel XE#362])
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-436/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@xe_compute_preempt@compute-preempt:
    - shard-dg2-set2:     [SKIP][276] ([Intel XE#1280] / [Intel XE#455]) -> [SKIP][277] ([Intel XE#1201] / [Intel XE#1280] / [Intel XE#455]) +1 other test skip
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@xe_compute_preempt@compute-preempt.html
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@xe_compute_preempt@compute-preempt.html

  * igt@xe_copy_basic@mem-set-linear-0xfffe:
    - shard-dg2-set2:     [SKIP][278] ([Intel XE#1126] / [Intel XE#1201]) -> [SKIP][279] ([Intel XE#1126]) +1 other test skip
   [278]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-434/igt@xe_copy_basic@mem-set-linear-0xfffe.html
   [279]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@xe_copy_basic@mem-set-linear-0xfffe.html

  * igt@xe_create@multigpu-create-massive-size:
    - shard-dg2-set2:     [SKIP][280] ([Intel XE#1201] / [Intel XE#944]) -> [SKIP][281] ([Intel XE#944]) +1 other test skip
   [280]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-463/igt@xe_create@multigpu-create-massive-size.html
   [281]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@xe_create@multigpu-create-massive-size.html

  * igt@xe_evict@evict-mixed-many-threads-large:
    - shard-dg2-set2:     [TIMEOUT][282] ([Intel XE#1041] / [Intel XE#1473]) -> [INCOMPLETE][283] ([Intel XE#1195] / [Intel XE#1473])
   [282]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-433/igt@xe_evict@evict-mixed-many-threads-large.html
   [283]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@xe_evict@evict-mixed-many-threads-large.html

  * igt@xe_evict@evict-threads-large:
    - shard-dg2-set2:     [TIMEOUT][284] ([Intel XE#1473]) -> [INCOMPLETE][285] ([Intel XE#1195] / [Intel XE#1473])
   [284]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@xe_evict@evict-threads-large.html
   [285]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@xe_evict@evict-threads-large.html

  * igt@xe_exec_fault_mode@once-invalid-userptr-fault:
    - shard-dg2-set2:     [SKIP][286] ([Intel XE#288]) -> [SKIP][287] ([Intel XE#1201] / [Intel XE#288]) +15 other tests skip
   [286]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@xe_exec_fault_mode@once-invalid-userptr-fault.html
   [287]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-463/igt@xe_exec_fault_mode@once-invalid-userptr-fault.html

  * igt@xe_exec_fault_mode@once-rebind-prefetch:
    - shard-dg2-set2:     [SKIP][288] ([Intel XE#1201] / [Intel XE#288]) -> [SKIP][289] ([Intel XE#288]) +22 other tests skip
   [288]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-434/igt@xe_exec_fault_mode@once-rebind-prefetch.html
   [289]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@xe_exec_fault_mode@once-rebind-prefetch.html

  * igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence:
    - shard-dg2-set2:     [SKIP][290] ([Intel XE#1201] / [Intel XE#2360]) -> [SKIP][291] ([Intel XE#2360])
   [290]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-435/igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence.html
   [291]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence.html

  * igt@xe_huc_copy@huc_copy:
    - shard-dg2-set2:     [SKIP][292] ([Intel XE#1201] / [Intel XE#255]) -> [SKIP][293] ([Intel XE#255])
   [292]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-436/igt@xe_huc_copy@huc_copy.html
   [293]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@xe_huc_copy@huc_copy.html

  * igt@xe_live_ktest@xe_bo:
    - shard-dg2-set2:     [SKIP][294] ([Intel XE#1192]) -> [SKIP][295] ([Intel XE#1192] / [Intel XE#1201])
   [294]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@xe_live_ktest@xe_bo.html
   [295]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@xe_live_ktest@xe_bo.html

  * igt@xe_live_ktest@xe_mocs:
    - shard-dg2-set2:     [SKIP][296] ([Intel XE#1192] / [Intel XE#1201]) -> [FAIL][297] ([Intel XE#1999])
   [296]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-434/igt@xe_live_ktest@xe_mocs.html
   [297]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-433/igt@xe_live_ktest@xe_mocs.html

  * igt@xe_oa@polling-small-buf:
    - shard-dg2-set2:     [SKIP][298] ([Intel XE#2541]) -> [SKIP][299] ([Intel XE#1201] / [Intel XE#2541]) +3 other tests skip
   [298]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@xe_oa@polling-small-buf.html
   [299]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-466/igt@xe_oa@polling-small-buf.html

  * igt@xe_oa@whitelisted-registers-userspace-config:
    - shard-dg2-set2:     [SKIP][300] ([Intel XE#1201] / [Intel XE#2541]) -> [SKIP][301] ([Intel XE#2541]) +7 other tests skip
   [300]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-434/igt@xe_oa@whitelisted-registers-userspace-config.html
   [301]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@xe_oa@whitelisted-registers-userspace-config.html

  * igt@xe_pat@pat-index-xe2:
    - shard-dg2-set2:     [SKIP][302] ([Intel XE#977]) -> [SKIP][303] ([Intel XE#1201] / [Intel XE#977])
   [302]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@xe_pat@pat-index-xe2.html
   [303]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-436/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pat@pat-index-xelpg:
    - shard-dg2-set2:     [SKIP][304] ([Intel XE#979]) -> [SKIP][305] ([Intel XE#1201] / [Intel XE#979])
   [304]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@xe_pat@pat-index-xelpg.html
   [305]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-434/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pm@s3-d3cold-basic-exec:
    - shard-dg2-set2:     [SKIP][306] ([Intel XE#1201] / [Intel XE#2284] / [Intel XE#366]) -> [SKIP][307] ([Intel XE#2284] / [Intel XE#366])
   [306]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-436/igt@xe_pm@s3-d3cold-basic-exec.html
   [307]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-432/igt@xe_pm@s3-d3cold-basic-exec.html

  * igt@xe_query@multigpu-query-uc-fw-version-guc:
    - shard-dg2-set2:     [SKIP][308] ([Intel XE#944]) -> [SKIP][309] ([Intel XE#1201] / [Intel XE#944]) +1 other test skip
   [308]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-432/igt@xe_query@multigpu-query-uc-fw-version-guc.html
   [309]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-435/igt@xe_query@multigpu-query-uc-fw-version-guc.html

  * igt@xe_wedged@wedged-at-any-timeout:
    - shard-dg2-set2:     [DMESG-WARN][310] ([Intel XE#1760]) -> [DMESG-FAIL][311] ([Intel XE#1760])
   [310]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7990/shard-dg2-433/igt@xe_wedged@wedged-at-any-timeout.html
   [311]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/shard-dg2-435/igt@xe_wedged@wedged-at-any-timeout.html

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

  [Intel XE#1041]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1041
  [Intel XE#1069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1069
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
  [Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
  [Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
  [Intel XE#1130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1130
  [Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
  [Intel XE#1162]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1162
  [Intel XE#1188]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1188
  [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
  [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
  [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [Intel XE#1399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1399
  [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1426
  [Intel XE#1437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1437
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1466
  [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1551]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1551
  [Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607
  [Intel XE#1616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1616
  [Intel XE#1620]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1620
  [Intel XE#1656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1656
  [Intel XE#1659]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1659
  [Intel XE#1695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1695
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1760
  [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
  [Intel XE#1948]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1948
  [Intel XE#1999]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1999
  [Intel XE#2019]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2019
  [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2251]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2251
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2280
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
  [Intel XE#2310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2310
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2318]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2318
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2329]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2329
  [Intel XE#2333]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2333
  [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
  [Intel XE#2357]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2357
  [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
  [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2436]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2436
  [Intel XE#2443]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2443
  [Intel XE#2446]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2446
  [Intel XE#2472]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2472
  [Intel XE#2497]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2497
  [Intel XE#2514]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2514
  [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#2567]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2567
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/314
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
  [Intel XE#327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/327
  [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
  [Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356
  [Intel XE#361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/361
  [Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/374
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#498]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/498
  [Intel XE#569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/569
  [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
  [Intel XE#605]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/605
  [Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
  [Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/701
  [Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
  [Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
  [Intel XE#736]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/736
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#873]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/873
  [Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
  [Intel XE#908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/908
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#958]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/958
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979


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

  * IGT: IGT_7990 -> IGTPW_11632
  * Linux: xe-1822-411a047925bb7e169a075a2ddfb63ba96f26a8c8 -> xe-1823-5626fe5d6eeb0949727861375b27d67ee71feaa7

  IGTPW_11632: 11632
  IGT_7990: 9ca5ff0afa3636478b6ba5a97e5ba440cfb2e55e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1822-411a047925bb7e169a075a2ddfb63ba96f26a8c8: 411a047925bb7e169a075a2ddfb63ba96f26a8c8
  xe-1823-5626fe5d6eeb0949727861375b27d67ee71feaa7: 5626fe5d6eeb0949727861375b27d67ee71feaa7

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11632/index.html

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

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

* [PATCH i-g-t 11/14] lib/igt_kms: add function to reset link params
       [not found] <20240825200612.4036178-1-kunal1.joshi@intel.com>
@ 2024-08-25 20:06 ` Kunal Joshi
  2024-09-03 14:26   ` Imre Deak
  0 siblings, 1 reply; 26+ messages in thread
From: Kunal Joshi @ 2024-08-25 20:06 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

Writing auto to i915_dp_force_(link_rate/lane_count) and retraing
afterwards sets max link param's supported by sink.Reset link rate
and lane count to auto, also installs exit handler to set link rate
and lane count to auto on exit
---
 lib/igt_kms.c | 36 ++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h |  1 +
 2 files changed, 37 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index e0533f6ae..b7511ccfc 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -7000,3 +7000,39 @@ int igt_get_dp_pending_retrain(int drm_fd, igt_output_t *output)
 	sscanf(buf, "%d", &ret);
 	return ret;
 }
+
+/**
+ * igt_reset_link_params:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ *
+ * Reset link rate and lane count to auto, also installs exit handler
+ * to set link rate and lane count to auto on exit
+ */
+void igt_reset_link_params(int drm_fd, igt_output_t *output)
+{
+	bool valid;
+	drmModeConnector *temp;
+
+	igt_require_f(output->name, "Invalid output");
+	valid = true;
+	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
+						    "i915_dp_force_link_rate",
+						    "auto", "auto");
+	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
+						    "i915_dp_force_lane_count",
+						    "auto", "auto");
+	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
+						    "i915_dp_force_link_retrain",
+						    "1", "1");
+	igt_assert_f(valid, "Unable to set attr or install exit handler\n");
+	dump_connector_attrs();
+	igt_install_exit_handler(reset_connectors_at_exit);
+
+	/*
+	 * To allow callers to always use GetConnectorCurrent we need to force a
+	 * redetection here.
+	 */
+	temp = drmModeGetConnector(drm_fd, output->config.connector->connector_id);
+	drmModeFreeConnector(temp);
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 3d7842b36..847609379 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1259,5 +1259,6 @@ bool igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output);
 bool igt_has_force_link_training_failure_debugfs(int drmfd, igt_output_t *output);
 int igt_get_dp_pending_lt_failures(int drm_fd, igt_output_t *output);
 int igt_get_dp_pending_retrain(int drm_fd, igt_output_t *output);
+void igt_reset_link_params(int drm_fd, igt_output_t *output);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.34.1


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

* RE: [PATCH i-g-t 01/14] lib/igt_kms: add enum for link rate and lane count
  2024-08-25 18:14 ` [PATCH i-g-t 01/14] lib/igt_kms: add enum for link rate and lane count Kunal Joshi
@ 2024-08-27  5:30   ` B, Jeevan
  0 siblings, 0 replies; 26+ messages in thread
From: B, Jeevan @ 2024-08-27  5:30 UTC (permalink / raw)
  To: Joshi, Kunal1, igt-dev@lists.freedesktop.org; +Cc: Joshi, Kunal1

> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Kunal
> Joshi
> Sent: Sunday, August 25, 2024 11:44 PM
> To: igt-dev@lists.freedesktop.org
> Cc: Joshi, Kunal1 <kunal1.joshi@intel.com>
> Subject: [PATCH i-g-t 01/14] lib/igt_kms: add enum for link rate and lane
> count
> 
> add enums for link rate, lane count
> 
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
LGTM.

Reviewed-by: Jeevan B <jeevan.b@intel.com>

> ---
>  lib/igt_kms.h | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h index 25ba50916..999921f9f
> 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -258,6 +258,29 @@ enum intel_broadcast_rgb_mode {
>  	BROADCAST_RGB_16_235
>  };
> 
> +enum dp_link_rate {
> +	DP_LINK_RATE_162000 = 162000,
> +	DP_LINK_RATE_216000 = 216000,
> +	DP_LINK_RATE_243000 = 243000,
> +	DP_LINK_RATE_270000 = 270000,
> +	DP_LINK_RATE_324000 = 324000,
> +	DP_LINK_RATE_432000 = 432000,
> +	DP_LINK_RATE_540000 = 540000,
> +	DP_LINK_RATE_675000 = 675000,
> +	DP_LINK_RATE_810000 = 810000,
> +	DP_LINK_RATE_1000000 = 1000000,
> +	DP_LINK_RATE_1350000 = 1350000,
> +	DP_LINK_RATE_2000000 = 2000000
> +};
> +
> +#define DP_MAX_LINK_RATE_COUNT 12
> +
> +enum dp_lane_count {
> +	DP_LANE_COUNT_1 = 1,
> +	DP_LANE_COUNT_2 = 2,
> +	DP_LANE_COUNT_4 = 4
> +};
> +
>  struct edid;
> 
>  bool kmstest_force_connector(int fd, drmModeConnector *connector,
> --
> 2.43.0


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

* RE: [PATCH i-g-t 13/14] tests/intel/kms_dp_fallback: add test for validating fallback
  2024-08-25 18:14 ` [PATCH i-g-t 13/14] tests/intel/kms_dp_fallback: add test for validating fallback Kunal Joshi
@ 2024-09-03  8:07   ` Samala, Pranay
  0 siblings, 0 replies; 26+ messages in thread
From: Samala, Pranay @ 2024-09-03  8:07 UTC (permalink / raw)
  To: Joshi, Kunal1, igt-dev@lists.freedesktop.org; +Cc: Joshi, Kunal1, Deak, Imre



> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Kunal Joshi
> Sent: Sunday, August 25, 2024 11:44 PM
> To: igt-dev@lists.freedesktop.org
> Cc: Joshi, Kunal1 <kunal1.joshi@intel.com>; Deak, Imre <imre.deak@intel.com>
> Subject: [PATCH i-g-t 13/14] tests/intel/kms_dp_fallback: add test for validating
> fallback
> 
> add test to valdiate fallback for DP connector, eDP subtest will be added later.
> 
> How does test validates fallback?
> - test start by doing initial modeset on default mode
>    (if connector is DP then we enable just that connector,
>     if its DP-MST we enable all on the same topology)
> - force link training failures and retrain until we reach
>   lowest param or retrain is disabled
> - expect hotplug and link-status to turn bad
> - expect link params reduce after fallback
> 
> v2: add test for mst (imre)
>     refresh mode list (imre)
>     monitor got hotplugs (imre)
>     check link parameter are reduced (imre)
> 
> v3: call check_fn (Santosh)
> 
> v4: handle buggy lg monitor (Imre)
>     remove reset in between (Imre)
> 
> Cc: Imre Deak <imre.deak@intel.com>
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> Suggested-by: Imre Deak <imre.deak@intel.com>
> ---
>  tests/intel/kms_fallback.c | 506 +++++++++++++++++++++++++++++++++++++
>  tests/meson.build          |   1 +
>  2 files changed, 507 insertions(+)
>  create mode 100644 tests/intel/kms_fallback.c
> 
> diff --git a/tests/intel/kms_fallback.c b/tests/intel/kms_fallback.c new file mode
> 100644 index 000000000..e5da3c579
> --- /dev/null
> +++ b/tests/intel/kms_fallback.c
> @@ -0,0 +1,506 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +/**
> + * TEST: kms fallback
> + * Category: Display
> + * Description: Test link training fallback for eDP/DP connectors
> + * Driver requirement: i915, xe
> + * Functionality: link training
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
> +#include <sys/types.h>
> +
> +#include "igt.h"
> +#include "igt_psr.h"
> +
> +/**
> + * SUBTEST: dp-fallback
> + * Description: Test fallback on DP connectors  */
> +
> +#define RETRAIN_COUNT 1
> +#define LT_FAILURE_SAME_CAPS 1
> +#define LT_FAILURE_REDUCED_CAPS 2
> +#define SPURIOUS_HPD_RETRY 3
> +
> +static int traversed_mst_outputs[IGT_MAX_PIPES];
> +static int traversed_mst_output_count;
> +typedef struct {
> +	int drm_fd;
> +	igt_display_t display;
> +	drmModeModeInfo *mode;
> +	igt_output_t *output;
> +	enum pipe pipe;
> +	struct igt_fb fb;
> +	struct igt_plane *primary;
> +	int n_pipes;
> +} data_t;
> +
> +typedef int (*condition_check_fn)(int drm_fd, igt_output_t *output);
> +
> +IGT_TEST_DESCRIPTION("Test link training fallback");
> +
> +static const char *str_link_rate(enum dp_link_rate link_rate) {
> +	switch (link_rate) {
> +	case DP_LINK_RATE_162000:
> +		return "1.62 Gbps";
> +	case DP_LINK_RATE_216000:
> +		return "2.16 Gbps";
> +	case DP_LINK_RATE_243000:
> +		return "2.43 Gbps";
> +	case DP_LINK_RATE_270000:
> +		return "2.70 Gbps";
> +	case DP_LINK_RATE_324000:
> +		return "3.24 Gbps";
> +	case DP_LINK_RATE_432000:
> +		return "4.32 Gbps";
> +	case DP_LINK_RATE_540000:
> +		return "5.40 Gbps";
> +	case DP_LINK_RATE_675000:
> +		return "6.75 Gbps";
> +	case DP_LINK_RATE_810000:
> +		return "8.10 Gbps";
> +	case DP_LINK_RATE_1000000:
> +		return "10.00 Gbps";
> +	case DP_LINK_RATE_1350000:
> +		return "13.50 Gbps";
> +	case DP_LINK_RATE_2000000:
> +		return "20.00 Gbps";
> +	default:
> +		igt_assert_f(0, "Invalid link rate %d\n", link_rate);
> +	}
> +}
> +
> +static const char *str_lane_count(enum dp_lane_count lane_count) {
> +	switch (lane_count) {
> +	case DP_LANE_COUNT_1:
> +		return "1";
> +	case DP_LANE_COUNT_2:
> +		return "2";
> +	case DP_LANE_COUNT_4:
> +		return "4";
> +	default:
> +		igt_assert_f(0, "Invalid lane count %d\n", lane_count);
> +	}
> +}
> +
> +static void find_mst_outputs(int drm_fd, data_t *data,
> +			     igt_output_t *output,
> +			     igt_output_t **mst_outputs,
> +			     int *num_mst_outputs)
> +{
> +	bool is_output_mst;
> +	uint64_t path_blob_id;
> +	igt_output_t *connector_output;
> +	drmModePropertyPtr path_prop = NULL;
> +	drmModePropertyPtr connector_path_prop = NULL;
> +
> +	igt_assert_f(output, "Invalid output\n");
> +
> +	/*
> +	 * Check if given output is MST by checking if it has PATH property
> +	 */
> +	is_output_mst = kmstest_get_property(drm_fd,
> +			output->config.connector->connector_id,
> +			DRM_MODE_OBJECT_CONNECTOR, "PATH", NULL,
> +			&path_blob_id, &path_prop);
> +
> +	if (!is_output_mst)
> +		return;
> +
> +	/*
> +	 * If output is MST check all other connected output which shares
> +	 * same path and fill mst_outputs and num_mst_outputs
> +	 */
> +	for_each_connected_output(&data->display, connector_output) {
> +
> +		connector_path_prop = NULL;
> +
> +		kmstest_get_property(drm_fd,
> +				     connector_output->config.connector-
> >connector_id,
> +				     DRM_MODE_OBJECT_CONNECTOR, "PATH",
> +				     NULL, &path_blob_id,
> +				     &connector_path_prop);
> +
> +		if (connector_path_prop && path_prop &&
> +		    connector_path_prop->prop_id == path_prop->prop_id)
> +			mst_outputs[(*num_mst_outputs)++] =
> connector_output;
> +
> +		if (connector_path_prop)
> +			drmModeFreeProperty(connector_path_prop);
> +	}
> +	if (path_prop)
> +		drmModeFreeProperty(path_prop);
> +}
> +
> +static bool setup_mst_outputs(data_t *data, igt_output_t *mst_output[],
> +			      int *dp_mst_outputs)
> +{
> +	int i;
> +	igt_output_t *output;
> +
> +	igt_require_f(igt_check_output_is_dp_mst(data->output),
> +		      "Not a valid MST connector\n");
> +
> +	/*
> +	 * Check if this is already traversed
> +	 */
> +	for (i = 0; i < traversed_mst_output_count; i++)
> +		if (traversed_mst_outputs[i] == data->output->config.connector-
> >connector_id)
> +			return false;
> +
> +	find_mst_outputs(data->drm_fd, data, data->output,
> +			 mst_output, dp_mst_outputs);
> +
> +	for (i = 0; i < *dp_mst_outputs; i++) {
> +		output = mst_output[i];
> +		traversed_mst_outputs[traversed_mst_output_count++] =
> output->config.connector->connector_id;
> +		igt_info("Output %s is in same topology as %s\n",
> +			 igt_output_name(output),
> +			 igt_output_name(data->output));
> +	}
> +
> +	return true;
> +}
> +
> +static void setup_pipe_on_mst_outputs(data_t *data,
> +				      igt_output_t *mst_output[],
> +				      int *dp_mst_outputs)
> +{
> +	int i = 0;
> +
> +	igt_require_f(data->n_pipes >= *dp_mst_outputs,
> +		      "Need %d pipes to assign to %d MST outputs\n",
> +		      data->n_pipes, *dp_mst_outputs);
> +
> +	for_each_pipe(&data->display, data->pipe) {
> +		if (i >= *dp_mst_outputs)
> +			break;
> +		igt_info("Setting pipe %s on output %s\n",
> +			 kmstest_pipe_name(data->pipe),
> +			 igt_output_name(mst_output[i]));
> +		igt_output_set_pipe(mst_output[i++], data->pipe);
> +	}
> +}
> +
> +static void setup_modeset_on_mst_outputs(data_t *data,
> +					 igt_output_t *mst_output[],
> +					 int *dp_mst_outputs,
> +					 drmModeModeInfo *mode[],
> +					 struct igt_fb fb[],
> +					 struct igt_plane *primary[])
> +{
> +	int i;
> +
> +	for (i = 0; i < *dp_mst_outputs; i++) {
> +		mst_output[i]->force_reprobe = true;
> +		igt_output_refresh(mst_output[i]);
> +		mode[i] = igt_output_get_mode(mst_output[i]);
> +		igt_info("Mode %dx%d@%d on output %s\n",
> +			 mode[i]->hdisplay, mode[i]->vdisplay,
> +			 mode[i]->vrefresh,
> +			 igt_output_name(mst_output[i]));
> +		primary[i] = igt_output_get_plane_type(mst_output[i],
> +
> 	DRM_PLANE_TYPE_PRIMARY);
> +		igt_create_color_fb(data->drm_fd,
> +				    mode[i]->hdisplay,
> +				    mode[i]->vdisplay,
> +				    DRM_FORMAT_XRGB8888,
> +				    DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0,
> +				    &fb[i]);
> +		igt_plane_set_fb(primary[i], &fb[i]);
> +	}
> +}
> +
> +static bool validate_modeset_mst_output(data_t *data,
> +					igt_output_t *mst_output[],
> +					int *dp_mst_outputs,
> +					drmModeModeInfo *mode[],
> +					struct igt_fb fb[],
> +					struct igt_plane *primary[])
> +{
> +	bool found;
> +	int ret;
> +
> +	igt_require_f(*dp_mst_outputs > 0, "No MST outputs found\n");
> +	setup_pipe_on_mst_outputs(data, mst_output, dp_mst_outputs);
> +	setup_modeset_on_mst_outputs(data, mst_output,
> +				     dp_mst_outputs,
> +				     mode, fb, primary);
> +	if (!igt_display_try_commit2(&data->display, COMMIT_ATOMIC)) {
> +		igt_info("Modes overridden\n");
> +		found =
> +igt_override_all_active_output_modes_to_fit_bw(&data->display);
> +
> +		igt_require_f(found,
> +			      "No valid mode combo found for MST modeset\n");
> +		ret = igt_display_try_commit2(&data->display,
> COMMIT_ATOMIC);
> +		igt_require_f(ret == 0,
> +			      "Commit failure during MST modeset\n");
> +	}
> +	return true;
> +}
> +
> +static bool setup_mst(data_t *data, bool is_mst,
> +		      igt_output_t *mst_output[],
> +		      int *dp_mst_outputs, drmModeModeInfo *mode[],
> +		      struct igt_fb fb[], struct igt_plane *primary[]) {
> +	bool ret;
> +
> +	*dp_mst_outputs = 0;
> +	ret = setup_mst_outputs(data, mst_output, dp_mst_outputs);
> +	if (!ret) {
> +		igt_info("Skipping MST output %s as already tested\n",
> +			 igt_output_name(data->output));
> +		return false;
> +	}
> +
> +	ret = validate_modeset_mst_output(data, mst_output,
> +					  dp_mst_outputs, mode,
> +					  fb, primary);
> +	if (!ret) {
> +		igt_info("Skipping MST output %s as validpipe/output combo not
> found\n",
> +			 igt_output_name(data->output));
> +		return false;
> +	}
> +
> +	igt_display_commit2(&data->display, COMMIT_ATOMIC);
> +	return true;
> +}
> +
> +static int check_condition_with_timeout(int drm_fd, igt_output_t *output,
> +					condition_check_fn check_fn,
> +					double interval, double timeout)
> +{
> +	struct timespec start_time, current_time;
> +	double elapsed_time;
> +
> +	clock_gettime(CLOCK_MONOTONIC, &start_time);
> +
> +	while (1) {
> +		if (check_fn(drm_fd, output) == 0) {
> +			return 0;
> +		}
> +
> +		clock_gettime(CLOCK_MONOTONIC, &current_time);
> +		elapsed_time = (current_time.tv_sec - start_time.tv_sec) +
> +			(current_time.tv_nsec - start_time.tv_nsec) / 1e9;
> +
> +		if (elapsed_time >= timeout) {
> +			return -1;
> +		}
> +
> +		usleep((useconds_t)(interval * 1000000));
> +	}
> +}
> +
> +static void test_fallback(data_t *data, bool is_mst) {
> +	int dp_mst_outputs, retries;
> +	igt_output_t *mst_outputs[IGT_MAX_PIPES];
> +	enum dp_link_rate max_link_rate, curr_link_rate, prev_link_rate;
> +	enum dp_lane_count max_lane_count, curr_lane_count,
> prev_lane_count;
> +	uint32_t link_status_prop_id;
> +	uint64_t link_status_value;
> +	drmModeModeInfo *mst_modes[IGT_MAX_PIPES], *mode;
> +	drmModePropertyPtr link_status_prop;
> +	struct igt_fb mst_fbs[IGT_MAX_PIPES], fb;
> +	struct igt_plane *mst_primarys[IGT_MAX_PIPES], *primary;
> +	struct udev_monitor *mon;
> +
> +	igt_display_reset(&data->display);
> +	retries = SPURIOUS_HPD_RETRY;
> +
> +	if (is_mst) {
> +		if (!setup_mst(data, is_mst, mst_outputs,
> +			       &dp_mst_outputs, mst_modes, mst_fbs,
> +			       mst_primarys))
> +			return;
> +	} else {
> +		data->pipe = PIPE_A;
> +		igt_output_set_pipe(data->output, data->pipe);
> +		mode = igt_output_get_mode(data->output);
> +		primary = igt_output_get_plane_type(data->output,
> +
> DRM_PLANE_TYPE_PRIMARY);
> +		igt_create_color_fb(data->drm_fd,
> +				    mode->hdisplay, mode->vdisplay,
> +				    DRM_FORMAT_XRGB8888,
> +				    DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0,
> +				    &fb);
> +		igt_plane_set_fb(primary, &fb);
> +		igt_display_commit2(&data->display, COMMIT_ATOMIC);
> +	}
> +
> +	igt_info("Testing link training fallback on %s\n",
> +		 igt_output_name(data->output));
> +
> +	igt_reset_link_params(data->drm_fd, data->output);
> +	igt_assert_eq(check_condition_with_timeout(data->drm_fd,
> +						   data->output,
> +						   igt_get_dp_pending_retrain,
> +						   1.0, 20.0), 0);
> +
> +	max_link_rate = igt_get_dp_max_link_rate(data->drm_fd, data->output);
> +	max_lane_count = igt_get_dp_max_lane_count(data->drm_fd,
> +data->output);
> +
> +	while (!igt_get_dp_link_retrain_disabled(data->drm_fd,
> +						 data->output)) {
> +
> +		prev_link_rate = igt_get_dp_link_rate_set_for_output(data-
> >drm_fd, data->output);
> +		prev_lane_count = igt_get_dp_lane_count_set_for_output(data-
> >drm_fd,
> +data->output);
> +
> +		igt_info("Current link rate: %s, Current lane count: %s\n",
> +			 str_link_rate(prev_link_rate),
> +			 str_lane_count(prev_lane_count));
> +		mon = igt_watch_uevents();
> +		igt_force_lt_failure(data->drm_fd, data->output,
> +				     LT_FAILURE_REDUCED_CAPS);
> +		igt_force_link_retrain(data->drm_fd, data->output,
> +				       RETRAIN_COUNT);
> +
> +		igt_assert_eq(check_condition_with_timeout(data->drm_fd,
> +							   data->output,
> +
> igt_get_dp_pending_retrain,
> +							   1.0, 20.0), 0);
> +		igt_assert_eq(check_condition_with_timeout(data->drm_fd,
> +							   data->output,
> +
> igt_get_dp_pending_lt_failures,
> +							   1.0, 20.0), 0);
> +
> +		if (igt_get_dp_link_retrain_disabled(data->drm_fd,
> +						     data->output)) {
> +			igt_reset_connectors();
> +			return;
> +		}
> +
> +		igt_assert_f(igt_hotplug_detected(mon, 20),
> +			     "Didn't get hotplug for force link training failure\n");
> +
> +		kmstest_get_property(data->drm_fd,
> +				data->output->config.connector->connector_id,
> +				DRM_MODE_OBJECT_CONNECTOR, "link-
> status",
> +				&link_status_prop_id, &link_status_value,
> +				&link_status_prop);
> +
> +		igt_assert_eq(link_status_value,
> DRM_MODE_LINK_STATUS_BAD);
> +
> +		igt_flush_uevents(mon);
> +
> +		if (is_mst) {
> +			igt_assert_f(validate_modeset_mst_output(data,
> +								 mst_outputs,
> +
> &dp_mst_outputs,
> +								 mst_modes,
> +								 mst_fbs,
> +
> mst_primarys),
> +				     "MST modeset failed\n");
> +		} else {
> +			data->output->force_reprobe = true;
> +			igt_output_refresh(data->output);
> +			data->pipe = PIPE_A;
> +			igt_output_set_pipe(data->output, data->pipe);
> +			mode = igt_output_get_mode(data->output);
> +			igt_info("Mode %dx%d@%d on output %s\n",
> +				 mode->hdisplay, mode->vdisplay,
> +				 mode->vrefresh,
> +				 igt_output_name(data->output));
> +			primary = igt_output_get_plane_type(data->output,
> +
> DRM_PLANE_TYPE_PRIMARY);
> +			igt_create_color_fb(data->drm_fd,
> +					    mode->hdisplay,
> +					    mode->vdisplay,
> +					    DRM_FORMAT_XRGB8888,
> +					    DRM_FORMAT_MOD_LINEAR,
> +					    0.0, 1.0, 0.0, &fb);
> +			igt_plane_set_fb(primary, &fb);
> +		}
> +
> +		kmstest_set_connector_link_status(data->drm_fd,
> +						  data->output-
> >config.connector,
> +
> DRM_MODE_LINK_STATUS_GOOD);
> +		igt_display_commit2(&data->display, COMMIT_ATOMIC);
> +
> +		kmstest_get_property(data->drm_fd,
> +				data->output->config.connector->connector_id,
> +				DRM_MODE_OBJECT_CONNECTOR, "link-
> status",
> +				&link_status_prop_id, &link_status_value,
> +				&link_status_prop);
> +		igt_assert_eq(link_status_value,
> DRM_MODE_LINK_STATUS_GOOD);
> +
> +		curr_link_rate = igt_get_dp_link_rate_set_for_output(data-
> >drm_fd, data->output);
> +		curr_lane_count = igt_get_dp_lane_count_set_for_output(data-
> >drm_fd,
> +data->output);
> +
> +		igt_assert_f((curr_link_rate < prev_link_rate ||
> +			     curr_lane_count < prev_lane_count) ||
> +			     ((curr_link_rate == max_link_rate &&
> curr_lane_count == max_lane_count) && --retries),
> +			     "Fallback unsuccessful\n");
> +
> +		prev_link_rate = curr_link_rate;
> +		prev_lane_count = curr_lane_count;
> +	}
> +}
> +
> +igt_main
> +{
> +	data_t data = {};
> +
> +	igt_fixture {
> +		data.drm_fd = drm_open_driver_master(DRIVER_INTEL |
> +						     DRIVER_XE);
> +		kmstest_set_vt_graphics_mode();
> +		igt_display_require(&data.display, data.drm_fd);
> +		igt_display_require_output(&data.display);
> +		for_each_pipe(&data.display, data.pipe) {
> +			data.n_pipes++;
> +		}
> +	}
> +
> +	igt_subtest("dp-fallback") {
> +		bool ran = false;
> +		igt_output_t *output;
> +
> +		for_each_connected_output(&data.display, output) {
> +
> +			data.output = output;
> +			if
> (!igt_has_force_link_training_failure_debugfs(data.drm_fd,
> +
> data.output)) {
> +				igt_info("Output %s unsupported\n",
> igt_output_name(data.output));

If possible, we can convert this message to a more user-friendly way.

Igt_info("Output %s doesn't support force link training failure\n" 
Or anything similar.

Regards,
Pranay Samala
> +				continue;
> +			}
> +
> +			if (output->config.connector->connector_type !=
> DRM_MODE_CONNECTOR_DisplayPort) {
> +				igt_info("Skipping output %s as it's not DP\n",
> output->name);
> +				continue;
> +			}
> +
> +			ran = true;
> +
> +			/*
> +			 * Check output is MST
> +			 */
> +			if (igt_check_output_is_dp_mst(data.output)) {
> +				igt_info("Testing MST output %s\n",
> +					 igt_output_name(data.output));
> +				test_fallback(&data, true);
> +			} else {
> +				igt_info("Testing DP output %s\n",
> +					 igt_output_name(data.output));
> +				test_fallback(&data, false);
> +			}
> +		}
> +		igt_require_f(ran, "No output supports fallback\n");
> +	}
> +
> +	igt_fixture {
> +		igt_remove_fb(data.drm_fd, &data.fb);
> +		igt_display_fini(&data.display);
> +		close(data.drm_fd);
> +	}
> +}
> diff --git a/tests/meson.build b/tests/meson.build index 00556c9d6..86fab423b
> 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -249,6 +249,7 @@ intel_kms_progs = [
>  	'kms_dirtyfb',
>  	'kms_draw_crc',
>  	'kms_dsc',
> +        'kms_fallback',
>  	'kms_fb_coherency',
>  	'kms_fbcon_fbt',
>  	'kms_fence_pin_leak',
> --
> 2.43.0


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

* RE: [PATCH i-g-t 07/14] lib/igt_kms: add function to check force link training failure support
  2024-08-25 18:14 ` [PATCH i-g-t 07/14] lib/igt_kms: add function to check force link training failure support Kunal Joshi
@ 2024-09-03  8:08   ` Samala, Pranay
  0 siblings, 0 replies; 26+ messages in thread
From: Samala, Pranay @ 2024-09-03  8:08 UTC (permalink / raw)
  To: Joshi, Kunal1, igt-dev@lists.freedesktop.org; +Cc: Joshi, Kunal1



> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Kunal Joshi
> Sent: Sunday, August 25, 2024 11:44 PM
> To: igt-dev@lists.freedesktop.org
> Cc: Joshi, Kunal1 <kunal1.joshi@intel.com>
> Subject: [PATCH i-g-t 07/14] lib/igt_kms: add function to check force link training
> failure support
> 
> add helper to check if platform support forcing link training failures
> 
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
LGTM.

Reviewed-by: Pranay Samala <pranay.samala@intel.com>
> ---
>  lib/igt_kms.c | 25 +++++++++++++++++++++++++  lib/igt_kms.h |  1 +
>  2 files changed, 26 insertions(+)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c index 2720095d4..4ab47e2e9 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -6893,3 +6893,28 @@ bool igt_get_dp_link_retrain_disabled(int drm_fd,
> igt_output_t *output)
>  	igt_require(res > 0);
>  	return strstr(buf, "yes");
>  }
> +
> +/**
> + * Checks if the force link training failure debugfs
> + * is available for a specific output.
> + *
> + * @drmfd: file descriptor of the DRM device.
> + * @output: output to check.
> + * Returns:
> + *  true if the debugfs is available, false otherwise.
> + */
> +bool igt_has_force_link_training_failure_debugfs(int drmfd,
> +igt_output_t *output) {
> +	int debugfs_fd, ret;
> +	char buf[512];
> +
> +	igt_assert_f(output->name, "Invalid output\n");
> +	debugfs_fd = igt_debugfs_connector_dir(drmfd, output->name,
> O_RDONLY);
> +	if (debugfs_fd < 0)
> +		return false;
> +	ret = igt_debugfs_simple_read(debugfs_fd,
> +				      "i915_dp_force_link_training_failure",
> +				      buf, sizeof(buf));
> +	close(debugfs_fd);
> +	return ret >= 0;
> +}
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h index 2d69d794a..5ae324f6f 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -1254,5 +1254,6 @@ enum dp_lane_count igt_get_dp_max_lane_count(int
> drm_fd, igt_output_t *output);  void igt_force_link_retrain(int drm_fd,
> igt_output_t *output, int retrain_count);  void igt_force_lt_failure(int drm_fd,
> igt_output_t *output, int failure_count);  bool
> igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output);
> +bool igt_has_force_link_training_failure_debugfs(int drmfd,
> +igt_output_t *output);
> 
>  #endif /* __IGT_KMS_H__ */
> --
> 2.43.0


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

* Re: [PATCH i-g-t 11/14] lib/igt_kms: add function to reset link params
  2024-08-25 20:06 ` [PATCH i-g-t 11/14] lib/igt_kms: add function to reset link params Kunal Joshi
@ 2024-09-03 14:26   ` Imre Deak
  2024-09-12  6:01     ` Joshi, Kunal1
  0 siblings, 1 reply; 26+ messages in thread
From: Imre Deak @ 2024-09-03 14:26 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev

On Mon, Aug 26, 2024 at 01:36:09AM +0530, Kunal Joshi wrote:
> Writing auto to i915_dp_force_(link_rate/lane_count) and retraing
> afterwards sets max link param's supported by sink.Reset link rate
> and lane count to auto, also installs exit handler to set link rate
> and lane count to auto on exit
> ---
>  lib/igt_kms.c | 36 ++++++++++++++++++++++++++++++++++++
>  lib/igt_kms.h |  1 +
>  2 files changed, 37 insertions(+)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index e0533f6ae..b7511ccfc 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -7000,3 +7000,39 @@ int igt_get_dp_pending_retrain(int drm_fd, igt_output_t *output)
>  	sscanf(buf, "%d", &ret);
>  	return ret;
>  }
> +
> +/**
> + * igt_reset_link_params:
> + * @drm_fd: A drm file descriptor
> + * @output: Target output
> + *
> + * Reset link rate and lane count to auto, also installs exit handler
> + * to set link rate and lane count to auto on exit
> + */
> +void igt_reset_link_params(int drm_fd, igt_output_t *output)
> +{
> +	bool valid;
> +	drmModeConnector *temp;
> +
> +	igt_require_f(output->name, "Invalid output");
> +	valid = true;
> +	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
> +						    "i915_dp_force_link_rate",
> +						    "auto", "auto");
> +	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
> +						    "i915_dp_force_lane_count",
> +						    "auto", "auto");

Couldn't the above use the corresponding helpers added? I don't see
those used elsewhere.

> +	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
> +						    "i915_dp_force_link_retrain",
> +						    "1", "1");

Not sure if this is needed, if the link params are reset before a
modeset. The latter does a link training anyway if needed.


> +	igt_assert_f(valid, "Unable to set attr or install exit handler\n");
> +	dump_connector_attrs();
> +	igt_install_exit_handler(reset_connectors_at_exit);
> +
> +	/*
> +	 * To allow callers to always use GetConnectorCurrent we need to force a
> +	 * redetection here.
> +	 */
> +	temp = drmModeGetConnector(drm_fd, output->config.connector->connector_id);
> +	drmModeFreeConnector(temp);
> +}
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 3d7842b36..847609379 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -1259,5 +1259,6 @@ bool igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output);
>  bool igt_has_force_link_training_failure_debugfs(int drmfd, igt_output_t *output);
>  int igt_get_dp_pending_lt_failures(int drm_fd, igt_output_t *output);
>  int igt_get_dp_pending_retrain(int drm_fd, igt_output_t *output);
> +void igt_reset_link_params(int drm_fd, igt_output_t *output);
>  
>  #endif /* __IGT_KMS_H__ */
> -- 
> 2.34.1
> 

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

* RE: [PATCH i-g-t 03/14] lib/igt_kms: add function to get max link rate/lane count
  2024-08-25 18:14 ` [PATCH i-g-t 03/14] lib/igt_kms: add function to get max link rate/lane count Kunal Joshi
@ 2024-09-04  3:59   ` Samala, Pranay
  0 siblings, 0 replies; 26+ messages in thread
From: Samala, Pranay @ 2024-09-04  3:59 UTC (permalink / raw)
  To: Joshi, Kunal1, igt-dev@lists.freedesktop.org; +Cc: Joshi, Kunal1



> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Kunal Joshi
> Sent: Sunday, August 25, 2024 11:44 PM
> To: igt-dev@lists.freedesktop.org
> Cc: Joshi, Kunal1 <kunal1.joshi@intel.com>
> Subject: [PATCH i-g-t 03/14] lib/igt_kms: add function to get max link rate/lane
> count
> 
> i915_dp_max_(lane_count/link_rate) debugfs files expose max link rate/lane
> count for connector.add function to get max link rate/lane lane count for
> connector
> 
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> ---
>  lib/igt_kms.c | 58
> +++++++++++++++++++++++++++++++++++++++++++++++++++
>  lib/igt_kms.h |  2 ++
>  2 files changed, 60 insertions(+)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c index 4ef7f4d7f..21ea8550c 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -6763,3 +6763,61 @@ enum dp_lane_count
> igt_get_dp_lane_count_set_for_output(int drm_fd, igt_output_t
> 
>  	return lane_count;
>  }
> +
> +/**
> + * igt_get_dp_max_link_rate:
> + * @drm_fd: A drm file descriptor
> + * @output: The output to query
> + *
> + * Get the max link rate supported by the sink.
> + *
> + * Returns: Max link rate supported by the sink.
> + */
> +enum dp_link_rate igt_get_dp_max_link_rate(int drm_fd, igt_output_t
> +*output) {
> +	char buf[512];
> +	int dir, res;
> +	int max_link_rate;
> +
> +	igt_require_f(output->name, "Invalid output");
> +	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_DIRECTORY);
> +	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
> +				 igt_output_name(output));

Alignment should match open parenthesis

> +	res = igt_debugfs_simple_read(dir, "i915_dp_max_link_rate",
> +								  buf,
> sizeof(buf));

Same as above

> +	close(dir);
> +	igt_require_f(res > 0, "Couldn't read i915_dp_max_link_rate");
> +
> +	igt_assert(sscanf(buf, "%d", &max_link_rate) == 1);
> +
> +	return max_link_rate;
> +}
> +
> +/**
> + * igt_get_dp_max_lane_count:
> + * @drm_fd: A drm file descriptor
> + * @output: The output to query
> + *
> + * Get the max lane count supported by the sink.
> + *
> + * Returns: Max lane count supported by the sink.
> + */
> +enum dp_lane_count igt_get_dp_max_lane_count(int drm_fd, igt_output_t
> +*output) {
> +	char buf[512];
> +	int dir, res;
> +	int max_lane_count;
> +
> +	igt_require_f(output->name, "Invalid output");
> +	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
> +	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
> +				 igt_output_name(output));

Same as above

> +	res = igt_debugfs_simple_read(dir, "i915_dp_max_lane_count",
> +								  buf,
> sizeof(buf));

Same as above

Regards,
Pranay Samala
> +	close(dir);
> +	igt_require(res > 0);
> +
> +	igt_assert(sscanf(buf, "%d", &max_lane_count) == 1);
> +
> +	return max_lane_count;
> +}
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h index 9d42a2b35..1d3226c5c 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -1249,5 +1249,7 @@ int igt_get_dp_mst_connector_id(igt_output_t
> *output);  int get_num_scalers(igt_display_t *display, enum pipe pipe);  enum
> dp_link_rate igt_get_dp_link_rate_set_for_output(int drm_fd, igt_output_t
> *output);  enum dp_lane_count igt_get_dp_lane_count_set_for_output(int
> drm_fd, igt_output_t *output);
> +enum dp_link_rate igt_get_dp_max_link_rate(int drm_fd, igt_output_t
> +*output); enum dp_lane_count igt_get_dp_max_lane_count(int drm_fd,
> +igt_output_t *output);
> 
>  #endif /* __IGT_KMS_H__ */
> --
> 2.43.0


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

* RE: [PATCH i-g-t 06/14] lib/igt_kms: add function to check if retrain disabled
  2024-08-25 18:14 ` [PATCH i-g-t 06/14] lib/igt_kms: add function to check if retrain disabled Kunal Joshi
@ 2024-09-04  5:13   ` Samala, Pranay
  0 siblings, 0 replies; 26+ messages in thread
From: Samala, Pranay @ 2024-09-04  5:13 UTC (permalink / raw)
  To: Joshi, Kunal1, igt-dev@lists.freedesktop.org; +Cc: Joshi, Kunal1



> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Kunal Joshi
> Sent: Sunday, August 25, 2024 11:44 PM
> To: igt-dev@lists.freedesktop.org
> Cc: Joshi, Kunal1 <kunal1.joshi@intel.com>
> Subject: [PATCH i-g-t 06/14] lib/igt_kms: add function to check if retrain disabled
> 
> add helper to check if retraining is disabled, retraining will be disable if we are at
> the lowest link parameters or the lowest mode supported on a panel
> 
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> ---
>  lib/igt_kms.c | 24 ++++++++++++++++++++++++  lib/igt_kms.h |  1 +
>  2 files changed, 25 insertions(+)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c index 683989e84..2720095d4 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -6869,3 +6869,27 @@ void igt_force_lt_failure(int drm_fd, igt_output_t
> *output, int failure_count)
>  			     value, sizeof(value));
>  	close(dir);
>  }
> +
> +/**
> + * igt_get_dp_link_retrain_disabled:
> + * @drm_fd: A drm file descriptor
> + * @output: Target output
> + *
> + * Returns: True if link retrain disabled, false otherwise  */ bool
> +igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t *output) {
> +	int dir, res;
> +	char buf[512];
> +
> +	igt_require_f(output->name, "Invalid output");
> +	dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
> +	igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
> +			       igt_output_name(output));

Alignment should match open parenthesis.

Otherwise, code looks good to me.
Regards,
Pranay Samala

> +	res = igt_debugfs_simple_read(dir,
> +				      "i915_dp_link_retrain_disabled",
> +				      buf, sizeof(buf));
> +	close(dir);
> +	igt_require(res > 0);
> +	return strstr(buf, "yes");
> +}
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h index 57829416a..2d69d794a 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -1253,5 +1253,6 @@ enum dp_link_rate igt_get_dp_max_link_rate(int
> drm_fd, igt_output_t *output);  enum dp_lane_count
> igt_get_dp_max_lane_count(int drm_fd, igt_output_t *output);  void
> igt_force_link_retrain(int drm_fd, igt_output_t *output, int retrain_count);  void
> igt_force_lt_failure(int drm_fd, igt_output_t *output, int failure_count);
> +bool igt_get_dp_link_retrain_disabled(int drm_fd, igt_output_t
> +*output);
> 
>  #endif /* __IGT_KMS_H__ */
> --
> 2.43.0


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

* RE: [PATCH i-g-t 11/14] lib/igt_kms: add function to reset link params
  2024-09-03 14:26   ` Imre Deak
@ 2024-09-12  6:01     ` Joshi, Kunal1
  0 siblings, 0 replies; 26+ messages in thread
From: Joshi, Kunal1 @ 2024-09-12  6:01 UTC (permalink / raw)
  To: Deak, Imre; +Cc: igt-dev@lists.freedesktop.org

Hello Imre,

-----Original Message-----
From: Deak, Imre <imre.deak@intel.com> 
Sent: Tuesday, September 3, 2024 7:56 PM
To: Joshi, Kunal1 <kunal1.joshi@intel.com>
Cc: igt-dev@lists.freedesktop.org
Subject: Re: [PATCH i-g-t 11/14] lib/igt_kms: add function to reset link params

On Mon, Aug 26, 2024 at 01:36:09AM +0530, Kunal Joshi wrote:
> Writing auto to i915_dp_force_(link_rate/lane_count) and retraing 
> afterwards sets max link param's supported by sink.Reset link rate and 
> lane count to auto, also installs exit handler to set link rate and 
> lane count to auto on exit
> ---
>  lib/igt_kms.c | 36 ++++++++++++++++++++++++++++++++++++
>  lib/igt_kms.h |  1 +
>  2 files changed, 37 insertions(+)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c index e0533f6ae..b7511ccfc 
> 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -7000,3 +7000,39 @@ int igt_get_dp_pending_retrain(int drm_fd, igt_output_t *output)
>  	sscanf(buf, "%d", &ret);
>  	return ret;
>  }
> +
> +/**
> + * igt_reset_link_params:
> + * @drm_fd: A drm file descriptor
> + * @output: Target output
> + *
> + * Reset link rate and lane count to auto, also installs exit handler
> + * to set link rate and lane count to auto on exit  */ void 
> +igt_reset_link_params(int drm_fd, igt_output_t *output) {
> +	bool valid;
> +	drmModeConnector *temp;
> +
> +	igt_require_f(output->name, "Invalid output");
> +	valid = true;
> +	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
> +						    "i915_dp_force_link_rate",
> +						    "auto", "auto");
> +	valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
> +						    "i915_dp_force_lane_count",
> +						    "auto", "auto");

Couldn't the above use the corresponding helpers added? I don't see those used elsewhere.[Joshi, Kunal1

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

end of thread, other threads:[~2024-09-12  6:01 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-25 18:14 [PATCH i-g-t 00/14] add test to validate fallback Kunal Joshi
2024-08-25 18:14 ` [PATCH i-g-t 01/14] lib/igt_kms: add enum for link rate and lane count Kunal Joshi
2024-08-27  5:30   ` B, Jeevan
2024-08-25 18:14 ` [PATCH i-g-t 02/14] lib/igt_kms: add helper to get current link rate/ lane count for connector Kunal Joshi
2024-08-25 18:14 ` [PATCH i-g-t 03/14] lib/igt_kms: add function to get max link rate/lane count Kunal Joshi
2024-09-04  3:59   ` Samala, Pranay
2024-08-25 18:14 ` [PATCH i-g-t 04/14] lib/igt_kms: add function to force link retrain Kunal Joshi
2024-08-25 18:14 ` [PATCH i-g-t 05/14] lib/igt_kms: add function to force link training failure Kunal Joshi
2024-08-25 18:14 ` [PATCH i-g-t 06/14] lib/igt_kms: add function to check if retrain disabled Kunal Joshi
2024-09-04  5:13   ` Samala, Pranay
2024-08-25 18:14 ` [PATCH i-g-t 07/14] lib/igt_kms: add function to check force link training failure support Kunal Joshi
2024-09-03  8:08   ` Samala, Pranay
2024-08-25 18:14 ` [PATCH i-g-t 08/14] lib/igt_kms: add helper to get pending lt failures Kunal Joshi
2024-08-25 18:14 ` [PATCH i-g-t 09/14] lib/igt_kms: add helper to get pending retrain count Kunal Joshi
2024-08-25 18:14 ` [PATCH i-g-t 10/14] lib/igt_kms: add helper to set connector link status Kunal Joshi
2024-08-25 18:14 ` [PATCH i-g-t 11/14] lib/igt_kms: add function to reset link params Kunal Joshi
2024-08-25 18:14 ` [PATCH i-g-t 12/14] lib/igt_kms: allow set and reset value to be same Kunal Joshi
2024-08-25 18:14 ` [PATCH i-g-t 13/14] tests/intel/kms_dp_fallback: add test for validating fallback Kunal Joshi
2024-09-03  8:07   ` Samala, Pranay
2024-08-25 18:14 ` [PATCH i-g-t 14/14] HAX: Do not merge Kunal Joshi
2024-08-25 18:32 ` ✗ CI.xeBAT: failure for add test to validate fallback (rev4) Patchwork
2024-08-25 18:45 ` ✗ Fi.CI.BAT: " Patchwork
2024-08-25 19:32 ` ✗ CI.xeFULL: " Patchwork
     [not found] <20240825200612.4036178-1-kunal1.joshi@intel.com>
2024-08-25 20:06 ` [PATCH i-g-t 11/14] lib/igt_kms: add function to reset link params Kunal Joshi
2024-09-03 14:26   ` Imre Deak
2024-09-12  6:01     ` Joshi, Kunal1

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox