* [PATCH i-g-t 0/6] add test to validate fallback
@ 2024-09-12 6:28 Kunal Joshi
2024-09-12 6:28 ` [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions Kunal Joshi
` (9 more replies)
0 siblings, 10 replies; 17+ messages in thread
From: Kunal Joshi @ 2024-09-12 6:28 UTC (permalink / raw)
To: igt-dev; +Cc: imre.deak, 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 (6):
lib/igt_kms: add DP link management helper functions
lib/igt_kms: add helper to set connector link status
lib/igt_kms: allow set and reset value to be same
lib/igt_kms: add function to reset link params
tests/intel/kms_dp_fallback: add test for validating fallback
HAX: Do not merge
lib/igt_kms.c | 301 +++++++++++++++-
lib/igt_kms.h | 13 +
tests/intel-ci/fast-feedback.testlist | 1 +
tests/intel-ci/xe-fast-feedback.testlist | 2 +
tests/intel/kms_fallback.c | 423 +++++++++++++++++++++++
tests/meson.build | 1 +
6 files changed, 733 insertions(+), 8 deletions(-)
create mode 100644 tests/intel/kms_fallback.c
--
2.43.0
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
@ 2024-09-12 6:28 ` Kunal Joshi
2024-09-12 11:15 ` Joshi, Kunal1
2024-09-18 14:29 ` Imre Deak
2024-09-12 6:28 ` [PATCH i-g-t 2/6] lib/igt_kms: add helper to set connector link status Kunal Joshi
` (8 subsequent siblings)
9 siblings, 2 replies; 17+ messages in thread
From: Kunal Joshi @ 2024-09-12 6:28 UTC (permalink / raw)
To: igt-dev; +Cc: imre.deak, Kunal Joshi
Added helper functions for below
- read current/max link_rate/lane_count
- forcing link retraining
- forcing link training failures
- read pending retrain
- read pending link training failures
- checking output supports forcing lt failures
- force link_rate/lane_count
v2: combine all link training debugfs in one patch (Imre)
remove unwanted valid output check (Imre)
return link_rate/lane_count marked with '*' or an error (Imre)
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
lib/igt_kms.c | 210 ++++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_kms.h | 10 +++
2 files changed, 220 insertions(+)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index dd530dbab..f0ac1e5dc 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -61,6 +61,7 @@
#include "sw_sync.h"
#ifdef HAVE_CHAMELIUM
#include "igt_chamelium.h"
+#include <ctype.h>
#endif
/**
@@ -6705,3 +6706,212 @@ int get_num_scalers(igt_display_t *display, enum pipe pipe)
return num_scalers;
}
+
+/**
+ * igt_get_dp_link_param_set_for_output:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ * @link_param: 0 for lane count, 1 for link rate
+ *
+ * Returns: link_rate / lane_count if set for output else -1
+ */
+int igt_get_dp_link_param_set_for_output(int drm_fd, igt_output_t *output, int link_param)
+{
+ char *star_ptr, *param_ptr;
+ char buf[512];
+ int dir, res;
+ int ret;
+
+ ret = -1;
+ 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, link_param ? "i915_dp_force_link_rate" :
+ "i915_dp_force_lane_count", buf, sizeof(buf));
+ close(dir);
+ igt_require(res >= 0);
+
+ /*
+ * Check we have a mode enabled for the output
+ * If so we will have current active link rate
+ * marked with a *
+ */
+ star_ptr = strstr(buf, "*");
+
+ if (star_ptr) {
+ param_ptr = star_ptr - 1;
+ while (param_ptr > buf && isdigit(*param_ptr))
+ param_ptr--;
+
+ param_ptr++;
+ igt_assert(sscanf(param_ptr, "%d", &ret) == 1);
+ }
+ return ret;
+}
+
+/**
+ * igt_get_dp_max_link_param:
+ * @drm_fd: A drm file descriptor
+ * @output: The output to query
+ * @link_param: 0 for lane count, 1 for link rate
+ *
+ * Get the max link_rate / lane_count supported by the sink.
+ *
+ * Returns: max link_rate / lane_count supported by the sink.
+ */
+int igt_get_dp_max_link_param(int drm_fd, igt_output_t *output, int link_param)
+{
+ char buf[512];
+ int dir, res;
+ int max_link_param;
+
+ 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, link_param ? "i915_dp_max_link_rate" :
+ "i915_dp_max_lane_count", 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_param) == 1);
+
+ return max_link_param;
+}
+
+/**
+ * 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);
+ 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);
+}
+
+/**
+ * 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);
+ 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);
+}
+
+/**
+ * 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];
+
+ 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");
+}
+
+/**
+ * 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;
+}
+
+/**
+ * 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];
+
+ 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;
+}
+
+/**
+ * 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];
+
+ 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 25ba50916..895bc9d04 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1224,5 +1224,15 @@ 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);
+int igt_get_dp_link_param_set_for_output(int drm_fd, igt_output_t *output,
+ int link_param);
+int igt_get_dp_max_link_param(int drm_fd, igt_output_t *output,
+ int link_param);
+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);
+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] 17+ messages in thread
* [PATCH i-g-t 2/6] lib/igt_kms: add helper to set connector link status
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
2024-09-12 6:28 ` [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions Kunal Joshi
@ 2024-09-12 6:28 ` Kunal Joshi
2024-09-12 6:28 ` [PATCH i-g-t 3/6] lib/igt_kms: allow set and reset value to be same Kunal Joshi
` (7 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Kunal Joshi @ 2024-09-12 6:28 UTC (permalink / raw)
To: igt-dev; +Cc: imre.deak, Kunal Joshi
add helper to set connector's link status property
v2: property ID's type is uint32_t (Imre)
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
lib/igt_kms.c | 37 +++++++++++++++++++++++++++++++++++++
lib/igt_kms.h | 2 ++
2 files changed, 39 insertions(+)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index f0ac1e5dc..863eb5331 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2214,6 +2214,43 @@ 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)
+{
+ bool found_it = false;
+ int i;
+ uint32_t link_status_prop;
+
+ 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 895bc9d04..9dca09d93 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -278,6 +278,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] 17+ messages in thread
* [PATCH i-g-t 3/6] lib/igt_kms: allow set and reset value to be same
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
2024-09-12 6:28 ` [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions Kunal Joshi
2024-09-12 6:28 ` [PATCH i-g-t 2/6] lib/igt_kms: add helper to set connector link status Kunal Joshi
@ 2024-09-12 6:28 ` Kunal Joshi
2024-09-18 14:33 ` Imre Deak
2024-09-12 6:28 ` [PATCH i-g-t 4/6] lib/igt_kms: add function to reset link params Kunal Joshi
` (6 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Kunal Joshi @ 2024-09-12 6:28 UTC (permalink / raw)
To: igt-dev; +Cc: imre.deak, 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
v2: handle the scenario at caller side
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
lib/igt_kms.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 863eb5331..a7f8d0f83 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -1557,7 +1557,8 @@ static void connector_attr_free(struct igt_connector_attr *c)
static bool connector_attr_set(int idx, drmModeConnector *connector,
int dir, igt_connector_attr_set set,
const char *attr, const char *value,
- const char *reset_value)
+ const char *reset_value,
+ bool allow_set_equals_reset)
{
struct igt_connector_attr *c;
@@ -1573,7 +1574,7 @@ static bool connector_attr_set(int idx, drmModeConnector *connector,
return false;
}
- if (!strcmp(c->value, c->reset_value))
+ if (!allow_set_equals_reset && !strcmp(c->value, c->reset_value))
connector_attr_free(c);
return true;
@@ -1582,7 +1583,8 @@ static bool connector_attr_set(int idx, drmModeConnector *connector,
static bool connector_attr_set_sysfs(int drm_fd,
drmModeConnector *connector,
const char *attr, const char *value,
- const char *reset_value)
+ const char *reset_value,
+ bool allow_set_equals_reset)
{
char name[80];
int idx, dir;
@@ -1600,7 +1602,8 @@ static bool connector_attr_set_sysfs(int drm_fd,
return false;
if (!connector_attr_set(idx, connector, dir,
- igt_sysfs_set, attr, value, reset_value))
+ igt_sysfs_set, attr, value, reset_value,
+ allow_set_equals_reset))
return false;
igt_debug("Connector %s/%s is now %s\n", name, attr, value);
@@ -1611,7 +1614,8 @@ static bool connector_attr_set_sysfs(int drm_fd,
static bool connector_attr_set_debugfs(int drm_fd,
drmModeConnector *connector,
const char *attr, const char *value,
- const char *reset_value)
+ const char *reset_value,
+ bool allow_set_equals_reset)
{
char name[80];
int idx, dir;
@@ -1630,7 +1634,7 @@ static bool connector_attr_set_debugfs(int drm_fd,
if (!connector_attr_set(idx, connector, dir,
igt_sysfs_set, attr,
- value, reset_value))
+ value, reset_value, allow_set_equals_reset))
return false;
igt_info("Connector %s/%s is now %s\n", name, attr, value);
@@ -1662,7 +1666,8 @@ static bool force_connector(int drm_fd,
const char *value)
{
return connector_attr_set_sysfs(drm_fd, connector,
- "status", value, "detect");
+ "status", value, "detect",
+ false);
}
/**
@@ -1727,7 +1732,7 @@ static bool force_connector_bigjoiner(int drm_fd,
{
return connector_attr_set_debugfs(drm_fd, connector,
"i915_bigjoiner_force_enable",
- value, "0");
+ value, "0", false);
}
/**
--
2.43.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH i-g-t 4/6] lib/igt_kms: add function to reset link params
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
` (2 preceding siblings ...)
2024-09-12 6:28 ` [PATCH i-g-t 3/6] lib/igt_kms: allow set and reset value to be same Kunal Joshi
@ 2024-09-12 6:28 ` Kunal Joshi
2024-09-18 14:35 ` Imre Deak
2024-09-12 6:28 ` [PATCH i-g-t 5/6] tests/intel/kms_dp_fallback: add test for validating fallback Kunal Joshi
` (5 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Kunal Joshi @ 2024-09-12 6:28 UTC (permalink / raw)
To: igt-dev; +Cc: imre.deak, 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
v2: no need to do link retraining (Imre)
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
lib/igt_kms.c | 33 +++++++++++++++++++++++++++++++++
lib/igt_kms.h | 1 +
2 files changed, 34 insertions(+)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index a7f8d0f83..f841a69da 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6957,3 +6957,36 @@ 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", true);
+ valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
+ "i915_dp_force_lane_count",
+ "auto", "auto", true);
+ 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 9dca09d93..3c867031e 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1236,5 +1236,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] 17+ messages in thread
* [PATCH i-g-t 5/6] tests/intel/kms_dp_fallback: add test for validating fallback
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
` (3 preceding siblings ...)
2024-09-12 6:28 ` [PATCH i-g-t 4/6] lib/igt_kms: add function to reset link params Kunal Joshi
@ 2024-09-12 6:28 ` Kunal Joshi
2024-09-18 15:22 ` Imre Deak
2024-09-12 6:28 ` [PATCH i-g-t 6/6] HAX: Do not merge Kunal Joshi
` (4 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Kunal Joshi @ 2024-09-12 6:28 UTC (permalink / raw)
To: igt-dev; +Cc: imre.deak, Kunal Joshi
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)
v5: fit modes wrt to bw in non-mst case as well
v6: remove LT_FAILURE_SAME_CAPS (Imre)
explain LT_FAILURE_REDUCED_CAPS to be 2 (Imre)
combine infra for mst and non-mst case (Imre)
call igt_reset_link_params before setup (Imre)
Avoid duplication setting prev_(link_rate/lane_count) (Imre)
use the cached property name here instead of hard-coding it (Imre)
move test logic to function (Imre)
remove extra w/s (Imre)
remove braces in one liners (Imre)
enhance igt_info message (Pranay)
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 | 423 +++++++++++++++++++++++++++++++++++++
tests/meson.build | 1 +
2 files changed, 424 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..4b6791b4d
--- /dev/null
+++ b/tests/intel/kms_fallback.c
@@ -0,0 +1,423 @@
+/* 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
+/*
+ * Two consecutives link training failures
+ * reduces link params (link rate, lane count)
+ */
+#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 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 *output_count)
+{
+ 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, output_count);
+
+ for (i = 0; i < *output_count; 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_outputs(data_t *data,
+ igt_output_t *outputs[],
+ int *output_count)
+{
+ int i = 0;
+
+ igt_require_f(data->n_pipes >= *output_count,
+ "Need %d pipes to assign to %d outputs\n",
+ data->n_pipes, *output_count);
+
+ for_each_pipe(&data->display, data->pipe) {
+ if (i >= *output_count)
+ break;
+ igt_info("Setting pipe %s on output %s\n",
+ kmstest_pipe_name(data->pipe),
+ igt_output_name(outputs[i]));
+ igt_output_set_pipe(outputs[i++], data->pipe);
+ }
+}
+
+static void setup_modeset_on_outputs(data_t *data,
+ igt_output_t *outputs[],
+ int *output_count,
+ drmModeModeInfo *mode[],
+ struct igt_fb fb[],
+ struct igt_plane *primary[])
+{
+ int i;
+
+ for (i = 0; i < *output_count; i++) {
+ outputs[i]->force_reprobe = true;
+ igt_output_refresh(outputs[i]);
+ mode[i] = igt_output_get_mode(outputs[i]);
+ igt_info("Mode %dx%d@%d on output %s\n",
+ mode[i]->hdisplay, mode[i]->vdisplay,
+ mode[i]->vrefresh,
+ igt_output_name(outputs[i]));
+ primary[i] = igt_output_get_plane_type(outputs[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 fit_modes_in_bw(data_t *data)
+{
+ bool found;
+ int ret;
+
+ if (!igt_display_try_commit2(&data->display, COMMIT_ATOMIC)) {
+ 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 validate_modeset_for_outputs(data_t *data,
+ igt_output_t *outputs[],
+ int *output_count,
+ drmModeModeInfo *mode[],
+ struct igt_fb fb[],
+ struct igt_plane *primary[])
+{
+ igt_require_f(*output_count > 0, "Require at least 1 output\n");
+ setup_pipe_on_outputs(data, outputs, output_count);
+ setup_modeset_on_outputs(data, outputs,
+ output_count,
+ mode, fb, primary);
+ igt_assert_f(fit_modes_in_bw(data), "Unable to fit modes in bw\n");
+ return true;
+}
+
+static bool setup_outputs(data_t *data, bool is_mst,
+ igt_output_t *outputs[],
+ int *output_count, drmModeModeInfo *mode[],
+ struct igt_fb fb[], struct igt_plane *primary[])
+{
+ bool ret;
+
+ *output_count = 0;
+
+ if (is_mst) {
+ ret = setup_mst_outputs(data, outputs, output_count);
+ if (!ret) {
+ igt_info("Skipping MST output %s as already tested\n",
+ igt_output_name(data->output));
+ return false;
+ }
+ } else
+ outputs[(*output_count)++] = data->output;
+
+ ret = validate_modeset_for_outputs(data, outputs,
+ output_count, mode,
+ fb, primary);
+
+ if (!ret) {
+ igt_info("Skipping output %s as valid pipe/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, ¤t_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 output_count, retries;
+ int max_link_rate, curr_link_rate, prev_link_rate;
+ int max_lane_count, curr_lane_count, prev_lane_count;
+ igt_output_t *outputs[IGT_MAX_PIPES];
+ uint32_t link_status_prop_id;
+ uint64_t link_status_value;
+ drmModeModeInfo *modes[IGT_MAX_PIPES];
+ drmModePropertyPtr link_status_prop;
+ struct igt_fb fbs[IGT_MAX_PIPES];
+ struct igt_plane *primarys[IGT_MAX_PIPES];
+ struct udev_monitor *mon;
+
+ igt_display_reset(&data->display);
+ igt_reset_link_params(data->drm_fd, data->output);
+ retries = SPURIOUS_HPD_RETRY;
+
+ if (!setup_outputs(data, is_mst, outputs,
+ &output_count, modes, fbs,
+ primarys))
+ return;
+
+ igt_info("Testing link training fallback on %s\n",
+ igt_output_name(data->output));
+ max_link_rate = igt_get_dp_max_link_param(data->drm_fd, data->output, 1);
+ max_lane_count = igt_get_dp_max_link_param(data->drm_fd, data->output, 0);
+ prev_link_rate = igt_get_dp_link_param_set_for_output(data->drm_fd, data->output, 1);
+ prev_lane_count = igt_get_dp_link_param_set_for_output(data->drm_fd, data->output, 0);
+
+ while (!igt_get_dp_link_retrain_disabled(data->drm_fd,
+ data->output)) {
+ igt_info("Current link rate: %d, Current lane count: %d\n",
+ prev_link_rate,
+ 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);
+ igt_assert_f(validate_modeset_for_outputs(data,
+ outputs,
+ &output_count,
+ modes,
+ fbs,
+ primarys),
+ "modeset failed\n");
+
+ kmstest_set_connector_link_status(data->drm_fd,
+ data->output->config.connector,
+ DRM_MODE_LINK_STATUS_GOOD);
+ igt_display_commit2(&data->display, COMMIT_ATOMIC);
+
+ igt_assert_eq(data->output->values[IGT_CONNECTOR_LINK_STATUS], DRM_MODE_LINK_STATUS_GOOD);
+ curr_link_rate = igt_get_dp_link_param_set_for_output(data->drm_fd, data->output, 1);
+ curr_lane_count = igt_get_dp_link_param_set_for_output(data->drm_fd, data->output, 0);
+
+ 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;
+ }
+}
+
+static bool run_test(data_t *data)
+{
+ 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 doesn't support forcing link training failure\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);
+ }
+ }
+ return ran;
+}
+
+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") {
+ igt_require_f(run_test(&data),
+ "Skipping test as no output found or none 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] 17+ messages in thread
* [PATCH i-g-t 6/6] HAX: Do not merge
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
` (4 preceding siblings ...)
2024-09-12 6:28 ` [PATCH i-g-t 5/6] tests/intel/kms_dp_fallback: add test for validating fallback Kunal Joshi
@ 2024-09-12 6:28 ` Kunal Joshi
2024-09-12 8:07 ` ✗ GitLab.Pipeline: warning for add test to validate fallback (rev5) Patchwork
` (3 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Kunal Joshi @ 2024-09-12 6:28 UTC (permalink / raw)
To: igt-dev; +Cc: imre.deak, Kunal Joshi
HAX: Do not merge
Just for testing in CI
---
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] 17+ messages in thread
* ✗ GitLab.Pipeline: warning for add test to validate fallback (rev5)
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
` (5 preceding siblings ...)
2024-09-12 6:28 ` [PATCH i-g-t 6/6] HAX: Do not merge Kunal Joshi
@ 2024-09-12 8:07 ` Patchwork
2024-09-12 8:35 ` ✗ Fi.CI.BAT: failure " Patchwork
` (2 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-09-12 8:07 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
== Series Details ==
Series: add test to validate fallback (rev5)
URL : https://patchwork.freedesktop.org/series/134660/
State : warning
== Summary ==
Pipeline status: FAILED.
see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/1269704 for the overview.
build:tests-debian-meson-arm64 has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/63511666):
[293/1520] Compiling C object 'lib/76b5a35@@igt-amdgpu_amd_mmd_shared_c@sta/amdgpu_amd_mmd_shared.c.o'.
[294/1520] Compiling C object 'lib/76b5a35@@igt-igt_audio_c@sta/igt_audio.c.o'.
ninja: build stopped: subcommand failed.
ninja: Entering directory `build'
[1/1232] Generating version.h with a custom command.
[2/1228] Compiling C object 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o'.
FAILED: lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o
/usr/bin/aarch64-linux-gnu-gcc -Ilib/76b5a35@@igt-igt_kms_c@sta -Ilib -I../lib -I../include -I../include/drm-uapi -I../include/linux-uapi -I../lib/stubs/syscalls -I. -I../ -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/aarch64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -I/usr/include/libdrm/nouveau -I/usr/include/aarch64-linux-gnu -I/usr/include/valgrind -I/usr/include/alsa -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h -D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement -Wformat=2 -Wimplicit-fallthrough=0 -Wlogical-op -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-clobbered -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-pointer-arith -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-unused-result -Werror=address -Werror=array-bounds -Werror=implicit -Werror=init-self -Werror=int-conversion -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc -D_LARGEFILE64_SOURCE=1 -fPIC -pthread '-DIGT_DATADIR="/usr/local/share/igt-gpu-tools"' '-DIGT_SRCDIR="/builds/gfx-ci/igt-ci-tags/tests"' '-DIGT_LOG_DOMAIN="igt_kms"' -MD -MQ 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -MF 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o.d' -o 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -c ../lib/igt_kms.c
../lib/igt_kms.c: In function ‘igt_get_dp_link_param_set_for_output’:
../lib/igt_kms.c:6785:29: error: implicit declaration of function ‘isdigit’ [-Werror=implicit-function-declaration]
while (param_ptr > buf && isdigit(*param_ptr))
^~~~~~~
cc1: some warnings being treated as errors
ninja: build stopped: subcommand failed.
section_end:1726128082:step_script
section_start:1726128082:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1726128084:cleanup_file_variables
ERROR: Job failed: exit code 1
build:tests-debian-meson-armhf has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/63511665):
[288/1520] Compiling C object 'lib/76b5a35@@igt-igt_frame_c@sta/igt_frame.c.o'.
[289/1520] Compiling C object 'lib/76b5a35@@igt-igt_audio_c@sta/igt_audio.c.o'.
ninja: build stopped: subcommand failed.
ninja: Entering directory `build'
[1/1237] Generating version.h with a custom command.
[2/1233] Compiling C object 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o'.
FAILED: lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o
/usr/bin/arm-linux-gnueabihf-gcc -Ilib/76b5a35@@igt-igt_kms_c@sta -Ilib -I../lib -I../include -I../include/drm-uapi -I../include/linux-uapi -I../lib/stubs/syscalls -I. -I../ -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -I/usr/include/libdrm/nouveau -I/usr/include/arm-linux-gnueabihf -I/usr/include/valgrind -I/usr/include/alsa -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h -D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement -Wformat=2 -Wimplicit-fallthrough=0 -Wlogical-op -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-clobbered -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-pointer-arith -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-unused-result -Werror=address -Werror=array-bounds -Werror=implicit -Werror=init-self -Werror=int-conversion -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc -D_LARGEFILE64_SOURCE=1 -fPIC -pthread '-DIGT_DATADIR="/usr/local/share/igt-gpu-tools"' '-DIGT_SRCDIR="/builds/gfx-ci/igt-ci-tags/tests"' '-DIGT_LOG_DOMAIN="igt_kms"' -MD -MQ 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -MF 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o.d' -o 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -c ../lib/igt_kms.c
../lib/igt_kms.c: In function ‘igt_get_dp_link_param_set_for_output’:
../lib/igt_kms.c:6785:29: error: implicit declaration of function ‘isdigit’ [-Werror=implicit-function-declaration]
while (param_ptr > buf && isdigit(*param_ptr))
^~~~~~~
cc1: some warnings being treated as errors
ninja: build stopped: subcommand failed.
section_end:1726128076:step_script
section_start:1726128076:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1726128077:cleanup_file_variables
ERROR: Job failed: exit code 1
build:tests-debian-meson-mips has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/63511667):
[287/1520] Compiling C object 'lib/76b5a35@@igt-amdgpu_amd_ip_blocks_c@sta/amdgpu_amd_ip_blocks.c.o'.
[288/1520] Compiling C object 'lib/76b5a35@@igt-amdgpu_amd_mmd_shared_c@sta/amdgpu_amd_mmd_shared.c.o'.
ninja: build stopped: subcommand failed.
ninja: Entering directory `build'
[1/1238] Generating version.h with a custom command.
[2/1234] Compiling C object 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o'.
FAILED: lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o
/usr/bin/mips-linux-gnu-gcc -Ilib/76b5a35@@igt-igt_kms_c@sta -Ilib -I../lib -I../include -I../include/drm-uapi -I../include/linux-uapi -I../lib/stubs/syscalls -I. -I../ -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/mips-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -I/usr/include/libdrm/nouveau -I/usr/include/mips-linux-gnu -I/usr/include/valgrind -I/usr/include/alsa -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h -D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement -Wformat=2 -Wimplicit-fallthrough=0 -Wlogical-op -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-clobbered -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-pointer-arith -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-unused-result -Werror=address -Werror=array-bounds -Werror=implicit -Werror=init-self -Werror=int-conversion -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc -D_LARGEFILE64_SOURCE=1 -fPIC -pthread '-DIGT_DATADIR="/usr/local/share/igt-gpu-tools"' '-DIGT_SRCDIR="/builds/gfx-ci/igt-ci-tags/tests"' '-DIGT_LOG_DOMAIN="igt_kms"' -MD -MQ 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -MF 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o.d' -o 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -c ../lib/igt_kms.c
../lib/igt_kms.c: In function ‘igt_get_dp_link_param_set_for_output’:
../lib/igt_kms.c:6785:29: error: implicit declaration of function ‘isdigit’ [-Werror=implicit-function-declaration]
while (param_ptr > buf && isdigit(*param_ptr))
^~~~~~~
cc1: some warnings being treated as errors
ninja: build stopped: subcommand failed.
section_end:1726128076:step_script
section_start:1726128076:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1726128077:cleanup_file_variables
ERROR: Job failed: exit code 1
build:tests-debian-minimal has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/63511664):
[282/650] Generating i915-perf-metrics-cflgt2 with a custom command.
[283/650] Generating i915-perf-metrics-cflgt3 with a custom command.
ninja: build stopped: subcommand failed.
ninja: Entering directory `build'
[1/375] Generating version.h with a custom command.
[2/369] Compiling C object 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o'.
FAILED: lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o
cc -Ilib/76b5a35@@igt-igt_kms_c@sta -Ilib -I../lib -I../include -I../include/drm-uapi -I../include/linux-uapi -I../lib/stubs/syscalls -I. -I../ -I../lib/stubs/libunwind -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h -D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement -Wformat=2 -Wimplicit-fallthrough=0 -Wlogical-op -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-clobbered -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-pointer-arith -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-unused-result -Werror=address -Werror=array-bounds -Werror=implicit -Werror=init-self -Werror=int-conversion -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc -D_LARGEFILE64_SOURCE=1 -fPIC -pthread '-DIGT_DATADIR="/usr/local/share/igt-gpu-tools"' '-DIGT_SRCDIR="/builds/gfx-ci/igt-ci-tags/tests"' '-DIGT_LOG_DOMAIN="igt_kms"' -MD -MQ 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -MF 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o.d' -o 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -c ../lib/igt_kms.c
../lib/igt_kms.c: In function ‘igt_get_dp_link_param_set_for_output’:
../lib/igt_kms.c:6785:29: error: implicit declaration of function ‘isdigit’ [-Werror=implicit-function-declaration]
while (param_ptr > buf && isdigit(*param_ptr))
^~~~~~~
cc1: some warnings being treated as errors
ninja: build stopped: subcommand failed.
section_end:1726128071:step_script
section_start:1726128071:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1726128072:cleanup_file_variables
ERROR: Job failed: exit code 1
== Logs ==
For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/1269704
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ Fi.CI.BAT: failure for add test to validate fallback (rev5)
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
` (6 preceding siblings ...)
2024-09-12 8:07 ` ✗ GitLab.Pipeline: warning for add test to validate fallback (rev5) Patchwork
@ 2024-09-12 8:35 ` Patchwork
2024-09-12 8:35 ` ✗ CI.xeBAT: " Patchwork
2024-09-12 14:26 ` ✗ CI.xeFULL: " Patchwork
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-09-12 8:35 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 11870 bytes --]
== Series Details ==
Series: add test to validate fallback (rev5)
URL : https://patchwork.freedesktop.org/series/134660/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_15401 -> IGTPW_11728
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_11728 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_11728, 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_11728/index.html
Participating hosts (41 -> 40)
------------------------------
Additional (1): fi-kbl-8809g
Missing (2): fi-snb-2520m fi-elk-e7500
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_11728:
### IGT changes ###
#### Possible regressions ####
* igt@kms_fallback@dp-fallback (NEW):
- bat-mtlp-8: NOTRUN -> [SKIP][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-mtlp-8/igt@kms_fallback@dp-fallback.html
- bat-jsl-1: NOTRUN -> [SKIP][2]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-jsl-1/igt@kms_fallback@dp-fallback.html
- bat-arls-1: NOTRUN -> [SKIP][3]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-arls-1/igt@kms_fallback@dp-fallback.html
- bat-arlh-2: NOTRUN -> [SKIP][4]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-arlh-2/igt@kms_fallback@dp-fallback.html
- bat-dg1-7: NOTRUN -> [SKIP][5]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-dg1-7/igt@kms_fallback@dp-fallback.html
- bat-rpls-4: NOTRUN -> [SKIP][6]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-rpls-4/igt@kms_fallback@dp-fallback.html
- bat-twl-1: NOTRUN -> [SKIP][7]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-twl-1/igt@kms_fallback@dp-fallback.html
- bat-rplp-1: NOTRUN -> [SKIP][8]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-rplp-1/igt@kms_fallback@dp-fallback.html
- fi-rkl-11600: NOTRUN -> [SKIP][9]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-rkl-11600/igt@kms_fallback@dp-fallback.html
- fi-tgl-1115g4: NOTRUN -> [SKIP][10]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-tgl-1115g4/igt@kms_fallback@dp-fallback.html
- bat-arls-2: NOTRUN -> [SKIP][11]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-arls-2/igt@kms_fallback@dp-fallback.html
- bat-twl-2: NOTRUN -> [SKIP][12]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/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_11728/bat-dg2-11/igt@kms_fallback@dp-fallback.html
- bat-dg2-14: NOTRUN -> [SKIP][14]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-dg2-14/igt@kms_fallback@dp-fallback.html
New tests
---------
New tests have been introduced between CI_DRM_15401 and IGTPW_11728:
### New IGT tests (1) ###
* igt@kms_fallback@dp-fallback:
- Statuses : 1 dmesg-warn(s) 7 pass(s) 31 skip(s)
- Exec time: [0.0, 29.41] s
Known issues
------------
Here are the changes found in IGTPW_11728 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_huc_copy@huc-copy:
- fi-kbl-8809g: NOTRUN -> [SKIP][15] ([i915#2190])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@parallel-random-engines:
- fi-kbl-8809g: NOTRUN -> [SKIP][16] ([i915#4613]) +3 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-kbl-8809g/igt@gem_lmem_swapping@parallel-random-engines.html
* igt@i915_selftest@live@gt_contexts:
- bat-arls-1: [PASS][17] -> [DMESG-FAIL][18] ([i915#10262]) +33 other tests dmesg-fail
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15401/bat-arls-1/igt@i915_selftest@live@gt_contexts.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-arls-1/igt@i915_selftest@live@gt_contexts.html
* igt@i915_selftest@live@uncore:
- bat-arls-1: [PASS][19] -> [DMESG-WARN][20] ([i915#10341])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15401/bat-arls-1/igt@i915_selftest@live@uncore.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-arls-1/igt@i915_selftest@live@uncore.html
* igt@i915_selftest@live@workarounds:
- bat-mtlp-6: [PASS][21] -> [ABORT][22] ([i915#12061]) +1 other test abort
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15401/bat-mtlp-6/igt@i915_selftest@live@workarounds.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-mtlp-6/igt@i915_selftest@live@workarounds.html
* igt@kms_dsc@dsc-basic:
- fi-kbl-8809g: NOTRUN -> [SKIP][23] +31 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-kbl-8809g/igt@kms_dsc@dsc-basic.html
* igt@kms_fallback@dp-fallback (NEW):
- bat-atsm-1: NOTRUN -> [SKIP][24] ([i915#6078])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-atsm-1/igt@kms_fallback@dp-fallback.html
- fi-ivb-3770: NOTRUN -> [SKIP][25]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-ivb-3770/igt@kms_fallback@dp-fallback.html
- fi-kbl-guc: NOTRUN -> [SKIP][26]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-kbl-guc/igt@kms_fallback@dp-fallback.html
- fi-bsw-n3050: NOTRUN -> [SKIP][27]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-bsw-n3050/igt@kms_fallback@dp-fallback.html
- fi-pnv-d510: NOTRUN -> [SKIP][28]
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-pnv-d510/igt@kms_fallback@dp-fallback.html
- fi-glk-j4005: NOTRUN -> [SKIP][29]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-glk-j4005/igt@kms_fallback@dp-fallback.html
- fi-kbl-7567u: NOTRUN -> [DMESG-WARN][30] ([i915#180] / [i915#9925])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-kbl-7567u/igt@kms_fallback@dp-fallback.html
- fi-cfl-guc: NOTRUN -> [SKIP][31]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-cfl-guc/igt@kms_fallback@dp-fallback.html
- bat-mtlp-6: NOTRUN -> [SKIP][32] ([i915#9792])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-mtlp-6/igt@kms_fallback@dp-fallback.html
- bat-dg2-9: NOTRUN -> [SKIP][33] ([i915#9197])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-dg2-9/igt@kms_fallback@dp-fallback.html
- fi-kbl-x1275: NOTRUN -> [SKIP][34]
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-kbl-x1275/igt@kms_fallback@dp-fallback.html
- bat-adlp-11: NOTRUN -> [SKIP][35] ([i915#10470])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-adlp-11/igt@kms_fallback@dp-fallback.html
- fi-ilk-650: NOTRUN -> [SKIP][36]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-ilk-650/igt@kms_fallback@dp-fallback.html
- fi-blb-e6850: NOTRUN -> [SKIP][37]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-blb-e6850/igt@kms_fallback@dp-fallback.html
- fi-cfl-8700k: NOTRUN -> [SKIP][38]
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-cfl-8700k/igt@kms_fallback@dp-fallback.html
- bat-kbl-2: NOTRUN -> [SKIP][39]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-kbl-2/igt@kms_fallback@dp-fallback.html
- bat-adlm-1: NOTRUN -> [SKIP][40] ([i915#9900])
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-adlm-1/igt@kms_fallback@dp-fallback.html
#### Possible fixes ####
* igt@i915_selftest@live:
- bat-mtlp-8: [ABORT][41] ([i915#12061]) -> [PASS][42] +1 other test pass
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15401/bat-mtlp-8/igt@i915_selftest@live.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-mtlp-8/igt@i915_selftest@live.html
* igt@kms_busy@basic@flip:
- fi-kbl-7567u: [DMESG-WARN][43] ([i915#180]) -> [PASS][44]
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15401/fi-kbl-7567u/igt@kms_busy@basic@flip.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-kbl-7567u/igt@kms_busy@basic@flip.html
#### Warnings ####
* igt@fbdev@read:
- bat-arls-1: [DMESG-FAIL][45] ([i915#12102]) -> [DMESG-WARN][46] ([i915#12102])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15401/bat-arls-1/igt@fbdev@read.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-arls-1/igt@fbdev@read.html
* igt@i915_pm_rpm@module-reload:
- fi-kbl-7567u: [DMESG-WARN][47] ([i915#11621] / [i915#180] / [i915#9925]) -> [DMESG-WARN][48] ([i915#11621] / [i915#180] / [i915#1982] / [i915#9925])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15401/fi-kbl-7567u/igt@i915_pm_rpm@module-reload.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/fi-kbl-7567u/igt@i915_pm_rpm@module-reload.html
* igt@i915_selftest@live:
- bat-arls-1: [DMESG-WARN][49] ([i915#10341] / [i915#12133]) -> [DMESG-FAIL][50] ([i915#10262] / [i915#10341])
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15401/bat-arls-1/igt@i915_selftest@live.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-arls-1/igt@i915_selftest@live.html
* igt@i915_selftest@live@hangcheck:
- bat-arls-1: [DMESG-WARN][51] ([i915#11349]) -> [DMESG-FAIL][52] ([i915#10262])
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15401/bat-arls-1/igt@i915_selftest@live@hangcheck.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/bat-arls-1/igt@i915_selftest@live@hangcheck.html
[i915#10262]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10262
[i915#10341]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10341
[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#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#12102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12102
[i915#12133]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12133
[i915#180]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/180
[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#6078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6078
[i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197
[i915#9792]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9792
[i915#9900]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9900
[i915#9925]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9925
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_8013 -> IGTPW_11728
CI-20190529: 20190529
CI_DRM_15401: 4fc3b3f860db704ab0f702981a351e2638cefc19 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_11728: 11728
IGT_8013: 8013
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11728/index.html
[-- Attachment #2: Type: text/html, Size: 13876 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ CI.xeBAT: failure for add test to validate fallback (rev5)
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
` (7 preceding siblings ...)
2024-09-12 8:35 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2024-09-12 8:35 ` Patchwork
2024-09-12 14:26 ` ✗ CI.xeFULL: " Patchwork
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-09-12 8:35 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 3854 bytes --]
== Series Details ==
Series: add test to validate fallback (rev5)
URL : https://patchwork.freedesktop.org/series/134660/
State : failure
== Summary ==
CI Bug Log - changes from XEIGT_8013_BAT -> XEIGTPW_11728_BAT
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with XEIGTPW_11728_BAT absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in XEIGTPW_11728_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 (8 -> 8)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in XEIGTPW_11728_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_11728/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_11728/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_11728/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_11728/bat-lnl-2/igt@kms_fallback@dp-fallback.html
- bat-lnl-1: NOTRUN -> [SKIP][5]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/bat-lnl-1/igt@kms_fallback@dp-fallback.html
New tests
---------
New tests have been introduced between XEIGT_8013_BAT and XEIGTPW_11728_BAT:
### New IGT tests (1) ###
* igt@kms_fallback@dp-fallback:
- Statuses : 1 pass(s) 7 skip(s)
- Exec time: [0.0, 11.77] s
Known issues
------------
Here are the changes found in XEIGTPW_11728_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_fallback@dp-fallback (NEW):
- bat-atsm-2: NOTRUN -> [SKIP][6] ([Intel XE#1024])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/bat-atsm-2/igt@kms_fallback@dp-fallback.html
- bat-adlp-vf: NOTRUN -> [SKIP][7] ([Intel XE#2463])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/bat-adlp-vf/igt@kms_fallback@dp-fallback.html
#### Possible fixes ####
* igt@xe_exec_compute_mode@twice-bindexecqueue-userptr-invalidate:
- bat-lnl-1: [FAIL][8] ([Intel XE#1069]) -> [PASS][9]
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/bat-lnl-1/igt@xe_exec_compute_mode@twice-bindexecqueue-userptr-invalidate.html
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/bat-lnl-1/igt@xe_exec_compute_mode@twice-bindexecqueue-userptr-invalidate.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
[Intel XE#2463]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2463
Build changes
-------------
* IGT: IGT_8013 -> IGTPW_11728
* Linux: xe-1929-45bec37c098c2f6232d233c8116236f09327d2b8 -> xe-1932-1b37d4587b45639327eeb4cce29f77d487f7700a
IGTPW_11728: 11728
IGT_8013: 8013
xe-1929-45bec37c098c2f6232d233c8116236f09327d2b8: 45bec37c098c2f6232d233c8116236f09327d2b8
xe-1932-1b37d4587b45639327eeb4cce29f77d487f7700a: 1b37d4587b45639327eeb4cce29f77d487f7700a
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/index.html
[-- Attachment #2: Type: text/html, Size: 4559 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions
2024-09-12 6:28 ` [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions Kunal Joshi
@ 2024-09-12 11:15 ` Joshi, Kunal1
2024-09-18 14:29 ` Imre Deak
1 sibling, 0 replies; 17+ messages in thread
From: Joshi, Kunal1 @ 2024-09-12 11:15 UTC (permalink / raw)
To: igt-dev@lists.freedesktop.org; +Cc: Deak, Imre
Hello,
> -----Original Message-----
> From: Joshi, Kunal1 <kunal1.joshi@intel.com>
> Sent: Thursday, September 12, 2024 11:59 AM
> To: igt-dev@lists.freedesktop.org
> Cc: Deak, Imre <imre.deak@intel.com>; Joshi, Kunal1
> <kunal1.joshi@intel.com>
> Subject: [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper
> functions
>
> Added helper functions for below
> - read current/max link_rate/lane_count
> - forcing link retraining
> - forcing link training failures
> - read pending retrain
> - read pending link training failures
> - checking output supports forcing lt failures
> - force link_rate/lane_count
>
> v2: combine all link training debugfs in one patch (Imre)
> remove unwanted valid output check (Imre)
> return link_rate/lane_count marked with '*' or an error (Imre)
>
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> ---
> lib/igt_kms.c | 210
> ++++++++++++++++++++++++++++++++++++++++++++++++++
> lib/igt_kms.h | 10 +++
> 2 files changed, 220 insertions(+)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c index dd530dbab..f0ac1e5dc 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -61,6 +61,7 @@
> #include "sw_sync.h"
> #ifdef HAVE_CHAMELIUM
> #include "igt_chamelium.h"
> +#include <ctype.h>
There are some warnings seen in pipeline
Will fix this in next revision.
Thanks and Regards
Kunal Joshi
> #endif
>
> /**
> @@ -6705,3 +6706,212 @@ int get_num_scalers(igt_display_t *display, enum
> pipe pipe)
>
> return num_scalers;
> }
> +
> +/**
> + * igt_get_dp_link_param_set_for_output:
> + * @drm_fd: A drm file descriptor
> + * @output: Target output
> + * @link_param: 0 for lane count, 1 for link rate
> + *
> + * Returns: link_rate / lane_count if set for output else -1 */ int
> +igt_get_dp_link_param_set_for_output(int drm_fd, igt_output_t *output,
> +int link_param) {
> + char *star_ptr, *param_ptr;
> + char buf[512];
> + int dir, res;
> + int ret;
> +
> + ret = -1;
> + 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, link_param ?
> "i915_dp_force_link_rate" :
> + "i915_dp_force_lane_count", buf,
> sizeof(buf));
> + close(dir);
> + igt_require(res >= 0);
> +
> + /*
> + * Check we have a mode enabled for the output
> + * If so we will have current active link rate
> + * marked with a *
> + */
> + star_ptr = strstr(buf, "*");
> +
> + if (star_ptr) {
> + param_ptr = star_ptr - 1;
> + while (param_ptr > buf && isdigit(*param_ptr))
> + param_ptr--;
> +
> + param_ptr++;
> + igt_assert(sscanf(param_ptr, "%d", &ret) == 1);
> + }
> + return ret;
> +}
> +
> +/**
> + * igt_get_dp_max_link_param:
> + * @drm_fd: A drm file descriptor
> + * @output: The output to query
> + * @link_param: 0 for lane count, 1 for link rate
> + *
> + * Get the max link_rate / lane_count supported by the sink.
> + *
> + * Returns: max link_rate / lane_count supported by the sink.
> + */
> +int igt_get_dp_max_link_param(int drm_fd, igt_output_t *output, int
> +link_param) {
> + char buf[512];
> + int dir, res;
> + int max_link_param;
> +
> + 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, link_param ?
> "i915_dp_max_link_rate" :
> + "i915_dp_max_lane_count", 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_param) == 1);
> +
> + return max_link_param;
> +}
> +
> +/**
> + * 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);
> + 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);
> +}
> +
> +/**
> + * 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);
> + 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);
> +}
> +
> +/**
> + * 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];
> +
> + 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");
> +}
> +
> +/**
> + * 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;
> +}
> +
> +/**
> + * 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];
> +
> + 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;
> +}
> +
> +/**
> + * 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];
> +
> + 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 25ba50916..895bc9d04 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -1224,5 +1224,15 @@ 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);
> +int igt_get_dp_link_param_set_for_output(int drm_fd, igt_output_t *output,
> + int link_param);
> +int igt_get_dp_max_link_param(int drm_fd, igt_output_t *output,
> + int link_param);
> +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); int igt_get_dp_pending_retrain(int drm_fd, igt_output_t
> +*output);
>
> #endif /* __IGT_KMS_H__ */
> --
> 2.43.0
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ CI.xeFULL: failure for add test to validate fallback (rev5)
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
` (8 preceding siblings ...)
2024-09-12 8:35 ` ✗ CI.xeBAT: " Patchwork
@ 2024-09-12 14:26 ` Patchwork
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-09-12 14:26 UTC (permalink / raw)
To: Joshi, Kunal1; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 65104 bytes --]
== Series Details ==
Series: add test to validate fallback (rev5)
URL : https://patchwork.freedesktop.org/series/134660/
State : failure
== Summary ==
CI Bug Log - changes from XEIGT_8013_full -> XEIGTPW_11728_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with XEIGTPW_11728_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in XEIGTPW_11728_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_11728_full:
### IGT changes ###
#### Possible regressions ####
* igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size:
- shard-lnl: [PASS][1] -> [INCOMPLETE][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-2/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-2/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html
* igt@kms_fallback@dp-fallback (NEW):
- shard-lnl: NOTRUN -> [SKIP][3]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-7/igt@kms_fallback@dp-fallback.html
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
- {shard-bmg}: [PASS][4] -> [INCOMPLETE][5] +1 other test incomplete
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-bmg-8/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-bmg-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
New tests
---------
New tests have been introduced between XEIGT_8013_full and XEIGTPW_11728_full:
### New IGT tests (1) ###
* igt@kms_fallback@dp-fallback:
- Statuses : 2 pass(s) 1 skip(s)
- Exec time: [0.0, 11.46] s
Known issues
------------
Here are the changes found in XEIGTPW_11728_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_atomic_transition@plane-all-modeset-transition:
- shard-lnl: NOTRUN -> [SKIP][6] ([Intel XE#599])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@kms_atomic_transition@plane-all-modeset-transition.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
- shard-lnl: [PASS][7] -> [FAIL][8] ([Intel XE#1426]) +1 other test fail
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-5/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
* igt@kms_big_fb@4-tiled-64bpp-rotate-180:
- shard-lnl: [PASS][9] -> [FAIL][10] ([Intel XE#1659])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-3/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-4/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html
* igt@kms_big_fb@linear-8bpp-rotate-90:
- shard-dg2-set2: NOTRUN -> [SKIP][11] ([Intel XE#316])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_big_fb@linear-8bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-270:
- shard-dg2-set2: NOTRUN -> [SKIP][12] ([Intel XE#1201] / [Intel XE#316]) +1 other test skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
- shard-dg2-set2: NOTRUN -> [SKIP][13] ([Intel XE#1124] / [Intel XE#1201]) +1 other test skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-0:
- shard-lnl: NOTRUN -> [SKIP][14] ([Intel XE#1124])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@kms_big_fb@yf-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@yf-tiled-addfb:
- shard-dg2-set2: NOTRUN -> [SKIP][15] ([Intel XE#1201] / [Intel XE#619])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-436/igt@kms_big_fb@yf-tiled-addfb.html
* igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p:
- shard-dg2-set2: NOTRUN -> [SKIP][16] ([Intel XE#1201] / [Intel XE#2191])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-433/igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p.html
* igt@kms_bw@linear-tiling-3-displays-2160x1440p:
- shard-dg2-set2: NOTRUN -> [SKIP][17] ([Intel XE#1201] / [Intel XE#367]) +2 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html
* igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][18] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +7 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4.html
* igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-b-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][19] ([Intel XE#1201] / [Intel XE#787]) +27 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-b-dp-4.html
* igt@kms_chamelium_color@ctm-0-75:
- shard-dg2-set2: NOTRUN -> [SKIP][20] ([Intel XE#1201] / [Intel XE#306])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_chamelium_color@ctm-0-75.html
* igt@kms_chamelium_color@gamma:
- shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#306])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@kms_chamelium_color@gamma.html
* igt@kms_chamelium_frames@hdmi-crc-multiple:
- shard-dg2-set2: NOTRUN -> [SKIP][22] ([Intel XE#373])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_chamelium_frames@hdmi-crc-multiple.html
* igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode:
- shard-dg2-set2: NOTRUN -> [SKIP][23] ([Intel XE#1201] / [Intel XE#373]) +4 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html
* igt@kms_chamelium_hpd@vga-hpd-for-each-pipe:
- shard-lnl: NOTRUN -> [SKIP][24] ([Intel XE#373])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-dg2-set2: NOTRUN -> [SKIP][25] ([Intel XE#1201] / [Intel XE#308]) +2 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_edge_walk@128x128-right-edge:
- shard-lnl: [PASS][26] -> [DMESG-WARN][27] ([Intel XE#2055]) +1 other test dmesg-warn
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-3/igt@kms_cursor_edge_walk@128x128-right-edge.html
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@kms_cursor_edge_walk@128x128-right-edge.html
* igt@kms_cursor_edge_walk@64x64-right-edge@pipe-a-edp-1:
- shard-lnl: [PASS][28] -> [FAIL][29] ([Intel XE#2577]) +1 other test fail
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-2/igt@kms_cursor_edge_walk@64x64-right-edge@pipe-a-edp-1.html
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-3/igt@kms_cursor_edge_walk@64x64-right-edge@pipe-a-edp-1.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-lnl: NOTRUN -> [SKIP][30] ([Intel XE#323])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-5/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_dsc@dsc-basic:
- shard-dg2-set2: NOTRUN -> [SKIP][31] ([Intel XE#455])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_dsc@dsc-basic.html
* igt@kms_feature_discovery@chamelium:
- shard-dg2-set2: NOTRUN -> [SKIP][32] ([Intel XE#1201] / [Intel XE#701])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_feature_discovery@chamelium.html
* igt@kms_flip@2x-flip-vs-suspend:
- shard-dg2-set2: [PASS][33] -> [INCOMPLETE][34] ([Intel XE#1195] / [Intel XE#2597])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-466/igt@kms_flip@2x-flip-vs-suspend.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_flip@2x-flip-vs-suspend.html
* igt@kms_flip@2x-flip-vs-suspend@cd-hdmi-a6-dp4:
- shard-dg2-set2: [PASS][35] -> [INCOMPLETE][36] ([Intel XE#1195])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-466/igt@kms_flip@2x-flip-vs-suspend@cd-hdmi-a6-dp4.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_flip@2x-flip-vs-suspend@cd-hdmi-a6-dp4.html
* igt@kms_flip@flip-vs-absolute-wf_vblank:
- shard-lnl: [PASS][37] -> [FAIL][38] ([Intel XE#886]) +1 other test fail
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-8/igt@kms_flip@flip-vs-absolute-wf_vblank.html
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-2/igt@kms_flip@flip-vs-absolute-wf_vblank.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-onoff:
- shard-dg2-set2: NOTRUN -> [SKIP][39] ([Intel XE#651])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt:
- shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#656]) +3 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-plflip-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][41] ([Intel XE#1201] / [Intel XE#651]) +14 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][42] ([Intel XE#651])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-4/igt@kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][43] ([Intel XE#1201] / [Intel XE#653]) +10 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_hdr@invalid-hdr:
- shard-dg2-set2: NOTRUN -> [SKIP][44] ([Intel XE#1201] / [Intel XE#455]) +2 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-436/igt@kms_hdr@invalid-hdr.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-dg2-set2: NOTRUN -> [SKIP][45] ([Intel XE#1201] / [Intel XE#356])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-436/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_plane@plane-position-covered@pipe-b-plane-4:
- shard-lnl: [PASS][46] -> [DMESG-WARN][47] ([Intel XE#324]) +3 other tests dmesg-warn
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-1/igt@kms_plane@plane-position-covered@pipe-b-plane-4.html
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-1/igt@kms_plane@plane-position-covered@pipe-b-plane-4.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-c-edp-1:
- shard-lnl: NOTRUN -> [SKIP][48] ([Intel XE#498]) +3 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-c-edp-1.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25:
- shard-dg2-set2: NOTRUN -> [SKIP][49] ([Intel XE#1201] / [Intel XE#2318] / [Intel XE#455]) +1 other test skip
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-c-hdmi-a-6:
- shard-dg2-set2: NOTRUN -> [SKIP][50] ([Intel XE#1201] / [Intel XE#2318]) +2 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-c-hdmi-a-6.html
* igt@kms_pm_backlight@fade-with-suspend:
- shard-dg2-set2: NOTRUN -> [SKIP][51] ([Intel XE#1201] / [Intel XE#870])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-436/igt@kms_pm_backlight@fade-with-suspend.html
* igt@kms_pm_dc@dc5-psr:
- shard-lnl: [PASS][52] -> [FAIL][53] ([Intel XE#718])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-7/igt@kms_pm_dc@dc5-psr.html
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-5/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_dc@dc6-dpms:
- shard-dg2-set2: NOTRUN -> [SKIP][54] ([Intel XE#1201] / [Intel XE#908])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_dc@deep-pkgc:
- shard-lnl: [PASS][55] -> [FAIL][56] ([Intel XE#2029])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-5/igt@kms_pm_dc@deep-pkgc.html
* igt@kms_pm_rpm@universal-planes-dpms:
- shard-lnl: [PASS][57] -> [INCOMPLETE][58] ([Intel XE#1620])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-3/igt@kms_pm_rpm@universal-planes-dpms.html
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-4/igt@kms_pm_rpm@universal-planes-dpms.html
* igt@kms_pm_rpm@universal-planes-dpms@plane-41:
- shard-lnl: [PASS][59] -> [DMESG-FAIL][60] ([Intel XE#1620])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-3/igt@kms_pm_rpm@universal-planes-dpms@plane-41.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-4/igt@kms_pm_rpm@universal-planes-dpms@plane-41.html
* igt@kms_psr@fbc-pr-sprite-plane-move:
- shard-dg2-set2: NOTRUN -> [SKIP][61] ([Intel XE#1201] / [Intel XE#929]) +5 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_psr@fbc-pr-sprite-plane-move.html
* igt@kms_psr@psr2-cursor-plane-move@edp-1:
- shard-lnl: [PASS][62] -> [FAIL][63] ([Intel XE#1649]) +1 other test fail
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-5/igt@kms_psr@psr2-cursor-plane-move@edp-1.html
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-7/igt@kms_psr@psr2-cursor-plane-move@edp-1.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-dg2-set2: NOTRUN -> [SKIP][64] ([Intel XE#1149] / [Intel XE#1201])
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-436/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_tv_load_detect@load-detect:
- shard-dg2-set2: NOTRUN -> [SKIP][65] ([Intel XE#1201] / [Intel XE#330])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_tv_load_detect@load-detect.html
* igt@kms_universal_plane@cursor-fb-leak:
- shard-lnl: [PASS][66] -> [FAIL][67] ([Intel XE#899]) +1 other test fail
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-5/igt@kms_universal_plane@cursor-fb-leak.html
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-4/igt@kms_universal_plane@cursor-fb-leak.html
* igt@kms_vrr@max-min:
- shard-lnl: [PASS][68] -> [FAIL][69] ([Intel XE#2443]) +1 other test fail
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-5/igt@kms_vrr@max-min.html
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-2/igt@kms_vrr@max-min.html
* igt@kms_writeback@writeback-invalid-parameters:
- shard-lnl: NOTRUN -> [SKIP][70] ([Intel XE#756])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@kms_writeback@writeback-invalid-parameters.html
* igt@kms_writeback@writeback-pixel-formats:
- shard-dg2-set2: NOTRUN -> [SKIP][71] ([Intel XE#1201] / [Intel XE#756])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-435/igt@kms_writeback@writeback-pixel-formats.html
* igt@xe_copy_basic@mem-set-linear-0x369:
- shard-dg2-set2: NOTRUN -> [SKIP][72] ([Intel XE#1126] / [Intel XE#1201])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@xe_copy_basic@mem-set-linear-0x369.html
* igt@xe_evict@evict-beng-mixed-many-threads-large:
- shard-dg2-set2: [PASS][73] -> [TIMEOUT][74] ([Intel XE#1473])
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-434/igt@xe_evict@evict-beng-mixed-many-threads-large.html
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@xe_evict@evict-beng-mixed-many-threads-large.html
* igt@xe_evict@evict-beng-mixed-many-threads-small:
- shard-dg2-set2: [PASS][75] -> [TIMEOUT][76] ([Intel XE#1473] / [Intel XE#402])
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-435/igt@xe_evict@evict-beng-mixed-many-threads-small.html
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@xe_evict@evict-beng-mixed-many-threads-small.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap:
- shard-lnl: NOTRUN -> [SKIP][77] ([Intel XE#1392]) +1 other test skip
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-1/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap.html
* igt@xe_exec_compute_mode@many-userptr-invalidate:
- shard-lnl: [PASS][78] -> [FAIL][79] ([Intel XE#1069])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-8/igt@xe_exec_compute_mode@many-userptr-invalidate.html
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-4/igt@xe_exec_compute_mode@many-userptr-invalidate.html
* igt@xe_exec_fault_mode@many-basic-prefetch:
- shard-dg2-set2: NOTRUN -> [SKIP][80] ([Intel XE#1201] / [Intel XE#288]) +7 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-433/igt@xe_exec_fault_mode@many-basic-prefetch.html
* igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch:
- shard-dg2-set2: NOTRUN -> [SKIP][81] ([Intel XE#288])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch.html
* igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit:
- shard-dg2-set2: NOTRUN -> [FAIL][82] ([Intel XE#1999]) +2 other tests fail
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit.html
* igt@xe_oa@oa-unit-exclusive-stream-sample-oa:
- shard-dg2-set2: NOTRUN -> [SKIP][83] ([Intel XE#1201] / [Intel XE#2541]) +2 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-436/igt@xe_oa@oa-unit-exclusive-stream-sample-oa.html
* igt@xe_pm@s2idle-vm-bind-userptr:
- shard-dg2-set2: [PASS][84] -> [ABORT][85] ([Intel XE#1694] / [Intel XE#1794])
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-436/igt@xe_pm@s2idle-vm-bind-userptr.html
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@xe_pm@s2idle-vm-bind-userptr.html
* igt@xe_pm@s4-basic:
- shard-lnl: [PASS][86] -> [ABORT][87] ([Intel XE#1358] / [Intel XE#1607])
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-3/igt@xe_pm@s4-basic.html
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-2/igt@xe_pm@s4-basic.html
* igt@xe_pm_residency@toggle-gt-c6:
- shard-lnl: [PASS][88] -> [FAIL][89] ([Intel XE#958])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-5/igt@xe_pm_residency@toggle-gt-c6.html
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@xe_pm_residency@toggle-gt-c6.html
* igt@xe_query@multigpu-query-cs-cycles:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#944])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-3/igt@xe_query@multigpu-query-cs-cycles.html
* igt@xe_query@multigpu-query-engines:
- shard-dg2-set2: NOTRUN -> [SKIP][91] ([Intel XE#1201] / [Intel XE#944]) +1 other test skip
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-433/igt@xe_query@multigpu-query-engines.html
* igt@xe_wedged@basic-wedged:
- shard-lnl: NOTRUN -> [DMESG-WARN][92] ([Intel XE#1760])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-3/igt@xe_wedged@basic-wedged.html
#### Possible fixes ####
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
- {shard-bmg}: [DMESG-FAIL][93] ([Intel XE#877]) -> [PASS][94]
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-bmg-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-d-hdmi-a-3:
- {shard-bmg}: [FAIL][95] ([Intel XE#2436]) -> [PASS][96]
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-bmg-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-d-hdmi-a-3.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-d-hdmi-a-3.html
* igt@kms_cursor_legacy@cursor-vs-flip-varying-size:
- {shard-bmg}: [INCOMPLETE][97] -> [PASS][98]
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-bmg-7/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-bmg-5/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
- {shard-bmg}: [DMESG-WARN][99] ([Intel XE#877]) -> [PASS][100] +12 other tests pass
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-bmg-3/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-bmg-3/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@torture-move@pipe-a:
- shard-lnl: [DMESG-WARN][101] ([Intel XE#877]) -> [PASS][102] +1 other test pass
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-4/igt@kms_cursor_legacy@torture-move@pipe-a.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-1/igt@kms_cursor_legacy@torture-move@pipe-a.html
* igt@kms_flip@flip-vs-blocking-wf-vblank@c-edp1:
- shard-lnl: [FAIL][103] ([Intel XE#886]) -> [PASS][104] +1 other test pass
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-3/igt@kms_flip@flip-vs-blocking-wf-vblank@c-edp1.html
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-5/igt@kms_flip@flip-vs-blocking-wf-vblank@c-edp1.html
* igt@kms_plane@plane-position-covered@pipe-a-plane-1:
- shard-lnl: [DMESG-FAIL][105] ([Intel XE#324]) -> [PASS][106]
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-1/igt@kms_plane@plane-position-covered@pipe-a-plane-1.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-1/igt@kms_plane@plane-position-covered@pipe-a-plane-1.html
* igt@kms_plane@plane-position-hole-dpms@pipe-a-plane-4:
- shard-lnl: [DMESG-WARN][107] ([Intel XE#324]) -> [PASS][108]
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-1/igt@kms_plane@plane-position-hole-dpms@pipe-a-plane-4.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-3/igt@kms_plane@plane-position-hole-dpms@pipe-a-plane-4.html
* igt@kms_pm_dc@dc5-dpms:
- shard-lnl: [FAIL][109] ([Intel XE#718]) -> [PASS][110]
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-4/igt@kms_pm_dc@dc5-dpms.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-5/igt@kms_pm_dc@dc5-dpms.html
* igt@kms_psr@psr2-primary-page-flip@edp-1:
- shard-lnl: [FAIL][111] ([Intel XE#1649]) -> [PASS][112] +1 other test pass
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-1/igt@kms_psr@psr2-primary-page-flip@edp-1.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@kms_psr@psr2-primary-page-flip@edp-1.html
* igt@kms_universal_plane@cursor-fb-leak:
- shard-dg2-set2: [FAIL][113] ([Intel XE#771] / [Intel XE#899]) -> [PASS][114]
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@kms_universal_plane@cursor-fb-leak.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_universal_plane@cursor-fb-leak.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-6:
- shard-dg2-set2: [FAIL][115] ([Intel XE#899]) -> [PASS][116]
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-6.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-6.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-d-dp-2:
- {shard-bmg}: [FAIL][117] ([Intel XE#899]) -> [PASS][118]
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-bmg-7/igt@kms_universal_plane@cursor-fb-leak@pipe-d-dp-2.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-bmg-8/igt@kms_universal_plane@cursor-fb-leak@pipe-d-dp-2.html
* igt@kms_universal_plane@universal-plane-pageflip-windowed@pipe-a-hdmi-a-6:
- shard-dg2-set2: [ABORT][119] -> [PASS][120] +1 other test pass
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-466/igt@kms_universal_plane@universal-plane-pageflip-windowed@pipe-a-hdmi-a-6.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-433/igt@kms_universal_plane@universal-plane-pageflip-windowed@pipe-a-hdmi-a-6.html
* igt@xe_evict@evict-threads-large:
- {shard-bmg}: [TIMEOUT][121] ([Intel XE#1473] / [Intel XE#2472]) -> [PASS][122]
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-bmg-5/igt@xe_evict@evict-threads-large.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-bmg-1/igt@xe_evict@evict-threads-large.html
* igt@xe_exec_balancer@many-execqueues-parallel-userptr-invalidate:
- shard-dg2-set2: [INCOMPLETE][123] ([Intel XE#1195]) -> [PASS][124] +3 other tests pass
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@xe_exec_balancer@many-execqueues-parallel-userptr-invalidate.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@xe_exec_balancer@many-execqueues-parallel-userptr-invalidate.html
* igt@xe_exec_reset@cm-close-execqueues-close-fd:
- shard-lnl: [DMESG-WARN][125] -> [PASS][126] +1 other test pass
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-3/igt@xe_exec_reset@cm-close-execqueues-close-fd.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@xe_exec_reset@cm-close-execqueues-close-fd.html
* igt@xe_exec_reset@gt-reset-stress:
- shard-dg2-set2: [DMESG-WARN][127] ([Intel XE#2046]) -> [PASS][128]
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@xe_exec_reset@gt-reset-stress.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-436/igt@xe_exec_reset@gt-reset-stress.html
* igt@xe_exec_threads@threads-cm-basic:
- shard-dg2-set2: [FAIL][129] ([Intel XE#1069]) -> [PASS][130]
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@xe_exec_threads@threads-cm-basic.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@xe_exec_threads@threads-cm-basic.html
* igt@xe_pm@d3hot-mocs:
- shard-dg2-set2: [TIMEOUT][131] ([Intel XE#2574]) -> [PASS][132]
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@xe_pm@d3hot-mocs.html
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@xe_pm@d3hot-mocs.html
* igt@xe_pm@s4-mocs:
- shard-lnl: [ABORT][133] ([Intel XE#1794]) -> [PASS][134]
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-2/igt@xe_pm@s4-mocs.html
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-8/igt@xe_pm@s4-mocs.html
* igt@xe_pm@s4-vm-bind-unbind-all:
- {shard-bmg}: [INCOMPLETE][135] ([Intel XE#2280]) -> [PASS][136]
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-bmg-3/igt@xe_pm@s4-vm-bind-unbind-all.html
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-bmg-2/igt@xe_pm@s4-vm-bind-unbind-all.html
- shard-lnl: [DMESG-WARN][137] ([Intel XE#2280]) -> [PASS][138]
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-8/igt@xe_pm@s4-vm-bind-unbind-all.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-4/igt@xe_pm@s4-vm-bind-unbind-all.html
* igt@xe_wedged@wedged-mode-toggle:
- shard-dg2-set2: [DMESG-WARN][139] ([Intel XE#2759]) -> [PASS][140]
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-466/igt@xe_wedged@wedged-mode-toggle.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-433/igt@xe_wedged@wedged-mode-toggle.html
- shard-lnl: [DMESG-WARN][141] ([Intel XE#2759]) -> [PASS][142]
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-8/igt@xe_wedged@wedged-mode-toggle.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-5/igt@xe_wedged@wedged-mode-toggle.html
- {shard-bmg}: [DMESG-WARN][143] ([Intel XE#2759]) -> [PASS][144]
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-bmg-3/igt@xe_wedged@wedged-mode-toggle.html
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-bmg-5/igt@xe_wedged@wedged-mode-toggle.html
#### Warnings ####
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- shard-dg2-set2: [SKIP][145] ([Intel XE#1201] / [Intel XE#623]) -> [SKIP][146] ([Intel XE#623])
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-434/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-90:
- shard-dg2-set2: [SKIP][147] ([Intel XE#316]) -> [SKIP][148] ([Intel XE#1201] / [Intel XE#316]) +2 other tests skip
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-433/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-64bpp-rotate-90:
- shard-dg2-set2: [SKIP][149] ([Intel XE#1201] / [Intel XE#316]) -> [SKIP][150] ([Intel XE#316]) +1 other test skip
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-433/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-dg2-set2: [SKIP][151] ([Intel XE#1124]) -> [SKIP][152] ([Intel XE#1124] / [Intel XE#1201]) +8 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-270:
- shard-dg2-set2: [SKIP][153] ([Intel XE#1124] / [Intel XE#1201]) -> [SKIP][154] ([Intel XE#1124]) +3 other tests skip
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-433/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-addfb-size-overflow:
- shard-dg2-set2: [SKIP][155] ([Intel XE#1201] / [Intel XE#610]) -> [SKIP][156] ([Intel XE#610])
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-436/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html
* igt@kms_big_joiner@invalid-modeset:
- shard-dg2-set2: [SKIP][157] ([Intel XE#1201] / [Intel XE#346]) -> [SKIP][158] ([Intel XE#346])
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-435/igt@kms_big_joiner@invalid-modeset.html
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_big_joiner@invalid-modeset.html
* igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p:
- shard-dg2-set2: [SKIP][159] ([Intel XE#367]) -> [SKIP][160] ([Intel XE#1201] / [Intel XE#367]) +2 other tests skip
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
* igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p:
- shard-dg2-set2: [SKIP][161] ([Intel XE#1201] / [Intel XE#367]) -> [SKIP][162] ([Intel XE#367])
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-466/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
* igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p:
- shard-dg2-set2: [SKIP][163] ([Intel XE#2191]) -> [SKIP][164] ([Intel XE#1201] / [Intel XE#2191]) +1 other test skip
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-435/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-6:
- shard-dg2-set2: [SKIP][165] ([Intel XE#787]) -> [SKIP][166] ([Intel XE#1201] / [Intel XE#787]) +69 other tests skip
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-6.html
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-6.html
* igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs@pipe-d-dp-4:
- shard-dg2-set2: [SKIP][167] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][168] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +19 other tests skip
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs@pipe-d-dp-4.html
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs@pipe-d-dp-4.html
* igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-b-hdmi-a-6:
- shard-dg2-set2: [SKIP][169] ([Intel XE#1201] / [Intel XE#787]) -> [SKIP][170] ([Intel XE#787]) +27 other tests skip
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-435/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-b-hdmi-a-6.html
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-b-hdmi-a-6.html
* igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs:
- shard-dg2-set2: [SKIP][171] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) -> [SKIP][172] ([Intel XE#455] / [Intel XE#787]) +7 other tests skip
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-433/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs.html
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
- shard-dg2-set2: [SKIP][173] ([Intel XE#1201] / [Intel XE#1252]) -> [SKIP][174] ([Intel XE#1252])
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html
* igt@kms_chamelium_color@ctm-green-to-red:
- shard-dg2-set2: [SKIP][175] ([Intel XE#1201] / [Intel XE#306]) -> [SKIP][176] ([Intel XE#306])
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-433/igt@kms_chamelium_color@ctm-green-to-red.html
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_chamelium_color@ctm-green-to-red.html
* igt@kms_chamelium_color@degamma:
- shard-dg2-set2: [SKIP][177] ([Intel XE#306]) -> [SKIP][178] ([Intel XE#1201] / [Intel XE#306])
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_chamelium_color@degamma.html
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_chamelium_color@degamma.html
* igt@kms_chamelium_hpd@hdmi-hpd:
- shard-dg2-set2: [SKIP][179] ([Intel XE#373]) -> [SKIP][180] ([Intel XE#1201] / [Intel XE#373]) +7 other tests skip
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_chamelium_hpd@hdmi-hpd.html
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-436/igt@kms_chamelium_hpd@hdmi-hpd.html
* igt@kms_chamelium_hpd@vga-hpd-without-ddc:
- shard-dg2-set2: [SKIP][181] ([Intel XE#1201] / [Intel XE#373]) -> [SKIP][182] ([Intel XE#373]) +2 other tests skip
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-435/igt@kms_chamelium_hpd@vga-hpd-without-ddc.html
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_chamelium_hpd@vga-hpd-without-ddc.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-dg2-set2: [SKIP][183] ([Intel XE#1201] / [Intel XE#307]) -> [SKIP][184] ([Intel XE#307])
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-436/igt@kms_content_protection@dp-mst-type-0.html
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_cursor_crc@cursor-offscreen-512x512:
- shard-dg2-set2: [SKIP][185] ([Intel XE#308]) -> [SKIP][186] ([Intel XE#1201] / [Intel XE#308])
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_cursor_crc@cursor-offscreen-512x512.html
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_cursor_crc@cursor-offscreen-512x512.html
* igt@kms_display_modes@mst-extended-mode-negative:
- shard-dg2-set2: [SKIP][187] ([Intel XE#307]) -> [SKIP][188] ([Intel XE#1201] / [Intel XE#307]) +1 other test skip
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_display_modes@mst-extended-mode-negative.html
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-433/igt@kms_display_modes@mst-extended-mode-negative.html
* igt@kms_feature_discovery@display-4x:
- shard-dg2-set2: [SKIP][189] ([Intel XE#1138]) -> [SKIP][190] ([Intel XE#1138] / [Intel XE#1201])
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_feature_discovery@display-4x.html
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_feature_discovery@display-4x.html
* igt@kms_feature_discovery@dp-mst:
- shard-dg2-set2: [SKIP][191] ([Intel XE#1137] / [Intel XE#1201]) -> [SKIP][192] ([Intel XE#1137])
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@kms_feature_discovery@dp-mst.html
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_feature_discovery@dp-mst.html
* igt@kms_feature_discovery@psr2:
- shard-dg2-set2: [SKIP][193] ([Intel XE#1135]) -> [SKIP][194] ([Intel XE#1135] / [Intel XE#1201])
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_feature_discovery@psr2.html
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_feature_discovery@psr2.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff:
- shard-dg2-set2: [SKIP][195] ([Intel XE#651]) -> [SKIP][196] ([Intel XE#1201] / [Intel XE#651]) +26 other tests skip
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff.html
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-433/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff.html
* igt@kms_frontbuffer_tracking@drrs-suspend:
- shard-dg2-set2: [SKIP][197] ([Intel XE#1201] / [Intel XE#651]) -> [SKIP][198] ([Intel XE#651]) +12 other tests skip
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-435/igt@kms_frontbuffer_tracking@drrs-suspend.html
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-suspend.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt:
- shard-dg2-set2: [SKIP][199] ([Intel XE#653]) -> [SKIP][200] ([Intel XE#1201] / [Intel XE#653]) +24 other tests skip
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-436/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-4:
- shard-dg2-set2: [SKIP][201] ([Intel XE#1201] / [Intel XE#653]) -> [SKIP][202] ([Intel XE#653]) +14 other tests skip
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html
* igt@kms_plane@plane-position-covered:
- shard-lnl: [DMESG-FAIL][203] ([Intel XE#324]) -> [DMESG-WARN][204] ([Intel XE#324])
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-lnl-1/igt@kms_plane@plane-position-covered.html
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-lnl-1/igt@kms_plane@plane-position-covered.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b-hdmi-a-6:
- shard-dg2-set2: [SKIP][205] ([Intel XE#1201] / [Intel XE#2318]) -> [SKIP][206] ([Intel XE#2318]) +2 other tests skip
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b-hdmi-a-6.html
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b-hdmi-a-6.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-d-hdmi-a-6:
- shard-dg2-set2: [SKIP][207] ([Intel XE#1201] / [Intel XE#2318] / [Intel XE#455]) -> [SKIP][208] ([Intel XE#2318] / [Intel XE#455]) +1 other test skip
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-d-hdmi-a-6.html
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-d-hdmi-a-6.html
* igt@kms_pm_backlight@bad-brightness:
- shard-dg2-set2: [SKIP][209] ([Intel XE#870]) -> [SKIP][210] ([Intel XE#1201] / [Intel XE#870])
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_pm_backlight@bad-brightness.html
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_pm_backlight@bad-brightness.html
* igt@kms_pm_backlight@fade-with-dpms:
- shard-dg2-set2: [SKIP][211] ([Intel XE#1201] / [Intel XE#870]) -> [SKIP][212] ([Intel XE#870])
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-466/igt@kms_pm_backlight@fade-with-dpms.html
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_pm_backlight@fade-with-dpms.html
* igt@kms_pm_dc@dc5-psr:
- shard-dg2-set2: [SKIP][213] ([Intel XE#1129] / [Intel XE#1201]) -> [SKIP][214] ([Intel XE#1129])
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-466/igt@kms_pm_dc@dc5-psr.html
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_dc@dc6-psr:
- shard-dg2-set2: [SKIP][215] ([Intel XE#1129]) -> [SKIP][216] ([Intel XE#1129] / [Intel XE#1201])
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_pm_dc@dc6-psr.html
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-433/igt@kms_pm_dc@dc6-psr.html
* igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area:
- shard-dg2-set2: [SKIP][217] ([Intel XE#1489]) -> [SKIP][218] ([Intel XE#1201] / [Intel XE#1489]) +3 other tests skip
[217]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html
[218]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html
* igt@kms_psr2_sf@plane-move-sf-dmg-area:
- shard-dg2-set2: [SKIP][219] ([Intel XE#1201] / [Intel XE#1489]) -> [SKIP][220] ([Intel XE#1489]) +3 other tests skip
[219]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-466/igt@kms_psr2_sf@plane-move-sf-dmg-area.html
[220]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_psr2_sf@plane-move-sf-dmg-area.html
* igt@kms_psr2_su@page_flip-nv12:
- shard-dg2-set2: [SKIP][221] ([Intel XE#1122]) -> [SKIP][222] ([Intel XE#1122] / [Intel XE#1201])
[221]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_psr2_su@page_flip-nv12.html
[222]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-463/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr@fbc-psr2-sprite-plane-move:
- shard-dg2-set2: [SKIP][223] ([Intel XE#929]) -> [SKIP][224] ([Intel XE#1201] / [Intel XE#929]) +9 other tests skip
[223]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_psr@fbc-psr2-sprite-plane-move.html
[224]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-435/igt@kms_psr@fbc-psr2-sprite-plane-move.html
* igt@kms_psr@pr-sprite-blt:
- shard-dg2-set2: [SKIP][225] ([Intel XE#1201] / [Intel XE#929]) -> [SKIP][226] ([Intel XE#929]) +4 other tests skip
[225]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-436/igt@kms_psr@pr-sprite-blt.html
[226]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_psr@pr-sprite-blt.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-270:
- shard-dg2-set2: [SKIP][227] ([Intel XE#1201] / [Intel XE#327]) -> [SKIP][228] ([Intel XE#327])
[227]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html
[228]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-dg2-set2: [SKIP][229] ([Intel XE#327]) -> [SKIP][230] ([Intel XE#1201] / [Intel XE#327])
[229]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
[230]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
* igt@kms_scaling_modes@scaling-mode-full-aspect:
- shard-dg2-set2: [SKIP][231] ([Intel XE#455]) -> [SKIP][232] ([Intel XE#1201] / [Intel XE#455]) +10 other tests skip
[231]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_scaling_modes@scaling-mode-full-aspect.html
[232]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@kms_scaling_modes@scaling-mode-full-aspect.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-dg2-set2: [SKIP][233] ([Intel XE#1201] / [Intel XE#362]) -> [SKIP][234] ([Intel XE#1201] / [Intel XE#1500])
[233]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[234]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-435/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_vrr@flip-dpms:
- shard-dg2-set2: [SKIP][235] ([Intel XE#1201] / [Intel XE#455]) -> [SKIP][236] ([Intel XE#455]) +13 other tests skip
[235]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-466/igt@kms_vrr@flip-dpms.html
[236]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@kms_vrr@flip-dpms.html
* igt@kms_vrr@lobf:
- shard-dg2-set2: [SKIP][237] ([Intel XE#2168]) -> [SKIP][238] ([Intel XE#1201] / [Intel XE#2168])
[237]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@kms_vrr@lobf.html
[238]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@kms_vrr@lobf.html
* igt@xe_compute_preempt@compute-preempt:
- shard-dg2-set2: [SKIP][239] ([Intel XE#1280] / [Intel XE#455]) -> [SKIP][240] ([Intel XE#1201] / [Intel XE#1280] / [Intel XE#455]) +1 other test skip
[239]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@xe_compute_preempt@compute-preempt.html
[240]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@xe_compute_preempt@compute-preempt.html
* igt@xe_copy_basic@mem-copy-linear-0xfffe:
- shard-dg2-set2: [SKIP][241] ([Intel XE#1123]) -> [SKIP][242] ([Intel XE#1123] / [Intel XE#1201])
[241]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@xe_copy_basic@mem-copy-linear-0xfffe.html
[242]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-435/igt@xe_copy_basic@mem-copy-linear-0xfffe.html
* igt@xe_evict@evict-mixed-many-threads-large:
- shard-dg2-set2: [FAIL][243] ([Intel XE#1000]) -> [TIMEOUT][244] ([Intel XE#1473])
[243]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@xe_evict@evict-mixed-many-threads-large.html
[244]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@xe_evict@evict-mixed-many-threads-large.html
* igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-rebind-imm:
- shard-dg2-set2: [SKIP][245] ([Intel XE#288]) -> [SKIP][246] ([Intel XE#1201] / [Intel XE#288]) +21 other tests skip
[245]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-rebind-imm.html
[246]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-435/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-rebind-imm.html
* igt@xe_exec_fault_mode@once-bindexecqueue-imm:
- shard-dg2-set2: [SKIP][247] ([Intel XE#1201] / [Intel XE#288]) -> [SKIP][248] ([Intel XE#288]) +12 other tests skip
[247]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-436/igt@xe_exec_fault_mode@once-bindexecqueue-imm.html
[248]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@xe_exec_fault_mode@once-bindexecqueue-imm.html
* igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence:
- shard-dg2-set2: [SKIP][249] ([Intel XE#2360]) -> [SKIP][250] ([Intel XE#1201] / [Intel XE#2360]) +1 other test skip
[249]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence.html
[250]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-466/igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence.html
* igt@xe_oa@non-privileged-access-vaddr:
- shard-dg2-set2: [SKIP][251] ([Intel XE#1201] / [Intel XE#2541]) -> [SKIP][252] ([Intel XE#2541]) +2 other tests skip
[251]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-463/igt@xe_oa@non-privileged-access-vaddr.html
[252]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@xe_oa@non-privileged-access-vaddr.html
* igt@xe_oa@non-privileged-map-oa-buffer:
- shard-dg2-set2: [SKIP][253] ([Intel XE#2541]) -> [SKIP][254] ([Intel XE#1201] / [Intel XE#2541]) +5 other tests skip
[253]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@xe_oa@non-privileged-map-oa-buffer.html
[254]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@xe_oa@non-privileged-map-oa-buffer.html
* igt@xe_pm@d3cold-basic:
- shard-dg2-set2: [SKIP][255] ([Intel XE#1201] / [Intel XE#2284] / [Intel XE#366]) -> [SKIP][256] ([Intel XE#2284] / [Intel XE#366])
[255]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-434/igt@xe_pm@d3cold-basic.html
[256]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@xe_pm@d3cold-basic.html
* igt@xe_pm@s2idle-d3cold-basic-exec:
- shard-dg2-set2: [SKIP][257] ([Intel XE#2284] / [Intel XE#366]) -> [SKIP][258] ([Intel XE#1201] / [Intel XE#2284] / [Intel XE#366]) +1 other test skip
[257]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@xe_pm@s2idle-d3cold-basic-exec.html
[258]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-433/igt@xe_pm@s2idle-d3cold-basic-exec.html
* igt@xe_query@multigpu-query-oa-units:
- shard-dg2-set2: [SKIP][259] ([Intel XE#1201] / [Intel XE#944]) -> [SKIP][260] ([Intel XE#944]) +2 other tests skip
[259]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-433/igt@xe_query@multigpu-query-oa-units.html
[260]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-432/igt@xe_query@multigpu-query-oa-units.html
* igt@xe_query@multigpu-query-uc-fw-version-huc:
- shard-dg2-set2: [SKIP][261] ([Intel XE#944]) -> [SKIP][262] ([Intel XE#1201] / [Intel XE#944]) +1 other test skip
[261]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8013/shard-dg2-432/igt@xe_query@multigpu-query-uc-fw-version-huc.html
[262]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/shard-dg2-434/igt@xe_query@multigpu-query-uc-fw-version-huc.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1000]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1000
[Intel XE#1069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1069
[Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
[Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
[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#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
[Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
[Intel XE#1137]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1137
[Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
[Intel XE#1149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1149
[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#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252
[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#1426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1426
[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#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
[Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607
[Intel XE#1620]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1620
[Intel XE#1649]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1649
[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#1694]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1694
[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#1999]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1999
[Intel XE#2026]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2026
[Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
[Intel XE#2046]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2046
[Intel XE#2055]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2055
[Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[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#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#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[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#2328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2328
[Intel XE#2333]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2333
[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#2372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2372
[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#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
[Intel XE#2472]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2472
[Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
[Intel XE#2574]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2574
[Intel XE#2577]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2577
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#2635]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2635
[Intel XE#2759]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2759
[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#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[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#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330
[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#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#402]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/402
[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#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
[Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
[Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
[Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
[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#701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/701
[Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
[Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
[Intel XE#771]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/771
[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#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
Build changes
-------------
* IGT: IGT_8013 -> IGTPW_11728
* Linux: xe-1929-45bec37c098c2f6232d233c8116236f09327d2b8 -> xe-1932-1b37d4587b45639327eeb4cce29f77d487f7700a
IGTPW_11728: 11728
IGT_8013: 8013
xe-1929-45bec37c098c2f6232d233c8116236f09327d2b8: 45bec37c098c2f6232d233c8116236f09327d2b8
xe-1932-1b37d4587b45639327eeb4cce29f77d487f7700a: 1b37d4587b45639327eeb4cce29f77d487f7700a
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11728/index.html
[-- Attachment #2: Type: text/html, Size: 83511 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions
2024-09-12 6:28 ` [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions Kunal Joshi
2024-09-12 11:15 ` Joshi, Kunal1
@ 2024-09-18 14:29 ` Imre Deak
1 sibling, 0 replies; 17+ messages in thread
From: Imre Deak @ 2024-09-18 14:29 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
On Thu, Sep 12, 2024 at 11:58:34AM +0530, Kunal Joshi wrote:
> Added helper functions for below
> - read current/max link_rate/lane_count
> - forcing link retraining
> - forcing link training failures
> - read pending retrain
> - read pending link training failures
> - checking output supports forcing lt failures
> - force link_rate/lane_count
>
> v2: combine all link training debugfs in one patch (Imre)
> remove unwanted valid output check (Imre)
> return link_rate/lane_count marked with '*' or an error (Imre)
>
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> ---
> lib/igt_kms.c | 210 ++++++++++++++++++++++++++++++++++++++++++++++++++
> lib/igt_kms.h | 10 +++
> 2 files changed, 220 insertions(+)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index dd530dbab..f0ac1e5dc 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -61,6 +61,7 @@
> #include "sw_sync.h"
> #ifdef HAVE_CHAMELIUM
> #include "igt_chamelium.h"
> +#include <ctype.h>
> #endif
>
> /**
> @@ -6705,3 +6706,212 @@ int get_num_scalers(igt_display_t *display, enum pipe pipe)
>
> return num_scalers;
> }
> +
> +/**
> + * igt_get_dp_link_param_set_for_output:
> + * @drm_fd: A drm file descriptor
> + * @output: Target output
> + * @link_param: 0 for lane count, 1 for link rate
> + *
> + * Returns: link_rate / lane_count if set for output else -1
> + */
> +int igt_get_dp_link_param_set_for_output(int drm_fd, igt_output_t *output, int link_param)
At the call-site it's not clear what link_param=0/1 means. Instead of
that param I'd rather add debugfs_connector_read/write helpers and
export these functions with a self-descriptive name (i.e. stg. like
igt_get_dp_current_link_rate/lane_count()).
> +{
> + char *star_ptr, *param_ptr;
> + char buf[512];
> + int dir, res;
> + int ret;
> +
> + ret = -1;
> + 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, link_param ? "i915_dp_force_link_rate" :
> + "i915_dp_force_lane_count", buf, sizeof(buf));
> + close(dir);
> + igt_require(res >= 0);
> +
> + /*
> + * Check we have a mode enabled for the output
> + * If so we will have current active link rate
> + * marked with a *
> + */
> + star_ptr = strstr(buf, "*");
> +
> + if (star_ptr) {
> + param_ptr = star_ptr - 1;
> + while (param_ptr > buf && isdigit(*param_ptr))
> + param_ptr--;
> +
> + param_ptr++;
> + igt_assert(sscanf(param_ptr, "%d", &ret) == 1);
> + }
> + return ret;
> +}
> +
> +/**
> + * igt_get_dp_max_link_param:
> + * @drm_fd: A drm file descriptor
> + * @output: The output to query
> + * @link_param: 0 for lane count, 1 for link rate
> + *
> + * Get the max link_rate / lane_count supported by the sink.
> + *
> + * Returns: max link_rate / lane_count supported by the sink.
> + */
> +int igt_get_dp_max_link_param(int drm_fd, igt_output_t *output, int link_param)
> +{
> + char buf[512];
> + int dir, res;
> + int max_link_param;
> +
> + dir = igt_debugfs_connector_dir(drm_fd, output->name, O_DIRECTORY);
Not sure why O_DIRECTORY is used here and O_RDONLY elsewhere. This and
all the functions below could use common
debugfs_connector_read/write helpers discussed above.
> + igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
> + igt_output_name(output));
> + res = igt_debugfs_simple_read(dir, link_param ? "i915_dp_max_link_rate" :
> + "i915_dp_max_lane_count", 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_param) == 1);
> +
> + return max_link_param;
> +}
> +
> +/**
> + * 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);
> + 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);
> +}
> +
> +/**
> + * 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);
> + 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);
> +}
> +
> +/**
> + * 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];
> +
> + 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");
> +}
> +
> +/**
> + * 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;
> +}
> +
> +/**
> + * 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];
> +
> + 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;
> +}
> +
> +/**
> + * 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];
> +
> + 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 25ba50916..895bc9d04 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -1224,5 +1224,15 @@ 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);
> +int igt_get_dp_link_param_set_for_output(int drm_fd, igt_output_t *output,
> + int link_param);
> +int igt_get_dp_max_link_param(int drm_fd, igt_output_t *output,
> + int link_param);
> +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);
> +int igt_get_dp_pending_retrain(int drm_fd, igt_output_t *output);
>
> #endif /* __IGT_KMS_H__ */
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH i-g-t 3/6] lib/igt_kms: allow set and reset value to be same
2024-09-12 6:28 ` [PATCH i-g-t 3/6] lib/igt_kms: allow set and reset value to be same Kunal Joshi
@ 2024-09-18 14:33 ` Imre Deak
0 siblings, 0 replies; 17+ messages in thread
From: Imre Deak @ 2024-09-18 14:33 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
On Thu, Sep 12, 2024 at 11:58:36AM +0530, Kunal Joshi wrote:
> 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
>
> v2: handle the scenario at caller side
>
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> ---
> lib/igt_kms.c | 21 +++++++++++++--------
> 1 file changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 863eb5331..a7f8d0f83 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -1557,7 +1557,8 @@ static void connector_attr_free(struct igt_connector_attr *c)
> static bool connector_attr_set(int idx, drmModeConnector *connector,
> int dir, igt_connector_attr_set set,
> const char *attr, const char *value,
> - const char *reset_value)
> + const char *reset_value,
> + bool allow_set_equals_reset)
force_reset would describe better what the flag does.
> {
> struct igt_connector_attr *c;
>
> @@ -1573,7 +1574,7 @@ static bool connector_attr_set(int idx, drmModeConnector *connector,
> return false;
> }
>
> - if (!strcmp(c->value, c->reset_value))
> + if (!allow_set_equals_reset && !strcmp(c->value, c->reset_value))
> connector_attr_free(c);
>
> return true;
> @@ -1582,7 +1583,8 @@ static bool connector_attr_set(int idx, drmModeConnector *connector,
> static bool connector_attr_set_sysfs(int drm_fd,
> drmModeConnector *connector,
> const char *attr, const char *value,
> - const char *reset_value)
> + const char *reset_value,
> + bool allow_set_equals_reset)
> {
> char name[80];
> int idx, dir;
> @@ -1600,7 +1602,8 @@ static bool connector_attr_set_sysfs(int drm_fd,
> return false;
>
> if (!connector_attr_set(idx, connector, dir,
> - igt_sysfs_set, attr, value, reset_value))
> + igt_sysfs_set, attr, value, reset_value,
> + allow_set_equals_reset))
> return false;
>
> igt_debug("Connector %s/%s is now %s\n", name, attr, value);
> @@ -1611,7 +1614,8 @@ static bool connector_attr_set_sysfs(int drm_fd,
> static bool connector_attr_set_debugfs(int drm_fd,
> drmModeConnector *connector,
> const char *attr, const char *value,
> - const char *reset_value)
> + const char *reset_value,
> + bool allow_set_equals_reset)
> {
> char name[80];
> int idx, dir;
> @@ -1630,7 +1634,7 @@ static bool connector_attr_set_debugfs(int drm_fd,
>
> if (!connector_attr_set(idx, connector, dir,
> igt_sysfs_set, attr,
> - value, reset_value))
> + value, reset_value, allow_set_equals_reset))
> return false;
>
> igt_info("Connector %s/%s is now %s\n", name, attr, value);
> @@ -1662,7 +1666,8 @@ static bool force_connector(int drm_fd,
> const char *value)
> {
> return connector_attr_set_sysfs(drm_fd, connector,
> - "status", value, "detect");
> + "status", value, "detect",
> + false);
> }
>
> /**
> @@ -1727,7 +1732,7 @@ static bool force_connector_bigjoiner(int drm_fd,
> {
> return connector_attr_set_debugfs(drm_fd, connector,
> "i915_bigjoiner_force_enable",
> - value, "0");
> + value, "0", false);
> }
>
> /**
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH i-g-t 4/6] lib/igt_kms: add function to reset link params
2024-09-12 6:28 ` [PATCH i-g-t 4/6] lib/igt_kms: add function to reset link params Kunal Joshi
@ 2024-09-18 14:35 ` Imre Deak
0 siblings, 0 replies; 17+ messages in thread
From: Imre Deak @ 2024-09-18 14:35 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
On Thu, Sep 12, 2024 at 11:58:37AM +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
>
> v2: no need to do link retraining (Imre)
>
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> ---
> lib/igt_kms.c | 33 +++++++++++++++++++++++++++++++++
> lib/igt_kms.h | 1 +
> 2 files changed, 34 insertions(+)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index a7f8d0f83..f841a69da 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -6957,3 +6957,36 @@ 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");
The above check got removed for the rest of similar helpers.
> + valid = true;
> + valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
> + "i915_dp_force_link_rate",
> + "auto", "auto", true);
> + valid = valid && connector_attr_set_debugfs(drm_fd, output->config.connector,
> + "i915_dp_force_lane_count",
> + "auto", "auto", true);
> + 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 9dca09d93..3c867031e 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -1236,5 +1236,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 [flat|nested] 17+ messages in thread
* Re: [PATCH i-g-t 5/6] tests/intel/kms_dp_fallback: add test for validating fallback
2024-09-12 6:28 ` [PATCH i-g-t 5/6] tests/intel/kms_dp_fallback: add test for validating fallback Kunal Joshi
@ 2024-09-18 15:22 ` Imre Deak
0 siblings, 0 replies; 17+ messages in thread
From: Imre Deak @ 2024-09-18 15:22 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
On Thu, Sep 12, 2024 at 11:58:38AM +0530, Kunal Joshi wrote:
> 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)
>
> v5: fit modes wrt to bw in non-mst case as well
>
> v6: remove LT_FAILURE_SAME_CAPS (Imre)
> explain LT_FAILURE_REDUCED_CAPS to be 2 (Imre)
> combine infra for mst and non-mst case (Imre)
> call igt_reset_link_params before setup (Imre)
> Avoid duplication setting prev_(link_rate/lane_count) (Imre)
> use the cached property name here instead of hard-coding it (Imre)
> move test logic to function (Imre)
> remove extra w/s (Imre)
> remove braces in one liners (Imre)
> enhance igt_info message (Pranay)
>
> 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 | 423 +++++++++++++++++++++++++++++++++++++
> tests/meson.build | 1 +
> 2 files changed, 424 insertions(+)
> create mode 100644 tests/intel/kms_fallback.c
>
> diff --git a/tests/intel/kms_fallback.c b/tests/intel/kms_fallback.c
Someting like kms_dp_linktrain_fallback.c would be more descriptive.
> new file mode 100644
> index 000000000..4b6791b4d
> --- /dev/null
> +++ b/tests/intel/kms_fallback.c
> @@ -0,0 +1,423 @@
> +/* 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"
The above include doesn't seem to be required.
> +
> +/**
> + * SUBTEST: dp-fallback
> + * Description: Test fallback on DP connectors
> + */
> +
> +#define RETRAIN_COUNT 1
> +/*
> + * Two consecutives link training failures
> + * reduces link params (link rate, lane count)
> + */
> +#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 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)
prop_id is the same ID for the PATH property, attached to all MST
connectors, so it will be the same for two MST connectors that are on
different links. Instead, you could compare the root connector ID part of
connector_path which is cached already in output/connector_output->config and
has the <root connector ID>-<port ID>[-<port ID>...] format.
> + mst_outputs[(*num_mst_outputs)++] = connector_output;
This should check bounds for the mst_outputs array.
> +
> + 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 *output_count)
> +{
> + 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)
Missing array bounds check.
> + return false;
> +
> + find_mst_outputs(data->drm_fd, data, data->output,
> + mst_output, output_count);
> +
> + for (i = 0; i < *output_count; 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_outputs(data_t *data,
> + igt_output_t *outputs[],
Could use either the '*array[]' or '**array' syntax consistently
everywhere.
> + int *output_count)
> +{
> + int i = 0;
> +
> + igt_require_f(data->n_pipes >= *output_count,
> + "Need %d pipes to assign to %d outputs\n",
> + data->n_pipes, *output_count);
> +
> + for_each_pipe(&data->display, data->pipe) {
> + if (i >= *output_count)
> + break;
> + igt_info("Setting pipe %s on output %s\n",
> + kmstest_pipe_name(data->pipe),
> + igt_output_name(outputs[i]));
> + igt_output_set_pipe(outputs[i++], data->pipe);
This won't work for modes requiring joined pipes, could add support
for that later leaving a TODO: comment here.
> + }
> +}
> +
> +static void setup_modeset_on_outputs(data_t *data,
> + igt_output_t *outputs[],
> + int *output_count,
> + drmModeModeInfo *mode[],
> + struct igt_fb fb[],
> + struct igt_plane *primary[])
> +{
> + int i;
> +
> + for (i = 0; i < *output_count; i++) {
> + outputs[i]->force_reprobe = true;
> + igt_output_refresh(outputs[i]);
> + mode[i] = igt_output_get_mode(outputs[i]);
> + igt_info("Mode %dx%d@%d on output %s\n",
> + mode[i]->hdisplay, mode[i]->vdisplay,
> + mode[i]->vrefresh,
> + igt_output_name(outputs[i]));
> + primary[i] = igt_output_get_plane_type(outputs[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 fit_modes_in_bw(data_t *data)
> +{
> + bool found;
> + int ret;
> +
> + if (!igt_display_try_commit2(&data->display, COMMIT_ATOMIC)) {
> + 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);
I suppose this and the above call should only do a
DRM_MODE_ATOMIC_TEST_ONLY commit, without actually committing the state.
> + igt_require_f(ret == 0,
> + "Commit failure during MST modeset\n");
> + }
> + return true;
> +}
> +
> +static bool validate_modeset_for_outputs(data_t *data,
> + igt_output_t *outputs[],
> + int *output_count,
> + drmModeModeInfo *mode[],
> + struct igt_fb fb[],
> + struct igt_plane *primary[])
> +{
> + igt_require_f(*output_count > 0, "Require at least 1 output\n");
> + setup_pipe_on_outputs(data, outputs, output_count);
> + setup_modeset_on_outputs(data, outputs,
> + output_count,
> + mode, fb, primary);
> + igt_assert_f(fit_modes_in_bw(data), "Unable to fit modes in bw\n");
> + return true;
> +}
> +
> +static bool setup_outputs(data_t *data, bool is_mst,
> + igt_output_t *outputs[],
> + int *output_count, drmModeModeInfo *mode[],
> + struct igt_fb fb[], struct igt_plane *primary[])
> +{
> + bool ret;
> +
> + *output_count = 0;
> +
> + if (is_mst) {
> + ret = setup_mst_outputs(data, outputs, output_count);
> + if (!ret) {
> + igt_info("Skipping MST output %s as already tested\n",
> + igt_output_name(data->output));
> + return false;
> + }
> + } else
> + outputs[(*output_count)++] = data->output;
> +
> + ret = validate_modeset_for_outputs(data, outputs,
> + output_count, mode,
> + fb, primary);
> +
> + if (!ret) {
> + igt_info("Skipping output %s as valid pipe/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, ¤t_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 output_count, retries;
> + int max_link_rate, curr_link_rate, prev_link_rate;
> + int max_lane_count, curr_lane_count, prev_lane_count;
> + igt_output_t *outputs[IGT_MAX_PIPES];
> + uint32_t link_status_prop_id;
> + uint64_t link_status_value;
> + drmModeModeInfo *modes[IGT_MAX_PIPES];
> + drmModePropertyPtr link_status_prop;
> + struct igt_fb fbs[IGT_MAX_PIPES];
> + struct igt_plane *primarys[IGT_MAX_PIPES];
> + struct udev_monitor *mon;
> +
> + igt_display_reset(&data->display);
> + igt_reset_link_params(data->drm_fd, data->output);
> + retries = SPURIOUS_HPD_RETRY;
> +
> + if (!setup_outputs(data, is_mst, outputs,
> + &output_count, modes, fbs,
> + primarys))
> + return;
> +
> + igt_info("Testing link training fallback on %s\n",
> + igt_output_name(data->output));
> + max_link_rate = igt_get_dp_max_link_param(data->drm_fd, data->output, 1);
> + max_lane_count = igt_get_dp_max_link_param(data->drm_fd, data->output, 0);
> + prev_link_rate = igt_get_dp_link_param_set_for_output(data->drm_fd, data->output, 1);
> + prev_lane_count = igt_get_dp_link_param_set_for_output(data->drm_fd, data->output, 0);
> +
> + while (!igt_get_dp_link_retrain_disabled(data->drm_fd,
> + data->output)) {
> + igt_info("Current link rate: %d, Current lane count: %d\n",
> + prev_link_rate,
> + 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);
> + igt_assert_f(validate_modeset_for_outputs(data,
> + outputs,
> + &output_count,
> + modes,
> + fbs,
> + primarys),
> + "modeset failed\n");
> +
> + 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_set_connector_link_status() does commit the state besides
setting the property, so a separate commit shouldn't be needed.
> +
> + igt_assert_eq(data->output->values[IGT_CONNECTOR_LINK_STATUS], DRM_MODE_LINK_STATUS_GOOD);
> + curr_link_rate = igt_get_dp_link_param_set_for_output(data->drm_fd, data->output, 1);
> + curr_lane_count = igt_get_dp_link_param_set_for_output(data->drm_fd, data->output, 0);
> +
> + 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;
> + }
> +}
> +
> +static bool run_test(data_t *data)
> +{
> + 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 doesn't support forcing link training failure\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);
> + }
> + }
> + return ran;
> +}
> +
> +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") {
> + igt_require_f(run_test(&data),
> + "Skipping test as no output found or none 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] 17+ messages in thread
* [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions
2024-09-27 14:02 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
@ 2024-09-27 14:02 ` Kunal Joshi
0 siblings, 0 replies; 17+ messages in thread
From: Kunal Joshi @ 2024-09-27 14:02 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi, Imre Deak
Added helper functions for below
- read current/max link_rate/lane_count
- forcing link retraining
- forcing link training failures
- read pending retrain
- read pending link training failures
- checking output supports forcing lt failures
- force link_rate/lane_count
v2: combine all link training debugfs in one patch (Imre)
remove unwanted valid output check (Imre)
return link_rate/lane_count marked with '*' or an error (Imre)
v3: add debugfs_connector_read/write helpers (Imre)
v4: use strlen (Imre)
rename star_ptr -> marked_ptr (Imre)
use O_RDONLY (Imre)
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
---
lib/igt_kms.c | 307 ++++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_kms.h | 10 ++
2 files changed, 317 insertions(+)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index b40470c02..571f78eb9 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -47,6 +47,7 @@
#include <poll.h>
#include <errno.h>
#include <time.h>
+#include <ctype.h>
#include <i915_drm.h>
@@ -6713,3 +6714,309 @@ int get_num_scalers(igt_display_t *display, enum pipe pipe)
return num_scalers;
}
+
+/**
+ * igt_parse_marked_value:
+ * @buf: Buffer containing the content to parse
+ * @marked_char: The character marking the value to parse
+ * @result: Pointer to store the parsed value
+ *
+ * Finds the integer value in the buffer that is marked by the given character.
+ *
+ * Returns: 0 on success, -1 on failure
+ */
+static int igt_parse_marked_value(const char *buf, char marked_char, int *result)
+{
+ char *marked_ptr, *val_ptr;
+
+ /*
+ * Look for the marked character
+ */
+ marked_ptr = strchr(buf, marked_char);
+
+ if (marked_ptr) {
+ val_ptr = marked_ptr - 1;
+ while (val_ptr > buf && isdigit(*val_ptr))
+ val_ptr--;
+ val_ptr++;
+ if (sscanf(val_ptr, "%d", result) == 1)
+ return 0;
+ }
+ return -1;
+}
+
+/**
+ * igt_debugfs_read_connector_file:
+ * @drm_fd: A drm file descriptor
+ * @conn_name: Name of the output connector
+ * @filename: The file to read from in the connector's directory
+ * @buf: Buffer to store the read content
+ * @buf_size: Size of the buffer
+ *
+ * Reads from a specific file in the connector's debugfs directory.
+ *
+ * Returns: 0 on success, -1 on failure.
+ */
+static int igt_debugfs_read_connector_file(int drm_fd, char *conn_name,
+ const char *filename, char *buf,
+ size_t buf_size)
+{
+ int dir, res;
+
+ dir = igt_debugfs_connector_dir(drm_fd, conn_name, O_RDONLY);
+ igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n", conn_name);
+
+ res = igt_debugfs_simple_read(dir, filename, buf, buf_size);
+ close(dir);
+
+ if (res < 0)
+ return -1;
+
+ return 0;
+}
+
+/**
+ * igt_debugfs_write_connector_file:
+ * @drm_fd: A drm file descriptor
+ * @conn_name: Name of the output connector
+ * @filename: The file to write to in the connector's directory
+ * @data: Data to write to the file
+ * @data_size: Size of the data to write
+ *
+ * Writes to a specific file in the connector's debugfs directory.
+ *
+ * Returns: 0 on success, -1 on failure.
+ */
+static int igt_debugfs_write_connector_file(int drm_fd, char *conn_name,
+ const char *filename, const char *data,
+ size_t data_size)
+{
+ int dir, res;
+
+ dir = igt_debugfs_connector_dir(drm_fd, conn_name, O_RDONLY);
+ igt_assert_f(dir >= 0, "Failed to open debugfs dir for connector %s\n",
+ conn_name);
+
+ res = igt_sysfs_write(dir, filename, data, data_size);
+ close(dir);
+
+ if (res < 0)
+ return -1;
+
+ return 0;
+}
+
+/**
+ * igt_get_current_link_rate:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ *
+ * Returns: link_rate if set for output else -1
+ */
+int igt_get_current_link_rate(int drm_fd, igt_output_t *output)
+{
+ char buf[512];
+ int res, ret;
+
+ res = igt_debugfs_read_connector_file(drm_fd, output->name,
+ "i915_dp_force_link_rate",
+ buf, sizeof(buf));
+ igt_assert_f(res == 0, "Unable to read %s/i915_dp_force_link_rate\n",
+ output->name);
+ res = igt_parse_marked_value(buf, '*', &ret);
+ igt_assert_f(res == 0, "Output %s not enabled\n", output->name);
+ return ret;
+}
+
+/**
+ * igt_get_current_lane_count:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ *
+ * Returns: lane_count if set for output else -1
+ */
+int igt_get_current_lane_count(int drm_fd, igt_output_t *output)
+{
+ char buf[512];
+ int res, ret;
+
+ res = igt_debugfs_read_connector_file(drm_fd, output->name,
+ "i915_dp_force_lane_count",
+ buf, sizeof(buf));
+ igt_assert_f(res == 0, "Unable to read %s/i915_dp_force_lane_count\n",
+ output->name);
+ res = igt_parse_marked_value(buf, '*', &ret);
+ igt_assert_f(res == 0, "Output %s not enabled\n", output->name);
+ return ret;
+}
+
+/**
+ * igt_get_max_link_rate:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ *
+ * Returns: max_link_rate
+ */
+int igt_get_max_link_rate(int drm_fd, igt_output_t *output)
+{
+ char buf[512];
+ int res, ret;
+
+ res = igt_debugfs_read_connector_file(drm_fd, output->name,
+ "i915_dp_max_link_rate",
+ buf, sizeof(buf));
+ igt_assert_f(res == 0, "Unable to read %s/i915_dp_max_link_rate\n",
+ output->name);
+
+ sscanf(buf, "%d", &ret);
+ return ret;
+}
+
+/**
+ * igt_get_max_link_rate:
+ * @drm_fd: A drm file descriptor
+ * @output: Target output
+ *
+ * Returns: max_link_rate
+ */
+int igt_get_max_lane_count(int drm_fd, igt_output_t *output)
+{
+ char buf[512];
+ int res, ret;
+
+ res = igt_debugfs_read_connector_file(drm_fd, output->name,
+ "i915_dp_max_lane_count",
+ buf, sizeof(buf));
+ igt_assert_f(res == 0, "Unable to read %s/i915_dp_max_lane_count\n",
+ output->name);
+
+ sscanf(buf, "%d", &ret);
+ return ret;
+}
+
+/**
+ * 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)
+{
+ char value[2];
+ int res;
+
+ snprintf(value, sizeof(value), "%d", retrain_count);
+ res = igt_debugfs_write_connector_file(drm_fd, output->name,
+ "i915_dp_force_link_retrain",
+ value, strlen(value));
+ igt_assert_f(res == 0, "Unable to write to %s/i915_dp_force_link_retrain\n",
+ output->name);
+}
+
+/**
+ * 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)
+{
+ char value[2];
+ int res;
+
+ snprintf(value, sizeof(value), "%d", failure_count);
+ res = igt_debugfs_write_connector_file(drm_fd, output->name,
+ "i915_dp_force_link_training_failure",
+ value, strlen(value));
+ igt_assert_f(res == 0, "Unable to write to %s/i915_dp_force_link_training_failure\n",
+ output->name);
+}
+
+/**
+ * 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)
+{
+ char buf[512];
+ int res;
+
+ res = igt_debugfs_read_connector_file(drm_fd, output->name,
+ "i915_dp_link_retrain_disabled",
+ buf, sizeof(buf));
+ igt_assert_f(res == 0, "Unable to read %s/i915_dp_link_retrain_disabled\n",
+ output->name);
+ 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)
+{
+ char buf[512];
+ int res;
+
+ res = igt_debugfs_read_connector_file(drmfd, output->name,
+ "i915_dp_link_retrain_disabled",
+ buf, sizeof(buf));
+ return res == 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)
+{
+ char buf[512];
+ int res, ret;
+
+ res = igt_debugfs_read_connector_file(drm_fd, output->name,
+ "i915_dp_force_link_training_failure",
+ buf, sizeof(buf));
+ igt_assert_f(res == 0, "Unable to read %s/i915_dp_force_link_training_failure\n",
+ output->name);
+ 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)
+{
+ char buf[512];
+ int res, ret;
+
+ res = igt_debugfs_read_connector_file(drm_fd, output->name,
+ "i915_dp_force_link_retrain",
+ buf, sizeof(buf));
+ igt_assert_f(res == 0, "Unable to read %s/i915_dp_force_link_retrain\n",
+ output->name);
+ sscanf(buf, "%d", &ret);
+ return ret;
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 25ba50916..7d9c28d81 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1224,5 +1224,15 @@ 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);
+int igt_get_current_lane_count(int drm_fd, igt_output_t *output);
+int igt_get_current_link_rate(int drm_fd, igt_output_t *output);
+int igt_get_max_link_rate(int drm_fd, igt_output_t *output);
+int igt_get_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);
+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.40.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
end of thread, other threads:[~2024-09-27 13:50 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-12 6:28 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
2024-09-12 6:28 ` [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions Kunal Joshi
2024-09-12 11:15 ` Joshi, Kunal1
2024-09-18 14:29 ` Imre Deak
2024-09-12 6:28 ` [PATCH i-g-t 2/6] lib/igt_kms: add helper to set connector link status Kunal Joshi
2024-09-12 6:28 ` [PATCH i-g-t 3/6] lib/igt_kms: allow set and reset value to be same Kunal Joshi
2024-09-18 14:33 ` Imre Deak
2024-09-12 6:28 ` [PATCH i-g-t 4/6] lib/igt_kms: add function to reset link params Kunal Joshi
2024-09-18 14:35 ` Imre Deak
2024-09-12 6:28 ` [PATCH i-g-t 5/6] tests/intel/kms_dp_fallback: add test for validating fallback Kunal Joshi
2024-09-18 15:22 ` Imre Deak
2024-09-12 6:28 ` [PATCH i-g-t 6/6] HAX: Do not merge Kunal Joshi
2024-09-12 8:07 ` ✗ GitLab.Pipeline: warning for add test to validate fallback (rev5) Patchwork
2024-09-12 8:35 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-09-12 8:35 ` ✗ CI.xeBAT: " Patchwork
2024-09-12 14:26 ` ✗ CI.xeFULL: " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2024-09-27 14:02 [PATCH i-g-t 0/6] add test to validate fallback Kunal Joshi
2024-09-27 14:02 ` [PATCH i-g-t 1/6] lib/igt_kms: add DP link management helper functions Kunal Joshi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox