* [PATCH i-g-t 0/2] tests/intel/kms_tbt: Add DP tunneling validation tests
@ 2026-05-11 5:43 Kunal Joshi
2026-05-11 5:43 ` [PATCH i-g-t 1/2] lib/igt_connector_helper: Add DRM connector helpers using libdisplay-info Kunal Joshi
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Kunal Joshi @ 2026-05-11 5:43 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi
Add an IGT test binary (kms_tbt) that validates the DP tunneling
debugfs ABI exposed by drm/display/dp_tunnel and consumed by
i915 / xe. Pairs with the kernel DP-tunnel debugfs RFC series.
Patch 1 adds a connector-enumeration helper backed by
libdisplay-info for look-up by EDID serial / MST PATH across
re-probes, plus clock-based mode-selection utilities.
Patch 2 is the kms_tbt test: 18 single-display subtests and 9
multi-display / MST subtests covering BWA toggle, bw_limit cap
injection, suspend/resume, and mode filtering.
Below link points to corresponding KMD patch series
https://patchwork.freedesktop.org/series/166289/
Kunal Joshi (2):
lib/igt_connector_helper: Add DRM connector helpers using
libdisplay-info
tests/intel/kms_tbt: Add DP tunneling validation tests
lib/igt_connector_helper.c | 525 ++++++++
lib/igt_connector_helper.h | 45 +
lib/meson.build | 5 +
meson.build | 3 +
tests/intel/kms_tbt.c | 2583 ++++++++++++++++++++++++++++++++++++
tests/meson.build | 5 +
6 files changed, 3166 insertions(+)
create mode 100644 lib/igt_connector_helper.c
create mode 100644 lib/igt_connector_helper.h
create mode 100644 tests/intel/kms_tbt.c
--
2.25.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH i-g-t 1/2] lib/igt_connector_helper: Add DRM connector helpers using libdisplay-info
2026-05-11 5:43 [PATCH i-g-t 0/2] tests/intel/kms_tbt: Add DP tunneling validation tests Kunal Joshi
@ 2026-05-11 5:43 ` Kunal Joshi
2026-05-11 5:43 ` [PATCH i-g-t 2/2] tests/intel/kms_tbt: Add DP tunneling validation tests Kunal Joshi
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Kunal Joshi @ 2026-05-11 5:43 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi, Simon Ser, Jani Nikula, Karthik B S
The upcoming DP tunneling tests need to look up connectors by EDID
serial or MST PATH across re-probes such as suspend/resume, and
select modes by pixel clock rather than resolution. Neither
capability exists in the current IGT helper set.
Add a small connector-enumeration layer backed by libdisplay-info
with look-up-by-name, by-PATH, and by-serial helpers, plus five
mode/output-selection utilities (lowest/highest clock, preferred,
mode-in-list, output-by-id). The dependency is optional; when
missing the helper is simply not built.
Cc: Simon Ser <contact@emersion.fr>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Karthik B S <karthik.b.s@intel.com>
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
lib/igt_connector_helper.c | 525 +++++++++++++++++++++++++++++++++++++
lib/igt_connector_helper.h | 45 ++++
lib/meson.build | 5 +
meson.build | 3 +
4 files changed, 578 insertions(+)
create mode 100644 lib/igt_connector_helper.c
create mode 100644 lib/igt_connector_helper.h
diff --git a/lib/igt_connector_helper.c b/lib/igt_connector_helper.c
new file mode 100644
index 000000000..cd10b2e91
--- /dev/null
+++ b/lib/igt_connector_helper.c
@@ -0,0 +1,525 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+/**
+ * SECTION:igt_connector_helper
+ * @short_description: Generic DRM connector helpers
+ * @title: Connector Helper
+ * @include: igt_connector_helper.h
+ *
+ * Helpers for DRM connector enumeration, lookup by name / MST PATH /
+ * EDID serial, and post-hotplug reprobing. EDID parsing is delegated to
+ * libdisplay-info (https://gitlab.freedesktop.org/emersion/libdisplay-info).
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <libdisplay-info/info.h>
+#include <xf86drm.h>
+#include <xf86drmMode.h>
+
+#include "igt_core.h"
+#include "igt_kms.h"
+#include "igt_connector_helper.h"
+
+#define IGT_CONNECTOR_MAX_PROBE 64
+
+/*
+ * Best-effort serial extraction via libdisplay-info.
+ *
+ * di_info_get_serial() returns a malloc'd string built from the EDID
+ * 0xFF descriptor when present, falling back to the 32-bit header
+ * serial number rendered as decimal. NULL means the EDID is unparsable
+ * or contains no serial information at all.
+ */
+static void connector_serial_from_edid(const void *edid_data, size_t edid_size,
+ char *serial, size_t serial_size)
+{
+ struct di_info *info;
+ char *got;
+
+ serial[0] = '\0';
+
+ info = di_info_parse_edid(edid_data, edid_size);
+ if (!info)
+ return;
+
+ got = di_info_get_serial(info);
+ if (got) {
+ snprintf(serial, serial_size, "%s", got);
+ free(got);
+ }
+
+ di_info_destroy(info);
+}
+
+/**
+ * igt_connector_get_connected:
+ * @drm_fd: DRM file descriptor
+ * @connectors: array to store connector IDs; must be valid if @max_connectors > 0
+ * @max_connectors: maximum number of connectors to store
+ *
+ * Walks all DRM connectors and stores the IDs of those currently connected.
+ * Scanning stops once @max_connectors IDs have been collected; later
+ * connectors are not examined.
+ *
+ * Returns: number of connector IDs written to @connectors, capped by
+ * @max_connectors.
+ */
+int igt_connector_get_connected(int drm_fd, uint32_t *connectors,
+ int max_connectors)
+{
+ drmModeRes *res;
+ drmModeConnector *conn;
+ int count = 0;
+ int i;
+
+ igt_assert(max_connectors >= 0);
+ if (max_connectors > 0)
+ igt_assert(connectors);
+
+ res = drmModeGetResources(drm_fd);
+ if (!res)
+ return 0;
+
+ for (i = 0; i < res->count_connectors && count < max_connectors; i++) {
+ conn = drmModeGetConnector(drm_fd, res->connectors[i]);
+ if (!conn)
+ continue;
+
+ if (conn->connection == DRM_MODE_CONNECTED)
+ connectors[count++] = conn->connector_id;
+
+ drmModeFreeConnector(conn);
+ }
+
+ drmModeFreeResources(res);
+ return count;
+}
+
+/**
+ * igt_connector_get_info:
+ * @drm_fd: DRM file descriptor
+ * @connector_id: connector ID
+ * @name: buffer for connector name (mandatory)
+ * @name_size: size of @name; must be > 0
+ * @serial: buffer for EDID-derived serial (mandatory)
+ * @serial_size: size of @serial; must be > 1
+ * @path: buffer for MST PATH property (optional, may be %NULL)
+ * @path_size: size of @path buffer
+ *
+ * Fills connector name, MST PATH and EDID-derived serial for a connector.
+ * @name is always filled when the connector is found and connected.
+ * @serial is filled by libdisplay-info from the EDID blob; left empty if no
+ * EDID is attached or the EDID has no serial information. @path is filled
+ * only if requested and the PATH property exists.
+ *
+ * Success means the connector object exists and is currently connected.
+ * @serial and @path are best-effort and may still be empty on success.
+ *
+ * Returns: %true if the connector was found and is connected, %false
+ * otherwise.
+ */
+bool igt_connector_get_info(int drm_fd, uint32_t connector_id,
+ char *name, size_t name_size,
+ char *serial, size_t serial_size,
+ char *path, size_t path_size)
+{
+ drmModeConnector *conn;
+ drmModePropertyBlobPtr edid_blob = NULL;
+ drmModePropertyPtr prop;
+ uint64_t blob_id = 0;
+ int i;
+
+ igt_assert(name && name_size > 0);
+ igt_assert(serial && serial_size > 1);
+ igt_assert(!path || path_size > 0);
+
+ name[0] = '\0';
+ serial[0] = '\0';
+ if (path)
+ path[0] = '\0';
+
+ conn = drmModeGetConnector(drm_fd, connector_id);
+ if (!conn)
+ return false;
+
+ if (conn->connection != DRM_MODE_CONNECTED) {
+ drmModeFreeConnector(conn);
+ return false;
+ }
+
+ snprintf(name, name_size, "%s-%d",
+ kmstest_connector_type_str(conn->connector_type),
+ conn->connector_type_id);
+
+ for (i = 0; i < conn->count_props; i++) {
+ prop = drmModeGetProperty(drm_fd, conn->props[i]);
+ if (!prop)
+ continue;
+
+ if (strcmp(prop->name, "EDID") == 0)
+ blob_id = conn->prop_values[i];
+
+ drmModeFreeProperty(prop);
+ if (blob_id)
+ break;
+ }
+
+ if (path) {
+ drmModePropertyBlobPtr path_blob;
+
+ path_blob = kmstest_get_path_blob(drm_fd, connector_id);
+ if (path_blob) {
+ snprintf(path, path_size, "%s",
+ (const char *)path_blob->data);
+ drmModeFreePropertyBlob(path_blob);
+ }
+ }
+
+ drmModeFreeConnector(conn);
+
+ if (blob_id) {
+ edid_blob = drmModeGetPropertyBlob(drm_fd, blob_id);
+ if (edid_blob) {
+ connector_serial_from_edid(edid_blob->data,
+ edid_blob->length,
+ serial, serial_size);
+ drmModeFreePropertyBlob(edid_blob);
+ }
+ }
+
+ return true;
+}
+
+/**
+ * igt_connector_find_by_path:
+ * @drm_fd: DRM file descriptor
+ * @path: MST PATH property value to match
+ * @connector_id: output for connector ID (filled on success)
+ *
+ * Finds the currently connected connector whose PATH property matches @path
+ * (exact string comparison). PATH is the preferred stable identity for MST
+ * connectors; connector IDs may change across hotplug events.
+ *
+ * Returns: %true if a matching connected connector was found.
+ */
+bool igt_connector_find_by_path(int drm_fd, const char *path,
+ uint32_t *connector_id)
+{
+ drmModeRes *res;
+ drmModeConnector *conn;
+ drmModePropertyBlobPtr path_blob;
+ bool found = false;
+ int i;
+
+ if (!path || !connector_id)
+ return false;
+
+ res = drmModeGetResources(drm_fd);
+ if (!res)
+ return false;
+
+ for (i = 0; i < res->count_connectors && !found; i++) {
+ conn = drmModeGetConnector(drm_fd, res->connectors[i]);
+ if (!conn)
+ continue;
+
+ if (conn->connection == DRM_MODE_CONNECTED) {
+ path_blob = kmstest_get_path_blob(drm_fd,
+ conn->connector_id);
+ if (path_blob) {
+ const char *blob_str = path_blob->data;
+
+ /*
+ * The kernel NUL-terminates the PATH blob,
+ * but be defensive and bound the compare by
+ * the blob length so a future kernel change
+ * cannot drive us off the end of the buffer.
+ */
+ if (path_blob->length > 0 &&
+ strnlen(blob_str, path_blob->length) <
+ path_blob->length &&
+ strcmp(blob_str, path) == 0) {
+ *connector_id = conn->connector_id;
+ found = true;
+ }
+ drmModeFreePropertyBlob(path_blob);
+ }
+ }
+
+ drmModeFreeConnector(conn);
+ }
+
+ drmModeFreeResources(res);
+
+ if (found)
+ igt_debug("igt_connector: Found connector %u for path '%s'\n",
+ *connector_id, path);
+
+ return found;
+}
+
+/**
+ * igt_connector_find_by_name:
+ * @drm_fd: DRM file descriptor
+ * @name: connector name to match (e.g. "DP-6")
+ * @connector_id: output for connector ID (filled on success)
+ *
+ * Name-based lookup helper. Prefer igt_connector_find_by_path() or
+ * igt_connector_find_by_serial() for MST connectors, since connector
+ * names and IDs may change across hotplug events.
+ *
+ * Returns: %true if a matching connected connector was found.
+ */
+bool igt_connector_find_by_name(int drm_fd, const char *name,
+ uint32_t *connector_id)
+{
+ drmModeRes *res;
+ drmModeConnector *conn;
+ char conn_name[IGT_CONNECTOR_NAME_MAX];
+ bool found = false;
+ int i;
+
+ if (!name || !connector_id)
+ return false;
+
+ res = drmModeGetResources(drm_fd);
+ if (!res)
+ return false;
+
+ for (i = 0; i < res->count_connectors && !found; i++) {
+ conn = drmModeGetConnector(drm_fd, res->connectors[i]);
+ if (!conn)
+ continue;
+
+ snprintf(conn_name, sizeof(conn_name), "%s-%d",
+ kmstest_connector_type_str(conn->connector_type),
+ conn->connector_type_id);
+
+ if (strcmp(conn_name, name) == 0 &&
+ conn->connection == DRM_MODE_CONNECTED) {
+ *connector_id = conn->connector_id;
+ found = true;
+ }
+
+ drmModeFreeConnector(conn);
+ }
+
+ drmModeFreeResources(res);
+
+ if (found)
+ igt_debug("igt_connector: Found connector %u for name '%s'\n",
+ *connector_id, name);
+
+ return found;
+}
+
+/**
+ * igt_connector_find_by_serial:
+ * @drm_fd: DRM file descriptor
+ * @serial: EDID-derived serial string to match
+ * @connector_id: output for connector ID (filled on success)
+ *
+ * Finds a currently connected connector whose EDID serial matches @serial.
+ * EDID serial is the most stable identifier for a physical display and
+ * survives hotplug / suspend-resume connector re-enumeration.
+ *
+ * Returns: %true if a matching connected connector was found.
+ */
+bool igt_connector_find_by_serial(int drm_fd, const char *serial,
+ uint32_t *connector_id)
+{
+ uint32_t connectors[IGT_CONNECTOR_MAX_PROBE];
+ char name[IGT_CONNECTOR_NAME_MAX];
+ char found_serial[IGT_CONNECTOR_SERIAL_MAX];
+ int n, i;
+
+ if (!serial || !serial[0] || !connector_id)
+ return false;
+
+ n = igt_connector_get_connected(drm_fd, connectors,
+ IGT_CONNECTOR_MAX_PROBE);
+ for (i = 0; i < n; i++) {
+ if (!igt_connector_get_info(drm_fd, connectors[i],
+ name, sizeof(name),
+ found_serial, sizeof(found_serial),
+ NULL, 0))
+ continue;
+
+ if (found_serial[0] && strcmp(found_serial, serial) == 0) {
+ *connector_id = connectors[i];
+ igt_debug("igt_connector: Found connector %u (%s) for serial '%s'\n",
+ *connector_id, name, serial);
+ return true;
+ }
+ }
+ return false;
+}
+
+/**
+ * igt_connector_reprobe_all:
+ * @drm_fd: DRM file descriptor
+ *
+ * Issues a GETCONNECTOR ioctl for every connector, asking the kernel for
+ * fresh state. This refreshes the cached connection status and MST topology
+ * visibility from the kernel's perspective, but does not synthesise a
+ * hot-plug event nor guarantee a full hardware reprobe across all driver
+ * paths.
+ */
+void igt_connector_reprobe_all(int drm_fd)
+{
+ drmModeRes *res;
+ drmModeConnector *conn;
+ int i;
+
+ res = drmModeGetResources(drm_fd);
+ if (!res)
+ return;
+
+ for (i = 0; i < res->count_connectors; i++) {
+ conn = drmModeGetConnector(drm_fd, res->connectors[i]);
+ if (conn)
+ drmModeFreeConnector(conn);
+ }
+
+ drmModeFreeResources(res);
+}
+
+/**
+ * igt_connector_find_lowest_clock_mode:
+ * @output: Connected output to inspect.
+ * @out: Filled with the chosen mode on success.
+ *
+ * Picks the mode with the smallest pixel clock from @output's current
+ * connector mode list. Useful for testing fallback paths that need a
+ * mode that consumes minimal bandwidth.
+ *
+ * Returns: true on success, false if the connector has no modes.
+ */
+bool igt_connector_find_lowest_clock_mode(igt_output_t *output,
+ drmModeModeInfo *out)
+{
+ drmModeConnector *c = output->config.connector;
+ int i, best = -1;
+
+ for (i = 0; i < c->count_modes; i++) {
+ if (best < 0 || c->modes[i].clock < c->modes[best].clock)
+ best = i;
+ }
+ if (best < 0)
+ return false;
+
+ *out = c->modes[best];
+ return true;
+}
+
+/**
+ * igt_connector_find_highest_clock_mode_in:
+ * @conn: Freshly probed connector to inspect.
+ * @out: Filled with the chosen mode on success.
+ *
+ * Picks the mode with the largest pixel clock from @conn's mode list.
+ * Operates on a freshly fetched #drmModeConnector rather than an
+ * #igt_output_t so callers can use it after #drmModeGetConnector to
+ * inspect a kernel-filtered list (e.g. after writing a bandwidth cap).
+ *
+ * Returns: true on success, false if @conn has no modes.
+ */
+bool igt_connector_find_highest_clock_mode_in(const drmModeConnector *conn,
+ drmModeModeInfo *out)
+{
+ int i, best = -1;
+
+ for (i = 0; i < conn->count_modes; i++) {
+ if (best < 0 || conn->modes[i].clock > conn->modes[best].clock)
+ best = i;
+ }
+ if (best < 0)
+ return false;
+
+ *out = conn->modes[best];
+ return true;
+}
+
+/**
+ * igt_connector_find_preferred_mode:
+ * @output: Connected output to inspect.
+ * @out: Filled with the chosen mode on success.
+ *
+ * Picks the first mode flagged %DRM_MODE_TYPE_PREFERRED on @output. Falls
+ * back to the first mode in the list when no preferred mode is present.
+ * Unlike #kmstest_get_connector_default_mode this performs no environment
+ * variable overrides, giving deterministic behaviour for tests that need
+ * to reason about which mode they will pick.
+ *
+ * Returns: true on success, false if the connector has no modes.
+ */
+bool igt_connector_find_preferred_mode(igt_output_t *output,
+ drmModeModeInfo *out)
+{
+ drmModeConnector *c = output->config.connector;
+ int i;
+
+ for (i = 0; i < c->count_modes; i++) {
+ if (c->modes[i].type & DRM_MODE_TYPE_PREFERRED) {
+ *out = c->modes[i];
+ return true;
+ }
+ }
+ if (c->count_modes > 0) {
+ *out = c->modes[0];
+ return true;
+ }
+ return false;
+}
+
+/**
+ * igt_connector_mode_in_list:
+ * @conn: Connector whose mode list to search.
+ * @mode: Mode to look up.
+ *
+ * Returns true if a mode matching @mode in pixel clock and active region
+ * (hdisplay, vdisplay) is present in @conn's current mode list. Useful
+ * for verifying whether a previously cached mode survives a kernel-side
+ * mode filter (e.g. after writing a bandwidth cap).
+ */
+bool igt_connector_mode_in_list(const drmModeConnector *conn,
+ const drmModeModeInfo *mode)
+{
+ int i;
+
+ for (i = 0; i < conn->count_modes; i++) {
+ if (conn->modes[i].clock == mode->clock &&
+ conn->modes[i].hdisplay == mode->hdisplay &&
+ conn->modes[i].vdisplay == mode->vdisplay)
+ return true;
+ }
+ return false;
+}
+
+/**
+ * igt_connector_find_output_by_id:
+ * @display: Initialised display containing the outputs to search.
+ * @connector_id: DRM connector ID to look for.
+ *
+ * Walks the connected outputs of @display and returns the one whose DRM
+ * connector ID matches @connector_id, or %NULL if no such output exists.
+ *
+ * Returns: matching #igt_output_t pointer or %NULL.
+ */
+igt_output_t *igt_connector_find_output_by_id(igt_display_t *display,
+ uint32_t connector_id)
+{
+ igt_output_t *output;
+
+ for_each_connected_output(display, output) {
+ if (output->config.connector->connector_id == connector_id)
+ return output;
+ }
+
+ return NULL;
+}
diff --git a/lib/igt_connector_helper.h b/lib/igt_connector_helper.h
new file mode 100644
index 000000000..3e2ef7e35
--- /dev/null
+++ b/lib/igt_connector_helper.h
@@ -0,0 +1,45 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#ifndef IGT_CONNECTOR_HELPER_H
+#define IGT_CONNECTOR_HELPER_H
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include <xf86drmMode.h>
+
+#include "igt_kms.h"
+
+#define IGT_CONNECTOR_NAME_MAX 64
+#define IGT_CONNECTOR_SERIAL_MAX 64
+
+int igt_connector_get_connected(int drm_fd, uint32_t *connectors,
+ int max_connectors);
+bool igt_connector_get_info(int drm_fd, uint32_t connector_id,
+ char *name, size_t name_size,
+ char *serial, size_t serial_size,
+ char *path, size_t path_size);
+bool igt_connector_find_by_path(int drm_fd, const char *path,
+ uint32_t *connector_id);
+bool igt_connector_find_by_name(int drm_fd, const char *name,
+ uint32_t *connector_id);
+bool igt_connector_find_by_serial(int drm_fd, const char *serial,
+ uint32_t *connector_id);
+void igt_connector_reprobe_all(int drm_fd);
+
+bool igt_connector_find_lowest_clock_mode(igt_output_t *output,
+ drmModeModeInfo *out);
+bool igt_connector_find_highest_clock_mode_in(const drmModeConnector *conn,
+ drmModeModeInfo *out);
+bool igt_connector_find_preferred_mode(igt_output_t *output,
+ drmModeModeInfo *out);
+bool igt_connector_mode_in_list(const drmModeConnector *conn,
+ const drmModeModeInfo *mode);
+igt_output_t *igt_connector_find_output_by_id(igt_display_t *display,
+ uint32_t connector_id);
+
+#endif /* IGT_CONNECTOR_HELPER_H */
diff --git a/lib/meson.build b/lib/meson.build
index a82aa27dc..46d007eef 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -156,6 +156,11 @@ lib_deps = [
inc = [ inc, include_directories('vendor') ]
+if libdisplay_info.found()
+ lib_deps += libdisplay_info
+ lib_sources += 'igt_connector_helper.c'
+endif
+
if libdrm_nouveau.found()
lib_deps += libdrm_nouveau
lib_sources += [
diff --git a/meson.build b/meson.build
index 79051be21..0e06139b2 100644
--- a/meson.build
+++ b/meson.build
@@ -166,6 +166,9 @@ libpci = dependency('libpci', required : true)
libudev = dependency('libudev', required : true)
glib = dependency('glib-2.0', required : true)
+libdisplay_info = dependency('libdisplay-info', required : false)
+build_info += 'libdisplay-info: @0@'.format(libdisplay_info.found())
+
xmlrpc = dependency('xmlrpc', required : false)
xmlrpc_util = dependency('xmlrpc_util', required : false)
xmlrpc_client = dependency('xmlrpc_client', required : false)
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH i-g-t 2/2] tests/intel/kms_tbt: Add DP tunneling validation tests
2026-05-11 5:43 [PATCH i-g-t 0/2] tests/intel/kms_tbt: Add DP tunneling validation tests Kunal Joshi
2026-05-11 5:43 ` [PATCH i-g-t 1/2] lib/igt_connector_helper: Add DRM connector helpers using libdisplay-info Kunal Joshi
@ 2026-05-11 5:43 ` Kunal Joshi
2026-05-12 0:14 ` ✓ i915.CI.BAT: success for " Patchwork
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Kunal Joshi @ 2026-05-11 5:43 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi, Imre Deak, Karthik B S
Add a kms_tbt test binary that exercises the DP tunneling debugfs
ABI exposed by drm/display/dp_tunnel and the i915/xe usage of it.
Cc: Imre Deak <imre.deak@intel.com>
Cc: Karthik B S <karthik.b.s@intel.com>
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
tests/intel/kms_tbt.c | 2583 +++++++++++++++++++++++++++++++++++++++++
tests/meson.build | 5 +
2 files changed, 2588 insertions(+)
create mode 100644 tests/intel/kms_tbt.c
diff --git a/tests/intel/kms_tbt.c b/tests/intel/kms_tbt.c
new file mode 100644
index 000000000..c879bbf53
--- /dev/null
+++ b/tests/intel/kms_tbt.c
@@ -0,0 +1,2583 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+/**
+ * TEST: kms tbt
+ * Category: Display
+ * Description: Functional tests for i915 DP tunneling over USB4/Thunderbolt.
+ * Validates kernel behavior (BW allocation, mode fallback,
+ * suspend/resume, multi-stream accounting) using debugfs hooks.
+ * Driver requirement: i915, xe
+ * Mega feature: DP Tunneling
+ *
+ * SUBTEST: basic
+ * Description: A tunneled output exists, BWA is enabled and a modeset on its
+ * preferred mode allocates positive BW. Also asserts the tunnel
+ * DPRX max rate is at least the link's current max rate.
+ *
+ * SUBTEST: modeset-bw
+ * Description: Switching between modes correctly updates allocated BW both
+ * upward (low->high) and back to exactly the same value on a
+ * round-trip to the original mode.
+ *
+ * SUBTEST: disable-bw
+ * Description: Disabling a tunneled output releases its allocated BW to zero.
+ *
+ * SUBTEST: suspend
+ * Description: Tunnel state including BWA, allocated BW, DPRX rate and group
+ * ID is fully restored after a mem suspend/resume cycle.
+ *
+ * SUBTEST: limit-fallback
+ * Description: Setting bw_limit below the preferred mode's BW requirement
+ * filters the preferred mode from the connector list and
+ * allows a lower-clock fallback mode to modeset.
+ *
+ * SUBTEST: limit-boundary
+ * Description: BW limit at the mode's BW threshold keeps the mode in the
+ * connector list; one kB/s below removes it; clearing the cap
+ * restores the full mode list.
+ *
+ * SUBTEST: limit-suspend
+ * Description: bw_limit is reset to 0 across suspend/resume because the
+ * tunnel object is destroyed on suspend and re-created on resume.
+ *
+ * SUBTEST: bwa-re-enable
+ * Description: Disabling BWA reports allocated BW = -1 with the tunnel still
+ * alive and link parameters falling back to standard DPCD;
+ * re-enabling BWA + a fresh modeset restores both BW allocation
+ * and the original max link rate.
+ *
+ * SUBTEST: bwa-cycle
+ * Description: Ten rapid BWA disable/enable cycles do not corrupt the display
+ * or leak BW resources.
+ *
+ * SUBTEST: dual-bw-sum
+ * Description: Two SST tunnels in the same USB4 group report the same
+ * group_free BW (estimated - allocated) and group_free is
+ * non-negative.
+ *
+ * SUBTEST: dual-limit-isolation
+ * Description: bw_limit is per-tunnel-object, not per-group. With two SST
+ * tunnels sharing one USB4 group, a cap on tunnel A clips A's
+ * connector mode list and forces A to a lower-clock mode, while
+ * tunnel B's mode list and active mode are unchanged; B's
+ * allocation drift stays within one granularity step.
+ *
+ * SUBTEST: dual-bwa-disable
+ * Description: Disabling BWA on one SST tunnel in a shared USB4 group does
+ * not destroy the other tunnel's allocation; re-enable + fresh
+ * modeset restores the disabled tunnel's allocation.
+ *
+ * SUBTEST: mst-basic
+ * Description: Two MST connectors sharing one tunnel object report the same
+ * per-tunnel allocated BW, and that value is positive.
+ *
+ * SUBTEST: mst-modeset-bw
+ * Description: Aggregate allocation does not decrease when one MST stream's
+ * mode is raised from the lowest- to the preferred-clock mode.
+ *
+ * SUBTEST: mst-partial-disable
+ * Description: Disabling one MST stream leaves the tunnel alive; the residual
+ * allocation is positive and not larger than the two-stream
+ * allocation.
+ *
+ * SUBTEST: mst-suspend
+ * Description: MST tunnel survives suspend/resume; per the
+ * intel_dp_tunnel_resume() "TODO: Add support for MST"
+ * limitation the test accepts BW re-allocation on at least
+ * one of the two streams.
+ *
+ * SUBTEST: mst-limit-fallback
+ * Description: bw_limit on the shared MST tunnel forces both streams to fall
+ * back to lower-clock modes; aggregate BW remains positive and
+ * not greater than the pre-limit value.
+ *
+ * SUBTEST: mst-bwa-re-enable
+ * Description: Re-enabling BWA on an MST tunnel + fresh modeset restores
+ * allocation for all active streams to the pre-disable value.
+ */
+
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "igt.h"
+#include "igt_connector_helper.h"
+#include "igt_debugfs.h"
+#include "igt_kms.h"
+#include "igt_sysfs.h"
+#include "intel/kms_mst_helper.h"
+
+#define TUNNEL_INFO_BUF_SIZE 2048
+/*
+ * Number of disable/enable cycles for the bwa-cycle subtest. Empirically
+ * tuned to be high enough to surface refcount/state-machine drift between
+ * driver and TBT host without pushing per-subtest runtime past CI budgets.
+ */
+#define BWA_CYCLE_COUNT 10
+#define MAX_CLEANUP_OUTPUTS 16
+#define BW_RETRY_TIMEOUT_MS 1000
+#define BW_RETRY_STEP_MS 50
+
+/*
+ * Tunnel debugfs file names, attached per connector under
+ * /sys/kernel/debug/dri/<N>/<connector>/dp_tunnel/{info,bw_alloc_enable,bw_limit}
+ */
+#define TUNNEL_DBG_DIR "dp_tunnel"
+#define TUNNEL_DBG_INFO "info"
+#define TUNNEL_DBG_BW_ALLOC "bw_alloc_enable"
+#define TUNNEL_DBG_BW_LIMIT "bw_limit"
+
+typedef struct {
+ int drm_fd;
+ uint32_t devid;
+ igt_display_t display;
+ igt_output_t *output; /* primary tunneled output */
+ igt_output_t *output2; /* second tunneled output (dual-SST) */
+ igt_output_t *mst_outputs[IGT_MAX_PIPES]; /* MST stream outputs */
+ int n_mst_outputs;
+ /*
+ * Connector names whose dp_tunnel/ debugfs state must be reset
+ * (bw_limit=0, bw_alloc_enable=1) at process exit. Stored as
+ * names rather than igt_output_t * so the exit handler is safe
+ * after any igt_display_fini() / re-bind sequence (e.g. across
+ * suspend/resume re-enumeration).
+ */
+ char cleanup_names[MAX_CLEANUP_OUTPUTS][IGT_CONNECTOR_NAME_MAX];
+ int n_cleanup;
+} data_t;
+
+/*
+ * Single live test instance per process; stashed in a global so the IGT
+ * exit handler (called with a signal-only argument) can find it. Set in
+ * the bootstrap fixture, never re-assigned after.
+ */
+static data_t *g_data;
+
+/*
+ * Open the per-connector dp_tunnel/ debugfs directory for @output.
+ * Returns an open fd, or -1 if the directory does not exist (no tunnel).
+ * Caller must close() the returned fd.
+ */
+static int tunnel_dbg_open_dir(int drm_fd, igt_output_t *output)
+{
+ int conn_dir, sub;
+
+ conn_dir = igt_debugfs_connector_dir(drm_fd, output->name, O_RDONLY);
+ if (conn_dir < 0)
+ return -1;
+
+ sub = openat(conn_dir, TUNNEL_DBG_DIR, O_RDONLY | O_DIRECTORY);
+ close(conn_dir);
+ return sub;
+}
+
+/* forward declaration: defined further down once helpers are in place */
+static int read_tunnel_info(int drm_fd, igt_output_t *output,
+ char *buf, int size);
+
+static bool has_tunnel(int drm_fd, igt_output_t *output)
+{
+ char buf[TUNNEL_INFO_BUF_SIZE];
+ int ret;
+
+ ret = read_tunnel_info(drm_fd, output, buf, sizeof(buf));
+ /* File must exist, be non-empty, and show an actual tunnel */
+ return ret > 0 && strncmp(buf, "Tunnel:", 7) == 0;
+}
+
+/*
+ * Parse an integer-valued line of the form " <field> <number>...\n" out of
+ * the multi-line tunnel info blob. The match is anchored to the start of a
+ * line so that a future field whose name is a substring of @field (e.g. an
+ * "Allocated BW limit:" line added next to "Allocated BW:") cannot
+ * mis-match. Returns -1 if the field is absent or malformed.
+ */
+static int parse_tunnel_field_int(const char *buf, const char *field)
+{
+ const char *loc = buf;
+ int val = -1;
+ size_t flen = strlen(field);
+
+ while ((loc = strstr(loc, field)) != NULL) {
+ const char *line_start = loc;
+
+ while (line_start > buf && line_start[-1] != '\n')
+ line_start--;
+ /*
+ * Accept the match only if @field appears at line start
+ * (after optional leading whitespace).
+ */
+ while (line_start < loc && (*line_start == ' ' ||
+ *line_start == '\t'))
+ line_start++;
+ if (line_start == loc) {
+ if (sscanf(loc + flen, "%d", &val) != 1)
+ return -1;
+ return val;
+ }
+ loc += flen;
+ }
+ return val;
+}
+
+static void set_bw_limit(int drm_fd, igt_output_t *output, int limit_kbps)
+{
+ char buf[64];
+ int dir, ret;
+
+ dir = tunnel_dbg_open_dir(drm_fd, output);
+ igt_assert_fd(dir);
+ snprintf(buf, sizeof(buf), "%d", limit_kbps);
+ ret = igt_sysfs_write(dir, TUNNEL_DBG_BW_LIMIT, buf, strlen(buf));
+ igt_assert_f(ret == strlen(buf),
+ "Failed to write bw_limit=%d (ret=%d): %m\n",
+ limit_kbps, ret);
+ close(dir);
+}
+
+static int get_bw_limit(int drm_fd, igt_output_t *output)
+{
+ char buf[64] = {};
+ int dir;
+
+ dir = tunnel_dbg_open_dir(drm_fd, output);
+ igt_assert_fd(dir);
+ igt_debugfs_simple_read(dir, TUNNEL_DBG_BW_LIMIT, buf, sizeof(buf));
+ close(dir);
+ return atoi(buf);
+}
+
+static void set_bwa_enabled(int drm_fd, igt_output_t *output, bool enable)
+{
+ int dir, ret;
+
+ dir = tunnel_dbg_open_dir(drm_fd, output);
+ igt_assert_fd(dir);
+ ret = igt_sysfs_write(dir, TUNNEL_DBG_BW_ALLOC,
+ enable ? "1" : "0", 1);
+ igt_assert_f(ret == 1,
+ "Failed to write bw_alloc_enable=%d (ret=%d): %m\n",
+ enable, ret);
+ close(dir);
+}
+
+static bool get_bwa_enabled(int drm_fd, igt_output_t *output)
+{
+ char buf[64] = {};
+ int dir;
+
+ dir = tunnel_dbg_open_dir(drm_fd, output);
+ igt_assert_fd(dir);
+ igt_debugfs_simple_read(dir, TUNNEL_DBG_BW_ALLOC, buf, sizeof(buf));
+ close(dir);
+ /*
+ * The kernel writer is round-trippable and prints "0\n" or "1\n";
+ * older out-of-tree kernels printed "enabled\n" / "disabled\n".
+ * Accept both formats by anchoring on the leading character.
+ */
+ if (buf[0] == '0' || buf[0] == '1')
+ return buf[0] == '1';
+ return strncmp(buf, "enabled", 7) == 0;
+}
+
+/*
+ * Non-asserting reset of bw_limit=0 and bwa_enable=1 for the connector
+ * @name. Safe to call from exit handlers and cleanup paths where
+ * igt_assert would abort the process. Silently skips if the connector's
+ * dp_tunnel/ debugfs directory does not exist (e.g. the connector was
+ * re-enumerated or the tunnel is gone).
+ */
+static void try_reset_by_name(int drm_fd, const char *name)
+{
+ int conn_dir, dir;
+
+ if (!name || !name[0])
+ return;
+
+ conn_dir = igt_debugfs_connector_dir(drm_fd, (char *)name, O_RDONLY);
+ if (conn_dir < 0)
+ return;
+ dir = openat(conn_dir, TUNNEL_DBG_DIR, O_RDONLY | O_DIRECTORY);
+ close(conn_dir);
+ if (dir < 0) {
+ igt_debug("kms_tbt: cleanup: no dp_tunnel/ for %s\n", name);
+ return;
+ }
+
+ /* Best effort: ignore errors, we are in a cleanup/exit path */
+ igt_sysfs_write(dir, TUNNEL_DBG_BW_LIMIT, "0", 1);
+ igt_sysfs_write(dir, TUNNEL_DBG_BW_ALLOC, "1", 1);
+ close(dir);
+}
+
+/*
+ * Append @output's connector name to data->cleanup_names[] so the exit
+ * handler can later reset its debugfs state by name (without
+ * dereferencing igt_output_t * which may have been invalidated by an
+ * intervening igt_display_fini()). Duplicates and overflow are
+ * silently ignored.
+ */
+static void register_for_cleanup(data_t *data, igt_output_t *output)
+{
+ int i;
+
+ if (!data || !output || !output->name)
+ return;
+ for (i = 0; i < data->n_cleanup; i++) {
+ if (strcmp(data->cleanup_names[i], output->name) == 0)
+ return;
+ }
+ if (data->n_cleanup >= MAX_CLEANUP_OUTPUTS)
+ return;
+ snprintf(data->cleanup_names[data->n_cleanup],
+ IGT_CONNECTOR_NAME_MAX, "%s", output->name);
+ data->n_cleanup++;
+}
+
+/*
+ * Clear bw_limit and re-enable BWA on every connector that was ever
+ * registered as a tunneled output during the test. Called from both
+ * the closing fixture and the process exit handler so debugfs state
+ * is always reset regardless of how a subtest exits.
+ */
+static void restore_all_debugfs(data_t *data)
+{
+ int i;
+
+ if (!data || data->drm_fd < 0)
+ return;
+
+ for (i = 0; i < data->n_cleanup; i++)
+ try_reset_by_name(data->drm_fd, data->cleanup_names[i]);
+}
+
+static void exit_handler(int sig)
+{
+ (void)sig;
+ if (g_data)
+ restore_all_debugfs(g_data);
+}
+
+/*
+ * read_tunnel_info - Read the dp_tunnel/info debugfs file for @output into
+ * @buf. The buffer is zeroed up front and the read is bounded to size-1 so
+ * the result is always a properly NUL-terminated C string, safe to feed
+ * straight into strstr/strncmp/sscanf without an explicit length check.
+ *
+ * Returns the byte count from igt_debugfs_simple_read(), or -1 if the
+ * dp_tunnel/ debugfs directory does not exist (no tunnel).
+ */
+static int read_tunnel_info(int drm_fd, igt_output_t *output,
+ char *buf, int size)
+{
+ int dir, ret;
+
+ igt_assert(size > 0);
+ memset(buf, 0, size);
+
+ dir = tunnel_dbg_open_dir(drm_fd, output);
+ if (dir < 0)
+ return -1;
+
+ ret = igt_debugfs_simple_read(dir, TUNNEL_DBG_INFO, buf, size - 1);
+ close(dir);
+
+ if (ret <= 0) {
+ igt_debug("kms_tbt: empty/error read of dp_tunnel/info on %s "
+ "(ret=%d)\n", output->name, ret);
+ buf[0] = '\0';
+ return ret;
+ }
+
+ buf[min(ret, size - 1)] = '\0';
+ return ret;
+}
+
+static int get_allocated_bw(int drm_fd, igt_output_t *output)
+{
+ char buf[TUNNEL_INFO_BUF_SIZE];
+
+ read_tunnel_info(drm_fd, output, buf, sizeof(buf));
+ return parse_tunnel_field_int(buf, "Allocated BW:");
+}
+
+static int get_estimated_bw(int drm_fd, igt_output_t *output)
+{
+ char buf[TUNNEL_INFO_BUF_SIZE];
+
+ read_tunnel_info(drm_fd, output, buf, sizeof(buf));
+ return parse_tunnel_field_int(buf, "Estimated BW:");
+}
+
+static int get_granularity(int drm_fd, igt_output_t *output)
+{
+ char buf[TUNNEL_INFO_BUF_SIZE];
+
+ read_tunnel_info(drm_fd, output, buf, sizeof(buf));
+ return parse_tunnel_field_int(buf, "BW granularity:");
+}
+
+static int get_dprx_rate(int drm_fd, igt_output_t *output)
+{
+ char buf[TUNNEL_INFO_BUF_SIZE];
+
+ read_tunnel_info(drm_fd, output, buf, sizeof(buf));
+ return parse_tunnel_field_int(buf, "DPRX max rate:");
+}
+
+/*
+ * get_tunnel_group_id - Returns a combined host:link key from the DPTUN name
+ * "Tunnel: DPTUN <host>:<link>:<ep>". Two tunnels share a BW group only when
+ * they have the same host AND link number (same physical USB4 connection).
+ * Encoding: host*1000 + link, so TC1 (1:1:x) -> 1001 and TC2 (1:2:x) -> 1002.
+ */
+static int get_tunnel_group_id(int drm_fd, igt_output_t *output)
+{
+ char buf[TUNNEL_INFO_BUF_SIZE];
+ int host = -1, link = -1;
+
+ read_tunnel_info(drm_fd, output, buf, sizeof(buf));
+ if (sscanf(buf, "Tunnel: DPTUN %d:%d:", &host, &link) == 2)
+ return host * 1000 + link;
+ return -1;
+}
+
+/*
+ * find_mode_bw_threshold - Binary-search for the minimum bw_limit (kB/s) at
+ * which @mode appears in the connector's reprobed mode list.
+ *
+ * The kernel's mode_valid BW check uses minimum-bpp accounting and may allow
+ * DSC-capable modes to survive limits that would reject uncompressed modes.
+ * Rather than hard-coding any formula, probe the actual kernel threshold.
+ *
+ * Search range is [1, estimated_bw]. A cap of 0 means "no cap", so the
+ * lowest meaningful filtering cap is 1. If the mode is still present at
+ * limit=1, no positive cap exists that rejects it, and the caller must skip.
+ *
+ * Returns:
+ * threshold > 0 - minimum bw_limit that keeps mode present
+ * 0 - mode cannot be filtered (survives at limit=1)
+ * -1 - mode not in unfiltered connector list
+ *
+ * On return, bw_limit is left at 0.
+ */
+static int find_mode_bw_threshold(int drm_fd, igt_output_t *output,
+ uint32_t connector_id,
+ const drmModeModeInfo *mode,
+ int estimated_bw)
+{
+ drmModeConnector *conn;
+ char numbuf[32];
+ int lo, hi, mid;
+ int dir;
+ bool present;
+
+ /*
+ * The binary search issues ~log2(estimated_bw) writes to
+ * bw_limit (typically 30+). Open the per-connector dp_tunnel/
+ * directory once and reuse the fd to avoid re-walking debugfs
+ * for every step.
+ */
+ dir = tunnel_dbg_open_dir(drm_fd, output);
+ if (dir < 0)
+ return -1;
+
+ #define WRITE_LIMIT(_v) do { \
+ int _n = snprintf(numbuf, sizeof(numbuf), "%d", (_v)); \
+ int _ret = igt_sysfs_write(dir, TUNNEL_DBG_BW_LIMIT, \
+ numbuf, _n); \
+ igt_assert_f(_ret == _n, \
+ "Failed to write bw_limit=%d (ret=%d): %m\n", \
+ (_v), _ret); \
+ } while (0)
+
+ /* Verify mode is present with no limit */
+ WRITE_LIMIT(0);
+ conn = drmModeGetConnector(drm_fd, connector_id);
+ if (!conn) {
+ close(dir);
+ return -1;
+ }
+ present = igt_connector_mode_in_list(conn, mode);
+ drmModeFreeConnector(conn);
+ if (!present) {
+ close(dir);
+ return -1;
+ }
+
+ /* Quick check: is mode still present at the minimum (1 kB/s) cap? */
+ WRITE_LIMIT(1);
+ conn = drmModeGetConnector(drm_fd, connector_id);
+ present = conn && igt_connector_mode_in_list(conn, mode);
+ drmModeFreeConnector(conn);
+ if (present) {
+ WRITE_LIMIT(0);
+ close(dir);
+ return 0; /* mode survives min cap - cannot filter */
+ }
+
+ /*
+ * Binary search.
+ * lo = highest limit where mode is absent (starts at 1).
+ * hi = lowest limit where mode is present.
+ */
+ lo = 1;
+ hi = estimated_bw;
+ while (hi - lo > 1) {
+ mid = lo + (hi - lo) / 2;
+ WRITE_LIMIT(mid);
+ conn = drmModeGetConnector(drm_fd, connector_id);
+ if (conn && igt_connector_mode_in_list(conn, mode))
+ hi = mid;
+ else
+ lo = mid;
+ drmModeFreeConnector(conn);
+ }
+
+ WRITE_LIMIT(0);
+ close(dir);
+ #undef WRITE_LIMIT
+ return hi; /* minimum limit at which mode is present */
+}
+
+/*
+ * assign_outputs_to_crtcs - Assigns each output in @outputs to the next
+ * available CRTC, iterating over all display CRTCs.
+ */
+static void assign_outputs_to_crtcs(igt_display_t *display,
+ igt_output_t **outputs, int n_outputs)
+{
+ int i, n_crtcs;
+
+ igt_require_f(n_outputs > 0, "No outputs to assign\n");
+
+ n_crtcs = igt_display_n_crtcs(display);
+ igt_require_f(n_crtcs >= n_outputs,
+ "Not enough CRTCs (%d) for %d outputs\n",
+ n_crtcs, n_outputs);
+
+ for (i = 0; i < n_outputs; i++)
+ igt_output_set_crtc(outputs[i],
+ igt_crtc_for_pipe(display, (enum pipe)i));
+}
+
+/*
+ * do_modeset - Sets up and commits a modeset for @outputs with @modes.
+ * If @modes[i] is NULL, the default preferred mode is used. Creates solid
+ * blue FBs stored in @fbs which the caller must free with cleanup_outputs().
+ */
+static void do_modeset(data_t *data, igt_output_t **outputs, int n_outputs,
+ drmModeModeInfo **modes, struct igt_fb *fbs)
+{
+ igt_plane_t *plane;
+ int i;
+
+ igt_display_reset(&data->display);
+ assign_outputs_to_crtcs(&data->display, outputs, n_outputs);
+
+ for (i = 0; i < n_outputs; i++) {
+ drmModeModeInfo *mode;
+
+ if (modes && modes[i])
+ igt_output_override_mode(outputs[i], modes[i]);
+ mode = igt_output_get_mode(outputs[i]);
+ igt_assert_f(mode, "No mode available for output %s\n",
+ igt_output_name(outputs[i]));
+
+ igt_info("Modeset %s at %dx%d@%d\n",
+ igt_output_name(outputs[i]),
+ mode->hdisplay, mode->vdisplay, mode->vrefresh);
+
+ igt_create_color_fb(data->drm_fd,
+ mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ DRM_FORMAT_MOD_LINEAR,
+ 0.0, 0.0, 1.0, &fbs[i]);
+ plane = igt_output_get_plane_type(outputs[i],
+ DRM_PLANE_TYPE_PRIMARY);
+ igt_plane_set_fb(plane, &fbs[i]);
+ }
+
+ igt_display_commit2(&data->display, COMMIT_ATOMIC);
+}
+
+/*
+ * cleanup_outputs - Disables all outputs, commits blank state, removes FBs,
+ * and clears any mode overrides. Must be called after do_modeset().
+ */
+static void cleanup_outputs(data_t *data, igt_output_t **outputs,
+ int n_outputs, struct igt_fb *fbs)
+{
+ int i;
+
+ igt_display_reset(&data->display);
+ igt_display_commit2(&data->display, COMMIT_ATOMIC);
+
+ for (i = 0; i < n_outputs; i++) {
+ igt_remove_fb(data->drm_fd, &fbs[i]);
+ igt_output_override_mode(outputs[i], NULL);
+ }
+}
+
+/*
+ * retrigger_modeset - Disables the output, then re-enables it at the same
+ * mode. Used after setting bw_limit to force a fresh modeset that re-evaluates
+ * BW constraints.
+ */
+static void retrigger_modeset(data_t *data, igt_output_t **outputs,
+ int n_outputs, drmModeModeInfo **modes,
+ struct igt_fb *old_fbs, struct igt_fb *new_fbs)
+{
+ cleanup_outputs(data, outputs, n_outputs, old_fbs);
+ do_modeset(data, outputs, n_outputs, modes, new_fbs);
+}
+
+/*
+ * find_tunneled_output - Finds the first connected DP output that has an
+ * active DP tunnel (has_tunnel() returns true). Returns NULL if none found.
+ */
+static igt_output_t *find_tunneled_output(data_t *data)
+{
+ igt_output_t *output;
+
+ for_each_connected_output(&data->display, output) {
+ if (output->config.connector->connector_type !=
+ DRM_MODE_CONNECTOR_DisplayPort)
+ continue;
+ if (has_tunnel(data->drm_fd, output))
+ return output;
+ }
+ return NULL;
+}
+
+/*
+ * sst_tunnel_group - Helper: returns the USB4 group id for @output if it is
+ * a connected non-MST DP output with an active tunnel, or -1 otherwise.
+ * Centralises the eligibility filter for the dual-SST selectors below.
+ */
+static int sst_tunnel_group(data_t *data, igt_output_t *output)
+{
+ if (output->config.connector->connector_type !=
+ DRM_MODE_CONNECTOR_DisplayPort)
+ return -1;
+ if (igt_check_output_is_dp_mst(output))
+ return -1;
+ if (!has_tunnel(data->drm_fd, output))
+ return -1;
+ return get_tunnel_group_id(data->drm_fd, output);
+}
+
+/*
+ * find_two_tunneled_sst_outputs - Finds two connected SST DP outputs whose
+ * tunnels share the same physical USB4 link (same host:link group), so the
+ * pair is suitable for shared-group accounting tests (dual-bw-sum,
+ * dual-bwa-disable).
+ *
+ * Two MST sinks behind the same hub also share host:link so they would
+ * pass the group check; sst_tunnel_group() filters them out via
+ * igt_check_output_is_dp_mst() since their BW is aggregated on a single
+ * tunnel slot, not summed from two.
+ *
+ * Implementation: O(n^2) pair search rather than first-found-then-match,
+ * so a topology like A(group X), B(group Y), C(group Y) still produces
+ * the valid B+C pair instead of dead-locking on A having no peer.
+ *
+ * Stores the two outputs in data->output and data->output2. Returns true
+ * on success.
+ */
+static bool find_two_tunneled_sst_outputs(data_t *data)
+{
+ int i, j;
+
+ for (i = 0; i < data->display.n_outputs; i++) {
+ igt_output_t *out_a = &data->display.outputs[i];
+ int group_a;
+
+ if (!igt_output_is_connected(out_a))
+ continue;
+ group_a = sst_tunnel_group(data, out_a);
+ if (group_a < 0)
+ continue;
+
+ for (j = 0; j < data->display.n_outputs; j++) {
+ igt_output_t *out_b = &data->display.outputs[j];
+
+ if (j == i)
+ continue;
+ if (!igt_output_is_connected(out_b))
+ continue;
+ if (sst_tunnel_group(data, out_b) != group_a)
+ continue;
+
+ data->output = out_a;
+ data->output2 = out_b;
+ register_for_cleanup(data, out_a);
+ register_for_cleanup(data, out_b);
+ return true;
+ }
+ }
+ return false;
+}
+
+/*
+ * find_mst_outputs - Finds at least 2 connected MST outputs that share the
+ * same tunnel. Populates data->mst_outputs[] and data->n_mst_outputs.
+ * Returns true if at least 2 MST outputs with a common tunnel are found.
+ *
+ * Some TBT docks present their SST SINK ports as MST virtual connectors
+ * (igt_check_output_is_dp_mst() returns true for them). For mst-* tests
+ * we need a TRUE MST hub where both outputs share one aggregate BW slot.
+ * Strategy: prefer an MST tree on a DIFFERENT tunnel group than the primary
+ * output (data->output) - that USB4 path is more likely to have a real MST
+ * hub rather than the dock's internal pseudo-MST routing. Fall back to any
+ * MST tree with 2+ connected outputs if no better option exists.
+ */
+static bool find_mst_outputs(data_t *data)
+{
+ igt_output_t *output;
+ igt_output_t *best_root = NULL;
+ int primary_group = -1;
+
+ if (data->output)
+ primary_group = get_tunnel_group_id(data->drm_fd, data->output);
+
+ for_each_connected_output(&data->display, output) {
+ igt_output_t *candidates[IGT_MAX_PIPES];
+ int count = 0, n_connected = 0, i, root_group;
+
+ if (output->config.connector->connector_type !=
+ DRM_MODE_CONNECTOR_DisplayPort)
+ continue;
+ if (!igt_check_output_is_dp_mst(output))
+ continue;
+ if (!has_tunnel(data->drm_fd, output))
+ continue;
+
+ root_group = get_tunnel_group_id(data->drm_fd, output);
+
+ if (igt_find_all_mst_output_in_topology(data->drm_fd,
+ &data->display,
+ output, candidates,
+ &count) != 0)
+ continue;
+
+ for (i = 0; i < count; i++) {
+ if (candidates[i]->config.connector->connection ==
+ DRM_MODE_CONNECTED)
+ n_connected++;
+ }
+ if (n_connected < 2)
+ continue;
+
+ /* Prefer a tree on a different tunnel group from data->output */
+ if (root_group != primary_group) {
+ best_root = output;
+ break;
+ }
+ if (!best_root)
+ best_root = output; /* fallback: same group */
+ }
+
+ if (!best_root)
+ return false;
+
+ {
+ igt_output_t *candidates[IGT_MAX_PIPES];
+ int count = 0, i;
+
+ if (igt_find_all_mst_output_in_topology(data->drm_fd,
+ &data->display,
+ best_root, candidates,
+ &count) != 0)
+ return false;
+
+ data->n_mst_outputs = 0;
+ for (i = 0; i < count; i++) {
+ if (candidates[i]->config.connector->connection ==
+ DRM_MODE_CONNECTED) {
+ data->mst_outputs[data->n_mst_outputs++] =
+ candidates[i];
+ register_for_cleanup(data, candidates[i]);
+ }
+ }
+ }
+
+ return data->n_mst_outputs >= 2;
+}
+
+/* ------------------------------------------------------------------ */
+/* Per-subtest setup helpers: encapsulate the early-skip boilerplate. */
+/* ------------------------------------------------------------------ */
+
+/*
+ * require_sst - Skip the calling subtest if the primary tunneled output
+ * is gone (e.g. the user yanked the dock between subtests). Returns the
+ * primary tunneled output, ready for use.
+ */
+static igt_output_t *require_sst(data_t *d)
+{
+ igt_output_t *out = d->output;
+
+ igt_require_f(out, "No primary tunneled output\n");
+ igt_require_f(has_tunnel(d->drm_fd, out),
+ "No DP tunnel on %s, skipping\n", out->name);
+ return out;
+}
+
+/*
+ * require_bwa - Skip the calling subtest unless BWA is currently enabled
+ * on @out's tunnel. Subtests that depend on toggling BWA (bwa-*, bwa-cycle,
+ * dual-bwa-*, mst-bwa-*) call this so they don't hard-assert on a sink that
+ * doesn't advertise the BWA capability.
+ */
+static void require_bwa(data_t *d, igt_output_t *out)
+{
+ igt_require_f(get_bwa_enabled(d->drm_fd, out),
+ "BWA not enabled on %s; sink may not support it\n",
+ out->name);
+}
+
+/*
+ * require_dual_sst_same_group - Skip if two tunneled SST outputs sharing
+ * one USB4 link cannot be found. On success d->output and d->output2 are
+ * populated.
+ */
+static void require_dual_sst_same_group(data_t *d)
+{
+ igt_require_f(find_two_tunneled_sst_outputs(d),
+ "Need 2 tunneled non-MST DP outputs on same dock\n");
+ igt_require_f(has_tunnel(d->drm_fd, d->output) &&
+ has_tunnel(d->drm_fd, d->output2),
+ "Both outputs need tunnels\n");
+}
+
+/*
+ * require_mst_pair - Skip unless 2+ connected MST outputs sharing a
+ * single tunnel are available. On success d->mst_outputs[] is populated.
+ */
+static void require_mst_pair(data_t *d)
+{
+ igt_require_f(find_mst_outputs(d),
+ "Need 2 connected MST outputs on same tunnel\n");
+ igt_require_f(has_tunnel(d->drm_fd, d->mst_outputs[0]) &&
+ has_tunnel(d->drm_fd, d->mst_outputs[1]),
+ "Both MST outputs (%s, %s) need tunnel debugfs\n",
+ d->mst_outputs[0]->name, d->mst_outputs[1]->name);
+}
+
+/*
+ * Output of prepare_limit_setup() consumed by the limit-* subtests.
+ */
+struct limit_setup {
+ uint32_t connector_id;
+ drmModeModeInfo preferred;
+ int estimated_bw;
+ int full_mode_count;
+ int threshold; /* min bw_limit at which preferred is present */
+};
+
+/*
+ * limit_setup_status - prepare_limit_setup() result.
+ *
+ * Helpers don't call igt_skip() / igt_require_f() so that the per-subtest
+ * caller controls the skip reason and the IGT framework attributes the
+ * skip to the right subtest in CI logs.
+ */
+enum limit_setup_status {
+ LIMIT_SETUP_OK,
+ LIMIT_SETUP_NO_ESTIMATED_BW,
+ LIMIT_SETUP_NO_MODES,
+ LIMIT_SETUP_NO_THRESHOLD,
+};
+
+/*
+ * prepare_limit_setup - Common preamble for limit-fallback / limit-boundary
+ * / limit-suspend:
+ * - Clear stale bw_limit.
+ * - Probe the unfiltered connector for the preferred mode and full count.
+ * - Binary-search for the kernel's actual rejection threshold for the
+ * preferred mode.
+ *
+ * Returns one of #limit_setup_status; @s is populated only on
+ * %LIMIT_SETUP_OK. Caller decides how (or whether) to skip on the other
+ * statuses.
+ */
+static enum limit_setup_status prepare_limit_setup(data_t *d,
+ igt_output_t *out,
+ struct limit_setup *s)
+{
+ drmModeConnector *conn;
+ int i;
+
+ set_bw_limit(d->drm_fd, out, 0);
+
+ s->connector_id = out->config.connector->connector_id;
+ s->estimated_bw = get_estimated_bw(d->drm_fd, out);
+ if (s->estimated_bw <= 0)
+ return LIMIT_SETUP_NO_ESTIMATED_BW;
+
+ conn = drmModeGetConnector(d->drm_fd, s->connector_id);
+ igt_assert_f(conn, "Failed to probe connector\n");
+ if (conn->count_modes <= 0) {
+ drmModeFreeConnector(conn);
+ return LIMIT_SETUP_NO_MODES;
+ }
+ s->full_mode_count = conn->count_modes;
+ s->preferred = conn->modes[0];
+ for (i = 0; i < conn->count_modes; i++) {
+ if (conn->modes[i].type & DRM_MODE_TYPE_PREFERRED) {
+ s->preferred = conn->modes[i];
+ break;
+ }
+ }
+ drmModeFreeConnector(conn);
+
+ s->threshold = find_mode_bw_threshold(d->drm_fd, out, s->connector_id,
+ &s->preferred, s->estimated_bw);
+ if (s->threshold <= 0)
+ return LIMIT_SETUP_NO_THRESHOLD;
+
+ return LIMIT_SETUP_OK;
+}
+
+/*
+ * require_limit_setup - prepare_limit_setup() wrapper that turns each non-OK
+ * status into an igt_require_f skip with a specific message. Use this from
+ * limit-* subtests for uniform skip behaviour.
+ */
+static void require_limit_setup(data_t *d, igt_output_t *out,
+ struct limit_setup *s)
+{
+ enum limit_setup_status st = prepare_limit_setup(d, out, s);
+
+ switch (st) {
+ case LIMIT_SETUP_OK:
+ return;
+ case LIMIT_SETUP_NO_ESTIMATED_BW:
+ igt_skip("No estimated BW on %s\n", out->name);
+ break;
+ case LIMIT_SETUP_NO_MODES:
+ igt_skip("No modes on %s\n", out->name);
+ break;
+ case LIMIT_SETUP_NO_THRESHOLD:
+ igt_skip("Cannot filter preferred mode (clock=%d): "
+ "always present or not in list\n",
+ s->preferred.clock);
+ break;
+ }
+}
+
+/*
+ * preferred_mode_present_at_limit - Apply @limit, reprobe @connector_id and
+ * return whether @preferred survives in the filtered mode list. Optionally
+ * stores the post-filter mode count in @mode_count_out. Centralises the
+ * write-bw_limit / drmModeGetConnector / membership-check pattern shared by
+ * the limit-* subtests.
+ */
+static bool preferred_mode_present_at_limit(data_t *d, igt_output_t *out,
+ uint32_t connector_id,
+ const drmModeModeInfo *preferred,
+ int limit, int *mode_count_out)
+{
+ drmModeConnector *conn;
+ bool present;
+
+ set_bw_limit(d->drm_fd, out, limit);
+ conn = drmModeGetConnector(d->drm_fd, connector_id);
+ igt_assert_f(conn, "Failed to reprobe connector\n");
+
+ present = igt_connector_mode_in_list(conn, preferred);
+ if (mode_count_out)
+ *mode_count_out = conn->count_modes;
+
+ drmModeFreeConnector(conn);
+ return present;
+}
+
+/* ------------------------------------------------------------------ */
+/* Subtest implementations. */
+/* */
+/* Each test_* assumes its caller has already established the */
+/* connectors it needs (via the require_* helpers above). */
+/* ------------------------------------------------------------------ */
+
+/*
+ * test_basic - Functional baseline:
+ * 1. Modeset the preferred mode on a tunneled output.
+ * 2. Tunnel info begins with "Tunnel: DPTUN" (debugfs format sanity).
+ * 3. Allocated BW becomes positive within BW_RETRY_TIMEOUT_MS (BWA
+ * negotiation runs on a worker after commit returns).
+ * 4. Tunnel DPRX max rate is at least the link's current max rate
+ * (i.e. the tunnel can carry whatever the link is using).
+ *
+ * TODO: split into basic-sst-{uhbr,non-uhbr} / basic-mst-{uhbr,non-uhbr}
+ * once test-rig coverage exists.
+ */
+static void test_basic(data_t *d, igt_output_t *out)
+{
+ char buf[TUNNEL_INFO_BUF_SIZE];
+ struct igt_fb fb;
+ int allocated, dprx_rate, current_max_rate;
+ int t;
+
+ igt_require_f(out->config.connector->count_modes > 0,
+ "No modes available on %s\n", out->name);
+
+ /*
+ * Reset bw_limit=0 in case a previously crashed limit-* subtest
+ * left a stale cap on the tunnel that would now make BW
+ * allocation fail for unrelated reasons.
+ */
+ set_bw_limit(d->drm_fd, out, 0);
+ do_modeset(d, &out, 1, NULL, &fb);
+
+ read_tunnel_info(d->drm_fd, out, buf, sizeof(buf));
+ igt_info("tunnel_info:\n%s\n", buf);
+
+ igt_assert_f(strncmp(buf, "Tunnel: DPTUN", 13) == 0,
+ "Unexpected tunnel name format: %s\n", buf);
+
+ /*
+ * BWA negotiation with the USB4 host runs on a worker after the
+ * modeset commit returns. Poll for up to BW_RETRY_TIMEOUT_MS for a
+ * positive allocation rather than racing it with a single sample.
+ */
+ allocated = get_allocated_bw(d->drm_fd, out);
+ for (t = 0; t < BW_RETRY_TIMEOUT_MS / BW_RETRY_STEP_MS &&
+ allocated <= 0; t++) {
+ usleep(BW_RETRY_STEP_MS * 1000);
+ allocated = get_allocated_bw(d->drm_fd, out);
+ }
+ igt_info("[basic] allocated_bw=%d kB/s\n", allocated);
+ igt_assert_f(allocated > 0,
+ "Allocated BW is %d, expected > 0\n", allocated);
+
+ dprx_rate = get_dprx_rate(d->drm_fd, out);
+ current_max_rate = igt_get_max_link_rate(d->drm_fd, out);
+ igt_info("[basic] dprx_rate=%d kbps link_max_rate=%d kbps\n",
+ dprx_rate, current_max_rate);
+ igt_assert_f(dprx_rate > 0,
+ "DPRX max rate %d invalid\n", dprx_rate);
+ igt_assert_f(current_max_rate > 0,
+ "Current max link rate %d invalid\n", current_max_rate);
+ igt_assert_f(dprx_rate >= current_max_rate,
+ "DPRX rate %d < current max link rate %d\n",
+ dprx_rate, current_max_rate);
+
+ cleanup_outputs(d, &out, 1, &fb);
+}
+
+static void test_modeset_bw(data_t *d, igt_output_t *out)
+{
+ drmModeConnector *c = out->config.connector;
+ struct igt_fb fb_low = {}, fb_high = {}, fb_back = {};
+ drmModeModeInfo low_mode_copy, high_mode_copy;
+ drmModeModeInfo *modes[1];
+ int bw_low, bw_high, bw_back;
+
+ igt_require_f(c->count_modes >= 2,
+ "Need at least 2 modes on %s\n", out->name);
+ igt_require_f(igt_connector_find_lowest_clock_mode(out, &low_mode_copy) &&
+ igt_connector_find_preferred_mode(out, &high_mode_copy) &&
+ low_mode_copy.clock != high_mode_copy.clock,
+ "Need distinct low and high modes on %s\n", out->name);
+
+ /* Step 1: lowest mode */
+ modes[0] = &low_mode_copy;
+ do_modeset(d, &out, 1, modes, &fb_low);
+ bw_low = get_allocated_bw(d->drm_fd, out);
+ igt_info("[modeset-bw] Step1 low_mode=%dx%d@%d bw_low=%d kB/s\n",
+ low_mode_copy.hdisplay, low_mode_copy.vdisplay,
+ low_mode_copy.vrefresh, bw_low);
+ igt_assert_f(bw_low > 0, "Low mode allocated BW %d <= 0\n", bw_low);
+
+ /* Step 2: highest mode */
+ cleanup_outputs(d, &out, 1, &fb_low);
+ modes[0] = &high_mode_copy;
+ do_modeset(d, &out, 1, modes, &fb_high);
+ bw_high = get_allocated_bw(d->drm_fd, out);
+ igt_info("[modeset-bw] Step2 high_mode=%dx%d@%d bw_high=%d kB/s"
+ " pass=(bw_high > bw_low): %d > %d\n",
+ high_mode_copy.hdisplay, high_mode_copy.vdisplay,
+ high_mode_copy.vrefresh, bw_high, bw_high, bw_low);
+ igt_assert_f(bw_high > bw_low,
+ "High mode BW %d not > low mode BW %d\n",
+ bw_high, bw_low);
+
+ /*
+ * Step 3: back to lowest mode. With the same input mode and the
+ * same group state (single tunnel, no other allocations changed),
+ * the kernel's BWA path is deterministic, so allocation must round
+ * to exactly the same value as Step 1.
+ */
+ cleanup_outputs(d, &out, 1, &fb_high);
+ modes[0] = &low_mode_copy;
+ do_modeset(d, &out, 1, modes, &fb_back);
+ bw_back = get_allocated_bw(d->drm_fd, out);
+ igt_info("[modeset-bw] Step3 round-trip bw_back=%d kB/s"
+ " pass=(bw_back == bw_low): %d == %d\n",
+ bw_back, bw_back, bw_low);
+ igt_assert_f(bw_back == bw_low,
+ "BW after round-trip %d != bw_low %d\n",
+ bw_back, bw_low);
+
+ cleanup_outputs(d, &out, 1, &fb_back);
+}
+
+static void test_disable_bw(data_t *d, igt_output_t *out)
+{
+ struct igt_fb fb;
+ int allocated;
+
+ do_modeset(d, &out, 1, NULL, &fb);
+ allocated = get_allocated_bw(d->drm_fd, out);
+ igt_info("[disable-bw] Before disable: allocated_bw=%d kB/s\n",
+ allocated);
+ igt_assert_f(allocated > 0,
+ "Expected allocated BW > 0 before disable\n");
+
+ igt_output_set_crtc(out, NULL);
+ igt_display_commit2(&d->display, COMMIT_ATOMIC);
+ igt_remove_fb(d->drm_fd, &fb);
+
+ allocated = get_allocated_bw(d->drm_fd, out);
+ igt_info("[disable-bw] After disable: allocated_bw=%d kB/s "
+ "pass=(==0): %d == 0\n", allocated, allocated);
+ igt_assert_f(allocated == 0,
+ "Allocated BW %d != 0 after output disabled\n", allocated);
+
+ do_modeset(d, &out, 1, NULL, &fb);
+ allocated = get_allocated_bw(d->drm_fd, out);
+ igt_info("[disable-bw] After re-enable: allocated_bw=%d kB/s "
+ "pass=(>0): %d > 0\n", allocated, allocated);
+ igt_assert_f(allocated > 0,
+ "Expected allocated BW > 0 after re-enable\n");
+
+ cleanup_outputs(d, &out, 1, &fb);
+}
+
+/*
+ * await_tunnel_after_resume_identity - Wait up to 3s for the cached @out
+ * pointer to regain a working tunnel; if the kernel re-enumerated the
+ * connector, rebuild IGT's display state and look up the new connector
+ * for *the same physical sink* by matching @pre_path (preferred, more
+ * reliable for MST topologies) or @pre_serial (EDID fallback). Returns
+ * the (possibly updated) output, or NULL if the original sink does not
+ * re-establish a tunnel within 30s.
+ *
+ * @pre_path / @pre_serial: pre-suspend identity captured via
+ * igt_connector_get_info(); either may be empty.
+ * @tag: log prefix for diagnostics.
+ */
+static igt_output_t *await_tunnel_after_resume_identity(data_t *d,
+ igt_output_t *out,
+ const char *pre_path,
+ const char *pre_serial,
+ const char *tag)
+{
+ igt_until_timeout(3) {
+ if (has_tunnel(d->drm_fd, out))
+ return out;
+ usleep(100 * 1000);
+ }
+
+ igt_display_fini(&d->display);
+ igt_display_require(&d->display, d->drm_fd);
+
+ igt_until_timeout(30) {
+ uint32_t new_id = 0;
+ igt_output_t *new_out;
+
+ igt_connector_reprobe_all(d->drm_fd);
+
+ if (pre_path[0] &&
+ !igt_connector_find_by_path(d->drm_fd, pre_path, &new_id)) {
+ new_id = 0;
+ }
+ if (!new_id && pre_serial[0]) {
+ if (!igt_connector_find_by_serial(d->drm_fd, pre_serial,
+ &new_id))
+ new_id = 0;
+ }
+ if (new_id) {
+ new_out = igt_connector_find_output_by_id(&d->display,
+ new_id);
+ if (new_out && has_tunnel(d->drm_fd, new_out)) {
+ igt_info("[%s] Tunnel re-established on %s "
+ "(re-enumerated id=%u)\n",
+ tag, new_out->name, new_id);
+ register_for_cleanup(d, new_out);
+ return new_out;
+ }
+ }
+ usleep(500 * 1000);
+ }
+ return NULL;
+}
+
+static void test_suspend(data_t *d, igt_output_t *out)
+{
+ struct igt_fb fb;
+ int pre_allocated, pre_dprx_rate, pre_group;
+ int post_allocated, granularity;
+ bool pre_bwa;
+ char pre_path[128] = {};
+ char pre_serial[64] = {};
+ char tmp[32];
+
+ igt_connector_get_info(d->drm_fd,
+ out->config.connector->connector_id,
+ tmp, sizeof(tmp),
+ pre_serial, sizeof(pre_serial),
+ pre_path, sizeof(pre_path));
+
+ do_modeset(d, &out, 1, NULL, &fb);
+
+ pre_allocated = get_allocated_bw(d->drm_fd, out);
+ pre_dprx_rate = get_dprx_rate(d->drm_fd, out);
+ pre_group = get_tunnel_group_id(d->drm_fd, out);
+ granularity = get_granularity(d->drm_fd, out);
+ pre_bwa = get_bwa_enabled(d->drm_fd, out);
+ igt_info("[suspend] Pre-suspend: %s allocated_bw=%d kB/s dprx_rate=%d kbps"
+ " group_id=%d granularity=%d kB/s bwa=%d path='%s' serial='%s'\n",
+ out->name, pre_allocated, pre_dprx_rate, pre_group, granularity,
+ pre_bwa, pre_path, pre_serial);
+
+ igt_system_suspend_autoresume(SUSPEND_STATE_MEM, SUSPEND_TEST_NONE);
+
+ out = await_tunnel_after_resume_identity(d, out, pre_path, pre_serial,
+ "suspend");
+ if (!out) {
+ igt_remove_fb(d->drm_fd, &fb);
+ igt_skip("Tunnel not re-established 30s after resume\n");
+ }
+
+ if (pre_bwa)
+ igt_assert_f(get_bwa_enabled(d->drm_fd, out),
+ "BWA was enabled pre-suspend but not restored after resume\n");
+
+ post_allocated = get_allocated_bw(d->drm_fd, out);
+ igt_info("[suspend] Post-resume: allocated_bw=%d kB/s bwa_enabled=%d"
+ " dprx_rate=%d kbps group_id=%d\n",
+ post_allocated, get_bwa_enabled(d->drm_fd, out),
+ get_dprx_rate(d->drm_fd, out),
+ get_tunnel_group_id(d->drm_fd, out));
+ igt_info("[suspend] pass=(|post-pre| <= gran): |%d - %d| = %d <= %d\n",
+ post_allocated, pre_allocated,
+ abs(post_allocated - pre_allocated), granularity);
+ igt_assert_f(abs(post_allocated - pre_allocated) <= granularity,
+ "Allocated BW changed more than one granularity step "
+ "after resume: pre=%d post=%d gran=%d\n",
+ pre_allocated, post_allocated, granularity);
+ igt_assert_f(get_dprx_rate(d->drm_fd, out) == pre_dprx_rate,
+ "DPRX rate changed after resume\n");
+ igt_assert_f(get_tunnel_group_id(d->drm_fd, out) == pre_group,
+ "Tunnel group ID changed after resume\n");
+
+ /*
+ * After suspend/resume, TBT re-enumerates connectors which can
+ * cause a stale DRM state in IGT. Use targeted per-output disable
+ * to avoid touching connectors that may have changed.
+ */
+ igt_output_set_crtc(out, NULL);
+ igt_output_override_mode(out, NULL);
+ igt_display_commit2(&d->display, COMMIT_ATOMIC);
+ igt_remove_fb(d->drm_fd, &fb);
+}
+
+static void test_limit_fallback(data_t *d, igt_output_t *out)
+{
+ struct igt_fb fb;
+ struct limit_setup s;
+ drmModeConnector *conn;
+ drmModeModeInfo fallback_copy;
+ drmModeModeInfo *modes[1];
+ int reject_limit, pref_alloc, fallback_alloc, count;
+ bool present;
+
+ require_limit_setup(d, out, &s);
+
+ /* Record the BW actually allocated for the preferred mode */
+ modes[0] = &s.preferred;
+ do_modeset(d, &out, 1, modes, &fb);
+ pref_alloc = get_allocated_bw(d->drm_fd, out);
+ igt_info("[limit-fallback] preferred_mode=%dx%d@%d clock=%d kHz"
+ " pref_alloc=%d kB/s estimated_bw=%d kB/s\n",
+ s.preferred.hdisplay, s.preferred.vdisplay,
+ s.preferred.vrefresh, s.preferred.clock,
+ pref_alloc, s.estimated_bw);
+ cleanup_outputs(d, &out, 1, &fb);
+
+ reject_limit = s.threshold - 1;
+ igt_info("[limit-fallback] threshold=%d reject_limit=%d\n",
+ s.threshold, reject_limit);
+
+ /* Apply the reject limit and verify preferred is gone */
+ present = preferred_mode_present_at_limit(d, out, s.connector_id,
+ &s.preferred, reject_limit,
+ &count);
+ igt_info("[limit-fallback] At T-1=%d: preferred_present=%d modes_remaining=%d\n",
+ reject_limit, present, count);
+ igt_assert_f(!present,
+ "Preferred mode (clock=%d) still present at "
+ "limit=%d (threshold=%d)\n",
+ s.preferred.clock, reject_limit, s.threshold);
+
+ conn = drmModeGetConnector(d->drm_fd, s.connector_id);
+ igt_assert_f(conn, "Failed to reprobe connector\n");
+ if (!igt_connector_find_highest_clock_mode_in(conn, &fallback_copy)) {
+ drmModeFreeConnector(conn);
+ set_bw_limit(d->drm_fd, out, 0);
+ igt_skip("No modes available at limit=%d\n", reject_limit);
+ }
+ drmModeFreeConnector(conn);
+
+ modes[0] = &fallback_copy;
+ do_modeset(d, &out, 1, modes, &fb);
+ fallback_alloc = get_allocated_bw(d->drm_fd, out);
+ /*
+ * The kernel filters modes using 18bpp minimum
+ * (intel_dp_mode_valid_format) but allocates BWA at the actual
+ * pixel rate. On low-res displays the granularity rounding can
+ * make fallback_alloc == pref_alloc. Assert on clock difference
+ * instead (proves mode-list filtering worked).
+ */
+ igt_info("[limit-fallback] fallback_mode=%dx%d@%d fallback_alloc=%d kB/s"
+ " pref_alloc=%d kB/s pass=(fallback_clock < pref_clock): %d < %d\n",
+ fallback_copy.hdisplay, fallback_copy.vdisplay,
+ fallback_copy.vrefresh, fallback_alloc, pref_alloc,
+ fallback_copy.clock, s.preferred.clock);
+ igt_assert_f(fallback_copy.clock < s.preferred.clock,
+ "Expected fallback mode (clock %d < preferred %d) "
+ "but mode-list filtering did not work\n",
+ fallback_copy.clock, s.preferred.clock);
+ igt_assert_f(fallback_alloc > 0,
+ "Fallback allocated BW %d <= 0\n", fallback_alloc);
+
+ set_bw_limit(d->drm_fd, out, 0);
+ cleanup_outputs(d, &out, 1, &fb);
+}
+
+/*
+ * test_limit_boundary - Three-stage off-by-one + clear check on the same
+ * tunnel:
+ * 1. limit = threshold T: preferred must be present.
+ * 2. limit = T - 1: preferred must be absent.
+ * 3. limit = 0: preferred and full mode count restored.
+ *
+ * Stage 3 absorbs what test_limit_clear used to cover separately - the
+ * unique "full mode count restored after clearing" check now lives here.
+ */
+static void test_limit_boundary(data_t *d, igt_output_t *out)
+{
+ struct limit_setup s;
+ int count;
+ bool present;
+
+ require_limit_setup(d, out, &s);
+
+ igt_info("[limit-boundary] preferred_mode=%dx%d@%d clock=%d kHz"
+ " estimated_bw=%d kB/s threshold(T)=%d kB/s"
+ " full_mode_count=%d\n",
+ s.preferred.hdisplay, s.preferred.vdisplay,
+ s.preferred.vrefresh, s.preferred.clock,
+ s.estimated_bw, s.threshold, s.full_mode_count);
+
+ /* At threshold: preferred must be present */
+ present = preferred_mode_present_at_limit(d, out, s.connector_id,
+ &s.preferred, s.threshold,
+ &count);
+ igt_info("[limit-boundary] At T=%d: preferred_present=%d (expect 1)"
+ " modes_count=%d\n", s.threshold, present, count);
+ igt_assert_f(present,
+ "Preferred mode (clock=%d) absent at boundary limit=%d\n",
+ s.preferred.clock, s.threshold);
+
+ /* One below threshold: preferred must be absent */
+ present = preferred_mode_present_at_limit(d, out, s.connector_id,
+ &s.preferred,
+ s.threshold - 1, &count);
+ igt_info("[limit-boundary] At T-1=%d: preferred_present=%d (expect 0)"
+ " modes_count=%d\n", s.threshold - 1, present, count);
+ igt_assert_f(!present,
+ "Preferred mode (clock=%d) still present at "
+ "limit=%d (one below threshold=%d)\n",
+ s.preferred.clock, s.threshold - 1, s.threshold);
+
+ /* Clear: full mode list and preferred must be restored */
+ present = preferred_mode_present_at_limit(d, out, s.connector_id,
+ &s.preferred, 0, &count);
+ igt_info("[limit-boundary] After clear (limit=0): modes_count=%d"
+ " preferred_present=%d pass=(count == full): %d == %d\n",
+ count, present, count, s.full_mode_count);
+ igt_assert_f(get_bw_limit(d->drm_fd, out) == 0,
+ "bw_limit not 0 after clearing\n");
+ igt_assert_f(count == s.full_mode_count,
+ "Mode count %d != original %d after clearing\n",
+ count, s.full_mode_count);
+ igt_assert_f(present,
+ "Preferred mode not restored after clearing limit\n");
+}
+
+static void test_limit_suspend(data_t *d, igt_output_t *out)
+{
+ struct igt_fb fb;
+ struct limit_setup s;
+ drmModeConnector *conn;
+ drmModeModeInfo fallback_copy;
+ drmModeModeInfo *modes[1];
+ int allocated_before, limit, allocated_pre, allocated_after;
+ char pre_path[128] = {};
+ char pre_serial[64] = {};
+ char tmp[32];
+
+ igt_connector_get_info(d->drm_fd,
+ out->config.connector->connector_id,
+ tmp, sizeof(tmp),
+ pre_serial, sizeof(pre_serial),
+ pre_path, sizeof(pre_path));
+
+ require_limit_setup(d, out, &s);
+
+ /* Modeset at preferred mode, then record allocated BW */
+ modes[0] = &s.preferred;
+ do_modeset(d, &out, 1, modes, &fb);
+ allocated_before = get_allocated_bw(d->drm_fd, out);
+ igt_info("[limit-suspend] preferred_mode=%dx%d@%d allocated_before=%d kB/s\n",
+ s.preferred.hdisplay, s.preferred.vdisplay,
+ s.preferred.vrefresh, allocated_before);
+ cleanup_outputs(d, &out, 1, &fb);
+
+ limit = s.threshold - 1;
+ set_bw_limit(d->drm_fd, out, limit);
+
+ conn = drmModeGetConnector(d->drm_fd, s.connector_id);
+ if (!conn || conn->count_modes == 0) {
+ if (conn)
+ drmModeFreeConnector(conn);
+ set_bw_limit(d->drm_fd, out, 0);
+ igt_skip("No modes available within limit=%d\n", limit);
+ }
+
+ igt_assert_f(igt_connector_find_highest_clock_mode_in(conn, &fallback_copy),
+ "No modes in filtered connector list at limit=%d\n", limit);
+ drmModeFreeConnector(conn);
+
+ modes[0] = &fallback_copy;
+ do_modeset(d, &out, 1, modes, &fb);
+
+ /*
+ * Note: bw_limit filters using 18bpp; actual BWA is at display
+ * pixel rate, so allocated_pre may exceed limit. Log the value
+ * as evidence but don't assert allocated <= limit. The meaningful
+ * check is that bw_limit is reset across suspend.
+ */
+ allocated_pre = get_allocated_bw(d->drm_fd, out);
+ igt_info("[limit-suspend] fallback_mode=%dx%d@%d limit=%d kB/s"
+ " allocated_pre=%d kB/s"
+ " (note: alloc may exceed limit due to 18bpp filter)\n",
+ fallback_copy.hdisplay, fallback_copy.vdisplay,
+ fallback_copy.vrefresh, limit, allocated_pre);
+ igt_assert_f(allocated_pre > 0,
+ "Allocated BW %d <= 0 for fallback mode\n", allocated_pre);
+
+ igt_system_suspend_autoresume(SUSPEND_STATE_MEM, SUSPEND_TEST_NONE);
+
+ out = await_tunnel_after_resume_identity(d, out, pre_path, pre_serial,
+ "limit-suspend");
+ if (!out) {
+ igt_remove_fb(d->drm_fd, &fb);
+ igt_skip("Tunnel not re-established 30s after resume\n");
+ }
+
+ /*
+ * bw_limit lives on the tunnel object; the tunnel is destroyed on
+ * suspend and re-created on resume, so the cap is reset to 0.
+ */
+ igt_assert_f(get_bw_limit(d->drm_fd, out) == 0,
+ "bw_limit not reset after resume: expected 0, got %d\n",
+ get_bw_limit(d->drm_fd, out));
+
+ allocated_after = get_allocated_bw(d->drm_fd, out);
+ igt_info("[limit-suspend] Post-resume: bw_limit=%d kB/s allocated_after=%d kB/s"
+ " allocated_pre=%d kB/s delta=%d kB/s\n",
+ get_bw_limit(d->drm_fd, out), allocated_after,
+ allocated_pre, allocated_after - allocated_pre);
+ igt_assert_f(allocated_after > 0,
+ "Allocated BW %d <= 0 after resume\n", allocated_after);
+
+ if (has_tunnel(d->drm_fd, out))
+ set_bw_limit(d->drm_fd, out, 0);
+ igt_output_set_crtc(out, NULL);
+ igt_output_override_mode(out, NULL);
+ igt_display_commit2(&d->display, COMMIT_ATOMIC);
+ igt_remove_fb(d->drm_fd, &fb);
+}
+
+/*
+ * test_bwa_re_enable - End-to-end BWA toggle lifecycle. Replaces three
+ * earlier subtests (bwa-disable / bwa-link-params / bwa-modeset):
+ *
+ * 1. Modeset preferred mode; record alloc_initial, rate_on. BWA must be
+ * enabled and allocation positive.
+ * 2. Disable BWA via debugfs (no commit). Snapshot tunnel info once
+ * and assert: bwa is off, Allocated BW == -1, "Tunnel:" header still
+ * present, rate_off > 0 (DPCD fallback path).
+ * 3. Disable display, re-enable BWA, fresh modeset on the same preferred
+ * mode. alloc_post must equal alloc_initial (same input, same group
+ * state -> deterministic), and rate_restored must equal rate_on.
+ */
+static void test_bwa_re_enable(data_t *d, igt_output_t *out)
+{
+ struct igt_fb fb;
+ char buf[TUNNEL_INFO_BUF_SIZE];
+ int alloc_initial, rate_on, rate_off, rate_restored, alloc_post;
+ int disabled_alloc;
+ bool tunnel_alive, bwa_off;
+
+ do_modeset(d, &out, 1, NULL, &fb);
+ require_bwa(d, out);
+
+ alloc_initial = get_allocated_bw(d->drm_fd, out);
+ rate_on = igt_get_max_link_rate(d->drm_fd, out);
+ igt_info("[bwa-re-enable] Stage1 alloc_initial=%d kB/s rate_on=%d kbps\n",
+ alloc_initial, rate_on);
+ igt_assert_f(alloc_initial > 0,
+ "Expected positive allocated BW, got %d\n", alloc_initial);
+ igt_assert_f(rate_on > 0, "Max link rate %d invalid\n", rate_on);
+
+ /*
+ * Stage 2: disable BWA and snapshot the resulting state once. Reading
+ * tunnel info / link rate / bwa_enabled all in one go avoids racing
+ * the debugfs against any background activity that might mutate state
+ * between separate reads.
+ */
+ set_bwa_enabled(d->drm_fd, out, false);
+ read_tunnel_info(d->drm_fd, out, buf, sizeof(buf));
+ bwa_off = !get_bwa_enabled(d->drm_fd, out);
+ disabled_alloc = parse_tunnel_field_int(buf, "Allocated BW:");
+ tunnel_alive = strncmp(buf, "Tunnel:", 7) == 0;
+ rate_off = igt_get_max_link_rate(d->drm_fd, out);
+ igt_info("[bwa-re-enable] Stage2 (BWA off): bwa_off=%d alloc=%d (expect -1)"
+ " tunnel_alive=%d rate_off=%d kbps\n",
+ bwa_off, disabled_alloc, tunnel_alive, rate_off);
+ igt_assert_f(bwa_off, "BWA still enabled after disabling\n");
+ igt_assert_f(disabled_alloc == -1,
+ "Allocated BW should be -1 when BWA disabled, got %d\n",
+ disabled_alloc);
+ igt_assert_f(tunnel_alive, "Tunnel disappeared after BWA disable\n");
+ igt_assert_f(rate_off > 0,
+ "Max link rate %d invalid after BWA off\n", rate_off);
+
+ /*
+ * Stage 3: bring the display down, re-enable BWA on the quiesced
+ * tunnel, then bring it back up. BWA negotiation with the USB4 host
+ * runs as part of the display-enable transition, so a fresh modeset
+ * is what verifies the knob took effect.
+ */
+ cleanup_outputs(d, &out, 1, &fb);
+ set_bwa_enabled(d->drm_fd, out, true);
+ igt_assert_f(get_bwa_enabled(d->drm_fd, out), "BWA not re-enabled\n");
+ do_modeset(d, &out, 1, NULL, &fb);
+
+ alloc_post = get_allocated_bw(d->drm_fd, out);
+ rate_restored = igt_get_max_link_rate(d->drm_fd, out);
+ igt_info("[bwa-re-enable] Stage3 (re-enable+fresh modeset):"
+ " alloc_post=%d kB/s estimated=%d kB/s rate_restored=%d kbps"
+ " pass=(alloc_post == alloc_initial && rate_restored == rate_on):"
+ " %d == %d && %d == %d\n",
+ alloc_post, get_estimated_bw(d->drm_fd, out), rate_restored,
+ alloc_post, alloc_initial, rate_restored, rate_on);
+ igt_assert_f(alloc_post > 0,
+ "Allocated BW %d <= 0 after re-enable\n", alloc_post);
+ igt_assert_f(get_estimated_bw(d->drm_fd, out) > 0,
+ "Estimated BW <= 0 after re-enable\n");
+ igt_assert_f(alloc_post == alloc_initial,
+ "Post-re-enable alloc %d != initial %d\n",
+ alloc_post, alloc_initial);
+ igt_assert_f(rate_restored == rate_on,
+ "Max link rate after re-enable (%d) != original (%d)\n",
+ rate_restored, rate_on);
+
+ cleanup_outputs(d, &out, 1, &fb);
+}
+
+/*
+ * test_bwa_cycle - Stress repeated debugfs-only BWA toggle (no modeset
+ * inside the loop) and verify that BW allocation is unchanged once a
+ * fresh modeset re-establishes the link. This exercises rapid
+ * debugfs-knob handling, not BWA renegotiation.
+ */
+static void test_bwa_cycle(data_t *d, igt_output_t *out)
+{
+ struct igt_fb fb;
+ int original, post, i;
+
+ do_modeset(d, &out, 1, NULL, &fb);
+ require_bwa(d, out);
+
+ original = get_allocated_bw(d->drm_fd, out);
+ igt_info("[bwa-cycle] Initial: original_bw=%d kB/s n_cycles=%d\n",
+ original, BWA_CYCLE_COUNT);
+ igt_assert_f(original > 0,
+ "Expected positive allocated BW, got %d\n", original);
+
+ for (i = 0; i < BWA_CYCLE_COUNT; i++) {
+ set_bwa_enabled(d->drm_fd, out, false);
+ igt_assert_f(!get_bwa_enabled(d->drm_fd, out),
+ "BWA still enabled in cycle %d\n", i);
+ /*
+ * Sanity-check that the knob has the expected debugfs side
+ * effect (Allocated BW becomes -1) once per run, not every
+ * iteration - one reading per cycle is enough overhead.
+ */
+ if (i == 0)
+ igt_assert_f(get_allocated_bw(d->drm_fd, out) == -1,
+ "Allocated BW != -1 after first disable\n");
+ set_bwa_enabled(d->drm_fd, out, true);
+ igt_assert_f(get_bwa_enabled(d->drm_fd, out),
+ "BWA not re-enabled in cycle %d\n", i);
+ }
+
+ cleanup_outputs(d, &out, 1, &fb);
+ do_modeset(d, &out, 1, NULL, &fb);
+
+ post = get_allocated_bw(d->drm_fd, out);
+ igt_info("[bwa-cycle] After %d cycles + fresh modeset: post_bw=%d kB/s"
+ " pass=(post == original): %d == %d\n",
+ BWA_CYCLE_COUNT, post, post, original);
+ igt_assert_f(post > 0,
+ "Allocated BW %d <= 0 after cycles\n", post);
+ igt_assert_f(post == original,
+ "BW drifted after %d BWA cycles: orig=%d post=%d\n",
+ BWA_CYCLE_COUNT, original, post);
+
+ cleanup_outputs(d, &out, 1, &fb);
+}
+
+static void test_dual_bw_sum(data_t *d)
+{
+ igt_output_t *outs[2] = { d->output, d->output2 };
+ struct igt_fb fbs[2] = {};
+ int alloc_a, alloc_b, estimated_a, estimated_b;
+ int group_a, group_b, group_free_a, group_free_b;
+
+ do_modeset(d, outs, 2, NULL, fbs);
+
+ group_a = get_tunnel_group_id(d->drm_fd, outs[0]);
+ group_b = get_tunnel_group_id(d->drm_fd, outs[1]);
+ igt_assert_f(group_a >= 0 && group_b >= 0,
+ "Invalid tunnel group IDs: %d vs %d\n", group_a, group_b);
+ igt_assert_f(group_a == group_b,
+ "Tunnels have different group IDs: %d vs %d\n",
+ group_a, group_b);
+
+ alloc_a = get_allocated_bw(d->drm_fd, outs[0]);
+ alloc_b = get_allocated_bw(d->drm_fd, outs[1]);
+ estimated_a = get_estimated_bw(d->drm_fd, outs[0]);
+ estimated_b = get_estimated_bw(d->drm_fd, outs[1]);
+
+ /*
+ * Per-tunnel "Estimated BW" reported by the TBT Connection Manager
+ * is (this tunnel's allocated BW) + (group free BW). Two tunnels in
+ * the same group therefore see the same group_free, even though
+ * their per-tunnel estimated values legitimately differ when their
+ * allocations differ. The shared-group invariant is:
+ *
+ * estimated_a - alloc_a == estimated_b - alloc_b == group_free
+ *
+ * and that group_free must be non-negative.
+ */
+ group_free_a = estimated_a - alloc_a;
+ group_free_b = estimated_b - alloc_b;
+ igt_info("[dual-bw-sum] group=%d alloc_a=%d estimated_a=%d "
+ "alloc_b=%d estimated_b=%d group_free_a=%d group_free_b=%d\n",
+ group_a, alloc_a, estimated_a, alloc_b, estimated_b,
+ group_free_a, group_free_b);
+ igt_assert_f(alloc_a > 0 && alloc_b > 0,
+ "Both outputs must have positive allocated BW (got %d, %d)\n",
+ alloc_a, alloc_b);
+ igt_assert_f(group_free_a == group_free_b,
+ "Grouped tunnels report different free BW (%d vs %d). "
+ "estimated_a=%d alloc_a=%d estimated_b=%d alloc_b=%d\n",
+ group_free_a, group_free_b,
+ estimated_a, alloc_a, estimated_b, alloc_b);
+ igt_assert_f(group_free_a >= 0,
+ "Negative group free BW (%d): allocations overran the pool\n",
+ group_free_a);
+
+ cleanup_outputs(d, outs, 2, fbs);
+}
+
+/*
+ * test_dual_limit_isolation - Per-tunnel bw_limit isolation within a shared
+ * group.
+ *
+ * The strong contract being tested: bw_limit is per-tunnel state
+ * (tunnel->bw_limit), not group state, even when two tunnels share one USB4
+ * group's BW pool. Writing to A's bw_limit debugfs file must:
+ *
+ * (a) clip A's connector mode list (modes whose 18bpp BW exceed the cap
+ * are filtered from drmModeGetConnector() on A).
+ * (b) NOT clip B's connector mode list (B's mode count + preferred mode
+ * are unchanged at the moment A's cap is set).
+ * (c) After a retrigger that pins B to its prior mode, B's mode is
+ * preserved and B's allocation drifts by at most one granularity
+ * step (group BW accounting can redistribute the freed BW within
+ * the group, which can shift B's bucket; that is allowed).
+ *
+ * This complements dual-bw-sum (which tests the group BW invariant) and
+ * mst-limit-fallback (which tests bw_limit on a single tunnel with two
+ * streams). Neither covers the per-tunnel-vs-group scope of bw_limit.
+ */
+static void test_dual_limit_isolation(data_t *d)
+{
+ igt_output_t *outs[2] = { d->output, d->output2 };
+ struct igt_fb fbs[2] = {}, fbs2[2] = {};
+ drmModeModeInfo *modes[2] = {};
+ drmModeModeInfo limited_mode, mode_a_before, mode_b_before;
+ drmModeConnector *conn;
+ uint32_t connector_id_a, connector_id_b;
+ int alloc_a_before, alloc_b_before, alloc_a_after, alloc_b_after, limit_a;
+ int gran_b, delta_b;
+ int b_modes_unfiltered, b_modes_under_a_limit;
+ int group_a, group_b;
+ bool b_preferred_under_a_limit;
+ const drmModeModeInfo *mode_b_after;
+
+ do_modeset(d, outs, 2, NULL, fbs);
+
+ /*
+ * Sanity: the require_dual_sst_same_group() helper at the call site
+ * already filters by group, but assert it inside the test too so the
+ * trace is unambiguous when looking at logs.
+ */
+ group_a = get_tunnel_group_id(d->drm_fd, outs[0]);
+ group_b = get_tunnel_group_id(d->drm_fd, outs[1]);
+ igt_assert_f(group_a >= 0 && group_b >= 0 && group_a == group_b,
+ "Pair not in same group: group_a=%d group_b=%d\n",
+ group_a, group_b);
+
+ mode_a_before = *igt_output_get_mode(outs[0]);
+ mode_b_before = *igt_output_get_mode(outs[1]);
+ alloc_a_before = get_allocated_bw(d->drm_fd, outs[0]);
+ alloc_b_before = get_allocated_bw(d->drm_fd, outs[1]);
+ gran_b = get_granularity(d->drm_fd, outs[1]);
+ limit_a = alloc_a_before / 2;
+ igt_require_f(limit_a > 0, "Allocated BW too small for test\n");
+
+ /*
+ * Probe B's connector once with no cap on A so we can compare the
+ * mode-list count + preferred-mode presence after applying A's cap.
+ */
+ connector_id_a = outs[0]->config.connector->connector_id;
+ connector_id_b = outs[1]->config.connector->connector_id;
+
+ conn = drmModeGetConnector(d->drm_fd, connector_id_b);
+ igt_assert_f(conn, "Failed to probe B unfiltered\n");
+ b_modes_unfiltered = conn->count_modes;
+ drmModeFreeConnector(conn);
+
+ /*
+ * Apply limit to tunnel A only, then probe both connectors:
+ * - A's filtered list: pick the highest-clock surviving mode.
+ * - B's filtered list: must be unchanged (count + preferred mode
+ * present), which is the per-tunnel-scope assertion.
+ */
+ set_bw_limit(d->drm_fd, outs[0], limit_a);
+
+ conn = drmModeGetConnector(d->drm_fd, connector_id_a);
+ if (!conn || conn->count_modes == 0) {
+ if (conn)
+ drmModeFreeConnector(conn);
+ set_bw_limit(d->drm_fd, outs[0], 0);
+ igt_skip("No modes on A after applying bw_limit\n");
+ }
+ if (!igt_connector_find_highest_clock_mode_in(conn, &limited_mode)) {
+ drmModeFreeConnector(conn);
+ set_bw_limit(d->drm_fd, outs[0], 0);
+ igt_skip("No modes available within limit=%d\n", limit_a);
+ }
+ drmModeFreeConnector(conn);
+
+ conn = drmModeGetConnector(d->drm_fd, connector_id_b);
+ igt_assert_f(conn, "Failed to reprobe B under A's cap\n");
+ b_modes_under_a_limit = conn->count_modes;
+ b_preferred_under_a_limit =
+ igt_connector_mode_in_list(conn, &mode_b_before);
+ drmModeFreeConnector(conn);
+
+ igt_info("[dual-limit-isolation] group=%d "
+ "B_modes: unfiltered=%d under_A_limit=%d "
+ "B_preferred_under_A_limit=%d "
+ "A_clk_before=%d A_clk_under_limit=%d limit_a=%d\n",
+ group_a, b_modes_unfiltered, b_modes_under_a_limit,
+ b_preferred_under_a_limit,
+ mode_a_before.clock, limited_mode.clock, limit_a);
+
+ /* Per-tunnel scope: A's cap must NOT shrink B's mode list. */
+ igt_assert_f(b_modes_under_a_limit == b_modes_unfiltered,
+ "B's mode count changed when A was capped: "
+ "unfiltered=%d under_A_limit=%d (bw_limit leaked from A to B)\n",
+ b_modes_unfiltered, b_modes_under_a_limit);
+ igt_assert_f(b_preferred_under_a_limit,
+ "B's previously-active mode (clk=%d) was filtered out "
+ "when A was capped (bw_limit leaked from A to B)\n",
+ mode_b_before.clock);
+
+ /* A's cap took effect on A's own list. */
+ igt_assert_f(limited_mode.clock < mode_a_before.clock,
+ "A's mode list was not constrained by its bw_limit: "
+ "limited_clock=%d, original_clock=%d\n",
+ limited_mode.clock, mode_a_before.clock);
+
+ /*
+ * Pin tunnel B to its prior mode and bring A up at the limited
+ * mode. After commit, B's mode must be preserved and B's
+ * allocation must stay within one granularity step (the freed
+ * BW from A may shift B's BWA bucket via group accounting).
+ */
+ modes[0] = &limited_mode;
+ modes[1] = &mode_b_before;
+ retrigger_modeset(d, outs, 2, modes, fbs, fbs2);
+
+ alloc_a_after = get_allocated_bw(d->drm_fd, outs[0]);
+ alloc_b_after = get_allocated_bw(d->drm_fd, outs[1]);
+ mode_b_after = igt_output_get_mode(outs[1]);
+ delta_b = abs(alloc_b_after - alloc_b_before);
+
+ igt_info("[dual-limit-isolation] post-retrigger: "
+ "alloc_a: %d->%d alloc_b: %d->%d (gran=%d delta=%d) "
+ "B_clk: %d->%d\n",
+ alloc_a_before, alloc_a_after,
+ alloc_b_before, alloc_b_after, gran_b, delta_b,
+ mode_b_before.clock, mode_b_after->clock);
+ igt_assert_f(alloc_a_after > 0,
+ "A allocated BW %d <= 0 after limited modeset\n",
+ alloc_a_after);
+ igt_assert_f(mode_b_after->clock == mode_b_before.clock,
+ "B mode changed across A's cap retrigger: "
+ "before clk=%d after clk=%d\n",
+ mode_b_before.clock, mode_b_after->clock);
+ igt_assert_f(alloc_b_after > 0,
+ "B alloc invalid after retrigger: %d\n", alloc_b_after);
+ igt_assert_f(delta_b <= gran_b,
+ "B alloc drifted beyond one granularity step: "
+ "before=%d after=%d gran=%d delta=%d\n",
+ alloc_b_before, alloc_b_after, gran_b, delta_b);
+
+ set_bw_limit(d->drm_fd, outs[0], 0);
+ cleanup_outputs(d, outs, 2, fbs2);
+}
+
+static void test_dual_bwa_disable(data_t *d)
+{
+ igt_output_t *outs[2] = { d->output, d->output2 };
+ struct igt_fb fbs[2] = {};
+ int alloc_b_before, alloc_b_after, gran_b, delta_b;
+ int group_a, group_b;
+
+ do_modeset(d, outs, 2, NULL, fbs);
+ require_bwa(d, outs[0]);
+ require_bwa(d, outs[1]);
+
+ group_a = get_tunnel_group_id(d->drm_fd, outs[0]);
+ group_b = get_tunnel_group_id(d->drm_fd, outs[1]);
+ igt_require_f(group_a >= 0 && group_b >= 0,
+ "Invalid tunnel group IDs: %d vs %d\n",
+ group_a, group_b);
+ igt_require_f(group_a == group_b,
+ "Need two tunnels in same group, got %d vs %d\n",
+ group_a, group_b);
+
+ alloc_b_before = get_allocated_bw(d->drm_fd, outs[1]);
+ gran_b = get_granularity(d->drm_fd, outs[1]);
+
+ set_bwa_enabled(d->drm_fd, outs[0], false);
+
+ igt_assert_f(!get_bwa_enabled(d->drm_fd, outs[0]),
+ "Tunnel A BWA still enabled\n");
+ igt_assert_f(get_bwa_enabled(d->drm_fd, outs[1]),
+ "Tunnel B BWA was also disabled\n");
+ igt_assert_f(get_allocated_bw(d->drm_fd, outs[0]) == -1,
+ "Tunnel A Allocated BW != -1 after BWA disable\n");
+
+ alloc_b_after = get_allocated_bw(d->drm_fd, outs[1]);
+ delta_b = abs(alloc_b_after - alloc_b_before);
+ igt_info("[dual-bwa-disable] alloc_b: before=%d after=%d gran_b=%d "
+ "delta=%d\n",
+ alloc_b_before, alloc_b_after, gran_b, delta_b);
+ igt_assert_f(alloc_b_after > 0,
+ "Tunnel B alloc invalid after disabling A's BWA: %d\n",
+ alloc_b_after);
+ igt_assert_f(delta_b <= gran_b,
+ "Tunnel B alloc drifted beyond granularity: "
+ "before=%d after=%d gran=%d\n",
+ alloc_b_before, alloc_b_after, gran_b);
+
+ /*
+ * Re-enable tunnel A BWA on a quiesced display. BWA negotiation with
+ * the USB4 host runs as part of the display-enable transition, so we
+ * first bring the displays down, flip the bw_alloc_enable knob, and
+ * bring them back up. The fresh modeset is what verifies that
+ * allocation can be restored after re-enabling the knob.
+ */
+ cleanup_outputs(d, outs, 2, fbs);
+ set_bwa_enabled(d->drm_fd, outs[0], true);
+ igt_assert_f(get_bwa_enabled(d->drm_fd, outs[0]),
+ "Tunnel A BWA not re-enabled\n");
+ do_modeset(d, outs, 2, NULL, fbs);
+ igt_assert_f(get_allocated_bw(d->drm_fd, outs[0]) > 0,
+ "Tunnel A alloc not restored after BWA re-enable\n");
+
+ cleanup_outputs(d, outs, 2, fbs);
+}
+
+/*
+ * test_mst_basic - Two MST streams share one tunnel object so both MST
+ * connectors expose the same per-tunnel debugfs allocation. Verify that
+ * (a) the two connectors report the same allocated BW, (b) the value is
+ * positive. We deliberately do not compare the allocation to a 18bpp
+ * pixel-rate estimate of either stream because the kernel may use DSC
+ * to compress streams below 18bpp aggregate, making such estimates
+ * fragile.
+ */
+static void test_mst_basic(data_t *d)
+{
+ struct igt_fb fbs[2] = {};
+ int alloc0, alloc1;
+
+ do_modeset(d, d->mst_outputs, 2, NULL, fbs);
+
+ alloc0 = get_allocated_bw(d->drm_fd, d->mst_outputs[0]);
+ alloc1 = get_allocated_bw(d->drm_fd, d->mst_outputs[1]);
+ igt_info("[mst-basic] alloc0=%d kB/s alloc1=%d kB/s\n", alloc0, alloc1);
+ igt_assert_f(alloc0 > 0,
+ "Allocated BW %d <= 0 with 2 MST streams\n", alloc0);
+ igt_assert_f(alloc0 == alloc1,
+ "MST connectors under same tunnel report different "
+ "allocations: %d vs %d\n", alloc0, alloc1);
+
+ cleanup_outputs(d, d->mst_outputs, 2, fbs);
+}
+
+/*
+ * test_mst_modeset_bw - Raise stream 0's mode from lowest- to preferred-
+ * clock while stream 1 keeps whatever do_modeset() picks by default.
+ * Aggregate allocation should not decrease. Strict-greater is avoided
+ * because BWA granularity rounding can make distinct modes share an
+ * allocation bucket.
+ */
+static void test_mst_modeset_bw(data_t *d)
+{
+ struct igt_fb fbs_low0[2] = {}, fbs_high0[2] = {};
+ drmModeModeInfo low0_copy, high0_copy;
+ drmModeModeInfo *modes[2];
+ int bw_low0_default1, bw_high0_default1;
+
+ igt_require_f(d->mst_outputs[0]->config.connector->count_modes >= 2,
+ "MST output 0 needs at least 2 modes\n");
+ igt_require_f(igt_connector_find_lowest_clock_mode(d->mst_outputs[0], &low0_copy) &&
+ igt_connector_find_preferred_mode(d->mst_outputs[0], &high0_copy),
+ "Could not locate low / preferred modes on MST output 0\n");
+ igt_require_f(high0_copy.clock > low0_copy.clock,
+ "Preferred mode clock %d not greater than lowest clock %d "
+ "on MST output 0\n", high0_copy.clock, low0_copy.clock);
+
+ modes[0] = &low0_copy;
+ modes[1] = NULL;
+ do_modeset(d, d->mst_outputs, 2, modes, fbs_low0);
+ bw_low0_default1 = get_allocated_bw(d->drm_fd, d->mst_outputs[0]);
+
+ cleanup_outputs(d, d->mst_outputs, 2, fbs_low0);
+ modes[0] = &high0_copy;
+ modes[1] = NULL;
+ do_modeset(d, d->mst_outputs, 2, modes, fbs_high0);
+ bw_high0_default1 = get_allocated_bw(d->drm_fd, d->mst_outputs[0]);
+
+ igt_info("[mst-modeset-bw] bw_low0_default1=%d bw_high0_default1=%d "
+ "low0_clk=%d high0_clk=%d\n",
+ bw_low0_default1, bw_high0_default1,
+ low0_copy.clock, high0_copy.clock);
+ igt_assert_f(bw_high0_default1 >= bw_low0_default1,
+ "BW decreased when raising stream 0's mode: low=%d high=%d\n",
+ bw_low0_default1, bw_high0_default1);
+
+ cleanup_outputs(d, d->mst_outputs, 2, fbs_high0);
+}
+
+/*
+ * test_mst_partial_disable - Disabling one MST stream leaves the tunnel
+ * alive on the remaining stream. Allocation must stay positive and not
+ * grow. Strict-less-than is avoided because granularity rounding can
+ * make the residual allocation share a bucket with the two-stream value.
+ */
+static void test_mst_partial_disable(data_t *d)
+{
+ struct igt_fb fbs[2] = {};
+ int bw_both, bw_one;
+
+ do_modeset(d, d->mst_outputs, 2, NULL, fbs);
+ bw_both = get_allocated_bw(d->drm_fd, d->mst_outputs[0]);
+ igt_assert_f(bw_both > 0, "Expected positive BW with 2 streams\n");
+
+ igt_output_set_crtc(d->mst_outputs[1], NULL);
+ igt_display_commit2(&d->display, COMMIT_ATOMIC);
+ igt_remove_fb(d->drm_fd, &fbs[1]);
+
+ igt_assert_f(has_tunnel(d->drm_fd, d->mst_outputs[0]),
+ "Tunnel disappeared after partial MST disable\n");
+
+ bw_one = get_allocated_bw(d->drm_fd, d->mst_outputs[0]);
+ igt_info("[mst-partial-disable] bw_both=%d bw_one=%d\n",
+ bw_both, bw_one);
+ igt_assert_f(bw_one > 0,
+ "Allocated BW %d <= 0 after partial MST disable\n", bw_one);
+ igt_assert_f(bw_one <= bw_both,
+ "BW after partial disable increased: one=%d both=%d\n",
+ bw_one, bw_both);
+
+ cleanup_outputs(d, d->mst_outputs, 1, fbs);
+}
+
+/*
+ * mst_outputs_remapped_with_bw - True iff both cached MST output pointers
+ * are non-NULL, both expose a tunnel via debugfs, and at least one of them
+ * has a positive Allocated BW. The "at least one" rule reflects the known
+ * resume limitation: intel_dp_tunnel_resume() only re-allocates BW for the
+ * single crtc_state it's passed (see "TODO: Add support for MST" in
+ * drivers/gpu/drm/i915/display/intel_dp_tunnel.c::intel_dp_tunnel_resume()).
+ */
+static bool mst_outputs_remapped_with_bw(data_t *d)
+{
+ if (!d->mst_outputs[0] || !d->mst_outputs[1])
+ return false;
+
+ if (!has_tunnel(d->drm_fd, d->mst_outputs[0]) ||
+ !has_tunnel(d->drm_fd, d->mst_outputs[1]))
+ return false;
+
+ return get_allocated_bw(d->drm_fd, d->mst_outputs[0]) > 0 ||
+ get_allocated_bw(d->drm_fd, d->mst_outputs[1]) > 0;
+}
+
+static void test_mst_suspend(data_t *d)
+{
+ struct igt_fb fbs[2] = {};
+ int bw_before, bw_after, bw_after1;
+ /*
+ * Stable pre-suspend identity (PATH + EDID serial) for both streams.
+ * After resume the kernel re-enumerates connectors with new DRM IDs;
+ * PATH and EDID serial persist and let us map old IGT pointers to
+ * new connectors without a fresh modeset (kernel retains the BW
+ * allocation). PATH is preferred (captures MST topology); EDID
+ * serial is a fallback.
+ */
+ char pre_path[2][128] = {};
+ char pre_serial[2][64] = {};
+ char pre_name[2][32] = {};
+ int i;
+
+ for (i = 0; i < 2; i++) {
+ uint32_t cid = d->mst_outputs[i]->config.connector->connector_id;
+ char tmp[32];
+
+ igt_connector_get_info(d->drm_fd, cid,
+ tmp, sizeof(tmp),
+ pre_serial[i], sizeof(pre_serial[i]),
+ pre_path[i], sizeof(pre_path[i]));
+ snprintf(pre_name[i], sizeof(pre_name[i]), "%s",
+ d->mst_outputs[i]->name);
+ igt_info("[mst-suspend] pre[%d]: %s id=%u path='%s' serial='%s'\n",
+ i, pre_name[i], cid, pre_path[i], pre_serial[i]);
+ }
+
+ do_modeset(d, d->mst_outputs, 2, NULL, fbs);
+ bw_before = get_allocated_bw(d->drm_fd, d->mst_outputs[0]);
+ igt_assert_f(bw_before > 0, "Expected positive BW before suspend\n");
+
+ igt_system_suspend_autoresume(SUSPEND_STATE_MEM, SUSPEND_TEST_NONE);
+
+ /*
+ * Fast path: poll up to 3s for cached MST pointers to regain a
+ * working tunnel - that means the kernel preserved their DRM IDs.
+ */
+ igt_until_timeout(3) {
+ if (mst_outputs_remapped_with_bw(d))
+ break;
+ usleep(100 * 1000);
+ }
+
+ if (mst_outputs_remapped_with_bw(d)) {
+ igt_info("[mst-suspend] cached pointers survived resume\n");
+ } else {
+ bool mst_found = false;
+
+ /*
+ * Refresh IGT's connector/output cache. The kernel may have
+ * re-created MST connectors with new DRM IDs while the
+ * restored display state is still active; we keep the FB
+ * handles and only rebuild the IGT display object before
+ * remapping outputs. Drop the stale igt_output_t * pointers
+ * first so the cleanup-by-name exit handler doesn't race
+ * post-fini access.
+ */
+ d->mst_outputs[0] = NULL;
+ d->mst_outputs[1] = NULL;
+ igt_display_fini(&d->display);
+ igt_display_require(&d->display, d->drm_fd);
+
+ igt_until_timeout(60) {
+ uint32_t new_ids[2] = {0, 0};
+ bool mapped[2] = {false, false};
+
+ igt_connector_reprobe_all(d->drm_fd);
+
+ for (i = 0; i < 2; i++) {
+ if (pre_path[i][0] &&
+ igt_connector_find_by_path(d->drm_fd,
+ pre_path[i],
+ &new_ids[i])) {
+ mapped[i] = true;
+ continue;
+ }
+ if (pre_serial[i][0] &&
+ igt_connector_find_by_serial(d->drm_fd,
+ pre_serial[i],
+ &new_ids[i])) {
+ mapped[i] = true;
+ }
+ }
+
+ if (!mapped[0] || !mapped[1]) {
+ usleep(500 * 1000);
+ continue;
+ }
+
+ /*
+ * Reject mapping both pre-suspend identities to the
+ * same connector_id - happens if a sink reports an
+ * empty / duplicated EDID serial and PATH lookup
+ * fell back to that.
+ */
+ if (new_ids[0] == new_ids[1]) {
+ igt_info("[mst-suspend] both streams mapped to "
+ "same connector id=%u, retrying\n",
+ new_ids[0]);
+ usleep(500 * 1000);
+ continue;
+ }
+
+ for (i = 0; i < 2; i++)
+ d->mst_outputs[i] =
+ igt_connector_find_output_by_id(&d->display,
+ new_ids[i]);
+
+ if (mst_outputs_remapped_with_bw(d)) {
+ igt_info("[mst-suspend] remapped: "
+ "pre=%s->%s id=%u pre=%s->%s id=%u\n",
+ pre_name[0],
+ d->mst_outputs[0]->name, new_ids[0],
+ pre_name[1],
+ d->mst_outputs[1]->name, new_ids[1]);
+ mst_found = true;
+ break;
+ }
+ usleep(500 * 1000);
+ }
+ if (!mst_found) {
+ igt_remove_fb(d->drm_fd, &fbs[0]);
+ igt_remove_fb(d->drm_fd, &fbs[1]);
+ igt_skip("MST outputs not re-mapped 60s after resume "
+ "(pre=%s,%s)\n", pre_name[0], pre_name[1]);
+ }
+ }
+
+ /*
+ * Known limitation: intel_dp_tunnel_resume() takes a single
+ * crtc_state and re-allocates BW only for that pipe (see
+ * drivers/gpu/drm/i915/display/intel_dp_tunnel.c, the
+ * "TODO: Add support for MST" hunk in intel_dp_tunnel_resume()).
+ * MST sinks therefore see only one stream's BW re-allocated post-
+ * resume; pick whichever connector has the positive value.
+ */
+ bw_after = get_allocated_bw(d->drm_fd, d->mst_outputs[0]);
+ bw_after1 = get_allocated_bw(d->drm_fd, d->mst_outputs[1]);
+ if (bw_after <= 0)
+ bw_after = bw_after1;
+ igt_info("[mst-suspend] BW before=%d after[0]=%d after[1]=%d "
+ "(partial resume expected)\n",
+ bw_before, get_allocated_bw(d->drm_fd, d->mst_outputs[0]),
+ bw_after1);
+ igt_assert_f(bw_after > 0,
+ "MST allocated BW <= 0 on both connectors after resume\n");
+
+ cleanup_outputs(d, d->mst_outputs, 2, fbs);
+}
+
+/*
+ * mst_clear_limits - Clear bw_limit on all MST children up to and
+ * including index @upto. Safe to call from skip paths.
+ */
+static void mst_clear_limits(data_t *d, int upto)
+{
+ int k;
+
+ for (k = 0; k <= upto; k++)
+ set_bw_limit(d->drm_fd, d->mst_outputs[k], 0);
+}
+
+static void test_mst_limit_fallback(data_t *d)
+{
+ struct igt_fb fbs[2] = {}, fbs2[2] = {};
+ drmModeModeInfo best_modes[2], pref_modes[2];
+ drmModeModeInfo *modes[2];
+ int bw_both, limit, bw_after;
+ igt_output_t *parent = d->mst_outputs[0];
+ int i, min_pref_18bpp;
+ bool active_modeset = false;
+ const char *skip_reason = NULL;
+ char skip_msg[160] = {};
+
+ do_modeset(d, d->mst_outputs, 2, NULL, fbs);
+ active_modeset = true;
+ bw_both = get_allocated_bw(d->drm_fd, parent);
+ igt_assert_f(bw_both > 0, "Expected positive BW with 2 MST streams\n");
+
+ /*
+ * bw_limit filters modes using 18bpp minimum per
+ * intel_dp_mode_valid_format(). Compute the 18bpp BW needed for
+ * each stream's preferred mode, then set a limit one kB/s below
+ * the smaller of the two so BOTH preferred modes are filtered
+ * out on each connector but as many fallback modes as possible
+ * remain available.
+ */
+ min_pref_18bpp = INT_MAX;
+ for (i = 0; i < 2; i++) {
+ if (!igt_connector_find_preferred_mode(d->mst_outputs[i],
+ &pref_modes[i])) {
+ snprintf(skip_msg, sizeof(skip_msg),
+ "No preferred mode on MST output %d\n", i);
+ skip_reason = skip_msg;
+ goto out;
+ }
+ min_pref_18bpp = min(min_pref_18bpp,
+ (int)(pref_modes[i].clock * 18 / 8));
+ }
+ limit = min_pref_18bpp - 1;
+ if (limit <= 0) {
+ skip_reason = "Cannot derive meaningful limit\n";
+ goto out;
+ }
+
+ /*
+ * The MST connectors share a single tunnel object, so bw_limit is
+ * one knob: setting it via the parent connector is sufficient for
+ * every child's mode list to be re-filtered. We still probe each
+ * child connector independently because each has its own native
+ * mode set.
+ */
+ set_bw_limit(d->drm_fd, parent, limit);
+ for (i = 0; i < 2; i++) {
+ uint32_t cid;
+ drmModeConnector *conn;
+
+ cid = d->mst_outputs[i]->config.connector->connector_id;
+ conn = drmModeGetConnector(d->drm_fd, cid);
+ if (!conn || conn->count_modes == 0) {
+ if (conn)
+ drmModeFreeConnector(conn);
+ snprintf(skip_msg, sizeof(skip_msg),
+ "No modes left on MST output %d at limit=%d\n",
+ i, limit);
+ skip_reason = skip_msg;
+ goto out;
+ }
+ if (!igt_connector_find_highest_clock_mode_in(conn,
+ &best_modes[i])) {
+ drmModeFreeConnector(conn);
+ snprintf(skip_msg, sizeof(skip_msg),
+ "No usable fallback on MST output %d at limit=%d\n",
+ i, limit);
+ skip_reason = skip_msg;
+ goto out;
+ }
+ igt_info("[mst-limit-fallback] out%d: pref=%dx%d@%d"
+ " best_within_limit=%dx%d@%d limit=%d kB/s\n",
+ i, pref_modes[i].hdisplay, pref_modes[i].vdisplay,
+ pref_modes[i].vrefresh,
+ best_modes[i].hdisplay, best_modes[i].vdisplay,
+ best_modes[i].vrefresh, limit);
+ if (best_modes[i].clock >= pref_modes[i].clock) {
+ drmModeFreeConnector(conn);
+ snprintf(skip_msg, sizeof(skip_msg),
+ "Preferred mode not filtered on out%d "
+ "(limit %d too generous)\n", i, limit);
+ skip_reason = skip_msg;
+ goto out;
+ }
+ modes[i] = &best_modes[i];
+ drmModeFreeConnector(conn);
+ }
+
+ cleanup_outputs(d, d->mst_outputs, 2, fbs);
+ active_modeset = false;
+ do_modeset(d, d->mst_outputs, 2, modes, fbs2);
+ active_modeset = true;
+ bw_after = get_allocated_bw(d->drm_fd, parent);
+
+ /*
+ * Primary signal that the cap took effect: each stream picked a
+ * strictly lower-clock mode (already asserted above). bw_after
+ * is logged as supporting evidence; granularity rounding can
+ * legitimately leave the aggregate in the same bucket, so a
+ * strict-decrease assert here would be flaky.
+ */
+ igt_info("[mst-limit-fallback] bw_both=%d kB/s limit=%d kB/s"
+ " bw_after=%d kB/s pass=(bw_after > 0 && <= bw_both): %d, %d\n",
+ bw_both, limit, bw_after, bw_after, bw_both);
+ igt_assert_f(bw_after > 0,
+ "MST allocated BW %d <= 0 after limited modeset\n",
+ bw_after);
+ igt_assert_f(bw_after <= bw_both,
+ "MST BW after limit (%d) > pre-limit (%d)\n",
+ bw_after, bw_both);
+
+ mst_clear_limits(d, 1);
+ cleanup_outputs(d, d->mst_outputs, 2, fbs2);
+ return;
+
+out:
+ mst_clear_limits(d, 1);
+ if (active_modeset)
+ cleanup_outputs(d, d->mst_outputs, 2, fbs);
+ igt_skip("%s", skip_reason);
+}
+
+static void test_mst_bwa_re_enable(data_t *d)
+{
+ struct igt_fb fbs[2] = {};
+ igt_output_t *parent = d->mst_outputs[0];
+ int bw_both, granularity, post, disabled_bw;
+
+ do_modeset(d, d->mst_outputs, 2, NULL, fbs);
+ require_bwa(d, parent);
+
+ bw_both = get_allocated_bw(d->drm_fd, parent);
+ granularity = get_granularity(d->drm_fd, parent);
+ igt_assert_f(bw_both > 0, "Expected positive BW with 2 MST streams\n");
+ igt_assert_f(granularity > 0,
+ "Invalid BW granularity: %d\n", granularity);
+
+ set_bwa_enabled(d->drm_fd, parent, false);
+ disabled_bw = get_allocated_bw(d->drm_fd, parent);
+ igt_assert_f(!get_bwa_enabled(d->drm_fd, parent),
+ "BWA still enabled after disabling\n");
+ igt_assert_f(disabled_bw == -1,
+ "Allocated BW should be -1 after BWA disable, got %d\n",
+ disabled_bw);
+
+ /*
+ * Re-enable BWA and trigger a fresh modeset for all MST streams.
+ * BWA is re-allocated on the display-enable (off->on) path; toggling
+ * bw_alloc_enable with the display active does not re-negotiate BWA.
+ */
+ set_bwa_enabled(d->drm_fd, parent, true);
+ igt_assert_f(get_bwa_enabled(d->drm_fd, parent),
+ "BWA not re-enabled\n");
+ cleanup_outputs(d, d->mst_outputs, 2, fbs);
+ do_modeset(d, d->mst_outputs, 2, NULL, fbs);
+
+ post = get_allocated_bw(d->drm_fd, parent);
+ igt_info("[mst-bwa-re-enable] bw_both=%d kB/s post=%d kB/s"
+ " pass=(post == bw_both): %d == %d\n",
+ bw_both, post, post, bw_both);
+ igt_assert_f(post > 0,
+ "Allocated BW %d <= 0 after MST BWA re-enable\n", post);
+ igt_assert_f(post == bw_both,
+ "Post-re-enable BW %d != bw_both %d\n", post, bw_both);
+
+ cleanup_outputs(d, d->mst_outputs, 2, fbs);
+}
+
+IGT_TEST_DESCRIPTION("Functional tests for i915 DP tunneling over "
+ "USB4/Thunderbolt using debugfs hooks");
+
+int igt_main()
+{
+ data_t data = {};
+
+ igt_fixture() {
+ data.drm_fd = drm_open_driver_master(DRIVER_INTEL | DRIVER_XE);
+ data.devid = intel_get_drm_devid(data.drm_fd);
+ kmstest_set_vt_graphics_mode();
+ igt_display_require(&data.display, data.drm_fd);
+ igt_display_require_output(&data.display);
+
+ data.output = find_tunneled_output(&data);
+ if (!data.output) {
+ /*
+ * The TBT tunnel debugfs may be transiently
+ * unavailable right after a previous test's crash or
+ * a suspend/resume cycle. Poll for up to 5s instead
+ * of an unconditional fixed sleep so the common case
+ * (tunnel already present) costs ~0.
+ */
+ igt_until_timeout(5) {
+ data.output = find_tunneled_output(&data);
+ if (data.output)
+ break;
+ usleep(200 * 1000);
+ }
+ }
+ igt_require_f(data.output,
+ "No connected DP output with tunnel found\n");
+ igt_info("Using %s as primary tunneled output\n",
+ data.output->name);
+ register_for_cleanup(&data, data.output);
+
+ /*
+ * Register a process-exit handler so that bw_limit and
+ * bwa_enable are always restored even if the test exits via
+ * SIGABRT, SIGTERM, or any other unhandled signal.
+ */
+ g_data = &data;
+ igt_install_exit_handler(exit_handler);
+ }
+
+ igt_describe("Verify a tunneled output exists, modesets the preferred mode, "
+ "allocates positive BW and reports a DPRX max rate >= link max rate");
+ igt_subtest("basic") {
+ test_basic(&data, require_sst(&data));
+ }
+
+ igt_describe("Verify allocated BW updates correctly when switching modes "
+ "and returns to the same value on a low->high->low round-trip");
+ igt_subtest("modeset-bw") {
+ test_modeset_bw(&data, require_sst(&data));
+ }
+
+ igt_describe("Verify disabling a tunneled output releases its allocated BW");
+ igt_subtest("disable-bw") {
+ test_disable_bw(&data, require_sst(&data));
+ }
+
+ igt_describe("Verify tunnel state is fully restored after mem suspend/resume");
+ igt_subtest("suspend") {
+ test_suspend(&data, require_sst(&data));
+ }
+
+ igt_describe("Verify bw_limit below preferred mode's BW removes it from connector mode list "
+ "and a lower-BW fallback can be modeseted");
+ igt_subtest("limit-fallback") {
+ test_limit_fallback(&data, require_sst(&data));
+ }
+
+ igt_describe("Verify preferred mode accepted at its exact BW threshold, "
+ "rejected one kB/s below it, and restored after clearing the limit");
+ igt_subtest("limit-boundary") {
+ test_limit_boundary(&data, require_sst(&data));
+ }
+
+ igt_describe("Verify bw_limit is reset to 0 across suspend/resume because "
+ "the tunnel object is destroyed and re-created");
+ igt_subtest("limit-suspend") {
+ test_limit_suspend(&data, require_sst(&data));
+ }
+
+ igt_describe("Disable BWA: tunnel stays alive with allocated BW = -1 and "
+ "DPCD-derived link rate; re-enable BWA + fresh modeset restores "
+ "the original allocation and link rate");
+ igt_subtest("bwa-re-enable") {
+ test_bwa_re_enable(&data, require_sst(&data));
+ }
+
+ igt_describe("Verify 10 rapid BWA disable/enable cycles do not corrupt the display");
+ igt_subtest("bwa-cycle") {
+ test_bwa_cycle(&data, require_sst(&data));
+ }
+
+ igt_describe("Verify two SST tunnels in the same USB4 group report the "
+ "same group_free BW (estimated - allocated)");
+ igt_subtest("dual-bw-sum") {
+ require_dual_sst_same_group(&data);
+ test_dual_bw_sum(&data);
+ }
+
+ igt_describe("Verify bw_limit is per-tunnel-object, not per-group: "
+ "with two SST tunnels in one USB4 group, a cap on tunnel A "
+ "clips A's mode list and not B's, and B's previously-active "
+ "mode remains in B's filtered list");
+ igt_subtest("dual-limit-isolation") {
+ require_dual_sst_same_group(&data);
+ test_dual_limit_isolation(&data);
+ }
+
+ igt_describe("Verify BWA disable on one tunnel does not affect the other "
+ "tunnel sharing the same USB4 group BW pool");
+ igt_subtest("dual-bwa-disable") {
+ require_dual_sst_same_group(&data);
+ test_dual_bwa_disable(&data);
+ }
+
+ igt_describe("Verify two MST connectors sharing one tunnel object "
+ "report the same per-tunnel allocated BW");
+ igt_subtest("mst-basic") {
+ require_mst_pair(&data);
+ test_mst_basic(&data);
+ }
+
+ igt_describe("Verify aggregate allocated BW does not decrease when one "
+ "MST stream's mode is raised");
+ igt_subtest("mst-modeset-bw") {
+ require_mst_pair(&data);
+ test_mst_modeset_bw(&data);
+ }
+
+ igt_describe("Verify disabling one MST stream leaves the tunnel alive "
+ "with positive residual BW not larger than the two-stream "
+ "allocation");
+ igt_subtest("mst-partial-disable") {
+ require_mst_pair(&data);
+ test_mst_partial_disable(&data);
+ }
+
+ igt_describe("Verify MST tunnel survives suspend/resume; partial "
+ "per-pipe BW re-allocation is accepted (kernel TODO)");
+ igt_subtest("mst-suspend") {
+ require_mst_pair(&data);
+ test_mst_suspend(&data);
+ }
+
+ igt_describe("Verify bw_limit on the shared MST tunnel forces both "
+ "streams to fall back to lower-clock modes");
+ igt_subtest("mst-limit-fallback") {
+ require_mst_pair(&data);
+ test_mst_limit_fallback(&data);
+ }
+
+ igt_describe("Verify BWA re-enable + fresh modeset on an MST tunnel "
+ "restores allocation for all active streams to the "
+ "pre-disable value");
+ igt_subtest("mst-bwa-re-enable") {
+ require_mst_pair(&data);
+ test_mst_bwa_re_enable(&data);
+ }
+
+ igt_fixture() {
+ /*
+ * Reset bw_limit=0 and bwa_enable=1 on all tracked tunneled
+ * outputs before tearing down the display. try_reset_output()
+ * is non-asserting and guards with has_tunnel(), so it is safe
+ * even if a connector was re-enumerated after suspend/resume.
+ * This covers primary, dual-SST (output2), and all MST outputs.
+ */
+ restore_all_debugfs(&data);
+ igt_display_fini(&data.display);
+ drm_close_driver(data.drm_fd);
+ data.drm_fd = -1;
+ }
+}
diff --git a/tests/meson.build b/tests/meson.build
index 60cea3aa8..1f7a1b42b 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -279,6 +279,10 @@ intel_kms_progs = [
'kms_sharpness_filter',
]
+if libdisplay_info.found()
+ intel_kms_progs += 'kms_tbt'
+endif
+
intel_xe_progs = [
'xe_wedged',
'xe_ccs',
@@ -407,6 +411,7 @@ extra_sources = {
'kms_dsc': [ join_paths ('intel', 'kms_dsc_helper.c') ],
'kms_joiner': [ join_paths ('intel', 'kms_joiner_helper.c') ],
'kms_psr2_sf': [ join_paths ('intel', 'kms_dsc_helper.c') ],
+ 'kms_tbt': [ join_paths ('intel', 'kms_mst_helper.c') ],
}
# Extra dependencies used on core and Intel drivers
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* ✓ i915.CI.BAT: success for tests/intel/kms_tbt: Add DP tunneling validation tests
2026-05-11 5:43 [PATCH i-g-t 0/2] tests/intel/kms_tbt: Add DP tunneling validation tests Kunal Joshi
2026-05-11 5:43 ` [PATCH i-g-t 1/2] lib/igt_connector_helper: Add DRM connector helpers using libdisplay-info Kunal Joshi
2026-05-11 5:43 ` [PATCH i-g-t 2/2] tests/intel/kms_tbt: Add DP tunneling validation tests Kunal Joshi
@ 2026-05-12 0:14 ` Patchwork
2026-05-12 0:50 ` ✓ Xe.CI.BAT: " Patchwork
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-05-12 0:14 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 2211 bytes --]
== Series Details ==
Series: tests/intel/kms_tbt: Add DP tunneling validation tests
URL : https://patchwork.freedesktop.org/series/166290/
State : success
== Summary ==
CI Bug Log - changes from IGT_8903 -> IGTPW_15146
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/index.html
Participating hosts (42 -> 40)
------------------------------
Missing (2): bat-dg2-13 fi-snb-2520m
Known issues
------------
Here are the changes found in IGTPW_15146 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@core_hotunplug@unbind-rebind:
- bat-rpls-4: [PASS][1] -> [DMESG-WARN][2] ([i915#13400])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8903/bat-rpls-4/igt@core_hotunplug@unbind-rebind.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/bat-rpls-4/igt@core_hotunplug@unbind-rebind.html
#### Possible fixes ####
* igt@i915_selftest@live@workarounds:
- bat-dg2-14: [DMESG-FAIL][3] ([i915#12061]) -> [PASS][4] +1 other test pass
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8903/bat-dg2-14/igt@i915_selftest@live@workarounds.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/bat-dg2-14/igt@i915_selftest@live@workarounds.html
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#13400]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13400
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_8903 -> IGTPW_15146
* Linux: CI_DRM_18467 -> CI_DRM_18469
CI-20190529: 20190529
CI_DRM_18467: f8ee23694aa6be213355905a78f79bb1b0861565 @ git://anongit.freedesktop.org/gfx-ci/linux
CI_DRM_18469: 0ce1c813197dfbe15ff14143da97ec11161e1795 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_15146: 236252b6b6e0a9533bafd592dd033d4132aa888f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8903: 6f88532e2fe22529195cc2f8cabff93d994688f8 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/index.html
[-- Attachment #2: Type: text/html, Size: 2836 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* ✓ Xe.CI.BAT: success for tests/intel/kms_tbt: Add DP tunneling validation tests
2026-05-11 5:43 [PATCH i-g-t 0/2] tests/intel/kms_tbt: Add DP tunneling validation tests Kunal Joshi
` (2 preceding siblings ...)
2026-05-12 0:14 ` ✓ i915.CI.BAT: success for " Patchwork
@ 2026-05-12 0:50 ` Patchwork
2026-05-12 3:20 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-05-12 10:22 ` ✓ i915.CI.Full: success " Patchwork
5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-05-12 0:50 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 1170 bytes --]
== Series Details ==
Series: tests/intel/kms_tbt: Add DP tunneling validation tests
URL : https://patchwork.freedesktop.org/series/166290/
State : success
== Summary ==
CI Bug Log - changes from XEIGT_8903_BAT -> XEIGTPW_15146_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* IGT: IGT_8903 -> IGTPW_15146
* Linux: xe-5041-f8ee23694aa6be213355905a78f79bb1b0861565 -> xe-5043-0ce1c813197dfbe15ff14143da97ec11161e1795
IGTPW_15146: 236252b6b6e0a9533bafd592dd033d4132aa888f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8903: 6f88532e2fe22529195cc2f8cabff93d994688f8 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5041-f8ee23694aa6be213355905a78f79bb1b0861565: f8ee23694aa6be213355905a78f79bb1b0861565
xe-5043-0ce1c813197dfbe15ff14143da97ec11161e1795: 0ce1c813197dfbe15ff14143da97ec11161e1795
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/index.html
[-- Attachment #2: Type: text/html, Size: 1729 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* ✗ Xe.CI.FULL: failure for tests/intel/kms_tbt: Add DP tunneling validation tests
2026-05-11 5:43 [PATCH i-g-t 0/2] tests/intel/kms_tbt: Add DP tunneling validation tests Kunal Joshi
` (3 preceding siblings ...)
2026-05-12 0:50 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-05-12 3:20 ` Patchwork
2026-05-12 10:22 ` ✓ i915.CI.Full: success " Patchwork
5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-05-12 3:20 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 41936 bytes --]
== Series Details ==
Series: tests/intel/kms_tbt: Add DP tunneling validation tests
URL : https://patchwork.freedesktop.org/series/166290/
State : failure
== Summary ==
CI Bug Log - changes from XEIGT_8903_FULL -> XEIGTPW_15146_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with XEIGTPW_15146_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in XEIGTPW_15146_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 (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in XEIGTPW_15146_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_exec_threads@threads-hang-rebind-err:
- shard-bmg: [PASS][1] -> [INCOMPLETE][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-10/igt@xe_exec_threads@threads-hang-rebind-err.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-10/igt@xe_exec_threads@threads-hang-rebind-err.html
Known issues
------------
Here are the changes found in XEIGTPW_15146_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@yf-tiled-64bpp-rotate-0:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#1124]) +2 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-7/igt@kms_big_fb@yf-tiled-64bpp-rotate-0.html
* igt@kms_bw@linear-tiling-1-displays-target-1920x1080p:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#367])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_bw@linear-tiling-1-displays-target-1920x1080p.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#2887]) +3 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [PASS][6] -> [INCOMPLETE][7] ([Intel XE#7084]) +1 other test incomplete
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-3/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#3432])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-2/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@random-ccs-data-yf-tiled-ccs:
- shard-lnl: NOTRUN -> [SKIP][9] ([Intel XE#2887])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-8/igt@kms_ccs@random-ccs-data-yf-tiled-ccs.html
* igt@kms_chamelium_hpd@dp-hpd-after-suspend:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#2252]) +2 other tests skip
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-5/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
* igt@kms_content_protection@legacy-hdcp14@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][11] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_content_protection@legacy-hdcp14@pipe-a-dp-2.html
* igt@kms_content_protection@lic-type-1:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#7642])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-8/igt@kms_content_protection@lic-type-1.html
* igt@kms_cursor_crc@cursor-onscreen-32x32:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#2320]) +1 other test skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-10/igt@kms_cursor_crc@cursor-onscreen-32x32.html
* igt@kms_dp_link_training@non-uhbr-mst:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#4354] / [Intel XE#5882])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_dp_link_training@non-uhbr-mst.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#2244])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-10/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#4422] / [Intel XE#7442])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-5/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
* igt@kms_fbcon_fbt@psr-suspend:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#6126] / [Intel XE#776])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@kms_fbcon_fbt@psr-suspend.html
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-dp2-hdmi-a3:
- shard-bmg: [PASS][18] -> [FAIL][19] ([Intel XE#3321])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-dp2-hdmi-a3.html
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-dp2-hdmi-a3.html
* igt@kms_flip@flip-vs-expired-vblank@a-edp1:
- shard-lnl: NOTRUN -> [FAIL][20] ([Intel XE#301]) +1 other test fail
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
* igt@kms_flip@flip-vs-expired-vblank@c-dp2:
- shard-bmg: NOTRUN -> [FAIL][21] ([Intel XE#3321]) +1 other test fail
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_flip@flip-vs-expired-vblank@c-dp2.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#7178] / [Intel XE#7351])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
* igt@kms_frontbuffer_tracking@drrs-1p-offscreen-pri-shrfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][23] ([Intel XE#6312]) +1 other test skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-7/igt@kms_frontbuffer_tracking@drrs-1p-offscreen-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#2311]) +17 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#656] / [Intel XE#7905])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-4/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#4141]) +5 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-abgr161616f-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#7061])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcdrrshdr-abgr161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-shrfb-msflip-blt:
- shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#7905]) +1 other test skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-7/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#2313]) +14 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt.html
* igt@kms_joiner@invalid-modeset-big-joiner:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#6901])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@kms_joiner@invalid-modeset-big-joiner.html
* igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#7283])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier.html
- shard-lnl: NOTRUN -> [SKIP][32] ([Intel XE#7283])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-7/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier.html
* igt@kms_plane_cursor@overlay@pipe-c-dp-2-size-128:
- shard-bmg: [PASS][33] -> [ABORT][34] ([Intel XE#7814]) +1 other test abort
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-3/igt@kms_plane_cursor@overlay@pipe-c-dp-2-size-128.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_plane_cursor@overlay@pipe-c-dp-2-size-128.html
* igt@kms_plane_cursor@overlay@pipe-c-dp-2-size-256:
- shard-bmg: [PASS][35] -> [DMESG-WARN][36] ([Intel XE#7814]) +3 other tests dmesg-warn
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-3/igt@kms_plane_cursor@overlay@pipe-c-dp-2-size-256.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_plane_cursor@overlay@pipe-c-dp-2-size-256.html
* igt@kms_plane_multiple@2x-tiling-y:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#5021] / [Intel XE#7377])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@kms_plane_multiple@2x-tiling-y.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#2763] / [Intel XE#6886]) +4 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-8/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b.html
* igt@kms_pm_dc@dc5-psr:
- shard-lnl: [PASS][39] -> [FAIL][40] ([Intel XE#7340])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-lnl-1/igt@kms_pm_dc@dc5-psr.html
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-3/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_dc@dc5-retention-flops:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#3309] / [Intel XE#7368])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@kms_pm_dc@dc5-retention-flops.html
* igt@kms_pm_dc@deep-pkgc:
- shard-lnl: [PASS][42] -> [FAIL][43] ([Intel XE#2029] / [Intel XE#7395])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-7/igt@kms_pm_dc@deep-pkgc.html
* igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#7383] / [Intel XE#836])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#1489]) +1 other test skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-10/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr@fbc-psr-primary-page-flip:
- shard-bmg: NOTRUN -> [SKIP][46] ([Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@kms_psr@fbc-psr-primary-page-flip.html
* igt@kms_psr@psr2-primary-render:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#2234])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_psr@psr2-primary-render.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#2330] / [Intel XE#5813])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
* igt@kms_sharpness_filter@filter-suspend:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#6503])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-10/igt@kms_sharpness_filter@filter-suspend.html
* igt@kms_vrr@max-min:
- shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#1499]) +1 other test skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-2/igt@kms_vrr@max-min.html
* igt@xe_eudebug_online@resume-one:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#7636]) +2 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-3/igt@xe_eudebug_online@resume-one.html
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-bmg: [PASS][52] -> [INCOMPLETE][53] ([Intel XE#6321]) +1 other test incomplete
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-small.html
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-7/igt@xe_evict@evict-mixed-many-threads-small.html
* igt@xe_evict@evict-mixed-threads-small-multi-vm:
- shard-lnl: NOTRUN -> [SKIP][54] ([Intel XE#6540] / [Intel XE#688])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-3/igt@xe_evict@evict-mixed-threads-small-multi-vm.html
* igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr:
- shard-bmg: NOTRUN -> [SKIP][55] ([Intel XE#2322] / [Intel XE#7372]) +2 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-7/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr.html
* igt@xe_exec_fault_mode@twice-multi-queue-rebind-prefetch:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#7136]) +2 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-6/igt@xe_exec_fault_mode@twice-multi-queue-rebind-prefetch.html
* igt@xe_exec_multi_queue@few-execs-preempt-mode-fault-basic:
- shard-bmg: NOTRUN -> [SKIP][57] ([Intel XE#6874]) +7 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-6/igt@xe_exec_multi_queue@few-execs-preempt-mode-fault-basic.html
* igt@xe_exec_threads@threads-multi-queue-mixed-userptr-rebind:
- shard-bmg: NOTRUN -> [SKIP][58] ([Intel XE#7138])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-6/igt@xe_exec_threads@threads-multi-queue-mixed-userptr-rebind.html
* igt@xe_multigpu_svm@mgpu-coherency-basic:
- shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#6964])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@xe_multigpu_svm@mgpu-coherency-basic.html
* igt@xe_pat@pat-index-xelp:
- shard-bmg: NOTRUN -> [SKIP][60] ([Intel XE#2245] / [Intel XE#7590])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-2/igt@xe_pat@pat-index-xelp.html
* igt@xe_pm@d3cold-i2c:
- shard-bmg: NOTRUN -> [SKIP][61] ([Intel XE#5694] / [Intel XE#7370])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-6/igt@xe_pm@d3cold-i2c.html
* igt@xe_pm@d3cold-mmap-system:
- shard-bmg: NOTRUN -> [SKIP][62] ([Intel XE#2284] / [Intel XE#7370])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-5/igt@xe_pm@d3cold-mmap-system.html
* igt@xe_pxp@regular-src-to-pxp-dest-rendercopy:
- shard-bmg: NOTRUN -> [SKIP][63] ([Intel XE#4733] / [Intel XE#7417])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@xe_pxp@regular-src-to-pxp-dest-rendercopy.html
* igt@xe_sriov_flr@flr-twice:
- shard-bmg: [PASS][64] -> [FAIL][65] ([Intel XE#6569])
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-4/igt@xe_sriov_flr@flr-twice.html
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-7/igt@xe_sriov_flr@flr-twice.html
* igt@xe_survivability@runtime-survivability:
- shard-bmg: [PASS][66] -> [DMESG-WARN][67] ([Intel XE#6627] / [Intel XE#7419])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@xe_survivability@runtime-survivability.html
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@xe_survivability@runtime-survivability.html
#### Possible fixes ####
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-dp2-hdmi-a3:
- shard-bmg: [DMESG-FAIL][68] ([Intel XE#5545]) -> [PASS][69]
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-dp2-hdmi-a3.html
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-dp2-hdmi-a3.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
- shard-lnl: [FAIL][70] ([Intel XE#301]) -> [PASS][71] +1 other test pass
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
* igt@kms_hdmi_inject@inject-audio:
- shard-bmg: [SKIP][72] ([Intel XE#7308]) -> [PASS][73]
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-9/igt@kms_hdmi_inject@inject-audio.html
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-7/igt@kms_hdmi_inject@inject-audio.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [SKIP][74] ([Intel XE#1503]) -> [PASS][75]
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-10/igt@kms_hdr@invalid-hdr.html
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-7/igt@kms_hdr@invalid-hdr.html
* igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010:
- shard-bmg: [SKIP][76] ([Intel XE#7922]) -> [PASS][77] +1 other test pass
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-10/igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010.html
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-7/igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010.html
* igt@kms_pm_dc@dc6-psr:
- shard-lnl: [FAIL][78] ([Intel XE#7340]) -> [PASS][79]
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-lnl-2/igt@kms_pm_dc@dc6-psr.html
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-7/igt@kms_pm_dc@dc6-psr.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-lnl: [SKIP][80] ([Intel XE#4692] / [Intel XE#7508]) -> [PASS][81]
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-lnl-7/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-4/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1:
- shard-lnl: [FAIL][82] ([Intel XE#2142]) -> [PASS][83] +1 other test pass
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-lnl-7/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-7/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html
* igt@xe_copy_basic@mem-page-copy-17:
- shard-lnl: [ABORT][84] -> [PASS][85]
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-lnl-2/igt@xe_copy_basic@mem-page-copy-17.html
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-lnl-8/igt@xe_copy_basic@mem-page-copy-17.html
* igt@xe_sriov_admin@sched-priority-vf-write-denied:
- shard-bmg: [SKIP][86] ([Intel XE#6703]) -> [PASS][87] +120 other tests pass
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@xe_sriov_admin@sched-priority-vf-write-denied.html
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-6/igt@xe_sriov_admin@sched-priority-vf-write-denied.html
* igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs@vf-random:
- shard-bmg: [FAIL][88] ([Intel XE#5937]) -> [PASS][89] +1 other test pass
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-10/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs@vf-random.html
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-7/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs@vf-random.html
#### Warnings ####
* igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip:
- shard-bmg: [SKIP][90] ([Intel XE#6703]) -> [SKIP][91] ([Intel XE#7059] / [Intel XE#7085])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_big_fb@y-tiled-8bpp-rotate-270:
- shard-bmg: [SKIP][92] ([Intel XE#6703]) -> [SKIP][93] ([Intel XE#1124]) +2 other tests skip
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_big_fb@y-tiled-8bpp-rotate-270.html
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-3/igt@kms_big_fb@y-tiled-8bpp-rotate-270.html
* igt@kms_bw@linear-tiling-3-displays-target-1920x1080p:
- shard-bmg: [SKIP][94] ([Intel XE#6703]) -> [SKIP][95] ([Intel XE#367])
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_bw@linear-tiling-3-displays-target-1920x1080p.html
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_bw@linear-tiling-3-displays-target-1920x1080p.html
* igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc:
- shard-bmg: [SKIP][96] ([Intel XE#6703]) -> [SKIP][97] ([Intel XE#2887]) +1 other test skip
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc.html
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-8/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_chamelium_color@ctm-0-25:
- shard-bmg: [SKIP][98] ([Intel XE#6703]) -> [SKIP][99] ([Intel XE#2325] / [Intel XE#7358]) +1 other test skip
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_chamelium_color@ctm-0-25.html
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-5/igt@kms_chamelium_color@ctm-0-25.html
* igt@kms_chamelium_frames@hdmi-crc-single:
- shard-bmg: [SKIP][100] ([Intel XE#6703]) -> [SKIP][101] ([Intel XE#2252])
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_chamelium_frames@hdmi-crc-single.html
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_chamelium_frames@hdmi-crc-single.html
* igt@kms_content_protection@legacy-hdcp14:
- shard-bmg: [SKIP][102] ([Intel XE#6703]) -> [FAIL][103] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374])
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_content_protection@legacy-hdcp14.html
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@kms_content_protection@legacy-hdcp14.html
* igt@kms_cursor_crc@cursor-onscreen-32x10:
- shard-bmg: [SKIP][104] ([Intel XE#6703]) -> [SKIP][105] ([Intel XE#2320])
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_cursor_crc@cursor-onscreen-32x10.html
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-7/igt@kms_cursor_crc@cursor-onscreen-32x10.html
* igt@kms_dirtyfb@fbc-dirtyfb-ioctl:
- shard-bmg: [SKIP][106] ([Intel XE#6703]) -> [SKIP][107] ([Intel XE#4210] / [Intel XE#7467])
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-8/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
- shard-bmg: [DMESG-FAIL][108] ([Intel XE#5545]) -> [FAIL][109] ([Intel XE#3321])
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render:
- shard-bmg: [SKIP][110] ([Intel XE#6703]) -> [SKIP][111] ([Intel XE#4141]) +1 other test skip
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-10/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-render:
- shard-bmg: [SKIP][112] ([Intel XE#6703]) -> [SKIP][113] ([Intel XE#7061] / [Intel XE#7356])
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-render.html
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-move:
- shard-bmg: [SKIP][114] ([Intel XE#6703]) -> [SKIP][115] ([Intel XE#2311]) +11 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-move.html
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-move.html
* igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-blt:
- shard-bmg: [SKIP][116] ([Intel XE#6703]) -> [SKIP][117] ([Intel XE#7061]) +2 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-blt.html
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-2/igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt:
- shard-bmg: [SKIP][118] ([Intel XE#6703]) -> [SKIP][119] ([Intel XE#2313]) +9 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt.html
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][120] ([Intel XE#3544] / [Intel XE#7916]) -> [SKIP][121] ([Intel XE#3544] / [Intel XE#7915] / [Intel XE#7916])
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-9/igt@kms_hdr@brightness-with-hdr.html
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [SKIP][122] ([Intel XE#7916]) -> [SKIP][123] ([Intel XE#7915]) +1 other test skip
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-9/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html
* igt@kms_plane@pixel-format-y-tiled-ccs-modifier-source-clamping:
- shard-bmg: [SKIP][124] ([Intel XE#6703]) -> [SKIP][125] ([Intel XE#7283])
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_plane@pixel-format-y-tiled-ccs-modifier-source-clamping.html
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@kms_plane@pixel-format-y-tiled-ccs-modifier-source-clamping.html
* igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area:
- shard-bmg: [SKIP][126] ([Intel XE#6703]) -> [SKIP][127] ([Intel XE#1489]) +1 other test skip
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area.html
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area.html
* igt@kms_psr@psr-basic:
- shard-bmg: [SKIP][128] ([Intel XE#6703]) -> [SKIP][129] ([Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_psr@psr-basic.html
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-5/igt@kms_psr@psr-basic.html
* igt@kms_sharpness_filter@filter-scaler-upscale:
- shard-bmg: [SKIP][130] ([Intel XE#6703]) -> [SKIP][131] ([Intel XE#6503])
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@kms_sharpness_filter@filter-scaler-upscale.html
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-5/igt@kms_sharpness_filter@filter-scaler-upscale.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [SKIP][132] ([Intel XE#2426] / [Intel XE#5848]) -> [FAIL][133] ([Intel XE#1729] / [Intel XE#7424])
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern.html
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern.html
* igt@xe_eudebug_online@writes-caching-vram-bb-vram-target-vram:
- shard-bmg: [SKIP][134] ([Intel XE#6703]) -> [SKIP][135] ([Intel XE#7636]) +3 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@xe_eudebug_online@writes-caching-vram-bb-vram-target-vram.html
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-8/igt@xe_eudebug_online@writes-caching-vram-bb-vram-target-vram.html
* igt@xe_exec_basic@multigpu-no-exec-basic-defer-bind:
- shard-bmg: [SKIP][136] ([Intel XE#6703]) -> [SKIP][137] ([Intel XE#2322] / [Intel XE#7372]) +2 other tests skip
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@xe_exec_basic@multigpu-no-exec-basic-defer-bind.html
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@xe_exec_basic@multigpu-no-exec-basic-defer-bind.html
* igt@xe_exec_fault_mode@once-multi-queue-userptr-rebind:
- shard-bmg: [SKIP][138] ([Intel XE#6703]) -> [SKIP][139] ([Intel XE#7136])
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@xe_exec_fault_mode@once-multi-queue-userptr-rebind.html
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-6/igt@xe_exec_fault_mode@once-multi-queue-userptr-rebind.html
* igt@xe_exec_multi_queue@few-execs-preempt-mode-dyn-priority:
- shard-bmg: [SKIP][140] ([Intel XE#6703]) -> [SKIP][141] ([Intel XE#6874]) +7 other tests skip
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@xe_exec_multi_queue@few-execs-preempt-mode-dyn-priority.html
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-8/igt@xe_exec_multi_queue@few-execs-preempt-mode-dyn-priority.html
* igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr:
- shard-bmg: [SKIP][142] ([Intel XE#6703]) -> [SKIP][143] ([Intel XE#7138]) +2 other tests skip
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr.html
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-6/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr.html
* igt@xe_page_reclaim@binds-1g-partial:
- shard-bmg: [SKIP][144] ([Intel XE#6703]) -> [SKIP][145] ([Intel XE#7793])
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@xe_page_reclaim@binds-1g-partial.html
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-9/igt@xe_page_reclaim@binds-1g-partial.html
* igt@xe_pm@d3cold-mmap-vram:
- shard-bmg: [SKIP][146] ([Intel XE#6703]) -> [SKIP][147] ([Intel XE#2284] / [Intel XE#7370])
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@xe_pm@d3cold-mmap-vram.html
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-4/igt@xe_pm@d3cold-mmap-vram.html
* igt@xe_query@multigpu-query-topology:
- shard-bmg: [SKIP][148] ([Intel XE#6703]) -> [SKIP][149] ([Intel XE#944])
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8903/shard-bmg-2/igt@xe_query@multigpu-query-topology.html
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/shard-bmg-1/igt@xe_query@multigpu-query-topology.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
[Intel XE#2142]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2142
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[Intel XE#2245]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2245
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[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#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309
[Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4210]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4210
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4692]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4692
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5694]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5694
[Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#5882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5882
[Intel XE#5937]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5937
[Intel XE#6126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6126
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6627]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6627
[Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
[Intel XE#6901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6901
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
[Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
[Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
[Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7308
[Intel XE#7340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7340
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7368]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7368
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
[Intel XE#7377]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7377
[Intel XE#7383]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7383
[Intel XE#7395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7395
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7419]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7419
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
[Intel XE#7467]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7467
[Intel XE#7508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7508
[Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
[Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
[Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
[Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
[Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
[Intel XE#7814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7814
[Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
[Intel XE#7915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7915
[Intel XE#7916]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7916
[Intel XE#7922]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7922
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* IGT: IGT_8903 -> IGTPW_15146
* Linux: xe-5041-f8ee23694aa6be213355905a78f79bb1b0861565 -> xe-5043-0ce1c813197dfbe15ff14143da97ec11161e1795
IGTPW_15146: 236252b6b6e0a9533bafd592dd033d4132aa888f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8903: 6f88532e2fe22529195cc2f8cabff93d994688f8 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5041-f8ee23694aa6be213355905a78f79bb1b0861565: f8ee23694aa6be213355905a78f79bb1b0861565
xe-5043-0ce1c813197dfbe15ff14143da97ec11161e1795: 0ce1c813197dfbe15ff14143da97ec11161e1795
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15146/index.html
[-- Attachment #2: Type: text/html, Size: 49151 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* ✓ i915.CI.Full: success for tests/intel/kms_tbt: Add DP tunneling validation tests
2026-05-11 5:43 [PATCH i-g-t 0/2] tests/intel/kms_tbt: Add DP tunneling validation tests Kunal Joshi
` (4 preceding siblings ...)
2026-05-12 3:20 ` ✗ Xe.CI.FULL: failure " Patchwork
@ 2026-05-12 10:22 ` Patchwork
5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-05-12 10:22 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 138643 bytes --]
== Series Details ==
Series: tests/intel/kms_tbt: Add DP tunneling validation tests
URL : https://patchwork.freedesktop.org/series/166290/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_18469_full -> IGTPW_15146_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/index.html
Participating hosts (10 -> 10)
------------------------------
No changes in participating hosts
New tests
---------
New tests have been introduced between CI_DRM_18469_full and IGTPW_15146_full:
### New IGT tests (4) ###
* igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-a-dp-3:
- Statuses : 1 pass(s)
- Exec time: [2.30] s
* igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-b-dp-3:
- Statuses : 1 pass(s)
- Exec time: [2.12] s
* igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-dp-3:
- Statuses : 1 pass(s)
- Exec time: [2.12] s
* igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-d-dp-3:
- Statuses : 1 pass(s)
- Exec time: [2.12] s
Known issues
------------
Here are the changes found in IGTPW_15146_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@api_intel_bb@blit-reloc-purge-cache:
- shard-rkl: NOTRUN -> [SKIP][1] ([i915#14544] / [i915#8411])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@api_intel_bb@blit-reloc-purge-cache.html
* igt@gem_busy@semaphore:
- shard-dg2: NOTRUN -> [SKIP][2] ([i915#3936])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@gem_busy@semaphore.html
* igt@gem_ccs@block-multicopy-inplace:
- shard-tglu-1: NOTRUN -> [SKIP][3] ([i915#3555] / [i915#9323])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@gem_ccs@block-multicopy-inplace.html
* igt@gem_ccs@ctrl-surf-copy:
- shard-rkl: NOTRUN -> [SKIP][4] ([i915#3555] / [i915#9323])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@gem_ccs@ctrl-surf-copy.html
* igt@gem_ccs@ctrl-surf-copy-new-ctx:
- shard-tglu: NOTRUN -> [SKIP][5] ([i915#9323])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-6/igt@gem_ccs@ctrl-surf-copy-new-ctx.html
* igt@gem_ccs@suspend-resume:
- shard-tglu-1: NOTRUN -> [SKIP][6] ([i915#9323]) +1 other test skip
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@gem_ccs@suspend-resume.html
* igt@gem_close_race@multigpu-basic-process:
- shard-rkl: NOTRUN -> [SKIP][7] ([i915#7697])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@gem_close_race@multigpu-basic-process.html
* igt@gem_ctx_isolation@preservation-s3@rcs0:
- shard-glk: NOTRUN -> [INCOMPLETE][8] ([i915#13356]) +1 other test incomplete
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk1/igt@gem_ctx_isolation@preservation-s3@rcs0.html
* igt@gem_ctx_persistence@processes:
- shard-snb: NOTRUN -> [SKIP][9] ([i915#1099])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-snb6/igt@gem_ctx_persistence@processes.html
* igt@gem_ctx_persistence@saturated-hostile-nopreempt:
- shard-dg2: NOTRUN -> [SKIP][10] ([i915#5882]) +7 other tests skip
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-3/igt@gem_ctx_persistence@saturated-hostile-nopreempt.html
* igt@gem_ctx_persistence@saturated-hostile-nopreempt@vcs1:
- shard-mtlp: NOTRUN -> [SKIP][11] ([i915#5882]) +6 other tests skip
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-2/igt@gem_ctx_persistence@saturated-hostile-nopreempt@vcs1.html
* igt@gem_ctx_sseu@engines:
- shard-tglu-1: NOTRUN -> [SKIP][12] ([i915#280])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@gem_ctx_sseu@engines.html
* igt@gem_exec_balancer@bonded-true-hang:
- shard-dg2: NOTRUN -> [SKIP][13] ([i915#4812]) +1 other test skip
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@gem_exec_balancer@bonded-true-hang.html
- shard-dg1: NOTRUN -> [SKIP][14] ([i915#4812]) +1 other test skip
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-17/igt@gem_exec_balancer@bonded-true-hang.html
- shard-mtlp: NOTRUN -> [SKIP][15] ([i915#4812])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-7/igt@gem_exec_balancer@bonded-true-hang.html
* igt@gem_exec_balancer@invalid-bonds:
- shard-dg2: NOTRUN -> [SKIP][16] ([i915#4036])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@gem_exec_balancer@invalid-bonds.html
- shard-dg1: NOTRUN -> [SKIP][17] ([i915#4036])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-17/igt@gem_exec_balancer@invalid-bonds.html
- shard-mtlp: NOTRUN -> [SKIP][18] ([i915#4036])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-2/igt@gem_exec_balancer@invalid-bonds.html
* igt@gem_exec_balancer@parallel:
- shard-tglu-1: NOTRUN -> [SKIP][19] ([i915#4525])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@gem_exec_balancer@parallel.html
* igt@gem_exec_balancer@parallel-ordering:
- shard-rkl: NOTRUN -> [SKIP][20] ([i915#4525])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@gem_exec_balancer@parallel-ordering.html
- shard-tglu: NOTRUN -> [SKIP][21] ([i915#4525])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-10/igt@gem_exec_balancer@parallel-ordering.html
* igt@gem_exec_big@single:
- shard-tglu-1: NOTRUN -> [FAIL][22] ([i915#15816])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@gem_exec_big@single.html
- shard-mtlp: [PASS][23] -> [FAIL][24] ([i915#15871])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-mtlp-2/igt@gem_exec_big@single.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-3/igt@gem_exec_big@single.html
* igt@gem_exec_flush@basic-wb-pro-default:
- shard-dg2: NOTRUN -> [SKIP][25] ([i915#3539] / [i915#4852])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@gem_exec_flush@basic-wb-pro-default.html
* igt@gem_exec_reloc@basic-gtt-wc-active:
- shard-rkl: NOTRUN -> [SKIP][26] ([i915#14544] / [i915#3281])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-wc-active.html
* igt@gem_exec_reloc@basic-range:
- shard-mtlp: NOTRUN -> [SKIP][27] ([i915#3281]) +3 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-4/igt@gem_exec_reloc@basic-range.html
* igt@gem_exec_reloc@basic-wc:
- shard-dg2: NOTRUN -> [SKIP][28] ([i915#3281]) +7 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@gem_exec_reloc@basic-wc.html
* igt@gem_exec_reloc@basic-write-cpu-active:
- shard-dg1: NOTRUN -> [SKIP][29] ([i915#3281]) +5 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-14/igt@gem_exec_reloc@basic-write-cpu-active.html
* igt@gem_exec_reloc@basic-write-read-noreloc:
- shard-rkl: NOTRUN -> [SKIP][30] ([i915#3281]) +8 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@gem_exec_reloc@basic-write-read-noreloc.html
* igt@gem_exec_schedule@preempt-queue-contexts-chain:
- shard-dg2: NOTRUN -> [SKIP][31] ([i915#4537] / [i915#4812]) +1 other test skip
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-4/igt@gem_exec_schedule@preempt-queue-contexts-chain.html
- shard-mtlp: NOTRUN -> [SKIP][32] ([i915#4537] / [i915#4812])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-4/igt@gem_exec_schedule@preempt-queue-contexts-chain.html
* igt@gem_exec_suspend@basic-s0:
- shard-dg2: [PASS][33] -> [INCOMPLETE][34] ([i915#13356]) +2 other tests incomplete
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-1/igt@gem_exec_suspend@basic-s0.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-5/igt@gem_exec_suspend@basic-s0.html
* igt@gem_fence_thrash@bo-write-verify-threaded-none:
- shard-dg2: NOTRUN -> [SKIP][35] ([i915#4860])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@gem_fence_thrash@bo-write-verify-threaded-none.html
* igt@gem_huc_copy@huc-copy:
- shard-glk: NOTRUN -> [SKIP][36] ([i915#2190])
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk2/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@heavy-verify-random:
- shard-rkl: NOTRUN -> [SKIP][37] ([i915#4613]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-2/igt@gem_lmem_swapping@heavy-verify-random.html
- shard-tglu: NOTRUN -> [SKIP][38] ([i915#4613])
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-5/igt@gem_lmem_swapping@heavy-verify-random.html
- shard-mtlp: NOTRUN -> [SKIP][39] ([i915#4613])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-4/igt@gem_lmem_swapping@heavy-verify-random.html
* igt@gem_lmem_swapping@parallel-random-engines:
- shard-rkl: NOTRUN -> [SKIP][40] ([i915#14544] / [i915#4613])
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@gem_lmem_swapping@parallel-random-engines.html
* igt@gem_lmem_swapping@random-engines:
- shard-glk: NOTRUN -> [SKIP][41] ([i915#4613]) +4 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk8/igt@gem_lmem_swapping@random-engines.html
* igt@gem_lmem_swapping@verify-random-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][42] ([i915#4613]) +1 other test skip
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@gem_lmem_swapping@verify-random-ccs.html
* igt@gem_madvise@dontneed-before-pwrite:
- shard-dg2: NOTRUN -> [SKIP][43] ([i915#3282]) +2 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@gem_madvise@dontneed-before-pwrite.html
- shard-rkl: NOTRUN -> [SKIP][44] ([i915#3282]) +2 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@gem_madvise@dontneed-before-pwrite.html
- shard-dg1: NOTRUN -> [SKIP][45] ([i915#3282]) +3 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-17/igt@gem_madvise@dontneed-before-pwrite.html
* igt@gem_media_fill@media-fill:
- shard-dg2: NOTRUN -> [SKIP][46] ([i915#8289])
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@gem_media_fill@media-fill.html
* igt@gem_mmap_gtt@coherency:
- shard-mtlp: NOTRUN -> [SKIP][47] ([i915#4077]) +1 other test skip
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-8/igt@gem_mmap_gtt@coherency.html
* igt@gem_mmap_gtt@cpuset-medium-copy-xy:
- shard-dg2: NOTRUN -> [SKIP][48] ([i915#4077]) +5 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@gem_mmap_gtt@cpuset-medium-copy-xy.html
* igt@gem_mmap_wc@copy:
- shard-dg2: NOTRUN -> [SKIP][49] ([i915#4083]) +2 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@gem_mmap_wc@copy.html
- shard-dg1: NOTRUN -> [SKIP][50] ([i915#4083]) +1 other test skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-18/igt@gem_mmap_wc@copy.html
- shard-mtlp: NOTRUN -> [SKIP][51] ([i915#4083])
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-8/igt@gem_mmap_wc@copy.html
* igt@gem_partial_pwrite_pread@reads-display:
- shard-mtlp: NOTRUN -> [SKIP][52] ([i915#3282]) +3 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-6/igt@gem_partial_pwrite_pread@reads-display.html
- shard-rkl: NOTRUN -> [SKIP][53] ([i915#14544] / [i915#3282])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@gem_partial_pwrite_pread@reads-display.html
* igt@gem_pxp@protected-encrypted-src-copy-not-readible:
- shard-dg2: NOTRUN -> [SKIP][54] ([i915#4270]) +1 other test skip
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-7/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html
- shard-dg1: NOTRUN -> [SKIP][55] ([i915#4270]) +1 other test skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-16/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html
* igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs:
- shard-dg2: NOTRUN -> [SKIP][56] ([i915#5190] / [i915#8428]) +5 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html
* igt@gem_render_copy@yf-tiled-ccs-to-yf-tiled:
- shard-mtlp: NOTRUN -> [SKIP][57] ([i915#8428]) +4 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-7/igt@gem_render_copy@yf-tiled-ccs-to-yf-tiled.html
* igt@gem_set_tiling_vs_blt@untiled-to-tiled:
- shard-rkl: NOTRUN -> [SKIP][58] ([i915#8411])
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html
* igt@gem_set_tiling_vs_gtt:
- shard-dg1: NOTRUN -> [SKIP][59] ([i915#4079])
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-15/igt@gem_set_tiling_vs_gtt.html
- shard-mtlp: NOTRUN -> [SKIP][60] ([i915#4079])
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-4/igt@gem_set_tiling_vs_gtt.html
- shard-dg2: NOTRUN -> [SKIP][61] ([i915#4079])
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@gem_set_tiling_vs_gtt.html
* igt@gem_tiled_partial_pwrite_pread@reads:
- shard-dg1: NOTRUN -> [SKIP][62] ([i915#4077]) +2 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-17/igt@gem_tiled_partial_pwrite_pread@reads.html
* igt@gem_userptr_blits@coherency-unsync:
- shard-dg2: NOTRUN -> [SKIP][63] ([i915#3297]) +1 other test skip
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@gem_userptr_blits@coherency-unsync.html
* igt@gem_userptr_blits@dmabuf-sync:
- shard-tglu-1: NOTRUN -> [SKIP][64] ([i915#3297] / [i915#3323])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@gem_userptr_blits@dmabuf-sync.html
* igt@gem_userptr_blits@forbidden-operations:
- shard-rkl: NOTRUN -> [SKIP][65] ([i915#3282] / [i915#3297])
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@gem_userptr_blits@forbidden-operations.html
* igt@gem_userptr_blits@invalid-mmap-offset-unsync:
- shard-dg1: NOTRUN -> [SKIP][66] ([i915#3297])
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-19/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html
* igt@gem_userptr_blits@map-fixed-invalidate-overlap:
- shard-dg1: NOTRUN -> [SKIP][67] ([i915#3297] / [i915#4880])
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-12/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html
* igt@gem_userptr_blits@unsync-unmap:
- shard-rkl: NOTRUN -> [SKIP][68] ([i915#3297])
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-2/igt@gem_userptr_blits@unsync-unmap.html
* igt@gem_userptr_blits@unsync-unmap-cycles:
- shard-tglu-1: NOTRUN -> [SKIP][69] ([i915#3297]) +1 other test skip
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@gem_userptr_blits@unsync-unmap-cycles.html
* igt@gem_workarounds@suspend-resume:
- shard-glk: NOTRUN -> [INCOMPLETE][70] ([i915#13356] / [i915#14586])
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk8/igt@gem_workarounds@suspend-resume.html
* igt@gen9_exec_parse@basic-rejected:
- shard-rkl: NOTRUN -> [SKIP][71] ([i915#14544] / [i915#2527])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@gen9_exec_parse@basic-rejected.html
* igt@gen9_exec_parse@basic-rejected-ctx-param:
- shard-snb: NOTRUN -> [SKIP][72] +149 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-snb7/igt@gen9_exec_parse@basic-rejected-ctx-param.html
* igt@gen9_exec_parse@batch-invalid-length:
- shard-dg2: NOTRUN -> [SKIP][73] ([i915#2856]) +4 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-3/igt@gen9_exec_parse@batch-invalid-length.html
* igt@gen9_exec_parse@bb-start-far:
- shard-rkl: NOTRUN -> [SKIP][74] ([i915#2527]) +4 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@gen9_exec_parse@bb-start-far.html
* igt@gen9_exec_parse@shadow-peek:
- shard-dg1: NOTRUN -> [SKIP][75] ([i915#2527]) +5 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-18/igt@gen9_exec_parse@shadow-peek.html
* igt@gen9_exec_parse@unaligned-jump:
- shard-tglu: NOTRUN -> [SKIP][76] ([i915#2527] / [i915#2856]) +6 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-5/igt@gen9_exec_parse@unaligned-jump.html
- shard-mtlp: NOTRUN -> [SKIP][77] ([i915#2856]) +4 other tests skip
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-3/igt@gen9_exec_parse@unaligned-jump.html
* igt@gen9_exec_parse@valid-registers:
- shard-tglu-1: NOTRUN -> [SKIP][78] ([i915#2527] / [i915#2856]) +2 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@gen9_exec_parse@valid-registers.html
* igt@i915_drm_fdinfo@busy-check-all@vecs0:
- shard-dg2: NOTRUN -> [SKIP][79] ([i915#11527]) +7 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@i915_drm_fdinfo@busy-check-all@vecs0.html
* igt@i915_drm_fdinfo@virtual-busy-idle-all:
- shard-dg1: NOTRUN -> [SKIP][80] ([i915#14118])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-19/igt@i915_drm_fdinfo@virtual-busy-idle-all.html
* igt@i915_module_load@reload-no-display:
- shard-tglu-1: NOTRUN -> [DMESG-WARN][81] ([i915#13029] / [i915#14545])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@i915_module_load@reload-no-display.html
* igt@i915_pm_freq_api@freq-reset-multiple:
- shard-rkl: NOTRUN -> [SKIP][82] ([i915#8399]) +1 other test skip
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@i915_pm_freq_api@freq-reset-multiple.html
* igt@i915_pm_rc6_residency@rc6-accuracy:
- shard-dg2: NOTRUN -> [FAIL][83] ([i915#12964]) +1 other test fail
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-7/igt@i915_pm_rc6_residency@rc6-accuracy.html
* igt@i915_pm_rpm@system-suspend-execbuf:
- shard-glk11: NOTRUN -> [INCOMPLETE][84] ([i915#13356] / [i915#15172])
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk11/igt@i915_pm_rpm@system-suspend-execbuf.html
* igt@i915_query@hwconfig_table:
- shard-dg1: NOTRUN -> [SKIP][85] ([i915#6245])
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-13/igt@i915_query@hwconfig_table.html
* igt@i915_query@query-topology-coherent-slice-mask:
- shard-dg2: NOTRUN -> [SKIP][86] ([i915#6188])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-4/igt@i915_query@query-topology-coherent-slice-mask.html
* igt@i915_query@test-query-geometry-subslices:
- shard-tglu-1: NOTRUN -> [SKIP][87] ([i915#5723])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@i915_query@test-query-geometry-subslices.html
* igt@kms_addfb_basic@clobberred-modifier:
- shard-dg2: NOTRUN -> [SKIP][88] ([i915#4212]) +1 other test skip
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_addfb_basic@clobberred-modifier.html
* igt@kms_async_flips@async-flip-suspend-resume:
- shard-rkl: [PASS][89] -> [INCOMPLETE][90] ([i915#12761])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-5/igt@kms_async_flips@async-flip-suspend-resume.html
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_async_flips@async-flip-suspend-resume.html
- shard-glk: NOTRUN -> [INCOMPLETE][91] ([i915#12761]) +1 other test incomplete
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk5/igt@kms_async_flips@async-flip-suspend-resume.html
* igt@kms_async_flips@async-flip-suspend-resume@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [INCOMPLETE][92] ([i915#12761])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_async_flips@async-flip-suspend-resume@pipe-a-hdmi-a-2.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
- shard-glk: NOTRUN -> [SKIP][93] ([i915#1769])
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk9/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
- shard-rkl: NOTRUN -> [SKIP][94] ([i915#1769] / [i915#3555])
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
- shard-tglu: NOTRUN -> [SKIP][95] ([i915#1769] / [i915#3555])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-9/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
* igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1:
- shard-tglu: NOTRUN -> [FAIL][96] ([i915#15662]) +1 other test fail
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-10/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-270:
- shard-rkl: NOTRUN -> [SKIP][97] ([i915#5286]) +1 other test skip
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_big_fb@4-tiled-32bpp-rotate-270.html
- shard-dg1: NOTRUN -> [SKIP][98] ([i915#4538] / [i915#5286]) +1 other test skip
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-16/igt@kms_big_fb@4-tiled-32bpp-rotate-270.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-90:
- shard-tglu-1: NOTRUN -> [SKIP][99] ([i915#5286]) +2 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@4-tiled-addfb:
- shard-tglu: NOTRUN -> [SKIP][100] ([i915#5286]) +2 other tests skip
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-8/igt@kms_big_fb@4-tiled-addfb.html
* igt@kms_big_fb@linear-8bpp-rotate-270:
- shard-rkl: NOTRUN -> [SKIP][101] ([i915#3638]) +1 other test skip
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-4/igt@kms_big_fb@linear-8bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-90:
- shard-dg2: NOTRUN -> [SKIP][102] +9 other tests skip
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html
- shard-dg1: NOTRUN -> [SKIP][103] ([i915#3638])
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-12/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-64bpp-rotate-270:
- shard-rkl: NOTRUN -> [SKIP][104] ([i915#14544] / [i915#3638])
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_big_fb@x-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-16bpp-rotate-180:
- shard-mtlp: NOTRUN -> [SKIP][105] +9 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-5/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html
* igt@kms_big_fb@y-tiled-64bpp-rotate-0:
- shard-dg2: NOTRUN -> [SKIP][106] ([i915#4538] / [i915#5190]) +9 other tests skip
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180:
- shard-dg1: NOTRUN -> [SKIP][107] ([i915#4538]) +3 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-14/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html
* igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][108] ([i915#6095]) +190 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-16/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-4.html
* igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs:
- shard-dg2: NOTRUN -> [SKIP][109] ([i915#10307] / [i915#6095]) +96 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][110] ([i915#14544] / [i915#6095]) +8 other tests skip
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][111] ([i915#6095]) +74 other tests skip
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2:
- shard-glk: NOTRUN -> [SKIP][112] +500 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk2/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
- shard-dg1: NOTRUN -> [SKIP][113] ([i915#12313]) +1 other test skip
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-18/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
- shard-tglu: NOTRUN -> [SKIP][114] ([i915#12313])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-2/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
- shard-dg2: NOTRUN -> [SKIP][115] ([i915#12313])
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
- shard-rkl: NOTRUN -> [SKIP][116] ([i915#12313])
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-4/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs:
- shard-glk10: NOTRUN -> [SKIP][117] +98 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk10/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc@pipe-a-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][118] ([i915#6095]) +24 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-3/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc@pipe-a-edp-1.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][119] ([i915#12313])
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][120] ([i915#12805])
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [INCOMPLETE][121] ([i915#15582]) +1 other test incomplete
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk5/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-d-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][122] ([i915#6095]) +9 other tests skip
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-7/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-d-hdmi-a-3.html
* igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs:
- shard-glk10: NOTRUN -> [INCOMPLETE][123] ([i915#15582]) +1 other test incomplete
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk10/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs.html
* igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs@pipe-c-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][124] ([i915#14098] / [i915#14544] / [i915#6095]) +5 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs@pipe-c-hdmi-a-2.html
* igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][125] ([i915#10307] / [i915#10434] / [i915#6095]) +2 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-4/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1:
- shard-tglu-1: NOTRUN -> [SKIP][126] ([i915#6095]) +29 other tests skip
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][127] ([i915#14098] / [i915#6095]) +48 other tests skip
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2.html
* igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc:
- shard-tglu: NOTRUN -> [SKIP][128] ([i915#6095]) +84 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-4/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_cdclk@mode-transition:
- shard-tglu-1: NOTRUN -> [SKIP][129] ([i915#3742])
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_cdclk@mode-transition.html
* igt@kms_cdclk@plane-scaling:
- shard-rkl: NOTRUN -> [SKIP][130] ([i915#3742])
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@kms_cdclk@plane-scaling.html
* igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][131] ([i915#13783]) +3 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-4/igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-1.html
* igt@kms_chamelium_edid@hdmi-edid-stress-resolution-non-4k:
- shard-dg2: NOTRUN -> [SKIP][132] ([i915#11151] / [i915#7828]) +5 other tests skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-7/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-non-4k.html
* igt@kms_chamelium_frames@dp-crc-single:
- shard-tglu: NOTRUN -> [SKIP][133] ([i915#11151] / [i915#7828]) +6 other tests skip
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-8/igt@kms_chamelium_frames@dp-crc-single.html
* igt@kms_chamelium_frames@hdmi-crc-fast:
- shard-tglu-1: NOTRUN -> [SKIP][134] ([i915#11151] / [i915#7828]) +5 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_chamelium_frames@hdmi-crc-fast.html
* igt@kms_chamelium_hpd@vga-hpd-fast:
- shard-rkl: NOTRUN -> [SKIP][135] ([i915#11151] / [i915#7828]) +5 other tests skip
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-4/igt@kms_chamelium_hpd@vga-hpd-fast.html
- shard-dg1: NOTRUN -> [SKIP][136] ([i915#11151] / [i915#7828]) +4 other tests skip
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-18/igt@kms_chamelium_hpd@vga-hpd-fast.html
- shard-mtlp: NOTRUN -> [SKIP][137] ([i915#11151] / [i915#7828]) +2 other tests skip
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-8/igt@kms_chamelium_hpd@vga-hpd-fast.html
* igt@kms_chamelium_hpd@vga-hpd-without-ddc:
- shard-rkl: NOTRUN -> [SKIP][138] ([i915#11151] / [i915#14544] / [i915#7828])
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_chamelium_hpd@vga-hpd-without-ddc.html
* igt@kms_color@deep-color:
- shard-dg2: [PASS][139] -> [SKIP][140] ([i915#12655] / [i915#3555])
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-10/igt@kms_color@deep-color.html
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-3/igt@kms_color@deep-color.html
* igt@kms_content_protection@atomic-dpms-hdcp14:
- shard-dg2: NOTRUN -> [SKIP][141] ([i915#15865])
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_content_protection@atomic-dpms-hdcp14.html
* igt@kms_content_protection@content-type-change:
- shard-rkl: NOTRUN -> [SKIP][142] ([i915#15865]) +1 other test skip
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_content_protection@content-type-change.html
- shard-tglu: NOTRUN -> [SKIP][143] ([i915#15865]) +1 other test skip
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-5/igt@kms_content_protection@content-type-change.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-tglu-1: NOTRUN -> [SKIP][144] ([i915#15330] / [i915#3116] / [i915#3299])
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_content_protection@dp-mst-type-0-suspend-resume:
- shard-tglu: NOTRUN -> [SKIP][145] ([i915#15330])
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-3/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html
* igt@kms_content_protection@mei-interface:
- shard-tglu-1: NOTRUN -> [SKIP][146] ([i915#15865]) +1 other test skip
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_content_protection@mei-interface.html
* igt@kms_content_protection@suspend-resume@pipe-a-dp-3:
- shard-dg2: NOTRUN -> [FAIL][147] ([i915#7173])
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_content_protection@suspend-resume@pipe-a-dp-3.html
* igt@kms_cursor_crc@cursor-offscreen-512x512:
- shard-rkl: NOTRUN -> [SKIP][148] ([i915#13049])
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@kms_cursor_crc@cursor-offscreen-512x512.html
* igt@kms_cursor_crc@cursor-onscreen-256x85:
- shard-tglu: [PASS][149] -> [FAIL][150] ([i915#13566]) +1 other test fail
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-tglu-6/igt@kms_cursor_crc@cursor-onscreen-256x85.html
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-9/igt@kms_cursor_crc@cursor-onscreen-256x85.html
* igt@kms_cursor_crc@cursor-onscreen-32x32:
- shard-tglu-1: NOTRUN -> [SKIP][151] ([i915#3555]) +3 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-32x32.html
* igt@kms_cursor_crc@cursor-onscreen-512x512:
- shard-tglu: NOTRUN -> [SKIP][152] ([i915#13049]) +1 other test skip
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-3/igt@kms_cursor_crc@cursor-onscreen-512x512.html
- shard-mtlp: NOTRUN -> [SKIP][153] ([i915#13049])
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-2/igt@kms_cursor_crc@cursor-onscreen-512x512.html
- shard-dg2: NOTRUN -> [SKIP][154] ([i915#13049])
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-5/igt@kms_cursor_crc@cursor-onscreen-512x512.html
- shard-dg1: NOTRUN -> [SKIP][155] ([i915#13049])
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-17/igt@kms_cursor_crc@cursor-onscreen-512x512.html
* igt@kms_cursor_crc@cursor-onscreen-max-size:
- shard-rkl: NOTRUN -> [SKIP][156] ([i915#3555]) +4 other tests skip
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_cursor_crc@cursor-onscreen-max-size.html
- shard-dg1: NOTRUN -> [SKIP][157] ([i915#3555])
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-13/igt@kms_cursor_crc@cursor-onscreen-max-size.html
- shard-mtlp: NOTRUN -> [SKIP][158] ([i915#3555] / [i915#8814])
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-3/igt@kms_cursor_crc@cursor-onscreen-max-size.html
* igt@kms_cursor_crc@cursor-random-32x32:
- shard-rkl: NOTRUN -> [SKIP][159] ([i915#14544] / [i915#3555])
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_cursor_crc@cursor-random-32x32.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x32:
- shard-dg2: NOTRUN -> [SKIP][160] ([i915#3555]) +3 other tests skip
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_cursor_crc@cursor-rapid-movement-32x32.html
- shard-tglu: NOTRUN -> [SKIP][161] ([i915#3555]) +3 other tests skip
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-2/igt@kms_cursor_crc@cursor-rapid-movement-32x32.html
* igt@kms_cursor_crc@cursor-sliding-128x42:
- shard-dg1: NOTRUN -> [DMESG-WARN][162] ([i915#4423])
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-12/igt@kms_cursor_crc@cursor-sliding-128x42.html
- shard-mtlp: NOTRUN -> [SKIP][163] ([i915#8814])
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-5/igt@kms_cursor_crc@cursor-sliding-128x42.html
* igt@kms_cursor_crc@cursor-suspend:
- shard-glk: NOTRUN -> [INCOMPLETE][164] ([i915#12358] / [i915#14152] / [i915#7882])
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk2/igt@kms_cursor_crc@cursor-suspend.html
* igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [INCOMPLETE][165] ([i915#12358] / [i915#14152])
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk2/igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-1.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
- shard-dg2: NOTRUN -> [SKIP][166] ([i915#13046] / [i915#5354]) +2 other tests skip
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- shard-dg2: NOTRUN -> [SKIP][167] ([i915#4103] / [i915#4213])
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
- shard-dg1: NOTRUN -> [SKIP][168] ([i915#4103] / [i915#4213])
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-13/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
- shard-mtlp: NOTRUN -> [SKIP][169] ([i915#4213])
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- shard-rkl: NOTRUN -> [SKIP][170] ([i915#4103]) +1 other test skip
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- shard-tglu: NOTRUN -> [SKIP][171] ([i915#4103]) +2 other tests skip
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
- shard-mtlp: NOTRUN -> [SKIP][172] ([i915#9809]) +2 other tests skip
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-4/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-toggle:
- shard-mtlp: [PASS][173] -> [FAIL][174] ([i915#15768])
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-mtlp-1/igt@kms_cursor_legacy@flip-vs-cursor-toggle.html
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-2/igt@kms_cursor_legacy@flip-vs-cursor-toggle.html
* igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
- shard-dg2: NOTRUN -> [SKIP][175] ([i915#9067])
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-7/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
- shard-rkl: NOTRUN -> [SKIP][176] ([i915#9067])
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
- shard-tglu: NOTRUN -> [SKIP][177] ([i915#9067])
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-8/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
- shard-mtlp: NOTRUN -> [SKIP][178] ([i915#9067])
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-6/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
* igt@kms_dirtyfb@psr-dirtyfb-ioctl:
- shard-tglu-1: NOTRUN -> [SKIP][179] ([i915#9723])
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
* igt@kms_dp_link_training@non-uhbr-sst:
- shard-mtlp: NOTRUN -> [SKIP][180] ([i915#13749])
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-6/igt@kms_dp_link_training@non-uhbr-sst.html
- shard-dg2: NOTRUN -> [SKIP][181] ([i915#13749])
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_dp_link_training@non-uhbr-sst.html
- shard-rkl: NOTRUN -> [SKIP][182] ([i915#13749] / [i915#14544])
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_dp_link_training@non-uhbr-sst.html
- shard-dg1: NOTRUN -> [SKIP][183] ([i915#13749])
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-13/igt@kms_dp_link_training@non-uhbr-sst.html
- shard-tglu: NOTRUN -> [SKIP][184] ([i915#13749])
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-8/igt@kms_dp_link_training@non-uhbr-sst.html
* igt@kms_dp_linktrain_fallback@dp-fallback:
- shard-dg2: NOTRUN -> [SKIP][185] ([i915#13707])
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@kms_dp_linktrain_fallback@dp-fallback.html
* igt@kms_dp_linktrain_fallback@dsc-fallback:
- shard-rkl: NOTRUN -> [SKIP][186] ([i915#13707])
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@kms_dp_linktrain_fallback@dsc-fallback.html
- shard-tglu: NOTRUN -> [SKIP][187] ([i915#13707])
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-10/igt@kms_dp_linktrain_fallback@dsc-fallback.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-rkl: NOTRUN -> [SKIP][188] ([i915#3555] / [i915#3840]) +1 other test skip
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_dsc@dsc-with-bpc-formats.html
- shard-tglu: NOTRUN -> [SKIP][189] ([i915#3555] / [i915#3840])
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-8/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_dsc@dsc-with-formats:
- shard-mtlp: NOTRUN -> [SKIP][190] ([i915#3555] / [i915#3840])
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-3/igt@kms_dsc@dsc-with-formats.html
- shard-dg2: NOTRUN -> [SKIP][191] ([i915#3555] / [i915#3840])
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_dsc@dsc-with-formats.html
- shard-tglu-1: NOTRUN -> [SKIP][192] ([i915#3555] / [i915#3840])
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_dsc@dsc-with-formats.html
- shard-dg1: NOTRUN -> [SKIP][193] ([i915#3555] / [i915#3840])
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-13/igt@kms_dsc@dsc-with-formats.html
* igt@kms_fbcon_fbt@psr:
- shard-tglu-1: NOTRUN -> [SKIP][194] ([i915#3469])
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_fbcon_fbt@psr.html
* igt@kms_feature_discovery@psr2:
- shard-tglu-1: NOTRUN -> [SKIP][195] ([i915#658])
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_feature_discovery@psr2.html
- shard-rkl: NOTRUN -> [SKIP][196] ([i915#658])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-2/igt@kms_feature_discovery@psr2.html
* igt@kms_flip@2x-plain-flip:
- shard-rkl: NOTRUN -> [SKIP][197] ([i915#9934]) +4 other tests skip
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_flip@2x-plain-flip.html
* igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-tglu-1: NOTRUN -> [SKIP][198] ([i915#3637] / [i915#9934]) +6 other tests skip
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
* igt@kms_flip@2x-wf_vblank-ts-check:
- shard-dg2: NOTRUN -> [SKIP][199] ([i915#9934]) +3 other tests skip
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_flip@2x-wf_vblank-ts-check.html
- shard-dg1: NOTRUN -> [SKIP][200] ([i915#9934]) +1 other test skip
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-12/igt@kms_flip@2x-wf_vblank-ts-check.html
- shard-tglu: NOTRUN -> [SKIP][201] ([i915#3637] / [i915#9934]) +5 other tests skip
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-3/igt@kms_flip@2x-wf_vblank-ts-check.html
- shard-mtlp: NOTRUN -> [SKIP][202] ([i915#3637] / [i915#9934]) +1 other test skip
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-5/igt@kms_flip@2x-wf_vblank-ts-check.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-glk: NOTRUN -> [INCOMPLETE][203] ([i915#12745] / [i915#4839])
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk9/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1:
- shard-glk: NOTRUN -> [INCOMPLETE][204] ([i915#12745])
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk9/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling:
- shard-mtlp: NOTRUN -> [SKIP][205] ([i915#15643]) +3 other tests skip
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
- shard-dg2: NOTRUN -> [SKIP][206] ([i915#15643] / [i915#5190]) +2 other tests skip
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling:
- shard-tglu: NOTRUN -> [SKIP][207] ([i915#15643]) +5 other tests skip
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling:
- shard-rkl: NOTRUN -> [SKIP][208] ([i915#15643]) +2 other tests skip
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html
- shard-dg1: NOTRUN -> [SKIP][209] ([i915#15643]) +3 other tests skip
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-17/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
- shard-dg2: NOTRUN -> [SKIP][210] ([i915#15643])
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu:
- shard-tglu-1: NOTRUN -> [SKIP][211] +74 other tests skip
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc:
- shard-mtlp: NOTRUN -> [SKIP][212] ([i915#15991] / [i915#1825]) +9 other tests skip
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-move:
- shard-dg2: [PASS][213] -> [SKIP][214] ([i915#15989]) +2 other tests skip
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-10/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-move.html
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-7/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-onoff:
- shard-rkl: NOTRUN -> [SKIP][215] ([i915#15989]) +19 other tests skip
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-2/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-onoff.html
- shard-tglu-1: NOTRUN -> [SKIP][216] ([i915#15989]) +14 other tests skip
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-onoff.html
- shard-dg1: NOTRUN -> [SKIP][217] ([i915#15989]) +5 other tests skip
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-14/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-pri-indfb-draw-mmap-gtt:
- shard-dg1: NOTRUN -> [SKIP][218] ([i915#15990]) +17 other tests skip
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-15/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-pri-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-rte:
- shard-dg2: NOTRUN -> [SKIP][219] ([i915#15989]) +7 other tests skip
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@kms_frontbuffer_tracking@fbchdr-1p-rte.html
* igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-pri-indfb-draw-mmap-gtt:
- shard-glk: [PASS][220] -> [SKIP][221] +2 other tests skip
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-glk8/igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-pri-indfb-draw-mmap-gtt.html
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk9/igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-pri-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-spr-indfb-draw-mmap-wc:
- shard-dg2: NOTRUN -> [SKIP][222] ([i915#15990]) +26 other tests skip
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-cur-indfb-draw-pwrite:
- shard-dg2: NOTRUN -> [SKIP][223] ([i915#15991]) +26 other tests skip
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-cur-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-spr-indfb-draw-mmap-gtt:
- shard-mtlp: NOTRUN -> [SKIP][224] ([i915#15990]) +9 other tests skip
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-2/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-spr-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbchdr-suspend:
- shard-tglu: NOTRUN -> [SKIP][225] ([i915#15989]) +16 other tests skip
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-3/igt@kms_frontbuffer_tracking@fbchdr-suspend.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-mmap-wc:
- shard-dg1: NOTRUN -> [SKIP][226] ([i915#15104] / [i915#15990])
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-15/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-mmap-cpu:
- shard-dg2: NOTRUN -> [SKIP][227] ([i915#15102]) +10 other tests skip
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-render:
- shard-rkl: NOTRUN -> [SKIP][228] ([i915#14544] / [i915#15102]) +3 other tests skip
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite:
- shard-dg2: NOTRUN -> [SKIP][229] ([i915#15102] / [i915#3458]) +12 other tests skip
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render:
- shard-rkl: NOTRUN -> [SKIP][230] ([i915#14544] / [i915#15102] / [i915#3023])
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-rte:
- shard-rkl: NOTRUN -> [SKIP][231] ([i915#15102] / [i915#3023]) +13 other tests skip
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][232] ([i915#1825]) +19 other tests skip
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-gtt.html
- shard-mtlp: NOTRUN -> [SKIP][233] ([i915#15990] / [i915#8708]) +2 other tests skip
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen:
- shard-tglu: NOTRUN -> [SKIP][234] +98 other tests skip
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc:
- shard-tglu-1: NOTRUN -> [SKIP][235] ([i915#15102]) +29 other tests skip
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc.html
- shard-dg1: NOTRUN -> [SKIP][236] ([i915#15990] / [i915#8708]) +8 other tests skip
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-14/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
- shard-dg1: NOTRUN -> [SKIP][237] ([i915#15102] / [i915#3458]) +8 other tests skip
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-18/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-pri-indfb-draw-render:
- shard-glk11: NOTRUN -> [SKIP][238] +214 other tests skip
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk11/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-shrfb-plflip-blt:
- shard-dg1: NOTRUN -> [SKIP][239] ([i915#15102]) +9 other tests skip
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-19/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-draw-mmap-cpu:
- shard-rkl: NOTRUN -> [SKIP][240] ([i915#15102]) +17 other tests skip
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-fullscreen:
- shard-mtlp: NOTRUN -> [SKIP][241] ([i915#15989]) +12 other tests skip
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-4/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-4:
- shard-dg1: NOTRUN -> [SKIP][242] ([i915#5439])
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-19/igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-4.html
* igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-cur-indfb-onoff:
- shard-rkl: NOTRUN -> [SKIP][243] ([i915#14544]) +2 other tests skip
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-cur-indfb-onoff.html
* igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-spr-indfb-draw-blt:
- shard-mtlp: NOTRUN -> [SKIP][244] ([i915#15991]) +14 other tests skip
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-2/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-pwrite:
- shard-rkl: [PASS][245] -> [SKIP][246] ([i915#15989]) +13 other tests skip
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-pwrite.html
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-pwrite.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-wc:
- shard-dg2: NOTRUN -> [SKIP][247] ([i915#15104] / [i915#15990]) +1 other test skip
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt:
- shard-dg2: NOTRUN -> [SKIP][248] ([i915#10433] / [i915#15102] / [i915#3458])
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-dg2: NOTRUN -> [SKIP][249] ([i915#15990] / [i915#8708]) +15 other tests skip
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt:
- shard-rkl: NOTRUN -> [SKIP][250] ([i915#14544] / [i915#1825]) +2 other tests skip
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt:
- shard-dg2: NOTRUN -> [SKIP][251] ([i915#15991] / [i915#5354]) +19 other tests skip
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-pri-indfb-draw-blt:
- shard-tglu: NOTRUN -> [SKIP][252] ([i915#15102]) +39 other tests skip
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-5/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-cur-indfb-move:
- shard-rkl: NOTRUN -> [SKIP][253] +49 other tests skip
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-2/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-cur-indfb-move.html
- shard-dg1: NOTRUN -> [SKIP][254] +36 other tests skip
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-15/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-cur-indfb-move.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-tglu-1: NOTRUN -> [SKIP][255] ([i915#16012] / [i915#3555] / [i915#8228])
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_hdr@bpc-switch-dpms@pipe-a-hdmi-a-1-xrgb2101010:
- shard-tglu-1: NOTRUN -> [SKIP][256] ([i915#16012]) +1 other test skip
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_hdr@bpc-switch-dpms@pipe-a-hdmi-a-1-xrgb2101010.html
* igt@kms_hdr@bpc-switch@pipe-a-hdmi-a-1-xrgb2101010:
- shard-rkl: NOTRUN -> [SKIP][257] ([i915#16012]) +1 other test skip
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_hdr@bpc-switch@pipe-a-hdmi-a-1-xrgb2101010.html
* igt@kms_hdr@bpc-switch@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-dg2: NOTRUN -> [SKIP][258] ([i915#16012]) +1 other test skip
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@kms_hdr@bpc-switch@pipe-a-hdmi-a-3-xrgb16161616f.html
* igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-1-xrgb2101010:
- shard-dg2: NOTRUN -> [SKIP][259] ([i915#16011]) +1 other test skip
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-4/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-1-xrgb2101010.html
- shard-rkl: NOTRUN -> [SKIP][260] ([i915#16011]) +5 other tests skip
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-1-xrgb2101010.html
* igt@kms_hdr@invalid-metadata-sizes:
- shard-rkl: NOTRUN -> [SKIP][261] ([i915#16011] / [i915#3555] / [i915#8228])
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_hdr@invalid-metadata-sizes.html
* igt@kms_hdr@static-swap:
- shard-rkl: [PASS][262] -> [SKIP][263] ([i915#16011] / [i915#3555] / [i915#8228])
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_hdr@static-swap.html
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_hdr@static-swap.html
* igt@kms_hdr@static-swap@pipe-a-hdmi-a-2-xrgb2101010:
- shard-rkl: [PASS][264] -> [SKIP][265] ([i915#16011]) +1 other test skip
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_hdr@static-swap@pipe-a-hdmi-a-2-xrgb2101010.html
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_hdr@static-swap@pipe-a-hdmi-a-2-xrgb2101010.html
* igt@kms_hdr@static-toggle:
- shard-dg1: NOTRUN -> [SKIP][266] ([i915#16011] / [i915#3555] / [i915#8228])
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-12/igt@kms_hdr@static-toggle.html
* igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb2101010:
- shard-dg1: NOTRUN -> [SKIP][267] ([i915#16011]) +5 other tests skip
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-12/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb2101010.html
* igt@kms_joiner@basic-force-big-joiner:
- shard-tglu: NOTRUN -> [SKIP][268] ([i915#15459])
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-8/igt@kms_joiner@basic-force-big-joiner.html
- shard-dg2: NOTRUN -> [SKIP][269] ([i915#15459])
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@kms_joiner@basic-force-big-joiner.html
* igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping:
- shard-tglu: NOTRUN -> [SKIP][270] ([i915#15709]) +2 other tests skip
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-2/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping.html
* igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier:
- shard-tglu-1: NOTRUN -> [SKIP][271] ([i915#15709]) +1 other test skip
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier.html
* igt@kms_plane@pixel-format-x-tiled-modifier@pipe-a-plane-7:
- shard-tglu: NOTRUN -> [SKIP][272] ([i915#15608]) +1 other test skip
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-8/igt@kms_plane@pixel-format-x-tiled-modifier@pipe-a-plane-7.html
* igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier:
- shard-dg2: NOTRUN -> [SKIP][273] ([i915#15709]) +1 other test skip
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-4/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html
* igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier@pipe-b-plane-5:
- shard-rkl: NOTRUN -> [SKIP][274] ([i915#15608]) +1 other test skip
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-2/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier@pipe-b-plane-5.html
* igt@kms_plane@pixel-format-y-tiled-modifier@pipe-b-plane-7:
- shard-tglu-1: NOTRUN -> [SKIP][275] ([i915#15608]) +1 other test skip
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_plane@pixel-format-y-tiled-modifier@pipe-b-plane-7.html
* igt@kms_plane@plane-panning-bottom-right-suspend:
- shard-glk: NOTRUN -> [INCOMPLETE][276] ([i915#13026]) +1 other test incomplete
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk6/igt@kms_plane@plane-panning-bottom-right-suspend.html
* igt@kms_plane_alpha_blend@alpha-basic:
- shard-glk: NOTRUN -> [FAIL][277] ([i915#12178])
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk3/igt@kms_plane_alpha_blend@alpha-basic.html
* igt@kms_plane_alpha_blend@alpha-basic@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [FAIL][278] ([i915#7862]) +1 other test fail
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk3/igt@kms_plane_alpha_blend@alpha-basic@pipe-a-hdmi-a-1.html
* igt@kms_plane_alpha_blend@alpha-opaque-fb:
- shard-glk: NOTRUN -> [FAIL][279] ([i915#10647] / [i915#12169])
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk2/igt@kms_plane_alpha_blend@alpha-opaque-fb.html
* igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [FAIL][280] ([i915#10647]) +1 other test fail
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk2/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1.html
* igt@kms_plane_alpha_blend@constant-alpha-max:
- shard-glk11: NOTRUN -> [FAIL][281] ([i915#10647] / [i915#12169])
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk11/igt@kms_plane_alpha_blend@constant-alpha-max.html
* igt@kms_plane_alpha_blend@constant-alpha-max@pipe-a-hdmi-a-1:
- shard-glk11: NOTRUN -> [FAIL][282] ([i915#10647]) +1 other test fail
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk11/igt@kms_plane_alpha_blend@constant-alpha-max@pipe-a-hdmi-a-1.html
* igt@kms_plane_lowres@tiling-yf:
- shard-dg2: NOTRUN -> [SKIP][283] ([i915#3555] / [i915#8821])
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_plane_lowres@tiling-yf.html
* igt@kms_plane_multiple@2x-tiling-none:
- shard-dg2: NOTRUN -> [SKIP][284] ([i915#13958])
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_plane_multiple@2x-tiling-none.html
- shard-rkl: NOTRUN -> [SKIP][285] ([i915#13958])
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-4/igt@kms_plane_multiple@2x-tiling-none.html
- shard-dg1: NOTRUN -> [SKIP][286] ([i915#13958])
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-18/igt@kms_plane_multiple@2x-tiling-none.html
- shard-tglu: NOTRUN -> [SKIP][287] ([i915#13958])
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-2/igt@kms_plane_multiple@2x-tiling-none.html
- shard-mtlp: NOTRUN -> [SKIP][288] ([i915#13958])
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-8/igt@kms_plane_multiple@2x-tiling-none.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-a:
- shard-mtlp: NOTRUN -> [SKIP][289] ([i915#15329]) +9 other tests skip
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-3/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-a.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b:
- shard-rkl: NOTRUN -> [SKIP][290] ([i915#14544] / [i915#15329]) +3 other tests skip
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c:
- shard-tglu: NOTRUN -> [SKIP][291] ([i915#15329]) +4 other tests skip
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-8/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c.html
* igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-d:
- shard-dg1: NOTRUN -> [SKIP][292] ([i915#15329]) +9 other tests skip
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-17/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-d.html
* igt@kms_pm_backlight@brightness-with-dpms:
- shard-rkl: NOTRUN -> [SKIP][293] ([i915#12343])
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-4/igt@kms_pm_backlight@brightness-with-dpms.html
* igt@kms_pm_backlight@fade-with-dpms:
- shard-tglu: NOTRUN -> [SKIP][294] ([i915#9812]) +1 other test skip
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-9/igt@kms_pm_backlight@fade-with-dpms.html
- shard-dg2: NOTRUN -> [SKIP][295] ([i915#5354])
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@kms_pm_backlight@fade-with-dpms.html
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-tglu-1: NOTRUN -> [SKIP][296] ([i915#15948])
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_pm_dc@dc3co-vpb-simulation.html
* igt@kms_pm_dc@dc5-psr:
- shard-tglu: NOTRUN -> [SKIP][297] ([i915#15948])
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-6/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_dc@dc6-dpms:
- shard-dg2: NOTRUN -> [SKIP][298] ([i915#15751])
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_pm_dc@dc6-dpms.html
- shard-rkl: NOTRUN -> [FAIL][299] ([i915#15752])
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_pm_dc@dc6-dpms.html
- shard-dg1: NOTRUN -> [SKIP][300] ([i915#3361])
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-13/igt@kms_pm_dc@dc6-dpms.html
- shard-tglu: NOTRUN -> [FAIL][301] ([i915#15752])
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-8/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_lpsp@screens-disabled:
- shard-dg2: NOTRUN -> [SKIP][302] ([i915#8430])
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-3/igt@kms_pm_lpsp@screens-disabled.html
- shard-rkl: NOTRUN -> [SKIP][303] ([i915#8430])
[303]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_pm_lpsp@screens-disabled.html
- shard-dg1: NOTRUN -> [SKIP][304] ([i915#8430])
[304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-14/igt@kms_pm_lpsp@screens-disabled.html
- shard-tglu: NOTRUN -> [SKIP][305] ([i915#8430])
[305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-7/igt@kms_pm_lpsp@screens-disabled.html
- shard-mtlp: NOTRUN -> [SKIP][306] ([i915#8430])
[306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-2/igt@kms_pm_lpsp@screens-disabled.html
* igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
- shard-dg2: NOTRUN -> [SKIP][307] ([i915#15073])
[307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
- shard-dg1: [PASS][308] -> [SKIP][309] ([i915#15073])
[308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg1-14/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
[309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-19/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress:
- shard-tglu-1: NOTRUN -> [SKIP][310] ([i915#15073])
[310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
* igt@kms_pm_rpm@system-suspend-modeset:
- shard-glk: NOTRUN -> [INCOMPLETE][311] ([i915#10553])
[311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk9/igt@kms_pm_rpm@system-suspend-modeset.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf:
- shard-dg2: NOTRUN -> [SKIP][312] ([i915#11520]) +7 other tests skip
[312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf.html
- shard-rkl: NOTRUN -> [SKIP][313] ([i915#11520]) +5 other tests skip
[313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-4/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf:
- shard-tglu: NOTRUN -> [SKIP][314] ([i915#11520]) +9 other tests skip
[314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-7/igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf:
- shard-rkl: NOTRUN -> [SKIP][315] ([i915#11520] / [i915#14544]) +1 other test skip
[315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf:
- shard-tglu-1: NOTRUN -> [SKIP][316] ([i915#11520]) +6 other tests skip
[316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-a-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][317] ([i915#9808])
[317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-3/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-a-edp-1.html
* igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][318] ([i915#12316]) +3 other tests skip
[318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-3/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-b-edp-1.html
* igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area:
- shard-glk: NOTRUN -> [SKIP][319] ([i915#11520]) +5 other tests skip
[319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk1/igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area.html
* igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf:
- shard-glk10: NOTRUN -> [SKIP][320] ([i915#11520]) +1 other test skip
[320]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk10/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf.html
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-snb: NOTRUN -> [SKIP][321] ([i915#11520]) +4 other tests skip
[321]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-snb4/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html
- shard-dg1: NOTRUN -> [SKIP][322] ([i915#11520]) +5 other tests skip
[322]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-19/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@psr2-cursor-plane-update-sf:
- shard-glk11: NOTRUN -> [SKIP][323] ([i915#11520]) +4 other tests skip
[323]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk11/igt@kms_psr2_sf@psr2-cursor-plane-update-sf.html
* igt@kms_psr2_su@page_flip-xrgb8888:
- shard-tglu: NOTRUN -> [SKIP][324] ([i915#9683])
[324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-9/igt@kms_psr2_su@page_flip-xrgb8888.html
* igt@kms_psr@fbc-pr-cursor-blt:
- shard-mtlp: NOTRUN -> [SKIP][325] ([i915#9688]) +11 other tests skip
[325]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-5/igt@kms_psr@fbc-pr-cursor-blt.html
* igt@kms_psr@fbc-pr-sprite-render:
- shard-tglu-1: NOTRUN -> [SKIP][326] ([i915#9732]) +14 other tests skip
[326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@kms_psr@fbc-pr-sprite-render.html
* igt@kms_psr@fbc-psr-no-drrs:
- shard-tglu: NOTRUN -> [SKIP][327] ([i915#9732]) +20 other tests skip
[327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-5/igt@kms_psr@fbc-psr-no-drrs.html
* igt@kms_psr@psr-basic:
- shard-rkl: NOTRUN -> [SKIP][328] ([i915#1072] / [i915#14544] / [i915#9732])
[328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_psr@psr-basic.html
* igt@kms_psr@psr-cursor-mmap-cpu:
- shard-dg1: NOTRUN -> [SKIP][329] ([i915#1072] / [i915#9732]) +12 other tests skip
[329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-14/igt@kms_psr@psr-cursor-mmap-cpu.html
* igt@kms_psr@psr-sprite-plane-move:
- shard-rkl: NOTRUN -> [SKIP][330] ([i915#1072] / [i915#9732]) +17 other tests skip
[330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-2/igt@kms_psr@psr-sprite-plane-move.html
* igt@kms_psr@psr2-primary-mmap-gtt:
- shard-dg2: NOTRUN -> [SKIP][331] ([i915#1072] / [i915#9732]) +17 other tests skip
[331]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_psr@psr2-primary-mmap-gtt.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-tglu: NOTRUN -> [SKIP][332] ([i915#15949])
[332]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-3/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-270:
- shard-dg2: NOTRUN -> [SKIP][333] ([i915#12755] / [i915#15867] / [i915#5190])
[333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html
* igt@kms_rotation_crc@sprite-rotation-270:
- shard-dg2: NOTRUN -> [SKIP][334] ([i915#12755] / [i915#15867])
[334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-7/igt@kms_rotation_crc@sprite-rotation-270.html
- shard-mtlp: NOTRUN -> [SKIP][335] ([i915#12755] / [i915#15867]) +1 other test skip
[335]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-6/igt@kms_rotation_crc@sprite-rotation-270.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-dg1: NOTRUN -> [SKIP][336] ([i915#4423] / [i915#8623])
[336]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-19/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-mtlp: NOTRUN -> [SKIP][337] ([i915#8623])
[337]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-dg2: NOTRUN -> [SKIP][338] ([i915#8623])
[338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-2:
- shard-glk: NOTRUN -> [INCOMPLETE][339] ([i915#12276]) +3 other tests incomplete
[339]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk2/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-2.html
* igt@kms_vblank@ts-continuation-suspend@pipe-d-dp-3:
- shard-dg2: NOTRUN -> [ABORT][340] ([i915#15132]) +1 other test abort
[340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_vblank@ts-continuation-suspend@pipe-d-dp-3.html
* igt@kms_vrr@flipline:
- shard-rkl: NOTRUN -> [SKIP][341] ([i915#15243] / [i915#3555])
[341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@kms_vrr@flipline.html
* igt@kms_vrr@negative-basic:
- shard-dg2: NOTRUN -> [SKIP][342] ([i915#3555] / [i915#9906])
[342]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-4/igt@kms_vrr@negative-basic.html
- shard-tglu: NOTRUN -> [SKIP][343] ([i915#3555] / [i915#9906])
[343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-2/igt@kms_vrr@negative-basic.html
* igt@kms_vrr@seamless-rr-switch-drrs:
- shard-dg2: NOTRUN -> [SKIP][344] ([i915#9906])
[344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_vrr@seamless-rr-switch-drrs.html
- shard-rkl: NOTRUN -> [SKIP][345] ([i915#14544] / [i915#9906])
[345]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_vrr@seamless-rr-switch-drrs.html
- shard-dg1: NOTRUN -> [SKIP][346] ([i915#9906])
[346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-19/igt@kms_vrr@seamless-rr-switch-drrs.html
- shard-tglu: NOTRUN -> [SKIP][347] ([i915#9906])
[347]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-9/igt@kms_vrr@seamless-rr-switch-drrs.html
- shard-mtlp: NOTRUN -> [SKIP][348] ([i915#8808] / [i915#9906])
[348]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-5/igt@kms_vrr@seamless-rr-switch-drrs.html
* igt@perf@unprivileged-single-ctx-counters:
- shard-rkl: NOTRUN -> [SKIP][349] ([i915#14544] / [i915#2433])
[349]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@perf@unprivileged-single-ctx-counters.html
- shard-dg1: NOTRUN -> [SKIP][350] ([i915#2433])
[350]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-13/igt@perf@unprivileged-single-ctx-counters.html
* igt@perf_pmu@most-busy-idle-check-all:
- shard-dg2: [PASS][351] -> [FAIL][352] ([i915#15997]) +1 other test fail
[351]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-1/igt@perf_pmu@most-busy-idle-check-all.html
[352]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@perf_pmu@most-busy-idle-check-all.html
- shard-dg1: [PASS][353] -> [FAIL][354] ([i915#15997]) +1 other test fail
[353]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg1-17/igt@perf_pmu@most-busy-idle-check-all.html
[354]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-18/igt@perf_pmu@most-busy-idle-check-all.html
* igt@perf_pmu@rc6-all-gts:
- shard-rkl: NOTRUN -> [SKIP][355] ([i915#8516])
[355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-2/igt@perf_pmu@rc6-all-gts.html
- shard-tglu-1: NOTRUN -> [SKIP][356] ([i915#8516])
[356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-1/igt@perf_pmu@rc6-all-gts.html
* igt@perf_pmu@rc6@other-idle-gt0:
- shard-tglu: NOTRUN -> [SKIP][357] ([i915#8516])
[357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-3/igt@perf_pmu@rc6@other-idle-gt0.html
* igt@prime_vgem@basic-fence-mmap:
- shard-dg2: NOTRUN -> [SKIP][358] ([i915#3708] / [i915#4077])
[358]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@prime_vgem@basic-fence-mmap.html
* igt@sriov_basic@enable-vfs-autoprobe-off:
- shard-dg2: NOTRUN -> [SKIP][359] ([i915#9917])
[359]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-1/igt@sriov_basic@enable-vfs-autoprobe-off.html
- shard-rkl: NOTRUN -> [SKIP][360] ([i915#9917]) +1 other test skip
[360]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@sriov_basic@enable-vfs-autoprobe-off.html
- shard-dg1: NOTRUN -> [SKIP][361] ([i915#9917])
[361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-14/igt@sriov_basic@enable-vfs-autoprobe-off.html
* igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-6:
- shard-mtlp: NOTRUN -> [FAIL][362] ([i915#12910]) +9 other tests fail
[362]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-1/igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-6.html
* igt@sriov_basic@enable-vfs-bind-unbind-each@numvfs-random:
- shard-tglu: NOTRUN -> [FAIL][363] ([i915#12910]) +18 other tests fail
[363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-tglu-3/igt@sriov_basic@enable-vfs-bind-unbind-each@numvfs-random.html
#### Possible fixes ####
* igt@gem_exec_suspend@basic-s3:
- shard-glk: [INCOMPLETE][364] ([i915#13196] / [i915#13356]) -> [PASS][365] +1 other test pass
[364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-glk2/igt@gem_exec_suspend@basic-s3.html
[365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk1/igt@gem_exec_suspend@basic-s3.html
* igt@i915_suspend@basic-s2idle-without-i915:
- shard-rkl: [ABORT][366] ([i915#15131]) -> [PASS][367]
[366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-1/igt@i915_suspend@basic-s2idle-without-i915.html
[367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@i915_suspend@basic-s2idle-without-i915.html
* igt@i915_suspend@debugfs-reader:
- shard-dg2: [ABORT][368] ([i915#15131] / [i915#15140]) -> [PASS][369]
[368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-10/igt@i915_suspend@debugfs-reader.html
[369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-8/igt@i915_suspend@debugfs-reader.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-mtlp: [FAIL][370] ([i915#15733] / [i915#5138]) -> [PASS][371]
[370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-mtlp-2/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
[371]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_cursor_crc@cursor-onscreen-64x21:
- shard-rkl: [FAIL][372] ([i915#13566]) -> [PASS][373]
[372]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-64x21.html
[373]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@kms_cursor_crc@cursor-onscreen-64x21.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-rkl: [FAIL][374] ([i915#13027]) -> [PASS][375] +1 other test pass
[374]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[375]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_flip@flip-vs-suspend:
- shard-dg2: [ABORT][376] ([i915#15132]) -> [PASS][377] +1 other test pass
[376]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-10/igt@kms_flip@flip-vs-suspend.html
[377]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_flip@flip-vs-suspend.html
* igt@kms_force_connector_basic@force-connector-state:
- shard-mtlp: [SKIP][378] ([i915#15672]) -> [PASS][379]
[378]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-mtlp-1/igt@kms_force_connector_basic@force-connector-state.html
[379]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-3/igt@kms_force_connector_basic@force-connector-state.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-rkl: [SKIP][380] ([i915#15989]) -> [PASS][381] +6 other tests pass
[380]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-3/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-pri-shrfb-draw-mmap-wc.html
[381]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbchdr-rgb101010-draw-pwrite:
- shard-glk: [SKIP][382] -> [PASS][383]
[382]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-glk9/igt@kms_frontbuffer_tracking@fbchdr-rgb101010-draw-pwrite.html
[383]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk8/igt@kms_frontbuffer_tracking@fbchdr-rgb101010-draw-pwrite.html
* igt@kms_frontbuffer_tracking@hdr-1p-primscrn-indfb-msflip-blt:
- shard-dg2: [SKIP][384] ([i915#15989]) -> [PASS][385] +5 other tests pass
[384]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-3/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-indfb-msflip-blt.html
[385]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-indfb-msflip-blt.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-dg2: [SKIP][386] ([i915#16012] / [i915#3555] / [i915#8228]) -> [PASS][387]
[386]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-5/igt@kms_hdr@bpc-switch-dpms.html
[387]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_pm_rpm@dpms-lpsp:
- shard-dg1: [SKIP][388] ([i915#15073]) -> [PASS][389] +2 other tests pass
[388]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg1-19/igt@kms_pm_rpm@dpms-lpsp.html
[389]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-14/igt@kms_pm_rpm@dpms-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-dg2: [SKIP][390] ([i915#15073]) -> [PASS][391]
[390]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-4/igt@kms_pm_rpm@modeset-non-lpsp.html
[391]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-6/igt@kms_pm_rpm@modeset-non-lpsp.html
* igt@kms_setmode@basic:
- shard-dg1: [FAIL][392] ([i915#15106]) -> [PASS][393]
[392]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg1-17/igt@kms_setmode@basic.html
[393]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-12/igt@kms_setmode@basic.html
- shard-dg2: [FAIL][394] ([i915#15106]) -> [PASS][395]
[394]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-3/igt@kms_setmode@basic.html
[395]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_setmode@basic.html
#### Warnings ####
* igt@api_intel_bb@object-reloc-purge-cache:
- shard-rkl: [SKIP][396] ([i915#14544] / [i915#8411]) -> [SKIP][397] ([i915#8411])
[396]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@api_intel_bb@object-reloc-purge-cache.html
[397]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@api_intel_bb@object-reloc-purge-cache.html
* igt@gem_close_race@multigpu-basic-threads:
- shard-rkl: [SKIP][398] ([i915#14544] / [i915#7697]) -> [SKIP][399] ([i915#7697])
[398]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@gem_close_race@multigpu-basic-threads.html
[399]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@gem_close_race@multigpu-basic-threads.html
* igt@gem_create@create-ext-cpu-access-sanity-check:
- shard-rkl: [SKIP][400] ([i915#14544] / [i915#6335]) -> [SKIP][401] ([i915#6335])
[400]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@gem_create@create-ext-cpu-access-sanity-check.html
[401]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@gem_create@create-ext-cpu-access-sanity-check.html
* igt@gem_ctx_sseu@invalid-sseu:
- shard-rkl: [SKIP][402] ([i915#14544] / [i915#280]) -> [SKIP][403] ([i915#280])
[402]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@gem_ctx_sseu@invalid-sseu.html
[403]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@gem_ctx_sseu@invalid-sseu.html
* igt@gem_exec_capture@capture-invisible@smem0:
- shard-rkl: [SKIP][404] ([i915#14544] / [i915#6334]) -> [SKIP][405] ([i915#6334]) +1 other test skip
[404]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@gem_exec_capture@capture-invisible@smem0.html
[405]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@gem_exec_capture@capture-invisible@smem0.html
* igt@gem_exec_reloc@basic-write-wc-noreloc:
- shard-rkl: [SKIP][406] ([i915#3281]) -> [SKIP][407] ([i915#14544] / [i915#3281]) +1 other test skip
[406]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-5/igt@gem_exec_reloc@basic-write-wc-noreloc.html
[407]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@gem_exec_reloc@basic-write-wc-noreloc.html
* igt@gem_lmem_swapping@verify-random:
- shard-rkl: [SKIP][408] ([i915#14544] / [i915#4613]) -> [SKIP][409] ([i915#4613])
[408]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@gem_lmem_swapping@verify-random.html
[409]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@gem_lmem_swapping@verify-random.html
* igt@gem_partial_pwrite_pread@writes-after-reads-display:
- shard-rkl: [SKIP][410] ([i915#3282]) -> [SKIP][411] ([i915#14544] / [i915#3282])
[410]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-8/igt@gem_partial_pwrite_pread@writes-after-reads-display.html
[411]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads-display.html
* igt@gem_pread@display:
- shard-rkl: [SKIP][412] ([i915#14544] / [i915#3282]) -> [SKIP][413] ([i915#3282]) +1 other test skip
[412]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@gem_pread@display.html
[413]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@gem_pread@display.html
* igt@gem_userptr_blits@coherency-unsync:
- shard-rkl: [SKIP][414] ([i915#3297]) -> [SKIP][415] ([i915#14544] / [i915#3297])
[414]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-4/igt@gem_userptr_blits@coherency-unsync.html
[415]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@gem_userptr_blits@coherency-unsync.html
* igt@gem_userptr_blits@unsync-overlap:
- shard-rkl: [SKIP][416] ([i915#14544] / [i915#3297]) -> [SKIP][417] ([i915#3297])
[416]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@gem_userptr_blits@unsync-overlap.html
[417]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@gem_userptr_blits@unsync-overlap.html
* igt@gem_workarounds@suspend-resume-context:
- shard-rkl: [ABORT][418] ([i915#15131]) -> [INCOMPLETE][419] ([i915#13356])
[418]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-1/igt@gem_workarounds@suspend-resume-context.html
[419]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@gem_workarounds@suspend-resume-context.html
* igt@i915_module_load@fault-injection:
- shard-dg1: [ABORT][420] ([i915#11814] / [i915#15481]) -> [ABORT][421] ([i915#11814]) +1 other test abort
[420]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg1-16/igt@i915_module_load@fault-injection.html
[421]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-18/igt@i915_module_load@fault-injection.html
* igt@i915_module_load@resize-bar:
- shard-rkl: [SKIP][422] ([i915#14544] / [i915#6412]) -> [SKIP][423] ([i915#6412])
[422]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@i915_module_load@resize-bar.html
[423]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@i915_module_load@resize-bar.html
* igt@i915_pm_sseu@full-enable:
- shard-rkl: [SKIP][424] ([i915#14544] / [i915#4387]) -> [SKIP][425] ([i915#4387])
[424]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@i915_pm_sseu@full-enable.html
[425]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@i915_pm_sseu@full-enable.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-0:
- shard-rkl: [SKIP][426] ([i915#14544] / [i915#5286]) -> [SKIP][427] ([i915#5286]) +2 other tests skip
[426]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html
[427]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-8bpp-rotate-270:
- shard-rkl: [SKIP][428] ([i915#5286]) -> [SKIP][429] ([i915#14544] / [i915#5286])
[428]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-3/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
[429]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip:
- shard-rkl: [SKIP][430] ([i915#14544] / [i915#3828]) -> [SKIP][431] ([i915#3828])
[430]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip.html
[431]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-270:
- shard-rkl: [SKIP][432] ([i915#14544] / [i915#3638]) -> [SKIP][433] ([i915#3638])
[432]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
[433]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-2/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-rkl: [SKIP][434] -> [SKIP][435] ([i915#14544]) +25 other tests skip
[434]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-4/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[435]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-b-hdmi-a-2:
- shard-rkl: [SKIP][436] ([i915#6095]) -> [SKIP][437] ([i915#14544] / [i915#6095]) +3 other tests skip
[436]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-3/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-b-hdmi-a-2.html
[437]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-b-hdmi-a-2.html
* igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-2:
- shard-rkl: [SKIP][438] ([i915#14544] / [i915#6095]) -> [SKIP][439] ([i915#6095]) +4 other tests skip
[438]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-2.html
[439]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-2.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-c-hdmi-a-2:
- shard-rkl: [SKIP][440] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][441] ([i915#14098] / [i915#6095]) +7 other tests skip
[440]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-c-hdmi-a-2.html
[441]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-c-hdmi-a-2.html
* igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs:
- shard-rkl: [SKIP][442] ([i915#14098] / [i915#6095]) -> [SKIP][443] ([i915#14098] / [i915#14544] / [i915#6095]) +7 other tests skip
[442]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-5/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs.html
[443]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs.html
* igt@kms_chamelium_frames@dp-crc-fast:
- shard-rkl: [SKIP][444] ([i915#11151] / [i915#7828]) -> [SKIP][445] ([i915#11151] / [i915#14544] / [i915#7828]) +3 other tests skip
[444]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-7/igt@kms_chamelium_frames@dp-crc-fast.html
[445]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_chamelium_frames@dp-crc-fast.html
* igt@kms_chamelium_hpd@hdmi-hpd-storm-disable:
- shard-rkl: [SKIP][446] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][447] ([i915#11151] / [i915#7828]) +1 other test skip
[446]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html
[447]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html
* igt@kms_content_protection@atomic:
- shard-rkl: [SKIP][448] ([i915#14544] / [i915#15865]) -> [SKIP][449] ([i915#15865]) +1 other test skip
[448]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_content_protection@atomic.html
[449]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@atomic-dpms:
- shard-dg2: [FAIL][450] ([i915#7173]) -> [SKIP][451] ([i915#15865])
[450]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-10/igt@kms_content_protection@atomic-dpms.html
[451]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-4/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@atomic-hdcp14:
- shard-rkl: [SKIP][452] ([i915#15865]) -> [SKIP][453] ([i915#14544] / [i915#15865])
[452]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-1/igt@kms_content_protection@atomic-hdcp14.html
[453]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_content_protection@atomic-hdcp14.html
* igt@kms_content_protection@suspend-resume:
- shard-dg2: [SKIP][454] ([i915#15865]) -> [FAIL][455] ([i915#7173])
[454]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-3/igt@kms_content_protection@suspend-resume.html
[455]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_content_protection@suspend-resume.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-dg2: [SKIP][456] ([i915#13049]) -> [SKIP][457] ([i915#13049] / [i915#3359])
[456]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-4/igt@kms_cursor_crc@cursor-onscreen-512x170.html
[457]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-sliding-32x32:
- shard-rkl: [SKIP][458] ([i915#3555]) -> [SKIP][459] ([i915#14544] / [i915#3555])
[458]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-7/igt@kms_cursor_crc@cursor-sliding-32x32.html
[459]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_cursor_crc@cursor-sliding-32x32.html
* igt@kms_cursor_crc@cursor-sliding-512x170:
- shard-rkl: [SKIP][460] ([i915#13049] / [i915#14544]) -> [SKIP][461] ([i915#13049]) +1 other test skip
[460]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_cursor_crc@cursor-sliding-512x170.html
[461]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_cursor_crc@cursor-sliding-512x170.html
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-rkl: [SKIP][462] ([i915#13049]) -> [SKIP][463] ([i915#13049] / [i915#14544])
[462]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-2/igt@kms_cursor_crc@cursor-sliding-512x512.html
[463]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_cursor_crc@cursor-sliding-512x512.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-rkl: [SKIP][464] ([i915#4103]) -> [SKIP][465] ([i915#14544] / [i915#4103])
[464]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-3/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
[465]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_dsc@dsc-with-bpc:
- shard-rkl: [SKIP][466] ([i915#14544] / [i915#3555] / [i915#3840]) -> [SKIP][467] ([i915#3555] / [i915#3840])
[466]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_dsc@dsc-with-bpc.html
[467]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-4/igt@kms_dsc@dsc-with-bpc.html
* igt@kms_feature_discovery@display-3x:
- shard-rkl: [SKIP][468] ([i915#1839]) -> [SKIP][469] ([i915#14544] / [i915#1839])
[468]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-2/igt@kms_feature_discovery@display-3x.html
[469]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_feature_discovery@display-3x.html
* igt@kms_feature_discovery@psr1:
- shard-rkl: [SKIP][470] ([i915#658]) -> [SKIP][471] ([i915#14544] / [i915#658])
[470]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-4/igt@kms_feature_discovery@psr1.html
[471]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_feature_discovery@psr1.html
* igt@kms_flip@2x-flip-vs-dpms:
- shard-rkl: [SKIP][472] ([i915#14544] / [i915#9934]) -> [SKIP][473] ([i915#9934]) +2 other tests skip
[472]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_flip@2x-flip-vs-dpms.html
[473]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-2/igt@kms_flip@2x-flip-vs-dpms.html
* igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible:
- shard-rkl: [SKIP][474] ([i915#9934]) -> [SKIP][475] ([i915#14544] / [i915#9934]) +2 other tests skip
[474]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-2/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible.html
[475]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible.html
* igt@kms_flip@flip-vs-suspend:
- shard-glk: [INCOMPLETE][476] ([i915#12745] / [i915#4839] / [i915#6113]) -> [INCOMPLETE][477] ([i915#12745] / [i915#4839])
[476]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-glk1/igt@kms_flip@flip-vs-suspend.html
[477]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk6/igt@kms_flip@flip-vs-suspend.html
* igt@kms_flip@flip-vs-suspend@a-hdmi-a1:
- shard-glk: [INCOMPLETE][478] ([i915#12745] / [i915#6113]) -> [INCOMPLETE][479] ([i915#12745])
[478]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-glk1/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html
[479]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-glk6/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling:
- shard-rkl: [SKIP][480] ([i915#15643]) -> [SKIP][481] ([i915#14544] / [i915#15643]) +1 other test skip
[480]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling.html
[481]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt:
- shard-rkl: [SKIP][482] ([i915#14544] / [i915#1825]) -> [SKIP][483] ([i915#1825]) +16 other tests skip
[482]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html
[483]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-pwrite:
- shard-rkl: [SKIP][484] ([i915#15102] / [i915#3023]) -> [SKIP][485] ([i915#14544] / [i915#15102] / [i915#3023]) +7 other tests skip
[484]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-pwrite.html
[485]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt:
- shard-dg1: [SKIP][486] -> [SKIP][487] ([i915#4423]) +1 other test skip
[486]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg1-12/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
[487]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg1-19/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-suspend:
- shard-dg2: [SKIP][488] ([i915#10433] / [i915#15102] / [i915#3458]) -> [SKIP][489] ([i915#15102] / [i915#3458]) +2 other tests skip
[488]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
[489]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-rte:
- shard-rkl: [SKIP][490] ([i915#14544] / [i915#15102]) -> [SKIP][491] ([i915#15102]) +5 other tests skip
[490]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-rte.html
[491]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-rte.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-pwrite:
- shard-dg2: [SKIP][492] ([i915#15102] / [i915#3458]) -> [SKIP][493] ([i915#10433] / [i915#15102] / [i915#3458])
[492]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-pwrite.html
[493]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-rkl: [SKIP][494] ([i915#1825]) -> [SKIP][495] ([i915#14544] / [i915#1825]) +10 other tests skip
[494]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html
[495]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render:
- shard-rkl: [SKIP][496] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][497] ([i915#15102] / [i915#3023]) +6 other tests skip
[496]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html
[497]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html
* igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-cur-indfb-draw-mmap-gtt:
- shard-rkl: [SKIP][498] ([i915#15102]) -> [SKIP][499] ([i915#14544] / [i915#15102]) +7 other tests skip
[498]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-2/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-cur-indfb-draw-mmap-gtt.html
[499]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-cur-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-shrfb-plflip-blt:
- shard-rkl: [SKIP][500] ([i915#14544]) -> [SKIP][501] +23 other tests skip
[500]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-shrfb-plflip-blt.html
[501]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-shrfb-plflip-blt.html
* igt@kms_hdr@brightness-with-hdr:
- shard-rkl: [SKIP][502] ([i915#14544]) -> [SKIP][503] ([i915#16011])
[502]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_hdr@brightness-with-hdr.html
[503]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_hdr@invalid-hdr:
- shard-dg2: [SKIP][504] ([i915#16012] / [i915#3555] / [i915#8228]) -> [SKIP][505] ([i915#3555] / [i915#8228])
[504]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-4/igt@kms_hdr@invalid-hdr.html
[505]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_hdr@invalid-hdr.html
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-rkl: [SKIP][506] ([i915#15458]) -> [SKIP][507] ([i915#14544] / [i915#15458])
[506]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-3/igt@kms_joiner@basic-force-ultra-joiner.html
[507]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_joiner@basic-force-ultra-joiner.html
* igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
- shard-rkl: [SKIP][508] ([i915#14544] / [i915#15638] / [i915#15722]) -> [SKIP][509] ([i915#15638] / [i915#15722])
[508]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
[509]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
* igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier-source-clamping:
- shard-rkl: [SKIP][510] ([i915#15709]) -> [SKIP][511] ([i915#14544] / [i915#15709]) +1 other test skip
[510]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-5/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier-source-clamping.html
[511]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier-source-clamping.html
* igt@kms_plane_multiple@2x-tiling-4:
- shard-rkl: [SKIP][512] ([i915#13958] / [i915#14544]) -> [SKIP][513] ([i915#13958]) +1 other test skip
[512]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_plane_multiple@2x-tiling-4.html
[513]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@kms_plane_multiple@2x-tiling-4.html
* igt@kms_plane_multiple@2x-tiling-yf:
- shard-rkl: [SKIP][514] ([i915#13958]) -> [SKIP][515] ([i915#13958] / [i915#14544])
[514]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-8/igt@kms_plane_multiple@2x-tiling-yf.html
[515]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_plane_multiple@2x-tiling-yf.html
* igt@kms_pm_dc@dc6-psr:
- shard-rkl: [SKIP][516] ([i915#14544] / [i915#15948]) -> [SKIP][517] ([i915#15948])
[516]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_pm_dc@dc6-psr.html
[517]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-4/igt@kms_pm_dc@dc6-psr.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-rkl: [SKIP][518] ([i915#9340]) -> [SKIP][519] ([i915#3828])
[518]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-7/igt@kms_pm_lpsp@kms-lpsp.html
[519]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_prime@d3hot:
- shard-rkl: [SKIP][520] ([i915#14544] / [i915#6524]) -> [SKIP][521] ([i915#6524])
[520]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_prime@d3hot.html
[521]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-8/igt@kms_prime@d3hot.html
* igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf:
- shard-rkl: [SKIP][522] ([i915#11520] / [i915#14544]) -> [SKIP][523] ([i915#11520]) +1 other test skip
[522]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html
[523]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-5/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area:
- shard-rkl: [SKIP][524] ([i915#11520]) -> [SKIP][525] ([i915#11520] / [i915#14544]) +2 other tests skip
[524]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-2/igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area.html
[525]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area.html
* igt@kms_psr@fbc-psr-cursor-plane-move:
- shard-rkl: [SKIP][526] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][527] ([i915#1072] / [i915#9732]) +9 other tests skip
[526]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_psr@fbc-psr-cursor-plane-move.html
[527]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-7/igt@kms_psr@fbc-psr-cursor-plane-move.html
* igt@kms_psr@fbc-psr-primary-blt:
- shard-rkl: [SKIP][528] ([i915#1072] / [i915#9732]) -> [SKIP][529] ([i915#1072] / [i915#14544] / [i915#9732]) +12 other tests skip
[528]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-1/igt@kms_psr@fbc-psr-primary-blt.html
[529]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_psr@fbc-psr-primary-blt.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-dg2: [SKIP][530] ([i915#12755] / [i915#15867] / [i915#5190]) -> [SKIP][531] ([i915#15867] / [i915#5190])
[530]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-5/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
[531]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
* igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
- shard-dg2: [SKIP][532] ([i915#12755] / [i915#15867]) -> [SKIP][533] ([i915#15867])
[532]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-dg2-1/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html
[533]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-dg2-10/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html
* igt@kms_vrr@flip-basic-fastset:
- shard-rkl: [SKIP][534] ([i915#9906]) -> [SKIP][535] ([i915#14544] / [i915#9906]) +1 other test skip
[534]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-1/igt@kms_vrr@flip-basic-fastset.html
[535]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@kms_vrr@flip-basic-fastset.html
* igt@kms_vrr@lobf:
- shard-rkl: [SKIP][536] ([i915#11920] / [i915#14544]) -> [SKIP][537] ([i915#11920])
[536]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@kms_vrr@lobf.html
[537]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-4/igt@kms_vrr@lobf.html
* igt@perf@mi-rpc:
- shard-rkl: [SKIP][538] ([i915#14544] / [i915#2434]) -> [SKIP][539] ([i915#2434])
[538]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-6/igt@perf@mi-rpc.html
[539]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-4/igt@perf@mi-rpc.html
* igt@perf_pmu@module-unload:
- shard-mtlp: [ABORT][540] ([i915#15778]) -> [INCOMPLETE][541] ([i915#13520])
[540]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-mtlp-8/igt@perf_pmu@module-unload.html
[541]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-mtlp-8/igt@perf_pmu@module-unload.html
* igt@prime_vgem@basic-write:
- shard-rkl: [SKIP][542] ([i915#3291] / [i915#3708]) -> [SKIP][543] ([i915#14544] / [i915#3291] / [i915#3708])
[542]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18469/shard-rkl-3/igt@prime_vgem@basic-write.html
[543]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/shard-rkl-6/igt@prime_vgem@basic-write.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#10553]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10553
[i915#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#1099]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1099
[i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#11527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11527
[i915#11814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11814
[i915#11920]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11920
[i915#12169]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12169
[i915#12178]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12178
[i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276
[i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
[i915#12316]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12316
[i915#12343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12343
[i915#12358]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12358
[i915#12655]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12655
[i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
[i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
[i915#12761]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12761
[i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
[i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
[i915#12964]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12964
[i915#13026]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13026
[i915#13027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13027
[i915#13029]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13029
[i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
[i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
[i915#13196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13196
[i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
[i915#13520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13520
[i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
[i915#13707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13707
[i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
[i915#13783]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13783
[i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
[i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
[i915#14118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14118
[i915#14152]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14152
[i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
[i915#14545]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14545
[i915#14586]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14586
[i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
[i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102
[i915#15104]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15104
[i915#15106]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15106
[i915#15131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15131
[i915#15132]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15132
[i915#15140]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15140
[i915#15172]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15172
[i915#15243]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15243
[i915#15329]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15329
[i915#15330]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15330
[i915#15458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15458
[i915#15459]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15459
[i915#15481]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15481
[i915#15582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15582
[i915#15608]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15608
[i915#15638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15638
[i915#15643]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15643
[i915#15662]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15662
[i915#15672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15672
[i915#15709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15709
[i915#15722]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15722
[i915#15733]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15733
[i915#15751]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15751
[i915#15752]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15752
[i915#15768]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15768
[i915#15778]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15778
[i915#15816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15816
[i915#15865]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15865
[i915#15867]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15867
[i915#15871]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15871
[i915#15948]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15948
[i915#15949]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15949
[i915#15989]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15989
[i915#15990]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15990
[i915#15991]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15991
[i915#15997]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15997
[i915#16011]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16011
[i915#16012]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16012
[i915#16025]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16025
[i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433
[i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
[i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
[i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
[i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
[i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
[i915#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323
[i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
[i915#3361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3361
[i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
[i915#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469
[i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
[i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
[i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#3936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3936
[i915#4036]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4036
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
[i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
[i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
[i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387
[i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
[i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
[i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
[i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
[i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
[i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
[i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
[i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
[i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
[i915#5723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5723
[i915#5882]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5882
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6113]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6113
[i915#6188]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6188
[i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
[i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
[i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
[i915#6412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6412
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
[i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
[i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#7862]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7862
[i915#7882]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7882
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8289
[i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
[i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
[i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
[i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
[i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
[i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
[i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
[i915#8808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8808
[i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
[i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821
[i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
[i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
[i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
[i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808
[i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
[i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
[i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
[i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
[i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_8903 -> IGTPW_15146
* Piglit: piglit_4509 -> None
CI-20190529: 20190529
CI_DRM_18469: 0ce1c813197dfbe15ff14143da97ec11161e1795 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_15146: 236252b6b6e0a9533bafd592dd033d4132aa888f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8903: 6f88532e2fe22529195cc2f8cabff93d994688f8 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15146/index.html
[-- Attachment #2: Type: text/html, Size: 187108 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-12 10:22 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-11 5:43 [PATCH i-g-t 0/2] tests/intel/kms_tbt: Add DP tunneling validation tests Kunal Joshi
2026-05-11 5:43 ` [PATCH i-g-t 1/2] lib/igt_connector_helper: Add DRM connector helpers using libdisplay-info Kunal Joshi
2026-05-11 5:43 ` [PATCH i-g-t 2/2] tests/intel/kms_tbt: Add DP tunneling validation tests Kunal Joshi
2026-05-12 0:14 ` ✓ i915.CI.BAT: success for " Patchwork
2026-05-12 0:50 ` ✓ Xe.CI.BAT: " Patchwork
2026-05-12 3:20 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-05-12 10:22 ` ✓ i915.CI.Full: success " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox