public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH i-g-t v10 0/2] tests/intel/xe_pm_residency: Add ASPM Link residency test
@ 2026-01-06 13:51 Karthik Poosa
  2026-01-06 13:51 ` [PATCH i-g-t v10 1/2] lib/igt_device: Add API to get pci device upstream port Karthik Poosa
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: Karthik Poosa @ 2026-01-06 13:51 UTC (permalink / raw)
  To: igt-dev
  Cc: anshuman.gupta, badal.nilawar, riana.tauro, rodrigo.vivi,
	kamil.konieczny, Karthik Poosa

Add subtest aspm_link_residency to xe_pm_residency test to check ASPM Link state residency.
This uses the debugfs /sys/kernel/debug/dri/0/dgfx_pcie_link_residencies to read the
residency counters.
Add an API igt_device_get_pci_usp() to get pcie device's upstream port.

v2:
 - Avoid using igt_require() in igt_device_get_pci_device. (Kamil)
 - Add description about PCIe ASPM in commit message and code. (Kamil)
 - Resolve couple of compilation warnings about using variable as format string to sscanf.

v3:
 - Rename igt_device_get_pci_usp() to igt_device_get_pci_upstream_port(). (Kamil)

v4:
 - Refactor and enhance readability. (Badal)
 - Move save and restore of link states to separate functions. (Badal)

v5:
 - Use device type from pci express capability of pci config space to
   identify upstream port. (Badal)

v6:
 - Search for upstream port only two levels up of the endpoint as we want to
   verify ASPM only on PCIe link on which GPU card is present.
 - Skip test for integrated platforms.

v7:
 - Address below review comments from Riana.
 - Use igt_sysfs_has_attr() instead of faccess().
 - Remove unnecessary spaces, debug logs, if checks.
 - Wrap line length to 100 chars.
 - Use spinner instead of mmap as workload.

v8:
 - Address minor review comments from Kamil.

Karthik Poosa (2):
  lib/igt_device: Add API to get pci device upstream port
  tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency

 lib/igt_device.c              |  43 +++++++++
 lib/igt_device.h              |   1 +
 lib/igt_pci.h                 |   2 +
 tests/intel/xe_pm_residency.c | 176 ++++++++++++++++++++++++++++++++++
 4 files changed, 222 insertions(+)

-- 
2.25.1


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

* [PATCH i-g-t v10 1/2] lib/igt_device: Add API to get pci device upstream port
  2026-01-06 13:51 [PATCH i-g-t v10 0/2] tests/intel/xe_pm_residency: Add ASPM Link residency test Karthik Poosa
@ 2026-01-06 13:51 ` Karthik Poosa
  2026-01-06 13:51 ` [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency Karthik Poosa
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 15+ messages in thread
From: Karthik Poosa @ 2026-01-06 13:51 UTC (permalink / raw)
  To: igt-dev
  Cc: anshuman.gupta, badal.nilawar, riana.tauro, rodrigo.vivi,
	kamil.konieczny, Karthik Poosa

Add API igt_device_get_pci_upstream_port() to get pci device's
upstream port.
This API returns struct pci_device* of the upstream port that is closest
to the root port within the device's hierarchy.

v2: Avoid igt_require in igt_device_get_pci_usp(). (Kamil)

v3: Rename igt_device_get_pci_usp() to
    igt_device_get_pci_upstream_port(). (Kamil)

v4: Use device type from pci express capability of pci config space
    to identify upstream port. (Badal)

v5: Search for upstream port only two levels up of the endpoint as we want
    to verify ASPM only on PCIe link on which GPU card is present.

v6: Add missing spaces and new lines as per coding guidelines. (Kamil)

Signed-off-by: Karthik Poosa <karthik.poosa@intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
---
 lib/igt_device.c | 43 +++++++++++++++++++++++++++++++++++++++++++
 lib/igt_device.h |  1 +
 lib/igt_pci.h    |  2 ++
 3 files changed, 46 insertions(+)

diff --git a/lib/igt_device.c b/lib/igt_device.c
index c24f6a58d..c617a98bc 100644
--- a/lib/igt_device.c
+++ b/lib/igt_device.c
@@ -32,6 +32,7 @@
 #include "igt.h"
 #include "igt_device.h"
 #include "igt_sysfs.h"
+#include "igt_pci.h"
 
 int __igt_device_set_master(int fd)
 {
@@ -308,3 +309,45 @@ void igt_device_get_pci_slot_name(int fd, char *pci_slot_name)
 	snprintf(pci_slot_name, NAME_MAX, "%04x:%02x:%02x.%01x",
 		 pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func);
 }
+
+/**
+ * igt_device_get_pci_upstream_port:
+ * @fd: fd of the GPU endpoint.
+ *
+ * Looks up for the pci device's upstream port using libpciaccess.
+ *
+ * Returns:
+ * The pci_device of upstream port of the device referenced by fd, NULL on any failures.
+ */
+struct pci_device *
+igt_device_get_pci_upstream_port(int fd)
+{
+	struct pci_device *pci_dev = NULL;
+	uint8_t device_type = 0;
+	int offset = 0;
+	int level = 0;
+
+	pci_dev = __igt_device_get_pci_device(fd, 0);
+	if (!pci_dev) {
+		igt_warn("Couldn't get pci device for fd %d\n", fd);
+		return NULL;
+	}
+
+	for (pci_dev = pci_device_get_parent_bridge(pci_dev); (pci_dev && (level < 2));
+	     pci_dev = pci_device_get_parent_bridge(pci_dev), level++) {
+		igt_debug("PCI device %04x:%02x:%02x.%01x\n",  pci_dev->domain, pci_dev->bus,
+			  pci_dev->dev, pci_dev->func);
+		offset = find_pci_cap_offset(pci_dev, PCI_EXPRESS_CAP_ID);
+		if (offset <= 0) {
+			igt_warn("PCI Express Capability not found\n");
+			return NULL;
+		}
+
+		igt_assert(!pci_device_cfg_read_u8(pci_dev, &device_type,
+						   offset + PCI_DEVICE_TYPE_OFFSET));
+		if ((device_type >> 4) == PCI_DEVICE_TYPE_UPSTREAM_PORT)
+			return pci_dev;
+	}
+
+	return NULL;
+}
diff --git a/lib/igt_device.h b/lib/igt_device.h
index dad7bb047..781a72235 100644
--- a/lib/igt_device.h
+++ b/lib/igt_device.h
@@ -35,6 +35,7 @@ int igt_device_get_card_index(int fd);
 struct pci_device *igt_device_get_pci_device(int fd);
 struct pci_device *__igt_device_get_pci_device(int fd, unsigned int vf_id);
 struct pci_device *igt_device_get_pci_root_port(int fd);
+struct pci_device *igt_device_get_pci_upstream_port(int fd);
 
 void igt_device_get_pci_slot_name(int fd, char *pci_slot_name);
 #endif /* __IGT_DEVICE_H__ */
diff --git a/lib/igt_pci.h b/lib/igt_pci.h
index 92b9cc392..84355e9dd 100644
--- a/lib/igt_pci.h
+++ b/lib/igt_pci.h
@@ -20,6 +20,8 @@ enum pci_cap_id {
 	PCI_EXPRESS_CAP_ID = 0x10
 };
 
+#define PCI_DEVICE_TYPE_OFFSET 0x2
+#define PCI_DEVICE_TYPE_UPSTREAM_PORT	0x5
 #define PCI_SLOT_CAP_OFFSET 0x14
 #define  PCI_SLOT_PWR_CTRL_PRESENT (1 << 1)
 
-- 
2.25.1


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

* [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency
  2026-01-06 13:51 [PATCH i-g-t v10 0/2] tests/intel/xe_pm_residency: Add ASPM Link residency test Karthik Poosa
  2026-01-06 13:51 ` [PATCH i-g-t v10 1/2] lib/igt_device: Add API to get pci device upstream port Karthik Poosa
@ 2026-01-06 13:51 ` Karthik Poosa
  2026-01-07  6:24   ` Riana Tauro
  2026-01-06 14:17 ` ✓ Xe.CI.BAT: success for tests/intel/xe_pm_residency: Add ASPM Link residency test Patchwork
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: Karthik Poosa @ 2026-01-06 13:51 UTC (permalink / raw)
  To: igt-dev
  Cc: anshuman.gupta, badal.nilawar, riana.tauro, rodrigo.vivi,
	kamil.konieczny, Karthik Poosa

Add subtest aspm_link_residency to verify PCIe ASPM.
Active State Power Management (ASPM) is a power management mechanism
for PCI Express (PCIe) devices that aims to save power while the devices
are in a fully active state.
This test uses link state counters from the debugfs
dgfx_pcie_link_residencies to verify this.

v2:
 - Add dedicated function to get pcie endpoint upstream port. (Badal)
 - Read residency counter as unsigned long long int instead of
   unsigned long int.
 - Print residency counter before sleep also.
 - Don't assert if sysfs not corresponding to aspm_link_state
   is not present. (Badal)
 - Run workload before validation of aspm link residency. (Anshuman)

v3:
 - Move igt_device_get_pci_usp to separate patch. (Kamil)
 - Move reading of residency to separate function. (Badal)

v4:
 - Add description about PCIe ASPM in commit message and code. (Kamil)
 - Add a NULL check for the return value of igt_device_get_pci_usp().
 - Resolve compilation warnings about using variable as format string
   to sscanf.

v5:
 - Use igt_device_get_pci_upstream_port() which is the renamed version
   of igt_device_get_pci_usp().

v6:
 - Refactor and enhance readability. (Badal)
 - Move save and restore of link states to separate functions. (Badal)

v7:
 - Skip aspm_link_residency on integrated platforms as it not supported.

v8:
 - Address below review comments from Riana.
 - Use igt_sysfs_has_attr() instead of faccess().
 - Remove unnecessary spaces, debug logs, if checks.
 - Wrap line length to 100 chars.
 - Use spinner instead of mmap for workload.

v9:
 - Address review comments from Kamil.
 - Simplify couple of igt_asserts.
 - Remove extra spaces.

Signed-off-by: Karthik Poosa <karthik.poosa@intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
---
 tests/intel/xe_pm_residency.c | 176 ++++++++++++++++++++++++++++++++++
 1 file changed, 176 insertions(+)

diff --git a/tests/intel/xe_pm_residency.c b/tests/intel/xe_pm_residency.c
index d33a87b13..0ff0e4821 100644
--- a/tests/intel/xe_pm_residency.c
+++ b/tests/intel/xe_pm_residency.c
@@ -37,6 +37,27 @@ enum test_type {
 	TEST_IDLE,
 };
 
+enum link_state_index {
+	LINK_STATE_ASPM,
+	LINK_STATE_ASPM_L1_1,
+	LINK_STATE_ASPM_L1_2,
+	LINK_STATE_PCIPM_L1_1,
+	LINK_STATE_PCIPM_L1_2,
+	MAX_LINK_STATES,
+};
+
+struct link_state_info {
+	const char *filename;
+	char state;
+	const char *parse_str;
+} link_state_sysfs[] = {
+	{ "l1_aspm", 0, "PCIE LINK L1 RESIDENCY : "},
+	{ "l1_1_aspm", 0, "NULL"},
+	{ "l1_2_aspm", 0, "PCIE LINK L1.2 RESIDENCY : "},
+	{ "l1_1_pcipm", 0, NULL},
+	{ "l1_2_pcipm", 0, NULL},
+};
+
 /**
  * SUBTEST: gt-c6-on-idle
  * Description: Validate GT C6 state on idle
@@ -64,6 +85,10 @@ enum test_type {
  * SUBTEST: cpg-gt-toggle
  * Description: Toggle GT coarse power gating states by acquiring/releasing
  *		forcewake.
+ *
+ * SUBTEST: aspm_link_residency
+ * Description: Check for PCIe ASPM (Active State Power Management) link states
+ * entry while device is in D0.
  */
 IGT_TEST_DESCRIPTION("Tests for gtidle properties");
 
@@ -255,6 +280,21 @@ static void idle_residency_on_exec(int fd, struct drm_xe_engine_class_instance *
 	munmap(done, 4096);
 }
 
+static void do_spin(int fd, struct drm_xe_engine_class_instance *eci)
+{
+	igt_spin_t *spin;
+	uint64_t vm, ahnd;
+
+	igt_info("Running spinner on %s:%d\n",
+		 xe_engine_class_string(eci->engine_class), eci->engine_instance);
+	vm = xe_vm_create(fd, 0, 0);
+	intel_allocator_init();
+	ahnd = intel_allocator_open(fd, 0, INTEL_ALLOCATOR_RELOC);
+	spin = igt_spin_new(fd, .ahnd = ahnd, .vm = vm, .hwe = eci);
+	igt_measured_usleep(USEC_PER_SEC);
+	igt_spin_free(fd, spin);
+}
+
 static void measure_power(struct igt_power *gpu, double *power)
 {
 	struct power_sample power_sample[2];
@@ -370,6 +410,127 @@ static void cpg_gt_toggle(int fd)
 		powergate_status(fd, gt, "down");
 }
 
+static uint64_t get_link_state_residency(int fd_xe, const char *parse_str)
+{
+	int fd_debugfs_dir = 0;
+	int ret = 0;
+	char *ptr = NULL;
+	char path[256] = {0}, buf[1024] = {0};
+	uint64_t residency = 0;
+
+	fd_debugfs_dir = igt_debugfs_dir(fd_xe);
+	igt_assert(fd_debugfs_dir >= 0);
+	ret = igt_debugfs_simple_read(fd_debugfs_dir, "dgfx_pcie_link_residencies", buf,
+				      sizeof(buf));
+	igt_assert_f(ret >= 0, "Cannot read link residency file, ret %d\n", ret);
+	ptr = strstr(buf, parse_str);
+	igt_assert_f(ptr, "Cannot find residency string %s\n", parse_str);
+	sprintf(path, "%s%%llu", parse_str);
+	ret = sscanf(ptr + strlen(parse_str), "%lu", &residency);
+	igt_assert_f(ret > 0, "Couldn't read residency value, ret %d", ret);
+	igt_info("Link residency %"PRIu64"\n", residency);
+	close(fd_debugfs_dir);
+
+	return residency;
+}
+
+static void save_and_disable_link_states(int fd_pci_usp)
+{
+	int i = 0;
+	int ret = 0;
+	char path[256] = {0};
+
+	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
+		sprintf(path, "%s", link_state_sysfs[i].filename);
+		if (!igt_sysfs_has_attr(fd_pci_usp, path))
+			continue;
+		ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[i].state);
+		igt_assert_lt(0, ret);
+		igt_debug("saved %s = %c\n", link_state_sysfs[i].filename,
+			  link_state_sysfs[i].state);
+		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '0');
+		igt_assert_lt(0, ret);
+	}
+}
+
+static void restore_link_states(int fd_pci_usp)
+{
+	int i = 0;
+	int ret = 0;
+	char path[256] = {0};
+
+	/* Restore saved states of L1 sysfs entries. */
+	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
+		sprintf(path, "%s", link_state_sysfs[i].filename);
+		if (!igt_sysfs_has_attr(fd_pci_usp, path))
+			continue;
+		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", link_state_sysfs[i].state);
+		igt_assert_lt(0, ret);
+		igt_debug("restored %s to %c\n", link_state_sysfs[i].filename,
+			  link_state_sysfs[i].state);
+	}
+}
+
+static void test_aspm_link_residency(int fd_xe, enum link_state_index aspm_link_state)
+{
+	struct pci_device *pci_dev;
+	int fd_pci_usp = 0;
+	char name[PATH_MAX];
+	int ret = 0;
+	char path[256] = {0};
+	uint64_t residency_pre = 0, residency_post = 0;
+
+	igt_assert(aspm_link_state <= LINK_STATE_ASPM_L1_2);
+
+	/* Get upstream port pci_dev */
+	pci_dev = igt_device_get_pci_upstream_port(fd_xe);
+	igt_assert_f(pci_dev, "Couldn't get pci device of upstream port\n");
+	igt_debug("Upstream port PCI device: %04x:%02x:%02x.%01x\n", pci_dev->domain,
+		  pci_dev->bus, pci_dev->dev, pci_dev->func);
+
+	snprintf(name, sizeof(name), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/link",
+		 pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func);
+	fd_pci_usp = open(name, O_DIRECTORY);
+	igt_assert_f((fd_pci_usp >= 0), "Can't open link directory upstream port %s, ret %d\n",
+		     name, fd_pci_usp);
+
+	/* Disable runtime PM as link ASPM entry happens during device is in D0 only. */
+	igt_assert(igt_setup_runtime_pm(fd_xe));
+	igt_disable_runtime_pm();
+
+	/* Check if ASPM sysfs is present. */
+	sprintf(path, "%s", link_state_sysfs[aspm_link_state].filename);
+	igt_require_f(igt_sysfs_has_attr(fd_pci_usp, path), "%s is not present\n", path);
+	ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[aspm_link_state].state);
+	igt_assert_f((ret > 0), "Couldn't read residency for %s", path);
+
+	/* Save current state of all available link sysfs entries and disable all link states. */
+	save_and_disable_link_states(fd_pci_usp);
+
+	/* Enable only the ASPM link state needed for test. */
+	igt_debug("Enabling %s\n", link_state_sysfs[aspm_link_state].filename);
+	sprintf(path, "%s", link_state_sysfs[aspm_link_state].filename);
+	ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '1');
+
+	/* Read link state residencies before and after idle wait time. */
+	residency_pre = get_link_state_residency(fd_xe,
+						 link_state_sysfs[aspm_link_state].parse_str);
+	igt_info("Waiting for link to enter idle....\n");
+	sleep(SLEEP_DURATION);
+	residency_post = get_link_state_residency(fd_xe,
+						  link_state_sysfs[aspm_link_state].parse_str);
+
+	/* Restore saved link states. */
+	restore_link_states(fd_pci_usp);
+
+	igt_restore_runtime_pm();
+	close(fd_pci_usp);
+	close(fd_xe);
+
+	igt_assert_f(residency_post > residency_pre,
+		     "ASPM entry failed, pre %"PRIu64", post %"PRIu64"\n", residency_pre,
+		     residency_post);
+}
 int igt_main()
 {
 	uint32_t d3cold_allowed;
@@ -444,6 +605,21 @@ int igt_main()
 		cpg_gt_toggle(fd);
 	}
 
+	igt_describe("ASPM Link residency validation");
+	igt_subtest_with_dynamic("aspm_link_residency") {
+		igt_require(xe_has_vram(fd));
+		xe_for_each_gt(fd, gt) {
+			xe_for_each_engine(fd, hwe) {
+				if (gt == hwe->gt_id && !hwe->engine_instance) {
+					igt_dynamic_f("gt%u-engine-%s", gt,
+						      xe_engine_class_string(hwe->engine_class))
+						do_spin(fd, hwe);
+				}
+			}
+		}
+		test_aspm_link_residency(fd, LINK_STATE_ASPM);
+	}
+
 	igt_fixture() {
 		close(fd);
 	}
-- 
2.25.1


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

* ✓ Xe.CI.BAT: success for tests/intel/xe_pm_residency: Add ASPM Link residency test
  2026-01-06 13:51 [PATCH i-g-t v10 0/2] tests/intel/xe_pm_residency: Add ASPM Link residency test Karthik Poosa
  2026-01-06 13:51 ` [PATCH i-g-t v10 1/2] lib/igt_device: Add API to get pci device upstream port Karthik Poosa
  2026-01-06 13:51 ` [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency Karthik Poosa
@ 2026-01-06 14:17 ` Patchwork
  2026-01-06 14:42 ` ✓ i915.CI.BAT: " Patchwork
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-01-06 14:17 UTC (permalink / raw)
  To: Karthik Poosa; +Cc: igt-dev

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

== Series Details ==

Series: tests/intel/xe_pm_residency: Add ASPM Link residency test
URL   : https://patchwork.freedesktop.org/series/159693/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_8686_BAT -> XEIGTPW_14300_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Warnings ####

  * igt@xe_module_load@load:
    - bat-bmg-1:          [ABORT][1] ([Intel XE#6922] / [Intel XE#6930]) -> [ABORT][2] ([Intel XE#6922])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/bat-bmg-1/igt@xe_module_load@load.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/bat-bmg-1/igt@xe_module_load@load.html

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


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

  * IGT: IGT_8686 -> IGTPW_14300
  * Linux: xe-4334-22dc2883939d84e3e140efbeb71827aaff689f14 -> xe-4335-265d13795b45a5e68304e2cab23ea35975c871e8

  IGTPW_14300: 14300
  IGT_8686: 8686
  xe-4334-22dc2883939d84e3e140efbeb71827aaff689f14: 22dc2883939d84e3e140efbeb71827aaff689f14
  xe-4335-265d13795b45a5e68304e2cab23ea35975c871e8: 265d13795b45a5e68304e2cab23ea35975c871e8

== Logs ==

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

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

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

* ✓ i915.CI.BAT: success for tests/intel/xe_pm_residency: Add ASPM Link residency test
  2026-01-06 13:51 [PATCH i-g-t v10 0/2] tests/intel/xe_pm_residency: Add ASPM Link residency test Karthik Poosa
                   ` (2 preceding siblings ...)
  2026-01-06 14:17 ` ✓ Xe.CI.BAT: success for tests/intel/xe_pm_residency: Add ASPM Link residency test Patchwork
@ 2026-01-06 14:42 ` Patchwork
  2026-01-06 16:26 ` ✗ Xe.CI.Full: failure " Patchwork
  2026-01-06 19:35 ` ✓ i915.CI.Full: success " Patchwork
  5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-01-06 14:42 UTC (permalink / raw)
  To: Karthik Poosa; +Cc: igt-dev

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

== Series Details ==

Series: tests/intel/xe_pm_residency: Add ASPM Link residency test
URL   : https://patchwork.freedesktop.org/series/159693/
State : success

== Summary ==

CI Bug Log - changes from IGT_8686 -> IGTPW_14300
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (44 -> 41)
------------------------------

  Missing    (3): bat-dg2-13 fi-glk-j4005 fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_mmap@basic:
    - bat-dg2-11:         NOTRUN -> [SKIP][1] ([i915#4083])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@gem_mmap@basic.html

  * igt@gem_render_tiled_blits@basic:
    - bat-dg2-11:         NOTRUN -> [SKIP][2] ([i915#4079]) +1 other test skip
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@gem_render_tiled_blits@basic.html

  * igt@gem_tiled_fence_blits@basic:
    - bat-dg2-11:         NOTRUN -> [SKIP][3] ([i915#4077]) +2 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@gem_tiled_fence_blits@basic.html

  * igt@i915_pm_rps@basic-api:
    - bat-dg2-11:         NOTRUN -> [SKIP][4] ([i915#11681] / [i915#6621])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@i915_pm_rps@basic-api.html

  * igt@i915_selftest@live@workarounds:
    - bat-dg2-9:          [PASS][5] -> [DMESG-FAIL][6] ([i915#12061]) +1 other test dmesg-fail
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/bat-dg2-9/igt@i915_selftest@live@workarounds.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-9/igt@i915_selftest@live@workarounds.html
    - bat-dg2-11:         NOTRUN -> [DMESG-FAIL][7] ([i915#12061]) +1 other test dmesg-fail
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@i915_selftest@live@workarounds.html

  * igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
    - bat-dg2-11:         NOTRUN -> [SKIP][8] ([i915#4212]) +7 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-11:         NOTRUN -> [SKIP][9] ([i915#5190])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-dg2-11:         NOTRUN -> [SKIP][10] ([i915#4215] / [i915#5190])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - bat-dg2-11:         NOTRUN -> [SKIP][11] ([i915#4103] / [i915#4213]) +1 other test skip
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_dsc@dsc-basic:
    - bat-dg2-11:         NOTRUN -> [SKIP][12] ([i915#3555] / [i915#3840])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-dg2-11:         NOTRUN -> [SKIP][13]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-dg2-11:         NOTRUN -> [SKIP][14] ([i915#5354])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - bat-dg2-11:         NOTRUN -> [SKIP][15] ([i915#1072] / [i915#9732]) +3 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-dg2-11:         NOTRUN -> [SKIP][16] ([i915#3555])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-dg2-11:         NOTRUN -> [SKIP][17] ([i915#3708])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-gtt:
    - bat-dg2-11:         NOTRUN -> [SKIP][18] ([i915#3708] / [i915#4077]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@prime_vgem@basic-gtt.html

  * igt@prime_vgem@basic-write:
    - bat-dg2-11:         NOTRUN -> [SKIP][19] ([i915#3291] / [i915#3708]) +2 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@prime_vgem@basic-write.html

  
#### Possible fixes ####

  * igt@gem_exec_gttfill@basic:
    - bat-dg2-11:         [INCOMPLETE][20] -> [PASS][21]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/bat-dg2-11/igt@gem_exec_gttfill@basic.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-11/igt@gem_exec_gttfill@basic.html

  * igt@i915_selftest@live:
    - bat-dg2-8:          [DMESG-FAIL][22] ([i915#12061]) -> [PASS][23] +1 other test pass
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/bat-dg2-8/igt@i915_selftest@live.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-dg2-8/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-arls-5:         [DMESG-FAIL][24] ([i915#12061]) -> [PASS][25] +1 other test pass
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/bat-arls-5/igt@i915_selftest@live@workarounds.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/bat-arls-5/igt@i915_selftest@live@workarounds.html

  
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [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#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732


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

  * CI: CI-20190529 -> None
  * IGT: IGT_8686 -> IGTPW_14300

  CI-20190529: 20190529
  CI_DRM_17772: 265d13795b45a5e68304e2cab23ea35975c871e8 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_14300: 14300
  IGT_8686: 8686

== Logs ==

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

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

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

* ✗ Xe.CI.Full: failure for tests/intel/xe_pm_residency: Add ASPM Link residency test
  2026-01-06 13:51 [PATCH i-g-t v10 0/2] tests/intel/xe_pm_residency: Add ASPM Link residency test Karthik Poosa
                   ` (3 preceding siblings ...)
  2026-01-06 14:42 ` ✓ i915.CI.BAT: " Patchwork
@ 2026-01-06 16:26 ` Patchwork
  2026-01-06 19:35 ` ✓ i915.CI.Full: success " Patchwork
  5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-01-06 16:26 UTC (permalink / raw)
  To: Karthik Poosa; +Cc: igt-dev

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

== Series Details ==

Series: tests/intel/xe_pm_residency: Add ASPM Link residency test
URL   : https://patchwork.freedesktop.org/series/159693/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_8686_FULL -> XEIGTPW_14300_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_14300_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_14300_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_14300_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_pm_residency@aspm_link_residency (NEW):
    - shard-lnl:          NOTRUN -> [SKIP][1]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-4/igt@xe_pm_residency@aspm_link_residency.html

  
New tests
---------

  New tests have been introduced between XEIGT_8686_FULL and XEIGTPW_14300_FULL:

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

  * igt@xe_pm_residency@aspm_link_residency:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [0.0, 9.09] s

  * igt@xe_pm_residency@aspm_link_residency@gt0-engine-drm_xe_engine_class_compute:
    - Statuses : 1 pass(s)
    - Exec time: [1.01] s

  * igt@xe_pm_residency@aspm_link_residency@gt0-engine-drm_xe_engine_class_copy:
    - Statuses : 1 pass(s)
    - Exec time: [1.01] s

  * igt@xe_pm_residency@aspm_link_residency@gt0-engine-drm_xe_engine_class_render:
    - Statuses : 1 pass(s)
    - Exec time: [1.00] s

  * igt@xe_pm_residency@aspm_link_residency@gt1-engine-drm_xe_engine_class_video_decode:
    - Statuses : 1 pass(s)
    - Exec time: [1.01] s

  * igt@xe_pm_residency@aspm_link_residency@gt1-engine-drm_xe_engine_class_video_enhance:
    - Statuses : 1 pass(s)
    - Exec time: [1.00] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_big_fb@4-tiled-32bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][2] ([Intel XE#2327]) +7 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-addfb:
    - shard-bmg:          NOTRUN -> [SKIP][3] ([Intel XE#2328])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_big_fb@y-tiled-addfb.html

  * igt@kms_big_fb@y-tiled-addfb-size-overflow:
    - shard-bmg:          NOTRUN -> [SKIP][4] ([Intel XE#610])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@kms_big_fb@y-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-90:
    - shard-lnl:          NOTRUN -> [SKIP][5] ([Intel XE#1124]) +3 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@kms_big_fb@yf-tiled-8bpp-rotate-90.html

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

  * igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#2314] / [Intel XE#2894])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html

  * igt@kms_bw@linear-tiling-1-displays-2560x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][8] ([Intel XE#367]) +6 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_bw@linear-tiling-1-displays-2560x1440p.html

  * igt@kms_bw@linear-tiling-2-displays-1920x1080p:
    - shard-lnl:          NOTRUN -> [SKIP][9] ([Intel XE#367])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@kms_bw@linear-tiling-2-displays-1920x1080p.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][10] ([Intel XE#2887]) +2 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-4/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][11] ([Intel XE#3432]) +3 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html
    - shard-lnl:          NOTRUN -> [SKIP][12] ([Intel XE#3432])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-1/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][13] ([Intel XE#2887]) +23 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-b-dp-2:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#2652] / [Intel XE#787]) +8 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-b-dp-2.html

  * igt@kms_cdclk@plane-scaling:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#2724]) +1 other test skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-2/igt@kms_cdclk@plane-scaling.html

  * igt@kms_chamelium_color@degamma:
    - shard-bmg:          NOTRUN -> [SKIP][16] ([Intel XE#2325])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_chamelium_color@degamma.html

  * igt@kms_chamelium_edid@dp-edid-change-during-hibernate:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#2252]) +17 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-2/igt@kms_chamelium_edid@dp-edid-change-during-hibernate.html

  * igt@kms_chamelium_edid@hdmi-edid-change-during-suspend:
    - shard-lnl:          NOTRUN -> [SKIP][18] ([Intel XE#373]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-bmg:          NOTRUN -> [SKIP][19] ([Intel XE#2390])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@mei-interface:
    - shard-lnl:          NOTRUN -> [SKIP][20] ([Intel XE#1468])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-5/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@srm@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][21] ([Intel XE#1178]) +3 other tests fail
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@kms_content_protection@srm@pipe-a-dp-2.html

  * igt@kms_cursor_crc@cursor-onscreen-128x42:
    - shard-lnl:          NOTRUN -> [SKIP][22] ([Intel XE#1424])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-1/igt@kms_cursor_crc@cursor-onscreen-128x42.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-bmg:          NOTRUN -> [SKIP][23] ([Intel XE#2321]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#2320]) +7 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - shard-lnl:          NOTRUN -> [SKIP][25] ([Intel XE#309])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-2/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@flip-vs-cursor-legacy:
    - shard-bmg:          [PASS][26] -> [FAIL][27] ([Intel XE#4633])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-bmg-10/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-lnl:          NOTRUN -> [SKIP][28] ([Intel XE#323])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-4/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
    - shard-bmg:          NOTRUN -> [SKIP][29] ([Intel XE#2286])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-bmg:          NOTRUN -> [SKIP][30] ([Intel XE#2244]) +1 other test skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][31] ([Intel XE#4156])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][32] ([Intel XE#776]) +1 other test skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_feature_discovery@display-3x:
    - shard-lnl:          NOTRUN -> [SKIP][33] ([Intel XE#703])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@kms_feature_discovery@display-3x.html
    - shard-bmg:          NOTRUN -> [SKIP][34] ([Intel XE#2373])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@kms_feature_discovery@display-3x.html

  * igt@kms_feature_discovery@psr1:
    - shard-bmg:          NOTRUN -> [SKIP][35] ([Intel XE#2374])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@flip-vs-expired-vblank@b-edp1:
    - shard-lnl:          [PASS][36] -> [FAIL][37] ([Intel XE#301])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-valid-mode:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#2293]) +8 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-1/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][39] ([Intel XE#1401]) +1 other test skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-4/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-lnl:          NOTRUN -> [SKIP][40] ([Intel XE#1401] / [Intel XE#1745]) +1 other test skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][41] ([Intel XE#2293] / [Intel XE#2380]) +8 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][42] ([Intel XE#4141]) +13 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-rte:
    - shard-lnl:          NOTRUN -> [SKIP][43] ([Intel XE#651]) +6 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrs-1p-rte.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#2311]) +43 other tests skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][45] ([Intel XE#656]) +11 other tests skip
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#2313]) +38 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render.html

  * igt@kms_hdr@bpc-switch-suspend:
    - shard-bmg:          NOTRUN -> [ABORT][47] ([Intel XE#6740]) +1 other test abort
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@kms_hdr@bpc-switch-suspend.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#3544])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_hdr@static-swap:
    - shard-lnl:          NOTRUN -> [SKIP][49] ([Intel XE#1503])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@kms_hdr@static-swap.html

  * igt@kms_panel_fitting@atomic-fastset:
    - shard-bmg:          NOTRUN -> [SKIP][50] ([Intel XE#2486])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-2/igt@kms_panel_fitting@atomic-fastset.html

  * igt@kms_plane_multiple@tiling-y:
    - shard-lnl:          NOTRUN -> [SKIP][51] ([Intel XE#5020])
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@kms_plane_multiple@tiling-y.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-bmg:          NOTRUN -> [SKIP][52] ([Intel XE#5020]) +1 other test skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-1/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling:
    - shard-lnl:          NOTRUN -> [SKIP][53] ([Intel XE#6886]) +3 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b:
    - shard-bmg:          NOTRUN -> [SKIP][54] ([Intel XE#6886]) +4 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b.html

  * igt@kms_pm_backlight@brightness-with-dpms:
    - shard-bmg:          NOTRUN -> [SKIP][55] ([Intel XE#2938])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@kms_pm_backlight@brightness-with-dpms.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][56] ([Intel XE#870])
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-1/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-lnl:          [PASS][57] -> [FAIL][58] ([Intel XE#718]) +1 other test fail
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-4/igt@kms_pm_dc@dc5-psr.html
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-1/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-bmg:          NOTRUN -> [SKIP][59] ([Intel XE#2392])
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][60] ([Intel XE#1439] / [Intel XE#836])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][61] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#836])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf:
    - shard-lnl:          NOTRUN -> [SKIP][62] ([Intel XE#1406] / [Intel XE#2893])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@psr2-plane-move-sf-dmg-area:
    - shard-bmg:          NOTRUN -> [SKIP][63] ([Intel XE#1406] / [Intel XE#1489]) +11 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_psr2_sf@psr2-plane-move-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-bmg:          NOTRUN -> [SKIP][64] ([Intel XE#1406] / [Intel XE#2387])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr@fbc-psr2-primary-page-flip:
    - shard-lnl:          NOTRUN -> [SKIP][65] ([Intel XE#1406]) +2 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@kms_psr@fbc-psr2-primary-page-flip.html

  * igt@kms_psr@fbc-psr2-primary-page-flip@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][66] ([Intel XE#1406] / [Intel XE#4609])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@kms_psr@fbc-psr2-primary-page-flip@edp-1.html

  * igt@kms_psr@psr2-no-drrs:
    - shard-bmg:          NOTRUN -> [SKIP][67] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +17 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@kms_psr@psr2-no-drrs.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-lnl:          NOTRUN -> [SKIP][68] ([Intel XE#1127]) +1 other test skip
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
    - shard-bmg:          NOTRUN -> [SKIP][69] ([Intel XE#2330])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-bmg:          NOTRUN -> [SKIP][70] ([Intel XE#3414] / [Intel XE#3904]) +1 other test skip
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-2/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

  * igt@kms_scaling_modes@scaling-mode-center:
    - shard-bmg:          NOTRUN -> [SKIP][71] ([Intel XE#2413]) +1 other test skip
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@kms_scaling_modes@scaling-mode-center.html

  * igt@kms_sharpness_filter@filter-formats:
    - shard-bmg:          NOTRUN -> [SKIP][72] ([Intel XE#6503]) +3 other tests skip
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-2/igt@kms_sharpness_filter@filter-formats.html

  * igt@kms_vrr@cmrr:
    - shard-bmg:          NOTRUN -> [SKIP][73] ([Intel XE#2168])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_vrr@cmrr.html

  * igt@kms_vrr@cmrr@pipe-a-edp-1:
    - shard-lnl:          NOTRUN -> [FAIL][74] ([Intel XE#4459]) +1 other test fail
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-3/igt@kms_vrr@cmrr@pipe-a-edp-1.html

  * igt@kms_vrr@max-min:
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#1499]) +1 other test skip
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-2/igt@kms_vrr@max-min.html

  * igt@xe_compute@ccs-mode-basic:
    - shard-bmg:          NOTRUN -> [SKIP][76] ([Intel XE#6599]) +1 other test skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@xe_compute@ccs-mode-basic.html

  * igt@xe_create@create-big-vram:
    - shard-lnl:          NOTRUN -> [SKIP][77] ([Intel XE#1062])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@xe_create@create-big-vram.html

  * igt@xe_create@multigpu-create-massive-size:
    - shard-bmg:          NOTRUN -> [SKIP][78] ([Intel XE#2504])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@xe_create@multigpu-create-massive-size.html

  * igt@xe_eudebug@discovery-empty:
    - shard-bmg:          NOTRUN -> [SKIP][79] ([Intel XE#4837]) +13 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@xe_eudebug@discovery-empty.html

  * igt@xe_eudebug@multigpu-basic-client:
    - shard-lnl:          NOTRUN -> [SKIP][80] ([Intel XE#4837]) +2 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-5/igt@xe_eudebug@multigpu-basic-client.html

  * igt@xe_eudebug_online@basic-breakpoint:
    - shard-lnl:          NOTRUN -> [SKIP][81] ([Intel XE#4837] / [Intel XE#6665]) +1 other test skip
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@xe_eudebug_online@basic-breakpoint.html

  * igt@xe_eudebug_online@set-breakpoint-faultable:
    - shard-bmg:          NOTRUN -> [SKIP][82] ([Intel XE#4837] / [Intel XE#6665]) +6 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-1/igt@xe_eudebug_online@set-breakpoint-faultable.html

  * igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd:
    - shard-lnl:          NOTRUN -> [SKIP][83] ([Intel XE#688]) +2 other tests skip
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd.html

  * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][84] ([Intel XE#2322]) +11 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-2/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_basic@multigpu-once-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][85] ([Intel XE#1392]) +1 other test skip
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@xe_exec_basic@multigpu-once-rebind.html

  * igt@xe_exec_multi_queue@few-execs-preempt-mode-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][86] ([Intel XE#6874]) +47 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-1/igt@xe_exec_multi_queue@few-execs-preempt-mode-userptr-invalidate.html

  * igt@xe_exec_multi_queue@many-execs-preempt-mode-dyn-priority:
    - shard-lnl:          NOTRUN -> [SKIP][87] ([Intel XE#6874]) +6 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@xe_exec_multi_queue@many-execs-preempt-mode-dyn-priority.html

  * igt@xe_exec_system_allocator@many-64k-mmap-huge:
    - shard-bmg:          NOTRUN -> [SKIP][88] ([Intel XE#5007])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-1/igt@xe_exec_system_allocator@many-64k-mmap-huge.html

  * igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-multi-vma:
    - shard-lnl:          NOTRUN -> [SKIP][89] ([Intel XE#6196])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-5/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-multi-vma.html

  * igt@xe_exec_system_allocator@process-many-mmap-free-huge:
    - shard-bmg:          NOTRUN -> [SKIP][90] ([Intel XE#4943]) +36 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-1/igt@xe_exec_system_allocator@process-many-mmap-free-huge.html

  * igt@xe_exec_system_allocator@process-many-stride-mmap-huge:
    - shard-lnl:          NOTRUN -> [SKIP][91] ([Intel XE#4943]) +5 other tests skip
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@xe_exec_system_allocator@process-many-stride-mmap-huge.html

  * igt@xe_module_load@load:
    - shard-lnl:          ([PASS][92], [PASS][93], [PASS][94], [PASS][95], [PASS][96], [PASS][97], [PASS][98], [PASS][99], [PASS][100], [PASS][101], [PASS][102], [PASS][103], [PASS][104], [PASS][105], [PASS][106], [PASS][107], [PASS][108], [PASS][109], [PASS][110], [PASS][111], [PASS][112], [PASS][113], [PASS][114], [PASS][115], [PASS][116]) -> ([PASS][117], [PASS][118], [PASS][119], [PASS][120], [PASS][121], [PASS][122], [PASS][123], [PASS][124], [PASS][125], [PASS][126], [PASS][127], [PASS][128], [PASS][129], [PASS][130], [PASS][131], [PASS][132], [PASS][133], [PASS][134], [PASS][135], [PASS][136], [PASS][137], [SKIP][138], [PASS][139], [PASS][140], [PASS][141], [PASS][142]) ([Intel XE#378])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-3/igt@xe_module_load@load.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-3/igt@xe_module_load@load.html
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-3/igt@xe_module_load@load.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-5/igt@xe_module_load@load.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-2/igt@xe_module_load@load.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-4/igt@xe_module_load@load.html
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-8/igt@xe_module_load@load.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-4/igt@xe_module_load@load.html
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-8/igt@xe_module_load@load.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-2/igt@xe_module_load@load.html
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-7/igt@xe_module_load@load.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-7/igt@xe_module_load@load.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-8/igt@xe_module_load@load.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-8/igt@xe_module_load@load.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-7/igt@xe_module_load@load.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-1/igt@xe_module_load@load.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-5/igt@xe_module_load@load.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-5/igt@xe_module_load@load.html
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-1/igt@xe_module_load@load.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-5/igt@xe_module_load@load.html
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-4/igt@xe_module_load@load.html
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-3/igt@xe_module_load@load.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-1/igt@xe_module_load@load.html
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-4/igt@xe_module_load@load.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-2/igt@xe_module_load@load.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-5/igt@xe_module_load@load.html
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-4/igt@xe_module_load@load.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-3/igt@xe_module_load@load.html
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-3/igt@xe_module_load@load.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-3/igt@xe_module_load@load.html
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-2/igt@xe_module_load@load.html
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-1/igt@xe_module_load@load.html
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-4/igt@xe_module_load@load.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@xe_module_load@load.html
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-2/igt@xe_module_load@load.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@xe_module_load@load.html
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-4/igt@xe_module_load@load.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-2/igt@xe_module_load@load.html
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-3/igt@xe_module_load@load.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-1/igt@xe_module_load@load.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@xe_module_load@load.html
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@xe_module_load@load.html
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@xe_module_load@load.html
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@xe_module_load@load.html
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-1/igt@xe_module_load@load.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-1/igt@xe_module_load@load.html
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-8/igt@xe_module_load@load.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-5/igt@xe_module_load@load.html
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-5/igt@xe_module_load@load.html
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-5/igt@xe_module_load@load.html
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@xe_module_load@load.html

  * igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch:
    - shard-bmg:          NOTRUN -> [SKIP][143] ([Intel XE#6964]) +7 other tests skip
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch.html

  * igt@xe_multigpu_svm@mgpu-migration-basic:
    - shard-lnl:          NOTRUN -> [SKIP][144] ([Intel XE#6964])
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-4/igt@xe_multigpu_svm@mgpu-migration-basic.html

  * igt@xe_pm@d3cold-i2c:
    - shard-bmg:          NOTRUN -> [SKIP][145] ([Intel XE#5694])
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-9/igt@xe_pm@d3cold-i2c.html

  * igt@xe_pm@d3cold-mmap-vram:
    - shard-bmg:          NOTRUN -> [SKIP][146] ([Intel XE#2284]) +1 other test skip
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@xe_pm@d3cold-mmap-vram.html

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

  * igt@xe_pm@s3-vm-bind-unbind-all:
    - shard-lnl:          NOTRUN -> [SKIP][148] ([Intel XE#584])
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-7/igt@xe_pm@s3-vm-bind-unbind-all.html

  * igt@xe_pxp@pxp-optout:
    - shard-bmg:          NOTRUN -> [SKIP][149] ([Intel XE#4733]) +2 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@xe_pxp@pxp-optout.html

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

  * igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
    - shard-bmg:          NOTRUN -> [SKIP][151] ([Intel XE#944]) +5 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html

  * igt@xe_sriov_scheduling@equal-throughput@numvfs-random:
    - shard-bmg:          NOTRUN -> [FAIL][152] ([Intel XE#5937]) +1 other test fail
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-1/igt@xe_sriov_scheduling@equal-throughput@numvfs-random.html

  
#### Possible fixes ####

  * igt@kms_async_flips@async-flip-with-page-flip-events-linear:
    - shard-lnl:          [FAIL][153] ([Intel XE#5993]) -> [PASS][154] +3 other tests pass
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-2/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-5/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html

  * igt@kms_flip@flip-vs-expired-vblank@a-edp1:
    - shard-lnl:          [FAIL][155] ([Intel XE#301]) -> [PASS][156]
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html

  * igt@kms_flip@flip-vs-expired-vblank@c-edp1:
    - shard-lnl:          [FAIL][157] ([Intel XE#301] / [Intel XE#3149]) -> [PASS][158]
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-bmg:          [ABORT][159] ([Intel XE#6740]) -> [PASS][160] +1 other test pass
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-bmg-9/igt@kms_hdr@invalid-metadata-sizes.html
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-3/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-lnl:          [FAIL][161] ([Intel XE#718]) -> [PASS][162]
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-3/igt@kms_pm_dc@dc6-dpms.html
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-4/igt@kms_pm_dc@dc6-dpms.html

  * igt@xe_gt_freq@freq_suspend:
    - shard-bmg:          [INCOMPLETE][163] -> [PASS][164]
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-bmg-7/igt@xe_gt_freq@freq_suspend.html
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-7/igt@xe_gt_freq@freq_suspend.html

  * igt@xe_pmu@engine-activity-accuracy-50:
    - shard-lnl:          [FAIL][165] ([Intel XE#6251]) -> [PASS][166] +2 other tests pass
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-8/igt@xe_pmu@engine-activity-accuracy-50.html
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-3/igt@xe_pmu@engine-activity-accuracy-50.html

  * igt@xe_vm@invalid-flag-xe_vm_create_scratch_fault:
    - shard-bmg:          [SKIP][167] ([Intel XE#6703]) -> [PASS][168] +12 other tests pass
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-bmg-2/igt@xe_vm@invalid-flag-xe_vm_create_scratch_fault.html
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@xe_vm@invalid-flag-xe_vm_create_scratch_fault.html

  
#### Warnings ####

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc:
    - shard-bmg:          [SKIP][169] ([Intel XE#6703]) -> [SKIP][170] ([Intel XE#2887])
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-bmg-2/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc.html
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-2/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_dp_linktrain_fallback@dsc-fallback:
    - shard-bmg:          [SKIP][171] ([Intel XE#6703]) -> [SKIP][172] ([Intel XE#4331])
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-bmg-2/igt@kms_dp_linktrain_fallback@dsc-fallback.html
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-1/igt@kms_dp_linktrain_fallback@dsc-fallback.html

  * igt@kms_flip@flip-vs-expired-vblank:
    - shard-lnl:          [FAIL][173] ([Intel XE#301] / [Intel XE#3149]) -> [FAIL][174] ([Intel XE#301])
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank.html
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-render:
    - shard-bmg:          [SKIP][175] ([Intel XE#6703]) -> [SKIP][176] ([Intel XE#2311])
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-render.html
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-render.html

  * igt@kms_hdr@invalid-hdr:
    - shard-bmg:          [ABORT][177] ([Intel XE#6740]) -> [SKIP][178] ([Intel XE#1503])
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-bmg-7/igt@kms_hdr@invalid-hdr.html
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@kms_hdr@invalid-hdr.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-bmg:          [SKIP][179] ([Intel XE#2426]) -> [FAIL][180] ([Intel XE#1729])
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8686/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern.html
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14300/shard-bmg-10/igt@kms_tiled_display@basic-test-pattern.html

  
  [Intel XE#1062]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1062
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1468]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1468
  [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#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1948]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1948
  [Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
  [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#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
  [Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
  [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#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2328
  [Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
  [Intel XE#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373
  [Intel XE#2374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2374
  [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
  [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
  [Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
  [Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
  [Intel XE#2504]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2504
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
  [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#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
  [Intel XE#2938]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2938
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [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#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156
  [Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
  [Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#4633]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4633
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007
  [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
  [Intel XE#5694]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5694
  [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
  [Intel XE#5937]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5937
  [Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [Intel XE#6196]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6196
  [Intel XE#6251]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6251
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#6599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6599
  [Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
  [Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
  [Intel XE#6740]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6740
  [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#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
  [Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
  [Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * IGT: IGT_8686 -> IGTPW_14300
  * Linux: xe-4334-22dc2883939d84e3e140efbeb71827aaff689f14 -> xe-4335-265d13795b45a5e68304e2cab23ea35975c871e8

  IGTPW_14300: 14300
  IGT_8686: 8686
  xe-4334-22dc2883939d84e3e140efbeb71827aaff689f14: 22dc2883939d84e3e140efbeb71827aaff689f14
  xe-4335-265d13795b45a5e68304e2cab23ea35975c871e8: 265d13795b45a5e68304e2cab23ea35975c871e8

== Logs ==

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

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

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

* ✓ i915.CI.Full: success for tests/intel/xe_pm_residency: Add ASPM Link residency test
  2026-01-06 13:51 [PATCH i-g-t v10 0/2] tests/intel/xe_pm_residency: Add ASPM Link residency test Karthik Poosa
                   ` (4 preceding siblings ...)
  2026-01-06 16:26 ` ✗ Xe.CI.Full: failure " Patchwork
@ 2026-01-06 19:35 ` Patchwork
  5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-01-06 19:35 UTC (permalink / raw)
  To: Karthik Poosa; +Cc: igt-dev

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

== Series Details ==

Series: tests/intel/xe_pm_residency: Add ASPM Link residency test
URL   : https://patchwork.freedesktop.org/series/159693/
State : success

== Summary ==

CI Bug Log - changes from IGT_8686_full -> IGTPW_14300_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@crc32:
    - shard-dg1:          NOTRUN -> [SKIP][1] ([i915#6230])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-13/igt@api_intel_bb@crc32.html

  * igt@device_reset@cold-reset-bound:
    - shard-rkl:          NOTRUN -> [SKIP][2] ([i915#11078] / [i915#14544])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@device_reset@cold-reset-bound.html

  * igt@device_reset@unbind-cold-reset-rebind:
    - shard-rkl:          NOTRUN -> [SKIP][3] ([i915#11078])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@device_reset@unbind-cold-reset-rebind.html

  * igt@drm_buddy@drm_buddy@drm_test_buddy_fragmentation_performance:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][4] ([i915#15095]) +1 other test dmesg-warn
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@drm_buddy@drm_buddy@drm_test_buddy_fragmentation_performance.html

  * igt@gem_ccs@block-copy-compressed:
    - shard-dg1:          NOTRUN -> [SKIP][5] ([i915#3555] / [i915#9323])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@gem_ccs@block-copy-compressed.html

  * igt@gem_ccs@block-multicopy-compressed:
    - shard-tglu:         NOTRUN -> [SKIP][6] ([i915#9323])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-9/igt@gem_ccs@block-multicopy-compressed.html

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-tglu:         NOTRUN -> [SKIP][7] ([i915#3555] / [i915#9323])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-4/igt@gem_ccs@ctrl-surf-copy.html

  * igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-smem-lmem0:
    - shard-dg2:          NOTRUN -> [INCOMPLETE][8] ([i915#12392] / [i915#13356])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-5/igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-smem-lmem0.html

  * igt@gem_close_race@multigpu-basic-threads:
    - shard-rkl:          NOTRUN -> [SKIP][9] ([i915#7697])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@gem_close_race@multigpu-basic-threads.html

  * igt@gem_ctx_persistence@engines-mixed-process:
    - shard-snb:          NOTRUN -> [SKIP][10] ([i915#1099])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-snb5/igt@gem_ctx_persistence@engines-mixed-process.html

  * igt@gem_ctx_sseu@mmap-args:
    - shard-tglu:         NOTRUN -> [SKIP][11] ([i915#280])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-3/igt@gem_ctx_sseu@mmap-args.html

  * igt@gem_exec_balancer@parallel-contexts:
    - shard-tglu-1:       NOTRUN -> [SKIP][12] ([i915#4525])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@gem_exec_balancer@parallel-contexts.html

  * igt@gem_exec_balancer@parallel-keep-in-fence:
    - shard-rkl:          NOTRUN -> [SKIP][13] ([i915#4525])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@gem_exec_balancer@parallel-keep-in-fence.html

  * igt@gem_exec_flush@basic-wb-ro-before-default:
    - shard-dg2:          NOTRUN -> [SKIP][14] ([i915#3539] / [i915#4852])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-5/igt@gem_exec_flush@basic-wb-ro-before-default.html

  * igt@gem_exec_reloc@basic-gtt-wc-noreloc:
    - shard-rkl:          NOTRUN -> [SKIP][15] ([i915#3281]) +10 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html

  * igt@gem_exec_reloc@basic-wc-gtt-noreloc:
    - shard-dg1:          NOTRUN -> [SKIP][16] ([i915#3281]) +4 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@gem_exec_reloc@basic-wc-gtt-noreloc.html

  * igt@gem_exec_reloc@basic-write-wc-noreloc:
    - shard-dg2:          NOTRUN -> [SKIP][17] ([i915#3281]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-6/igt@gem_exec_reloc@basic-write-wc-noreloc.html

  * igt@gem_exec_schedule@preempt-queue-contexts:
    - shard-dg1:          NOTRUN -> [SKIP][18] ([i915#4812]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-13/igt@gem_exec_schedule@preempt-queue-contexts.html
    - shard-mtlp:         NOTRUN -> [SKIP][19] ([i915#4537] / [i915#4812])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-7/igt@gem_exec_schedule@preempt-queue-contexts.html
    - shard-dg2:          NOTRUN -> [SKIP][20] ([i915#4537] / [i915#4812])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-6/igt@gem_exec_schedule@preempt-queue-contexts.html

  * igt@gem_exec_suspend@basic-s0@smem:
    - shard-dg2:          [PASS][21] -> [INCOMPLETE][22] ([i915#13356]) +1 other test incomplete
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-4/igt@gem_exec_suspend@basic-s0@smem.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-4/igt@gem_exec_suspend@basic-s0@smem.html
    - shard-rkl:          [PASS][23] -> [INCOMPLETE][24] ([i915#13356]) +1 other test incomplete
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-2/igt@gem_exec_suspend@basic-s0@smem.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@gem_fence_thrash@bo-copy:
    - shard-dg2:          NOTRUN -> [SKIP][25] ([i915#4860]) +2 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-8/igt@gem_fence_thrash@bo-copy.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - shard-tglu:         NOTRUN -> [SKIP][26] ([i915#4613]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-2/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_lmem_swapping@parallel-random-verify-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][27] ([i915#4613]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@gem_lmem_swapping@parallel-random-verify-ccs.html
    - shard-tglu-1:       NOTRUN -> [SKIP][28] ([i915#4613]) +1 other test skip
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@gem_lmem_swapping@parallel-random-verify-ccs.html
    - shard-dg1:          NOTRUN -> [SKIP][29] ([i915#12193])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-14/igt@gem_lmem_swapping@parallel-random-verify-ccs.html

  * igt@gem_lmem_swapping@parallel-random-verify-ccs@lmem0:
    - shard-dg1:          NOTRUN -> [SKIP][30] ([i915#4565])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-14/igt@gem_lmem_swapping@parallel-random-verify-ccs@lmem0.html

  * igt@gem_lmem_swapping@random-engines:
    - shard-glk:          NOTRUN -> [SKIP][31] ([i915#4613]) +4 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk6/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_mmap@short-mmap:
    - shard-mtlp:         NOTRUN -> [SKIP][32] ([i915#4083]) +2 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-3/igt@gem_mmap@short-mmap.html

  * igt@gem_mmap_gtt@bad-object:
    - shard-dg2:          NOTRUN -> [SKIP][33] ([i915#4077]) +3 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-1/igt@gem_mmap_gtt@bad-object.html

  * igt@gem_mmap_gtt@coherency:
    - shard-dg1:          NOTRUN -> [SKIP][34] ([i915#4077]) +2 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-13/igt@gem_mmap_gtt@coherency.html
    - shard-mtlp:         NOTRUN -> [SKIP][35] ([i915#4077]) +1 other test skip
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-7/igt@gem_mmap_gtt@coherency.html

  * igt@gem_mmap_wc@bad-size:
    - shard-dg2:          NOTRUN -> [SKIP][36] ([i915#4083]) +3 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-6/igt@gem_mmap_wc@bad-size.html

  * igt@gem_mmap_wc@read:
    - shard-dg1:          NOTRUN -> [SKIP][37] ([i915#4083]) +4 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-16/igt@gem_mmap_wc@read.html

  * igt@gem_partial_pwrite_pread@reads:
    - shard-dg2:          NOTRUN -> [SKIP][38] ([i915#3282])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-8/igt@gem_partial_pwrite_pread@reads.html
    - shard-dg1:          NOTRUN -> [SKIP][39] ([i915#3282])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@gem_partial_pwrite_pread@reads.html
    - shard-mtlp:         NOTRUN -> [SKIP][40] ([i915#3282])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-3/igt@gem_partial_pwrite_pread@reads.html

  * igt@gem_partial_pwrite_pread@writes-after-reads:
    - shard-rkl:          NOTRUN -> [SKIP][41] ([i915#3282]) +1 other test skip
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@gem_partial_pwrite_pread@writes-after-reads.html

  * igt@gem_pxp@create-regular-context-1:
    - shard-rkl:          [PASS][42] -> [SKIP][43] ([i915#4270])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-2/igt@gem_pxp@create-regular-context-1.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@gem_pxp@create-regular-context-1.html

  * igt@gem_pxp@hw-rejects-pxp-buffer:
    - shard-tglu:         NOTRUN -> [SKIP][44] ([i915#13398])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-2/igt@gem_pxp@hw-rejects-pxp-buffer.html

  * igt@gem_pxp@reject-modify-context-protection-on:
    - shard-dg1:          NOTRUN -> [SKIP][45] ([i915#4270])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-16/igt@gem_pxp@reject-modify-context-protection-on.html

  * igt@gem_render_copy@x-tiled-to-vebox-y-tiled:
    - shard-mtlp:         NOTRUN -> [SKIP][46] ([i915#8428])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-6/igt@gem_render_copy@x-tiled-to-vebox-y-tiled.html

  * igt@gem_render_copy@yf-tiled-ccs-to-yf-tiled-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][47] ([i915#5190] / [i915#8428]) +1 other test skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-8/igt@gem_render_copy@yf-tiled-ccs-to-yf-tiled-ccs.html

  * igt@gem_set_tiling_vs_blt@tiled-to-untiled:
    - shard-rkl:          NOTRUN -> [SKIP][48] ([i915#8411]) +1 other test skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html

  * igt@gem_set_tiling_vs_blt@untiled-to-tiled:
    - shard-dg1:          NOTRUN -> [SKIP][49] ([i915#4079])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-14/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html

  * igt@gem_userptr_blits@create-destroy-unsync:
    - shard-rkl:          NOTRUN -> [SKIP][50] ([i915#3297]) +2 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@gem_userptr_blits@create-destroy-unsync.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - shard-dg2:          NOTRUN -> [SKIP][51] ([i915#3297]) +2 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-3/igt@gem_userptr_blits@dmabuf-unsync.html

  * igt@gem_userptr_blits@map-fixed-invalidate:
    - shard-dg2:          NOTRUN -> [SKIP][52] ([i915#3297] / [i915#4880])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-1/igt@gem_userptr_blits@map-fixed-invalidate.html

  * igt@gem_userptr_blits@readonly-unsync:
    - shard-dg1:          NOTRUN -> [SKIP][53] ([i915#3297])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@gem_userptr_blits@readonly-unsync.html
    - shard-tglu:         NOTRUN -> [SKIP][54] ([i915#3297])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-9/igt@gem_userptr_blits@readonly-unsync.html
    - shard-mtlp:         NOTRUN -> [SKIP][55] ([i915#3297])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-4/igt@gem_userptr_blits@readonly-unsync.html

  * igt@gem_userptr_blits@relocations:
    - shard-rkl:          NOTRUN -> [SKIP][56] ([i915#3281] / [i915#3297])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-8/igt@gem_userptr_blits@relocations.html

  * igt@gem_userptr_blits@unsync-unmap-cycles:
    - shard-tglu-1:       NOTRUN -> [SKIP][57] ([i915#3297])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@gem_userptr_blits@unsync-unmap-cycles.html

  * igt@gem_workarounds@suspend-resume-context:
    - shard-glk10:        NOTRUN -> [INCOMPLETE][58] ([i915#13356])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk10/igt@gem_workarounds@suspend-resume-context.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-tglu:         NOTRUN -> [SKIP][59] ([i915#2527] / [i915#2856])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-5/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@batch-invalid-length:
    - shard-tglu-1:       NOTRUN -> [SKIP][60] ([i915#2527] / [i915#2856]) +1 other test skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@gen9_exec_parse@batch-invalid-length.html
    - shard-dg1:          NOTRUN -> [SKIP][61] ([i915#2527])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-14/igt@gen9_exec_parse@batch-invalid-length.html

  * igt@gen9_exec_parse@bb-chained:
    - shard-rkl:          NOTRUN -> [SKIP][62] ([i915#2527]) +2 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@gen9_exec_parse@bb-chained.html

  * igt@gen9_exec_parse@bb-start-cmd:
    - shard-rkl:          NOTRUN -> [SKIP][63] ([i915#14544] / [i915#2527])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@gen9_exec_parse@bb-start-cmd.html

  * igt@i915_drm_fdinfo@busy-check-all:
    - shard-dg1:          NOTRUN -> [SKIP][64] ([i915#11527]) +5 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-14/igt@i915_drm_fdinfo@busy-check-all.html

  * igt@i915_drm_fdinfo@busy-hang@ccs0:
    - shard-mtlp:         NOTRUN -> [SKIP][65] ([i915#14073]) +6 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-6/igt@i915_drm_fdinfo@busy-hang@ccs0.html

  * igt@i915_drm_fdinfo@busy-hang@rcs0:
    - shard-dg2:          NOTRUN -> [SKIP][66] ([i915#14073]) +7 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-1/igt@i915_drm_fdinfo@busy-hang@rcs0.html

  * igt@i915_drm_fdinfo@busy-hang@vcs0:
    - shard-dg1:          NOTRUN -> [SKIP][67] ([i915#14073]) +5 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@i915_drm_fdinfo@busy-hang@vcs0.html

  * igt@i915_fb_tiling@basic-x-tiling:
    - shard-dg1:          NOTRUN -> [SKIP][68] ([i915#13786])
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@i915_fb_tiling@basic-x-tiling.html

  * igt@i915_power@sanity:
    - shard-mtlp:         [PASS][69] -> [SKIP][70] ([i915#7984])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-mtlp-3/igt@i915_power@sanity.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-2/igt@i915_power@sanity.html

  * igt@i915_query@hwconfig_table:
    - shard-tglu:         NOTRUN -> [SKIP][71] ([i915#6245])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-8/igt@i915_query@hwconfig_table.html

  * igt@intel_hwmon@hwmon-read:
    - shard-rkl:          NOTRUN -> [SKIP][72] ([i915#7707])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@intel_hwmon@hwmon-read.html

  * igt@kms_addfb_basic@bo-too-small-due-to-tiling:
    - shard-dg1:          NOTRUN -> [SKIP][73] ([i915#4212])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-glk:          NOTRUN -> [SKIP][74] ([i915#1769])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk6/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

  * igt@kms_big_fb@4-tiled-16bpp-rotate-270:
    - shard-dg1:          NOTRUN -> [SKIP][75] ([i915#4538] / [i915#5286]) +2 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_big_fb@4-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-90:
    - shard-tglu:         NOTRUN -> [SKIP][76] ([i915#5286]) +5 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-8/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][77] ([i915#14544] / [i915#5286])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@4-tiled-addfb-size-overflow:
    - shard-dg1:          NOTRUN -> [SKIP][78] ([i915#5286])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-16/igt@kms_big_fb@4-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-tglu-1:       NOTRUN -> [SKIP][79] ([i915#5286]) +2 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-mtlp:         [PASS][80] -> [FAIL][81] ([i915#5138])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-mtlp-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-3/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-rkl:          NOTRUN -> [SKIP][82] ([i915#5286]) +3 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-90:
    - shard-dg2:          NOTRUN -> [SKIP][83] +3 other tests skip
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-6/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][84] ([i915#3638]) +4 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-180:
    - shard-dg2:          NOTRUN -> [SKIP][85] ([i915#4538] / [i915#5190]) +3 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-3/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-180:
    - shard-mtlp:         NOTRUN -> [SKIP][86] +5 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-3/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-dg1:          NOTRUN -> [SKIP][87] +16 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-13/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180:
    - shard-dg1:          NOTRUN -> [SKIP][88] ([i915#4538]) +2 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][89] ([i915#14544] / [i915#6095]) +1 other test skip
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs@pipe-c-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][90] ([i915#14098] / [i915#14544] / [i915#6095])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][91] ([i915#6095]) +71 other tests skip
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][92] ([i915#6095]) +14 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-2/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-b-edp-1.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2:
    - shard-glk:          NOTRUN -> [SKIP][93] +252 other tests skip
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk6/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-a-dp-3:
    - shard-dg2:          NOTRUN -> [SKIP][94] ([i915#10307] / [i915#6095]) +85 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-11/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-a-dp-3.html

  * igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-c-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][95] ([i915#6095]) +49 other tests skip
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-4/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-c-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs:
    - shard-tglu:         NOTRUN -> [SKIP][96] ([i915#12313])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-4/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][97] ([i915#10307] / [i915#10434] / [i915#6095]) +1 other test skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][98] ([i915#6095]) +36 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-5/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][99] ([i915#12805])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-1/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-ccs:
    - shard-glk10:        NOTRUN -> [INCOMPLETE][100] ([i915#12796]) +1 other test incomplete
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk10/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs.html

  * igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][101] ([i915#14098] / [i915#6095]) +47 other tests skip
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs.html
    - shard-glk:          NOTRUN -> [INCOMPLETE][102] ([i915#12796]) +1 other test incomplete
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk6/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
    - shard-tglu-1:       NOTRUN -> [SKIP][103] ([i915#12313]) +1 other test skip
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [SKIP][104] ([i915#6095]) +39 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][105] ([i915#12313])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
    - shard-dg1:          NOTRUN -> [SKIP][106] ([i915#12313]) +1 other test skip
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
    - shard-rkl:          NOTRUN -> [SKIP][107] ([i915#12313] / [i915#14544])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html

  * igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][108] ([i915#6095]) +148 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-12/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_cdclk@mode-transition:
    - shard-tglu-1:       NOTRUN -> [SKIP][109] ([i915#3742])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_cdclk@mode-transition.html

  * igt@kms_cdclk@plane-scaling:
    - shard-tglu:         NOTRUN -> [SKIP][110] ([i915#3742])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-5/igt@kms_cdclk@plane-scaling.html

  * igt@kms_chamelium_frames@hdmi-crc-single:
    - shard-rkl:          NOTRUN -> [SKIP][111] ([i915#11151] / [i915#7828]) +7 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_chamelium_frames@hdmi-crc-single.html

  * igt@kms_chamelium_hpd@dp-hpd:
    - shard-tglu-1:       NOTRUN -> [SKIP][112] ([i915#11151] / [i915#7828]) +2 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_chamelium_hpd@dp-hpd.html

  * igt@kms_chamelium_hpd@dp-hpd-for-each-pipe:
    - shard-mtlp:         NOTRUN -> [SKIP][113] ([i915#11151] / [i915#7828])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-2/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html
    - shard-dg2:          NOTRUN -> [SKIP][114] ([i915#11151] / [i915#7828]) +1 other test skip
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-1/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html
    - shard-dg1:          NOTRUN -> [SKIP][115] ([i915#11151] / [i915#7828]) +2 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-13/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html

  * igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe:
    - shard-tglu:         NOTRUN -> [SKIP][116] ([i915#11151] / [i915#7828]) +7 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-8/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html
    - shard-rkl:          NOTRUN -> [SKIP][117] ([i915#11151] / [i915#14544] / [i915#7828])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html

  * igt@kms_content_protection@atomic:
    - shard-rkl:          NOTRUN -> [SKIP][118] ([i915#6944] / [i915#7118] / [i915#9424])
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@kms_content_protection@atomic.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-tglu:         NOTRUN -> [SKIP][119] ([i915#3116] / [i915#3299])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-10/igt@kms_content_protection@dp-mst-lic-type-0.html

  * igt@kms_content_protection@dp-mst-suspend-resume:
    - shard-rkl:          NOTRUN -> [SKIP][120] ([i915#15330])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_content_protection@dp-mst-suspend-resume.html
    - shard-tglu-1:       NOTRUN -> [SKIP][121] ([i915#15330])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_content_protection@dp-mst-suspend-resume.html

  * igt@kms_content_protection@legacy:
    - shard-tglu:         NOTRUN -> [SKIP][122] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-4/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@legacy@pipe-a-dp-3:
    - shard-dg2:          NOTRUN -> [FAIL][123] ([i915#7173])
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-11/igt@kms_content_protection@legacy@pipe-a-dp-3.html

  * igt@kms_content_protection@srm:
    - shard-rkl:          NOTRUN -> [SKIP][124] ([i915#6944] / [i915#7118])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-offscreen-512x170:
    - shard-rkl:          NOTRUN -> [SKIP][125] ([i915#13049]) +1 other test skip
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@kms_cursor_crc@cursor-offscreen-512x170.html

  * igt@kms_cursor_crc@cursor-onscreen-256x85:
    - shard-tglu:         NOTRUN -> [FAIL][126] ([i915#13566]) +3 other tests fail
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-8/igt@kms_cursor_crc@cursor-onscreen-256x85.html

  * igt@kms_cursor_crc@cursor-onscreen-32x32:
    - shard-dg1:          NOTRUN -> [SKIP][127] ([i915#3555]) +2 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-17/igt@kms_cursor_crc@cursor-onscreen-32x32.html
    - shard-tglu:         NOTRUN -> [SKIP][128] ([i915#3555])
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-5/igt@kms_cursor_crc@cursor-onscreen-32x32.html
    - shard-mtlp:         NOTRUN -> [SKIP][129] ([i915#3555] / [i915#8814])
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-5/igt@kms_cursor_crc@cursor-onscreen-32x32.html

  * igt@kms_cursor_crc@cursor-random-256x85:
    - shard-rkl:          [PASS][130] -> [FAIL][131] ([i915#13566]) +4 other tests fail
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-8/igt@kms_cursor_crc@cursor-random-256x85.html
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_cursor_crc@cursor-random-256x85.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x10:
    - shard-rkl:          NOTRUN -> [SKIP][132] ([i915#3555])
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
    - shard-tglu-1:       NOTRUN -> [SKIP][133] ([i915#3555]) +3 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-tglu:         NOTRUN -> [SKIP][134] ([i915#13049]) +1 other test skip
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-8/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [FAIL][135] ([i915#13566]) +1 other test fail
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [FAIL][136] ([i915#13566]) +7 other tests fail
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-2.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-tglu:         [PASS][137] -> [FAIL][138] ([i915#13566]) +7 other tests fail
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-tglu-7/igt@kms_cursor_crc@cursor-sliding-256x85.html
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-5/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_cursor_crc@cursor-sliding-32x10:
    - shard-rkl:          NOTRUN -> [SKIP][139] ([i915#14544] / [i915#3555])
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_cursor_crc@cursor-sliding-32x10.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-mtlp:         NOTRUN -> [SKIP][140] ([i915#13049])
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-8/igt@kms_cursor_crc@cursor-sliding-512x170.html
    - shard-dg2:          NOTRUN -> [SKIP][141] ([i915#13049])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-8/igt@kms_cursor_crc@cursor-sliding-512x170.html
    - shard-dg1:          NOTRUN -> [SKIP][142] ([i915#13049])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-dg2:          NOTRUN -> [SKIP][143] ([i915#13046] / [i915#5354])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - shard-dg2:          NOTRUN -> [SKIP][144] ([i915#4103] / [i915#4213])
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
    - shard-tglu:         NOTRUN -> [SKIP][145] ([i915#4103])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
    - shard-rkl:          NOTRUN -> [SKIP][146] +24 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions:
    - shard-rkl:          NOTRUN -> [SKIP][147] ([i915#14544]) +1 other test skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-glk:          NOTRUN -> [FAIL][148] ([i915#2346])
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
    - shard-dg2:          NOTRUN -> [SKIP][149] ([i915#9067])
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-5/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-dg1:          NOTRUN -> [SKIP][150] ([i915#4103] / [i915#4213])
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-rkl:          NOTRUN -> [SKIP][151] ([i915#13691])
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc:
    - shard-dg2:          [PASS][152] -> [SKIP][153] ([i915#3555])
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-11/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-4/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html

  * igt@kms_dp_aux_dev:
    - shard-tglu-1:       NOTRUN -> [SKIP][154] ([i915#1257])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_dp_aux_dev.html

  * igt@kms_dp_linktrain_fallback@dsc-fallback:
    - shard-dg2:          NOTRUN -> [SKIP][155] ([i915#13707])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-7/igt@kms_dp_linktrain_fallback@dsc-fallback.html
    - shard-rkl:          NOTRUN -> [SKIP][156] ([i915#13707])
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-8/igt@kms_dp_linktrain_fallback@dsc-fallback.html
    - shard-dg1:          NOTRUN -> [SKIP][157] ([i915#13707])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@kms_dp_linktrain_fallback@dsc-fallback.html
    - shard-tglu:         NOTRUN -> [SKIP][158] ([i915#13707])
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-10/igt@kms_dp_linktrain_fallback@dsc-fallback.html
    - shard-mtlp:         NOTRUN -> [SKIP][159] ([i915#13707])
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-7/igt@kms_dp_linktrain_fallback@dsc-fallback.html

  * igt@kms_dsc@dsc-basic:
    - shard-rkl:          NOTRUN -> [SKIP][160] ([i915#3555] / [i915#3840])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_dsc@dsc-basic.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc:
    - shard-rkl:          NOTRUN -> [SKIP][161] ([i915#3840] / [i915#9053])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
    - shard-tglu-1:       NOTRUN -> [SKIP][162] ([i915#3840] / [i915#9053])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_dsc@dsc-with-output-formats-with-bpc.html

  * igt@kms_fb_coherency@memset-crc@mmap-gtt:
    - shard-tglu-1:       NOTRUN -> [CRASH][163] ([i915#15351]) +1 other test crash
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_fb_coherency@memset-crc@mmap-gtt.html

  * igt@kms_fb_coherency@memset-crc@mmap-offset-fixed:
    - shard-dg1:          NOTRUN -> [CRASH][164] ([i915#15351]) +1 other test crash
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-17/igt@kms_fb_coherency@memset-crc@mmap-offset-fixed.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-rkl:          [PASS][165] -> [INCOMPLETE][166] ([i915#9878])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-7/igt@kms_fbcon_fbt@fbc-suspend.html
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_feature_discovery@display-2x:
    - shard-dg2:          NOTRUN -> [SKIP][167] ([i915#1839])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-11/igt@kms_feature_discovery@display-2x.html

  * igt@kms_feature_discovery@psr2:
    - shard-tglu:         NOTRUN -> [SKIP][168] ([i915#658])
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-10/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip@2x-flip-vs-absolute-wf_vblank:
    - shard-tglu-1:       NOTRUN -> [SKIP][169] ([i915#3637] / [i915#9934])
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][170] ([i915#12314] / [i915#12745] / [i915#4839] / [i915#6113])
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk5/igt@kms_flip@2x-flip-vs-suspend.html

  * igt@kms_flip@2x-flip-vs-suspend@ab-hdmi-a1-hdmi-a2:
    - shard-glk:          NOTRUN -> [INCOMPLETE][171] ([i915#12314] / [i915#4839] / [i915#6113])
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk5/igt@kms_flip@2x-flip-vs-suspend@ab-hdmi-a1-hdmi-a2.html

  * igt@kms_flip@2x-flip-vs-suspend@ab-vga1-hdmi-a1:
    - shard-snb:          [PASS][172] -> [TIMEOUT][173] ([i915#14033]) +1 other test timeout
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-snb7/igt@kms_flip@2x-flip-vs-suspend@ab-vga1-hdmi-a1.html
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-snb5/igt@kms_flip@2x-flip-vs-suspend@ab-vga1-hdmi-a1.html

  * igt@kms_flip@2x-plain-flip-ts-check-interruptible:
    - shard-dg1:          NOTRUN -> [SKIP][174] ([i915#9934]) +3 other tests skip
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-12/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
    - shard-rkl:          NOTRUN -> [SKIP][175] ([i915#9934]) +6 other tests skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html

  * igt@kms_flip@basic-flip-vs-wf_vblank:
    - shard-tglu:         [PASS][176] -> [FAIL][177] ([i915#10826]) +1 other test fail
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-tglu-9/igt@kms_flip@basic-flip-vs-wf_vblank.html
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-6/igt@kms_flip@basic-flip-vs-wf_vblank.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible:
    - shard-rkl:          [PASS][178] -> [FAIL][179] ([i915#10826]) +1 other test fail
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-7/igt@kms_flip@wf_vblank-ts-check-interruptible.html
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_flip@wf_vblank-ts-check-interruptible.html
    - shard-dg1:          [PASS][180] -> [FAIL][181] ([i915#15457])
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-19/igt@kms_flip@wf_vblank-ts-check-interruptible.html
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-14/igt@kms_flip@wf_vblank-ts-check-interruptible.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1:
    - shard-dg1:          NOTRUN -> [FAIL][182] ([i915#15457])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-14/igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
    - shard-dg2:          NOTRUN -> [SKIP][183] ([i915#2672] / [i915#3555])
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html

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

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling:
    - shard-dg1:          NOTRUN -> [SKIP][185] ([i915#2672] / [i915#3555])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][186] ([i915#8810] / [i915#8813])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][187] ([i915#14544] / [i915#2672]) +1 other test skip
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-valid-mode.html
    - shard-dg1:          NOTRUN -> [SKIP][188] ([i915#2587] / [i915#2672])
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling:
    - shard-rkl:          NOTRUN -> [SKIP][189] ([i915#2672] / [i915#3555])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-8/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][190] ([i915#2672])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-8/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling:
    - shard-tglu:         NOTRUN -> [SKIP][191] ([i915#2672] / [i915#3555]) +3 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-9/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
    - shard-rkl:          NOTRUN -> [SKIP][192] ([i915#14544] / [i915#2672] / [i915#3555]) +1 other test skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode:
    - shard-tglu-1:       NOTRUN -> [SKIP][193] ([i915#2587] / [i915#2672]) +3 other tests skip
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling@pipe-a-valid-mode:
    - shard-tglu:         NOTRUN -> [SKIP][194] ([i915#2587] / [i915#2672]) +3 other tests skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-8/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling:
    - shard-mtlp:         NOTRUN -> [SKIP][195] ([i915#3555] / [i915#8810] / [i915#8813]) +2 other tests skip
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
    - shard-tglu-1:       NOTRUN -> [SKIP][196] ([i915#2672] / [i915#3555]) +3 other tests skip
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][197] ([i915#15104]) +1 other test skip
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][198] ([i915#8708]) +3 other tests skip
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-gtt.html
    - shard-mtlp:         NOTRUN -> [SKIP][199] ([i915#8708]) +1 other test skip
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][200] ([i915#8708]) +7 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-12/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-4:
    - shard-tglu:         NOTRUN -> [SKIP][201] ([i915#5439])
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-2/igt@kms_frontbuffer_tracking@fbc-tiling-4.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-cpu:
    - shard-tglu-1:       NOTRUN -> [SKIP][202] ([i915#15102]) +10 other tests skip
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][203] ([i915#15102] / [i915#3023]) +14 other tests skip
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-pwrite:
    - shard-tglu-1:       NOTRUN -> [SKIP][204] +25 other tests skip
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-cpu:
    - shard-rkl:          NOTRUN -> [SKIP][205] ([i915#14544] / [i915#1825]) +3 other tests skip
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-wc:
    - shard-tglu:         NOTRUN -> [SKIP][206] +52 other tests skip
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-10/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt:
    - shard-rkl:          NOTRUN -> [SKIP][207] ([i915#14544] / [i915#15102] / [i915#3023])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt.html

  * igt@kms_frontbuffer_tracking@pipe-fbc-rte:
    - shard-tglu-1:       NOTRUN -> [SKIP][208] ([i915#9766])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][209] ([i915#15102])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-1/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-pwrite:
    - shard-rkl:          NOTRUN -> [SKIP][210] ([i915#15102]) +2 other tests skip
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-1p-rte:
    - shard-dg2:          NOTRUN -> [SKIP][211] ([i915#15102] / [i915#3458]) +5 other tests skip
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-1/igt@kms_frontbuffer_tracking@psr-1p-rte.html
    - shard-glk10:        NOTRUN -> [SKIP][212] +117 other tests skip
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk10/igt@kms_frontbuffer_tracking@psr-1p-rte.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-blt:
    - shard-dg2:          NOTRUN -> [SKIP][213] ([i915#5354]) +8 other tests skip
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-pwrite:
    - shard-rkl:          NOTRUN -> [SKIP][214] ([i915#1825]) +33 other tests skip
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render:
    - shard-mtlp:         NOTRUN -> [SKIP][215] ([i915#1825]) +4 other tests skip
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-4/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-blt:
    - shard-tglu:         NOTRUN -> [SKIP][216] ([i915#15102]) +13 other tests skip
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-10/igt@kms_frontbuffer_tracking@psr-rgb565-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-pwrite:
    - shard-dg1:          NOTRUN -> [SKIP][217] ([i915#15102] / [i915#3458]) +2 other tests skip
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-12/igt@kms_frontbuffer_tracking@psr-rgb565-draw-pwrite.html

  * igt@kms_hdr@bpc-switch:
    - shard-tglu-1:       NOTRUN -> [SKIP][218] ([i915#3555] / [i915#8228]) +1 other test skip
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_hdr@bpc-switch.html

  * igt@kms_hdr@bpc-switch-suspend:
    - shard-tglu:         NOTRUN -> [SKIP][219] ([i915#3555] / [i915#8228])
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-4/igt@kms_hdr@bpc-switch-suspend.html

  * igt@kms_hdr@invalid-hdr:
    - shard-rkl:          NOTRUN -> [SKIP][220] ([i915#3555] / [i915#8228]) +2 other tests skip
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_hdr@invalid-hdr.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-rkl:          NOTRUN -> [SKIP][221] ([i915#15460])
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_joiner@basic-big-joiner.html
    - shard-tglu-1:       NOTRUN -> [SKIP][222] ([i915#15460])
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@invalid-modeset-force-big-joiner:
    - shard-tglu:         NOTRUN -> [SKIP][223] ([i915#15459])
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-9/igt@kms_joiner@invalid-modeset-force-big-joiner.html

  * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
    - shard-tglu-1:       NOTRUN -> [SKIP][224] ([i915#15458])
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html

  * igt@kms_pipe_stress@stress-xrgb8888-yftiled:
    - shard-tglu:         NOTRUN -> [SKIP][225] ([i915#14712])
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-10/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html

  * igt@kms_plane_alpha_blend@alpha-basic:
    - shard-glk10:        NOTRUN -> [FAIL][226] ([i915#12178])
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk10/igt@kms_plane_alpha_blend@alpha-basic.html

  * igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1:
    - shard-glk10:        NOTRUN -> [FAIL][227] ([i915#7862]) +1 other test fail
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk10/igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1.html

  * igt@kms_plane_alpha_blend@constant-alpha-max:
    - shard-glk:          NOTRUN -> [FAIL][228] ([i915#10647] / [i915#12169])
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk6/igt@kms_plane_alpha_blend@constant-alpha-max.html

  * igt@kms_plane_alpha_blend@constant-alpha-max@pipe-c-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][229] ([i915#10647]) +1 other test fail
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk6/igt@kms_plane_alpha_blend@constant-alpha-max@pipe-c-hdmi-a-1.html

  * igt@kms_plane_multiple@2x-tiling-x:
    - shard-rkl:          NOTRUN -> [SKIP][230] ([i915#13958])
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_plane_multiple@2x-tiling-x.html

  * igt@kms_plane_multiple@2x-tiling-yf:
    - shard-tglu:         NOTRUN -> [SKIP][231] ([i915#13958])
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-2/igt@kms_plane_multiple@2x-tiling-yf.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-rkl:          NOTRUN -> [SKIP][232] ([i915#14259])
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_plane_multiple@tiling-yf.html
    - shard-dg1:          NOTRUN -> [SKIP][233] ([i915#14259])
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-16/igt@kms_plane_multiple@tiling-yf.html
    - shard-dg2:          NOTRUN -> [SKIP][234] ([i915#14259])
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-11/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a:
    - shard-rkl:          NOTRUN -> [SKIP][235] ([i915#15329]) +7 other tests skip
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a.html

  * igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-d:
    - shard-dg1:          NOTRUN -> [SKIP][236] ([i915#15329]) +4 other tests skip
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-16/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-d.html

  * igt@kms_pm_backlight@fade:
    - shard-snb:          NOTRUN -> [SKIP][237] +66 other tests skip
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-snb5/igt@kms_pm_backlight@fade.html
    - shard-tglu:         NOTRUN -> [SKIP][238] ([i915#9812])
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-2/igt@kms_pm_backlight@fade.html
    - shard-dg1:          NOTRUN -> [SKIP][239] ([i915#5354])
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-13/igt@kms_pm_backlight@fade.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-dg1:          NOTRUN -> [SKIP][240] ([i915#9685])
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-rkl:          NOTRUN -> [SKIP][241] ([i915#9685])
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-rkl:          NOTRUN -> [SKIP][242] ([i915#3828])
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-tglu:         NOTRUN -> [FAIL][243] ([i915#9295])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-2/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-tglu-1:       NOTRUN -> [SKIP][244] ([i915#3828])
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_lpsp@screens-disabled:
    - shard-rkl:          NOTRUN -> [SKIP][245] ([i915#8430])
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_pm_lpsp@screens-disabled.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-tglu:         NOTRUN -> [SKIP][246] ([i915#15073])
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-2/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@dpms-non-lpsp:
    - shard-rkl:          [PASS][247] -> [SKIP][248] ([i915#15073]) +1 other test skip
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-3/igt@kms_pm_rpm@dpms-non-lpsp.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_pm_rpm@dpms-non-lpsp.html

  * igt@kms_pm_rpm@i2c:
    - shard-dg1:          NOTRUN -> [DMESG-WARN][249] ([i915#4423])
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-17/igt@kms_pm_rpm@i2c.html

  * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-dg2:          [PASS][250] -> [SKIP][251] ([i915#15073])
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-4/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-8/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-tglu-1:       NOTRUN -> [SKIP][252] ([i915#15073])
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_prime@basic-modeset-hybrid:
    - shard-tglu-1:       NOTRUN -> [SKIP][253] ([i915#6524])
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_prime@basic-modeset-hybrid.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area:
    - shard-rkl:          NOTRUN -> [SKIP][254] ([i915#11520]) +4 other tests skip
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf:
    - shard-snb:          NOTRUN -> [SKIP][255] ([i915#11520])
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-snb7/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@pr-cursor-plane-update-sf:
    - shard-glk10:        NOTRUN -> [SKIP][256] ([i915#11520]) +4 other tests skip
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk10/igt@kms_psr2_sf@pr-cursor-plane-update-sf.html

  * igt@kms_psr2_sf@pr-plane-move-sf-dmg-area:
    - shard-glk:          NOTRUN -> [SKIP][257] ([i915#11520]) +9 other tests skip
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk5/igt@kms_psr2_sf@pr-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-sf:
    - shard-tglu-1:       NOTRUN -> [SKIP][258] ([i915#11520]) +2 other tests skip
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-tglu:         NOTRUN -> [SKIP][259] ([i915#11520]) +5 other tests skip
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-6/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
    - shard-dg2:          NOTRUN -> [SKIP][260] ([i915#11520])
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-7/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@psr2-plane-move-sf-dmg-area:
    - shard-dg1:          NOTRUN -> [SKIP][261] ([i915#11520]) +1 other test skip
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_psr2_sf@psr2-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb:
    - shard-rkl:          NOTRUN -> [SKIP][262] ([i915#11520] / [i915#14544])
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr@fbc-psr-no-drrs:
    - shard-tglu:         NOTRUN -> [SKIP][263] ([i915#9732]) +19 other tests skip
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-3/igt@kms_psr@fbc-psr-no-drrs.html

  * igt@kms_psr@fbc-psr-primary-blt:
    - shard-dg2:          NOTRUN -> [SKIP][264] ([i915#1072] / [i915#9732]) +7 other tests skip
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-5/igt@kms_psr@fbc-psr-primary-blt.html

  * igt@kms_psr@fbc-psr2-sprite-mmap-cpu:
    - shard-rkl:          NOTRUN -> [SKIP][265] ([i915#1072] / [i915#14544] / [i915#9732])
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_psr@fbc-psr2-sprite-mmap-cpu.html

  * igt@kms_psr@fbc-psr2-sprite-render:
    - shard-tglu-1:       NOTRUN -> [SKIP][266] ([i915#9732]) +9 other tests skip
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_psr@fbc-psr2-sprite-render.html

  * igt@kms_psr@pr-primary-mmap-cpu:
    - shard-mtlp:         NOTRUN -> [SKIP][267] ([i915#9688]) +3 other tests skip
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-4/igt@kms_psr@pr-primary-mmap-cpu.html

  * igt@kms_psr@psr2-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][268] ([i915#1072] / [i915#9732]) +19 other tests skip
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_psr@psr2-suspend.html
    - shard-dg1:          NOTRUN -> [SKIP][269] ([i915#1072] / [i915#9732]) +10 other tests skip
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_psr@psr2-suspend.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-tglu:         NOTRUN -> [SKIP][270] ([i915#9685])
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-8/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-180:
    - shard-dg2:          NOTRUN -> [SKIP][271] ([i915#5190]) +1 other test skip
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-1/igt@kms_rotation_crc@primary-y-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-rkl:          NOTRUN -> [SKIP][272] ([i915#5289]) +1 other test skip
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-tglu:         NOTRUN -> [SKIP][273] ([i915#5289])
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_selftest@drm_framebuffer:
    - shard-tglu-1:       NOTRUN -> [ABORT][274] ([i915#13179]) +1 other test abort
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@kms_selftest@drm_framebuffer.html

  * igt@kms_setmode@basic:
    - shard-tglu:         NOTRUN -> [FAIL][275] ([i915#15106]) +2 other tests fail
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-2/igt@kms_setmode@basic.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-glk:          NOTRUN -> [FAIL][276] ([i915#10959])
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk5/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-tglu:         NOTRUN -> [SKIP][277] ([i915#8623])
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1:
    - shard-mtlp:         [PASS][278] -> [FAIL][279] ([i915#9196]) +1 other test fail
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-mtlp-6/igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1.html
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-3/igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1.html

  * igt@kms_vblank@query-forked-busy-hang:
    - shard-dg1:          [PASS][280] -> [DMESG-WARN][281] ([i915#4423])
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-16/igt@kms_vblank@query-forked-busy-hang.html
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_vblank@query-forked-busy-hang.html

  * igt@kms_vrr@flip-basic-fastset:
    - shard-tglu:         NOTRUN -> [SKIP][282] ([i915#9906])
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-2/igt@kms_vrr@flip-basic-fastset.html

  * igt@kms_vrr@flip-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][283] ([i915#15243] / [i915#3555])
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_vrr@flip-suspend.html

  * igt@kms_vrr@max-min:
    - shard-dg1:          NOTRUN -> [SKIP][284] ([i915#9906]) +1 other test skip
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-12/igt@kms_vrr@max-min.html

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - shard-rkl:          NOTRUN -> [SKIP][285] ([i915#9906])
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_vrr@seamless-rr-switch-drrs.html
    - shard-dg2:          NOTRUN -> [SKIP][286] ([i915#9906])
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-7/igt@kms_vrr@seamless-rr-switch-drrs.html

  * igt@perf@mi-rpc:
    - shard-rkl:          NOTRUN -> [SKIP][287] ([i915#2434])
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-8/igt@perf@mi-rpc.html

  * igt@perf_pmu@busy-double-start@vcs1:
    - shard-mtlp:         [PASS][288] -> [FAIL][289] ([i915#4349])
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-mtlp-6/igt@perf_pmu@busy-double-start@vcs1.html
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-6/igt@perf_pmu@busy-double-start@vcs1.html

  * igt@perf_pmu@module-unload:
    - shard-tglu:         NOTRUN -> [FAIL][290] ([i915#14433])
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-3/igt@perf_pmu@module-unload.html
    - shard-glk10:        NOTRUN -> [FAIL][291] ([i915#14433])
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-glk10/igt@perf_pmu@module-unload.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-tglu-1:       NOTRUN -> [SKIP][292] ([i915#8516])
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@perf_pmu@rc6-all-gts.html

  * igt@prime_vgem@basic-fence-read:
    - shard-rkl:          NOTRUN -> [SKIP][293] ([i915#3291] / [i915#3708])
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@fence-flip-hang:
    - shard-dg1:          NOTRUN -> [SKIP][294] ([i915#3708])
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-17/igt@prime_vgem@fence-flip-hang.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-rkl:          NOTRUN -> [SKIP][295] ([i915#9917])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@sriov_basic@enable-vfs-autoprobe-off.html
    - shard-dg1:          NOTRUN -> [SKIP][296] ([i915#9917])
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-17/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
    - shard-dg2:          NOTRUN -> [SKIP][297] ([i915#9917])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-11/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each@numvfs-2:
    - shard-tglu-1:       NOTRUN -> [FAIL][298] ([i915#12910]) +8 other tests fail
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-1/igt@sriov_basic@enable-vfs-bind-unbind-each@numvfs-2.html

  
#### Possible fixes ####

  * igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0:
    - shard-dg2:          [INCOMPLETE][299] ([i915#12392] / [i915#13356]) -> [PASS][300]
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-5/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0.html
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-5/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0.html

  * igt@gem_workarounds@suspend-resume:
    - shard-rkl:          [INCOMPLETE][301] ([i915#13356]) -> [PASS][302]
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@gem_workarounds@suspend-resume.html
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@gem_workarounds@suspend-resume.html

  * igt@i915_pm_freq_api@freq-suspend@gt0:
    - shard-dg2:          [INCOMPLETE][303] ([i915#13356] / [i915#13820]) -> [PASS][304] +1 other test pass
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-4/igt@i915_pm_freq_api@freq-suspend@gt0.html
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-11/igt@i915_pm_freq_api@freq-suspend@gt0.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
    - shard-rkl:          [INCOMPLETE][305] ([i915#4817]) -> [PASS][306]
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@i915_suspend@fence-restore-tiled2untiled.html
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@i915_suspend@fence-restore-tiled2untiled.html

  * igt@kms_cursor_crc@cursor-onscreen-64x21:
    - shard-rkl:          [FAIL][307] ([i915#13566]) -> [PASS][308]
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-7/igt@kms_cursor_crc@cursor-onscreen-64x21.html
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-8/igt@kms_cursor_crc@cursor-onscreen-64x21.html

  * igt@kms_cursor_crc@cursor-random-128x42:
    - shard-tglu:         [FAIL][309] ([i915#13566]) -> [PASS][310] +1 other test pass
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-tglu-2/igt@kms_cursor_crc@cursor-random-128x42.html
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-tglu-4/igt@kms_cursor_crc@cursor-random-128x42.html

  * igt@kms_cursor_legacy@flip-vs-cursor-busy-crc-atomic:
    - shard-dg1:          [DMESG-WARN][311] ([i915#4423]) -> [PASS][312]
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-12/igt@kms_cursor_legacy@flip-vs-cursor-busy-crc-atomic.html
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-12/igt@kms_cursor_legacy@flip-vs-cursor-busy-crc-atomic.html

  * igt@kms_dp_aux_dev:
    - shard-dg2:          [SKIP][313] ([i915#1257]) -> [PASS][314]
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-1/igt@kms_dp_aux_dev.html
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-11/igt@kms_dp_aux_dev.html

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-dg2:          [SKIP][315] ([i915#13749]) -> [PASS][316]
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-3/igt@kms_dp_link_training@non-uhbr-sst.html
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-11/igt@kms_dp_link_training@non-uhbr-sst.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-rkl:          [SKIP][317] ([i915#3555] / [i915#8228]) -> [PASS][318]
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-4/igt@kms_hdr@invalid-metadata-sizes.html
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-1/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-dg2:          [SKIP][319] ([i915#3555] / [i915#8228]) -> [PASS][320] +1 other test pass
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-5/igt@kms_hdr@static-toggle-suspend.html
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-11/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b:
    - shard-rkl:          [ABORT][321] ([i915#15132]) -> [PASS][322] +1 other test pass
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-1/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-dg1:          [SKIP][323] ([i915#15073]) -> [PASS][324] +1 other test pass
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-14/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-dg2:          [SKIP][325] ([i915#15073]) -> [PASS][326]
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-6/igt@kms_pm_rpm@modeset-lpsp.html
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-4/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-rkl:          [SKIP][327] ([i915#15073]) -> [PASS][328] +2 other tests pass
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-8/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_vrr@negative-basic:
    - shard-mtlp:         [FAIL][329] ([i915#15420]) -> [PASS][330] +1 other test pass
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-mtlp-6/igt@kms_vrr@negative-basic.html
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-mtlp-6/igt@kms_vrr@negative-basic.html

  * igt@perf_pmu@busy-double-start@vecs1:
    - shard-dg2:          [FAIL][331] ([i915#4349]) -> [PASS][332] +4 other tests pass
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-7/igt@perf_pmu@busy-double-start@vecs1.html
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-6/igt@perf_pmu@busy-double-start@vecs1.html

  
#### Warnings ####

  * igt@gem_bad_reloc@negative-reloc-lut:
    - shard-rkl:          [SKIP][333] ([i915#3281]) -> [SKIP][334] ([i915#14544] / [i915#3281]) +2 other tests skip
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-3/igt@gem_bad_reloc@negative-reloc-lut.html
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@gem_bad_reloc@negative-reloc-lut.html

  * igt@gem_ccs@ctrl-surf-copy-new-ctx:
    - shard-rkl:          [SKIP][335] ([i915#9323]) -> [SKIP][336] ([i915#14544] / [i915#9323])
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-3/igt@gem_ccs@ctrl-surf-copy-new-ctx.html
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@gem_ccs@ctrl-surf-copy-new-ctx.html

  * igt@gem_ccs@suspend-resume:
    - shard-rkl:          [SKIP][337] ([i915#14544] / [i915#9323]) -> [SKIP][338] ([i915#9323])
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@gem_ccs@suspend-resume.html
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@gem_ccs@suspend-resume.html

  * igt@gem_exec_balancer@parallel-keep-submit-fence:
    - shard-rkl:          [SKIP][339] ([i915#14544] / [i915#4525]) -> [SKIP][340] ([i915#4525])
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@gem_exec_balancer@parallel-keep-submit-fence.html
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@gem_exec_balancer@parallel-keep-submit-fence.html

  * igt@gem_exec_reloc@basic-write-wc-noreloc:
    - shard-rkl:          [SKIP][341] ([i915#14544] / [i915#3281]) -> [SKIP][342] ([i915#3281]) +2 other tests skip
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@gem_exec_reloc@basic-write-wc-noreloc.html
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@gem_exec_reloc@basic-write-wc-noreloc.html

  * igt@gem_lmem_evict@dontneed-evict-race:
    - shard-rkl:          [SKIP][343] ([i915#14544] / [i915#4613] / [i915#7582]) -> [SKIP][344] ([i915#4613] / [i915#7582])
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@gem_lmem_evict@dontneed-evict-race.html
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@gem_lmem_evict@dontneed-evict-race.html

  * igt@gem_lmem_swapping@heavy-verify-random:
    - shard-rkl:          [SKIP][345] ([i915#14544] / [i915#4613]) -> [SKIP][346] ([i915#4613]) +1 other test skip
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@gem_lmem_swapping@heavy-verify-random.html
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@gem_lmem_swapping@heavy-verify-random.html

  * igt@gem_pread@snoop:
    - shard-rkl:          [SKIP][347] ([i915#14544] / [i915#3282]) -> [SKIP][348] ([i915#3282])
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@gem_pread@snoop.html
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@gem_pread@snoop.html

  * igt@gem_readwrite@new-obj:
    - shard-rkl:          [SKIP][349] ([i915#3282]) -> [SKIP][350] ([i915#14544] / [i915#3282])
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-2/igt@gem_readwrite@new-obj.html
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@gem_readwrite@new-obj.html

  * igt@gem_userptr_blits@unsync-overlap:
    - shard-rkl:          [SKIP][351] ([i915#14544] / [i915#3297]) -> [SKIP][352] ([i915#3297])
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@gem_userptr_blits@unsync-overlap.html
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@gem_userptr_blits@unsync-overlap.html

  * igt@gen9_exec_parse@bb-large:
    - shard-rkl:          [SKIP][353] ([i915#14544] / [i915#2527]) -> [SKIP][354] ([i915#2527])
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@gen9_exec_parse@bb-large.html
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@gen9_exec_parse@bb-large.html

  * igt@kms_atomic@plane-primary-overlay-mutable-zpos:
    - shard-rkl:          [SKIP][355] ([i915#14544] / [i915#9531]) -> [SKIP][356] ([i915#9531])
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-90:
    - shard-rkl:          [SKIP][357] ([i915#14544] / [i915#5286]) -> [SKIP][358] ([i915#5286]) +3 other tests skip
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@linear-16bpp-rotate-90:
    - shard-dg1:          [SKIP][359] ([i915#3638] / [i915#4423]) -> [SKIP][360] ([i915#3638])
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-19/igt@kms_big_fb@linear-16bpp-rotate-90.html
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-12/igt@kms_big_fb@linear-16bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-rkl:          [SKIP][361] -> [SKIP][362] ([i915#14544]) +5 other tests skip
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-3/igt@kms_big_fb@yf-tiled-addfb.html
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-rkl:          [SKIP][363] ([i915#14544]) -> [SKIP][364] +6 other tests skip
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs-cc:
    - shard-rkl:          [SKIP][365] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][366] ([i915#14098] / [i915#6095]) +11 other tests skip
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs-cc.html
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][367] ([i915#6095]) -> [SKIP][368] ([i915#14544] / [i915#6095]) +1 other test skip
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-7/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-2.html
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2:
    - shard-rkl:          [SKIP][369] ([i915#14098] / [i915#6095]) -> [SKIP][370] ([i915#14098] / [i915#14544] / [i915#6095]) +2 other tests skip
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-7/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2.html
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
    - shard-rkl:          [SKIP][371] ([i915#12805]) -> [SKIP][372] ([i915#12805] / [i915#14544])
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-3/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs:
    - shard-rkl:          [SKIP][373] ([i915#12313] / [i915#14544]) -> [SKIP][374] ([i915#12313]) +1 other test skip
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-2:
    - shard-rkl:          [SKIP][375] ([i915#14544] / [i915#6095]) -> [SKIP][376] ([i915#6095]) +9 other tests skip
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-2.html
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_chamelium_edid@hdmi-edid-change-during-suspend:
    - shard-rkl:          [SKIP][377] ([i915#11151] / [i915#7828]) -> [SKIP][378] ([i915#11151] / [i915#14544] / [i915#7828])
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-3/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html

  * igt@kms_chamelium_edid@hdmi-edid-stress-resolution-non-4k:
    - shard-dg1:          [SKIP][379] ([i915#11151] / [i915#7828]) -> [SKIP][380] ([i915#11151] / [i915#4423] / [i915#7828])
   [379]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-18/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-non-4k.html
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-17/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-non-4k.html

  * igt@kms_chamelium_hpd@vga-hpd-fast:
    - shard-rkl:          [SKIP][381] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][382] ([i915#11151] / [i915#7828]) +4 other tests skip
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_chamelium_hpd@vga-hpd-fast.html
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@kms_chamelium_hpd@vga-hpd-fast.html

  * igt@kms_content_protection@legacy:
    - shard-dg2:          [SKIP][383] ([i915#6944] / [i915#7118] / [i915#9424]) -> [FAIL][384] ([i915#7173])
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-3/igt@kms_content_protection@legacy.html
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-11/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@srm:
    - shard-dg2:          [FAIL][385] ([i915#7173]) -> [SKIP][386] ([i915#6944] / [i915#7118])
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-11/igt@kms_content_protection@srm.html
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-7/igt@kms_content_protection@srm.html

  * igt@kms_content_protection@suspend-resume:
    - shard-rkl:          [SKIP][387] ([i915#14544] / [i915#6944]) -> [SKIP][388] ([i915#6944])
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_content_protection@suspend-resume.html
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@kms_content_protection@suspend-resume.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-rkl:          [SKIP][389] ([i915#13049] / [i915#14544]) -> [SKIP][390] ([i915#13049])
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_cursor_crc@cursor-random-512x170.html
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-rkl:          [SKIP][391] ([i915#13049]) -> [SKIP][392] ([i915#13049] / [i915#14544])
   [391]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-5/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - shard-rkl:          [SKIP][393] ([i915#14544] / [i915#4103]) -> [SKIP][394] ([i915#4103]) +1 other test skip
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [394]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-rkl:          [SKIP][395] ([i915#3555] / [i915#3840]) -> [SKIP][396] ([i915#14544] / [i915#3555] / [i915#3840])
   [395]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-7/igt@kms_dsc@dsc-with-formats.html
   [396]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_feature_discovery@display-3x:
    - shard-rkl:          [SKIP][397] ([i915#14544] / [i915#1839]) -> [SKIP][398] ([i915#1839])
   [397]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_feature_discovery@display-3x.html
   [398]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@kms_feature_discovery@display-3x.html

  * igt@kms_flip@2x-flip-vs-fences-interruptible:
    - shard-dg1:          [SKIP][399] ([i915#8381]) -> [SKIP][400] ([i915#4423] / [i915#8381])
   [399]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-13/igt@kms_flip@2x-flip-vs-fences-interruptible.html
   [400]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_flip@2x-flip-vs-fences-interruptible.html

  * igt@kms_flip@2x-flip-vs-panning-vs-hang:
    - shard-rkl:          [SKIP][401] ([i915#14544] / [i915#9934]) -> [SKIP][402] ([i915#9934]) +3 other tests skip
   [401]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_flip@2x-flip-vs-panning-vs-hang.html
   [402]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_flip@2x-flip-vs-panning-vs-hang.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible:
    - shard-snb:          [TIMEOUT][403] ([i915#14033] / [i915#14350]) -> [ABORT][404] ([i915#14871])
   [403]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-snb5/igt@kms_flip@2x-flip-vs-suspend-interruptible.html
   [404]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1:
    - shard-snb:          [TIMEOUT][405] ([i915#14033]) -> [ABORT][406] ([i915#14871])
   [405]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-snb5/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html
   [406]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html

  * igt@kms_flip@2x-flip-vs-wf_vblank-interruptible:
    - shard-rkl:          [SKIP][407] ([i915#9934]) -> [SKIP][408] ([i915#14544] / [i915#9934]) +3 other tests skip
   [407]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-5/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html
   [408]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling:
    - shard-dg1:          [SKIP][409] ([i915#2672] / [i915#3555] / [i915#4423]) -> [SKIP][410] ([i915#2672] / [i915#3555])
   [409]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-12/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html
   [410]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-dg1:          [SKIP][411] ([i915#2587] / [i915#2672] / [i915#4423]) -> [SKIP][412] ([i915#2587] / [i915#2672])
   [411]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-12/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html
   [412]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-19/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling:
    - shard-rkl:          [SKIP][413] ([i915#14544] / [i915#2672] / [i915#3555]) -> [SKIP][414] ([i915#2672] / [i915#3555])
   [413]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html
   [414]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode:
    - shard-rkl:          [SKIP][415] ([i915#14544] / [i915#2672]) -> [SKIP][416] ([i915#2672])
   [415]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode.html
   [416]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
    - shard-dg1:          [SKIP][417] ([i915#2672] / [i915#3555]) -> [SKIP][418] ([i915#2672] / [i915#3555] / [i915#4423])
   [417]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-13/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
   [418]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-valid-mode:
    - shard-dg1:          [SKIP][419] ([i915#2587] / [i915#2672]) -> [SKIP][420] ([i915#2587] / [i915#2672] / [i915#4423])
   [419]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-13/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-valid-mode.html
   [420]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-18/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move:
    - shard-rkl:          [SKIP][421] ([i915#14544] / [i915#1825]) -> [SKIP][422] ([i915#1825]) +15 other tests skip
   [421]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move.html
   [422]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu:
    - shard-dg2:          [SKIP][423] ([i915#10433] / [i915#15102] / [i915#3458]) -> [SKIP][424] ([i915#15102] / [i915#3458]) +1 other test skip
   [423]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu.html
   [424]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-render:
    - shard-rkl:          [SKIP][425] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][426] ([i915#15102] / [i915#3023]) +6 other tests skip
   [425]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-render.html
   [426]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt:
    - shard-dg2:          [SKIP][427] ([i915#15102] / [i915#3458]) -> [SKIP][428] ([i915#10433] / [i915#15102] / [i915#3458]) +1 other test skip
   [427]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt.html
   [428]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt:
    - shard-rkl:          [SKIP][429] ([i915#15102] / [i915#3023]) -> [SKIP][430] ([i915#14544] / [i915#15102] / [i915#3023]) +4 other tests skip
   [429]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-8/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt.html
   [430]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-wc:
    - shard-rkl:          [SKIP][431] ([i915#14544] / [i915#15102]) -> [SKIP][432] ([i915#15102]) +1 other test skip
   [431]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-wc.html
   [432]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-cpu:
    - shard-rkl:          [SKIP][433] ([i915#15102]) -> [SKIP][434] ([i915#14544] / [i915#15102])
   [433]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-3/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-cpu.html
   [434]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-blt:
    - shard-rkl:          [SKIP][435] ([i915#1825]) -> [SKIP][436] ([i915#14544] / [i915#1825]) +6 other tests skip
   [435]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-blt.html
   [436]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_panel_fitting@atomic-fastset:
    - shard-rkl:          [SKIP][437] ([i915#14544] / [i915#6301]) -> [SKIP][438] ([i915#6301])
   [437]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_panel_fitting@atomic-fastset.html
   [438]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_panel_fitting@atomic-fastset.html

  * igt@kms_plane_lowres@tiling-yf:
    - shard-rkl:          [SKIP][439] ([i915#14544] / [i915#3555]) -> [SKIP][440] ([i915#3555]) +3 other tests skip
   [439]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_plane_lowres@tiling-yf.html
   [440]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-3/igt@kms_plane_lowres@tiling-yf.html

  * igt@kms_plane_multiple@tiling-4:
    - shard-rkl:          [SKIP][441] ([i915#14259]) -> [SKIP][442] ([i915#14259] / [i915#14544])
   [441]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-3/igt@kms_plane_multiple@tiling-4.html
   [442]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_plane_multiple@tiling-4.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-rkl:          [SKIP][443] ([i915#14544] / [i915#5354]) -> [SKIP][444] ([i915#5354])
   [443]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_pm_backlight@fade-with-dpms.html
   [444]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-8/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-rkl:          [SKIP][445] ([i915#5354]) -> [SKIP][446] ([i915#14544] / [i915#5354])
   [445]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-3/igt@kms_pm_backlight@fade-with-suspend.html
   [446]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-rkl:          [SKIP][447] ([i915#9685]) -> [SKIP][448] ([i915#14544] / [i915#9685])
   [447]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-7/igt@kms_pm_dc@dc6-psr.html
   [448]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-dg1:          [SKIP][449] ([i915#9340]) -> [SKIP][450] ([i915#3828])
   [449]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-dg1-19/igt@kms_pm_lpsp@kms-lpsp.html
   [450]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-dg1-14/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf:
    - shard-rkl:          [SKIP][451] ([i915#11520]) -> [SKIP][452] ([i915#11520] / [i915#14544]) +2 other tests skip
   [451]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-8/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html
   [452]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf:
    - shard-rkl:          [SKIP][453] ([i915#11520] / [i915#14544]) -> [SKIP][454] ([i915#11520]) +3 other tests skip
   [453]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html
   [454]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-rkl:          [SKIP][455] ([i915#14544] / [i915#9683]) -> [SKIP][456] ([i915#9683])
   [455]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_psr2_su@frontbuffer-xrgb8888.html
   [456]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@fbc-psr-sprite-plane-onoff:
    - shard-rkl:          [SKIP][457] ([i915#1072] / [i915#9732]) -> [SKIP][458] ([i915#1072] / [i915#14544] / [i915#9732]) +4 other tests skip
   [457]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-5/igt@kms_psr@fbc-psr-sprite-plane-onoff.html
   [458]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_psr@fbc-psr-sprite-plane-onoff.html

  * igt@kms_psr@psr-sprite-plane-move:
    - shard-rkl:          [SKIP][459] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][460] ([i915#1072] / [i915#9732]) +9 other tests skip
   [459]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@kms_psr@psr-sprite-plane-move.html
   [460]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-2/igt@kms_psr@psr-sprite-plane-move.html

  * igt@kms_setmode@invalid-clone-exclusive-crtc:
    - shard-rkl:          [SKIP][461] ([i915#3555]) -> [SKIP][462] ([i915#14544] / [i915#3555])
   [461]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-2/igt@kms_setmode@invalid-clone-exclusive-crtc.html
   [462]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_setmode@invalid-clone-exclusive-crtc.html

  * igt@kms_vrr@flip-dpms:
    - shard-rkl:          [SKIP][463] ([i915#15243] / [i915#3555]) -> [SKIP][464] ([i915#14544] / [i915#15243] / [i915#3555])
   [463]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-2/igt@kms_vrr@flip-dpms.html
   [464]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-6/igt@kms_vrr@flip-dpms.html

  * igt@perf@gen8-unprivileged-single-ctx-counters:
    - shard-rkl:          [SKIP][465] ([i915#14544] / [i915#2436]) -> [SKIP][466] ([i915#2436])
   [465]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@perf@gen8-unprivileged-single-ctx-counters.html
   [466]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@perf@gen8-unprivileged-single-ctx-counters.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-rkl:          [SKIP][467] ([i915#14544] / [i915#8516]) -> [SKIP][468] ([i915#8516])
   [467]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@perf_pmu@rc6-all-gts.html
   [468]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-7/igt@perf_pmu@rc6-all-gts.html

  * igt@prime_vgem@fence-write-hang:
    - shard-rkl:          [SKIP][469] ([i915#14544] / [i915#3708]) -> [SKIP][470] ([i915#3708])
   [469]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@prime_vgem@fence-write-hang.html
   [470]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-4/igt@prime_vgem@fence-write-hang.html

  * igt@sriov_basic@bind-unbind-vf:
    - shard-rkl:          [SKIP][471] ([i915#14544] / [i915#9917]) -> [SKIP][472] ([i915#9917])
   [471]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8686/shard-rkl-6/igt@sriov_basic@bind-unbind-vf.html
   [472]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14300/shard-rkl-5/igt@sriov_basic@bind-unbind-vf.html

  
  [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#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10826
  [i915#10959]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10959
  [i915#1099]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1099
  [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
  [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#12169]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12169
  [i915#12178]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12178
  [i915#12193]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12193
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12314
  [i915#12392]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12392
  [i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
  [i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
  [i915#12796]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12796
  [i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
  [i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
  [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#13179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13179
  [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
  [i915#13398]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13398
  [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
  [i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
  [i915#13707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13707
  [i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
  [i915#13786]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13786
  [i915#13820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13820
  [i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
  [i915#14033]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14033
  [i915#14073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14073
  [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
  [i915#14259]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14259
  [i915#14350]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14350
  [i915#14433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14433
  [i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
  [i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
  [i915#14871]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14871
  [i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
  [i915#15095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15095
  [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#15132]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15132
  [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#15351]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15351
  [i915#15420]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15420
  [i915#15457]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15457
  [i915#15458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15458
  [i915#15459]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15459
  [i915#15460]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15460
  [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#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
  [i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
  [i915#2436]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2436
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [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#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [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#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#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [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#4565]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
  [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#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6113]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6113
  [i915#6230]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6230
  [i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
  [i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
  [i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
  [i915#7582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7582
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7862]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7862
  [i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
  [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#8810]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8810
  [i915#8813]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8813
  [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
  [i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
  [i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
  [i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
  [i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9531]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9531
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
  [i915#9878]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9878
  [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_8686 -> IGTPW_14300

  CI-20190529: 20190529
  CI_DRM_17772: 265d13795b45a5e68304e2cab23ea35975c871e8 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_14300: 14300
  IGT_8686: 8686

== Logs ==

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

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

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

* Re: [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency
  2026-01-06 13:51 ` [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency Karthik Poosa
@ 2026-01-07  6:24   ` Riana Tauro
  0 siblings, 0 replies; 15+ messages in thread
From: Riana Tauro @ 2026-01-07  6:24 UTC (permalink / raw)
  To: Karthik Poosa, igt-dev
  Cc: anshuman.gupta, badal.nilawar, rodrigo.vivi, kamil.konieczny

Hi Karthik

On 1/6/2026 7:21 PM, Karthik Poosa wrote:
> Add subtest aspm_link_residency to verify PCIe ASPM.
> Active State Power Management (ASPM) is a power management mechanism
> for PCI Express (PCIe) devices that aims to save power while the devices
> are in a fully active state.
> This test uses link state counters from the debugfs
> dgfx_pcie_link_residencies to verify this.
> 
> v2:
>   - Add dedicated function to get pcie endpoint upstream port. (Badal)
>   - Read residency counter as unsigned long long int instead of
>     unsigned long int.
>   - Print residency counter before sleep also.
>   - Don't assert if sysfs not corresponding to aspm_link_state
>     is not present. (Badal)
>   - Run workload before validation of aspm link residency. (Anshuman)
> 
> v3:
>   - Move igt_device_get_pci_usp to separate patch. (Kamil)
>   - Move reading of residency to separate function. (Badal)
> 
> v4:
>   - Add description about PCIe ASPM in commit message and code. (Kamil)
>   - Add a NULL check for the return value of igt_device_get_pci_usp().
>   - Resolve compilation warnings about using variable as format string
>     to sscanf.
> 
> v5:
>   - Use igt_device_get_pci_upstream_port() which is the renamed version
>     of igt_device_get_pci_usp().
> 
> v6:
>   - Refactor and enhance readability. (Badal)
>   - Move save and restore of link states to separate functions. (Badal)
> 
> v7:
>   - Skip aspm_link_residency on integrated platforms as it not supported.
> 
> v8:
>   - Address below review comments from Riana.
>   - Use igt_sysfs_has_attr() instead of faccess().
>   - Remove unnecessary spaces, debug logs, if checks.
>   - Wrap line length to 100 chars.
>   - Use spinner instead of mmap for workload.
> 
> v9:
>   - Address review comments from Kamil.
>   - Simplify couple of igt_asserts.
>   - Remove extra spaces.
> 
> Signed-off-by: Karthik Poosa <karthik.poosa@intel.com>
> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>   tests/intel/xe_pm_residency.c | 176 ++++++++++++++++++++++++++++++++++
>   1 file changed, 176 insertions(+)
> 
> diff --git a/tests/intel/xe_pm_residency.c b/tests/intel/xe_pm_residency.c
> index d33a87b13..0ff0e4821 100644
> --- a/tests/intel/xe_pm_residency.c
> +++ b/tests/intel/xe_pm_residency.c
> @@ -37,6 +37,27 @@ enum test_type {
>   	TEST_IDLE,
>   };
>   
> +enum link_state_index {
> +	LINK_STATE_ASPM,
> +	LINK_STATE_ASPM_L1_1,
> +	LINK_STATE_ASPM_L1_2,
> +	LINK_STATE_PCIPM_L1_1,
> +	LINK_STATE_PCIPM_L1_2,
> +	MAX_LINK_STATES,
> +};
> +
> +struct link_state_info {
> +	const char *filename;
> +	char state;
> +	const char *parse_str;
> +} link_state_sysfs[] = {
> +	{ "l1_aspm", 0, "PCIE LINK L1 RESIDENCY : "},
> +	{ "l1_1_aspm", 0, "NULL"},
> +	{ "l1_2_aspm", 0, "PCIE LINK L1.2 RESIDENCY : "},
> +	{ "l1_1_pcipm", 0, NULL},
> +	{ "l1_2_pcipm", 0, NULL},
> +};
> +
>   /**
>    * SUBTEST: gt-c6-on-idle
>    * Description: Validate GT C6 state on idle
> @@ -64,6 +85,10 @@ enum test_type {
>    * SUBTEST: cpg-gt-toggle
>    * Description: Toggle GT coarse power gating states by acquiring/releasing
>    *		forcewake.
> + *
> + * SUBTEST: aspm_link_residency
> + * Description: Check for PCIe ASPM (Active State Power Management) link states
> + * entry while device is in D0.
>    */
>   IGT_TEST_DESCRIPTION("Tests for gtidle properties");
>   
> @@ -255,6 +280,21 @@ static void idle_residency_on_exec(int fd, struct drm_xe_engine_class_instance *
>   	munmap(done, 4096);
>   }
>   
> +static void do_spin(int fd, struct drm_xe_engine_class_instance *eci)
> +{
> +	igt_spin_t *spin;
> +	uint64_t vm, ahnd;
> +
> +	igt_info("Running spinner on %s:%d\n",
> +		 xe_engine_class_string(eci->engine_class), eci->engine_instance);
> +	vm = xe_vm_create(fd, 0, 0);
> +	intel_allocator_init();
> +	ahnd = intel_allocator_open(fd, 0, INTEL_ALLOCATOR_RELOC);
> +	spin = igt_spin_new(fd, .ahnd = ahnd, .vm = vm, .hwe = eci);
> +	igt_measured_usleep(USEC_PER_SEC);
> +	igt_spin_free(fd, spin);
> +}
> +
>   static void measure_power(struct igt_power *gpu, double *power)
>   {
>   	struct power_sample power_sample[2];
> @@ -370,6 +410,127 @@ static void cpg_gt_toggle(int fd)
>   		powergate_status(fd, gt, "down");
>   }
>   
> +static uint64_t get_link_state_residency(int fd_xe, const char *parse_str)
> +{
> +	int fd_debugfs_dir = 0;
> +	int ret = 0;
> +	char *ptr = NULL;
> +	char path[256] = {0}, buf[1024] = {0};
> +	uint64_t residency = 0;
> +
> +	fd_debugfs_dir = igt_debugfs_dir(fd_xe);
> +	igt_assert(fd_debugfs_dir >= 0);
> +	ret = igt_debugfs_simple_read(fd_debugfs_dir, "dgfx_pcie_link_residencies", buf,
> +				      sizeof(buf));
> +	igt_assert_f(ret >= 0, "Cannot read link residency file, ret %d\n", ret);

Add line to improve readability

> +	ptr = strstr(buf, parse_str);
> +	igt_assert_f(ptr, "Cannot find residency string %s\n", parse_str);
> +	sprintf(path, "%s%%llu", parse_str);

This is never used

> +	ret = sscanf(ptr + strlen(parse_str), "%lu", &residency);
> +	igt_assert_f(ret > 0, "Couldn't read residency value, ret %d", ret);
> +	igt_info("Link residency %"PRIu64"\n", residency);
> +	close(fd_debugfs_dir);
> +
> +	return residency;
> +}
> +
> +static void save_and_disable_link_states(int fd_pci_usp)
> +{
> +	int i = 0;
> +	int ret = 0;
> +	char path[256] = {0};
> +
> +	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
> +		sprintf(path, "%s", link_state_sysfs[i].filename);
> +		if (!igt_sysfs_has_attr(fd_pci_usp, path))
> +			continue;
> +		ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[i].state);
> +		igt_assert_lt(0, ret);
> +		igt_debug("saved %s = %c\n", link_state_sysfs[i].filename,
> +			  link_state_sysfs[i].state);
> +		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '0');
> +		igt_assert_lt(0, ret);
> +	}
> +}
> +
> +static void restore_link_states(int fd_pci_usp)
> +{
> +	int i = 0;
> +	int ret = 0;
> +	char path[256] = {0};
> +
> +	/* Restore saved states of L1 sysfs entries. */
> +	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
> +		sprintf(path, "%s", link_state_sysfs[i].filename);
> +		if (!igt_sysfs_has_attr(fd_pci_usp, path))
> +			continue;
> +		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", link_state_sysfs[i].state);
> +		igt_assert_lt(0, ret);
> +		igt_debug("restored %s to %c\n", link_state_sysfs[i].filename,
> +			  link_state_sysfs[i].state);
> +	}
> +}
> +
> +static void test_aspm_link_residency(int fd_xe, enum link_state_index aspm_link_state)
> +{
> +	struct pci_device *pci_dev;
> +	int fd_pci_usp = 0;
> +	char name[PATH_MAX];
> +	int ret = 0;
> +	char path[256] = {0};
> +	uint64_t residency_pre = 0, residency_post = 0;
> +
> +	igt_assert(aspm_link_state <= LINK_STATE_ASPM_L1_2);
> +
> +	/* Get upstream port pci_dev */
> +	pci_dev = igt_device_get_pci_upstream_port(fd_xe);
> +	igt_assert_f(pci_dev, "Couldn't get pci device of upstream port\n");
> +	igt_debug("Upstream port PCI device: %04x:%02x:%02x.%01x\n", pci_dev->domain,
> +		  pci_dev->bus, pci_dev->dev, pci_dev->func);
> +
> +	snprintf(name, sizeof(name), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/link",
> +		 pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func);
> +	fd_pci_usp = open(name, O_DIRECTORY);
> +	igt_assert_f((fd_pci_usp >= 0), "Can't open link directory upstream port %s, ret %d\n",
> +		     name, fd_pci_usp);
> +
> +	/* Disable runtime PM as link ASPM entry happens during device is in D0 only. */
> +	igt_assert(igt_setup_runtime_pm(fd_xe));
> +	igt_disable_runtime_pm();
> +
> +	/* Check if ASPM sysfs is present. */
> +	sprintf(path, "%s", link_state_sysfs[aspm_link_state].filename);
> +	igt_require_f(igt_sysfs_has_attr(fd_pci_usp, path), "%s is not present\n", path);

Can't you use the filename directly as  a parameter?

> +	ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[aspm_link_state].state);
> +	igt_assert_f((ret > 0), "Couldn't read residency for %s", path);
> +
> +	/* Save current state of all available link sysfs entries and disable all link states. */
> +	save_and_disable_link_states(fd_pci_usp);
> +
> +	/* Enable only the ASPM link state needed for test. */
> +	igt_debug("Enabling %s\n", link_state_sysfs[aspm_link_state].filename);
> +	sprintf(path, "%s", link_state_sysfs[aspm_link_state].filename);
> +	ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '1');

Same as above.

> +
> +	/* Read link state residencies before and after idle wait time. */
> +	residency_pre = get_link_state_residency(fd_xe,
> +						 link_state_sysfs[aspm_link_state].parse_str);
> +	igt_info("Waiting for link to enter idle....\n");
> +	sleep(SLEEP_DURATION);
> +	residency_post = get_link_state_residency(fd_xe,
> +						  link_state_sysfs[aspm_link_state].parse_str);
> +
> +	/* Restore saved link states. */
> +	restore_link_states(fd_pci_usp);
> +
> +	igt_restore_runtime_pm();

I think you need to add a exit handler otherwise if there is any assert 
the runtime pm state might affect the other tests

Thanks
Riana

> +	close(fd_pci_usp);
> +	close(fd_xe);
> +
> +	igt_assert_f(residency_post > residency_pre,
> +		     "ASPM entry failed, pre %"PRIu64", post %"PRIu64"\n", residency_pre,
> +		     residency_post);
> +}
>   int igt_main()
>   {
>   	uint32_t d3cold_allowed;
> @@ -444,6 +605,21 @@ int igt_main()
>   		cpg_gt_toggle(fd);
>   	}
>   
> +	igt_describe("ASPM Link residency validation");
> +	igt_subtest_with_dynamic("aspm_link_residency") {
> +		igt_require(xe_has_vram(fd));
> +		xe_for_each_gt(fd, gt) {
> +			xe_for_each_engine(fd, hwe) {
> +				if (gt == hwe->gt_id && !hwe->engine_instance) {
> +					igt_dynamic_f("gt%u-engine-%s", gt,
> +						      xe_engine_class_string(hwe->engine_class))
> +						do_spin(fd, hwe);
> +				}
> +			}
> +		}
> +		test_aspm_link_residency(fd, LINK_STATE_ASPM);
> +	}
> +
>   	igt_fixture() {
>   		close(fd);
>   	}


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

* [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency
  2026-01-21 14:57 [PATCH i-g-t v10 0/2] " Karthik Poosa
@ 2026-01-21 14:57 ` Karthik Poosa
  2026-01-22 15:00   ` Kamil Konieczny
  0 siblings, 1 reply; 15+ messages in thread
From: Karthik Poosa @ 2026-01-21 14:57 UTC (permalink / raw)
  To: igt-dev
  Cc: anshuman.gupta, badal.nilawar, riana.tauro, rodrigo.vivi,
	kamil.konieczny, Karthik Poosa

Add subtest aspm_link_residency to verify PCIe ASPM.
Active State Power Management (ASPM) is a power management mechanism
for PCI Express (PCIe) devices that aims to save power while the devices
are in a fully active state.
This test uses link state counters from the debugfs
dgfx_pcie_link_residencies to verify this.

v2:
 - Add dedicated function to get pcie endpoint upstream port. (Badal)
 - Read residency counter as unsigned long long int instead of
   unsigned long int.
 - Print residency counter before sleep also.
 - Don't assert if sysfs not corresponding to aspm_link_state
   is not present. (Badal)
 - Run workload before validation of aspm link residency. (Anshuman)

v3:
 - Move igt_device_get_pci_usp to separate patch. (Kamil)
 - Move reading of residency to separate function. (Badal)

v4:
 - Add description about PCIe ASPM in commit message and code. (Kamil)
 - Add a NULL check for the return value of igt_device_get_pci_usp().
 - Resolve compilation warnings about using variable as format string
   to sscanf.

v5:
 - Use igt_device_get_pci_upstream_port() which is the renamed version
   of igt_device_get_pci_usp().

v6:
 - Refactor and enhance readability. (Badal)
 - Move save and restore of link states to separate functions. (Badal)

v7:
 - Skip aspm_link_residency on integrated platforms as it not supported.

v8:
 - Address below review comments from Riana.
 - Use igt_sysfs_has_attr() instead of faccess().
 - Remove unnecessary spaces, debug logs, if checks.
 - Wrap line length to 100 chars.
 - Use spinner instead of mmap for workload.

v9:
 - Address review comments from Kamil.
 - Simplify couple of igt_asserts.
 - Remove extra spaces.

v10:
 - Add exit handler for aspm_link_residency test. (Riana)
 - Remove unused and unnecessary variables.

Signed-off-by: Karthik Poosa <karthik.poosa@intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
---
 tests/intel/xe_pm_residency.c | 196 ++++++++++++++++++++++++++++++++++
 1 file changed, 196 insertions(+)

diff --git a/tests/intel/xe_pm_residency.c b/tests/intel/xe_pm_residency.c
index d33a87b13..2d965ef7d 100644
--- a/tests/intel/xe_pm_residency.c
+++ b/tests/intel/xe_pm_residency.c
@@ -31,12 +31,36 @@
 
 const double tolerance = 0.1;
 int fw_handle = -1;
+int fd_pci_usp;
+bool rpm_disabled;
+bool link_states_saved;
 
 enum test_type {
 	TEST_S2IDLE,
 	TEST_IDLE,
 };
 
+enum link_state_index {
+	LINK_STATE_ASPM,
+	LINK_STATE_ASPM_L1_1,
+	LINK_STATE_ASPM_L1_2,
+	LINK_STATE_PCIPM_L1_1,
+	LINK_STATE_PCIPM_L1_2,
+	MAX_LINK_STATES,
+};
+
+struct link_state_info {
+	const char *filename;
+	char state;
+	const char *parse_str;
+} link_state_sysfs[] = {
+	{ "l1_aspm", 0, "PCIE LINK L1 RESIDENCY : "},
+	{ "l1_1_aspm", 0, "NULL"},
+	{ "l1_2_aspm", 0, "PCIE LINK L1.2 RESIDENCY : "},
+	{ "l1_1_pcipm", 0, NULL},
+	{ "l1_2_pcipm", 0, NULL},
+};
+
 /**
  * SUBTEST: gt-c6-on-idle
  * Description: Validate GT C6 state on idle
@@ -64,6 +88,10 @@ enum test_type {
  * SUBTEST: cpg-gt-toggle
  * Description: Toggle GT coarse power gating states by acquiring/releasing
  *		forcewake.
+ *
+ * SUBTEST: aspm_link_residency
+ * Description: Check for PCIe ASPM (Active State Power Management) link states
+ * entry while device is in D0.
  */
 IGT_TEST_DESCRIPTION("Tests for gtidle properties");
 
@@ -255,6 +283,21 @@ static void idle_residency_on_exec(int fd, struct drm_xe_engine_class_instance *
 	munmap(done, 4096);
 }
 
+static void do_spin(int fd, struct drm_xe_engine_class_instance *eci)
+{
+	igt_spin_t *spin;
+	uint64_t vm, ahnd;
+
+	igt_info("Running spinner on %s:%d\n",
+		 xe_engine_class_string(eci->engine_class), eci->engine_instance);
+	vm = xe_vm_create(fd, 0, 0);
+	intel_allocator_init();
+	ahnd = intel_allocator_open(fd, 0, INTEL_ALLOCATOR_RELOC);
+	spin = igt_spin_new(fd, .ahnd = ahnd, .vm = vm, .hwe = eci);
+	igt_measured_usleep(USEC_PER_SEC);
+	igt_spin_free(fd, spin);
+}
+
 static void measure_power(struct igt_power *gpu, double *power)
 {
 	struct power_sample power_sample[2];
@@ -370,6 +413,143 @@ static void cpg_gt_toggle(int fd)
 		powergate_status(fd, gt, "down");
 }
 
+static uint64_t get_link_state_residency(int fd_xe, const char *parse_str)
+{
+	int fd_debugfs_dir = 0;
+	int ret = 0;
+	char *ptr = NULL;
+	char buf[1024] = {0};
+	uint64_t residency = 0;
+
+	fd_debugfs_dir = igt_debugfs_dir(fd_xe);
+	igt_assert(fd_debugfs_dir >= 0);
+	ret = igt_debugfs_simple_read(fd_debugfs_dir, "dgfx_pcie_link_residencies", buf,
+				      sizeof(buf));
+	igt_assert_f(ret >= 0, "Cannot read residency file dgfx_pcie_link_residencies, ret %d\n",
+		     ret);
+
+	ptr = strstr(buf, parse_str);
+	igt_assert_f(ptr, "Cannot find residency string %s\n", parse_str);
+	ret = sscanf(ptr + strlen(parse_str), "%lu", &residency);
+	igt_assert_f(ret > 0, "Couldn't read residency value, ret %d", ret);
+	igt_info("Link residency %"PRIu64"\n", residency);
+	close(fd_debugfs_dir);
+
+	return residency;
+}
+
+static void save_and_disable_link_states(void)
+{
+	int i = 0;
+	int ret = 0;
+	char path[256] = {0};
+
+	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
+		sprintf(path, "%s", link_state_sysfs[i].filename);
+		if (!igt_sysfs_has_attr(fd_pci_usp, path))
+			continue;
+		ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[i].state);
+		igt_assert_lt(0, ret);
+		igt_debug("saved %s = %c\n", link_state_sysfs[i].filename,
+			  link_state_sysfs[i].state);
+		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '0');
+		igt_assert_lt(0, ret);
+	}
+	link_states_saved = true;
+}
+
+static void restore_link_states(void)
+{
+	int i = 0;
+	int ret = 0;
+	char path[256] = {0};
+
+	if (link_states_saved && fd_pci_usp >= 0) {
+		/* Restore saved states of L1 sysfs entries. */
+		for (i = 0 ; i < MAX_LINK_STATES ; i++) {
+			sprintf(path, "%s", link_state_sysfs[i].filename);
+			if (!igt_sysfs_has_attr(fd_pci_usp, path))
+				continue;
+			ret = igt_sysfs_printf(fd_pci_usp, path, "%c", link_state_sysfs[i].state);
+			igt_assert_lt(0, ret);
+			igt_debug("restored %s to %c\n", link_state_sysfs[i].filename,
+				  link_state_sysfs[i].state);
+		}
+		link_states_saved = false;
+	}
+}
+
+static void test_aspm_link_residency(int fd_xe, enum link_state_index aspm_link_state)
+{
+	struct pci_device *pci_dev;
+	char name[PATH_MAX];
+	int ret = 0;
+	uint64_t residency_pre = 0, residency_post = 0;
+
+	igt_assert(aspm_link_state <= LINK_STATE_ASPM_L1_2);
+
+	/* Get upstream port pci_dev */
+	pci_dev = igt_device_get_pci_upstream_port(fd_xe);
+	igt_assert_f(pci_dev, "Couldn't get pci device of upstream port\n");
+	igt_debug("Upstream port PCI device: %04x:%02x:%02x.%01x\n", pci_dev->domain,
+		  pci_dev->bus, pci_dev->dev, pci_dev->func);
+
+	snprintf(name, sizeof(name), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/link",
+		 pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func);
+	fd_pci_usp = open(name, O_DIRECTORY);
+	igt_assert_f((fd_pci_usp >= 0), "Can't open link directory upstream port %s, ret %d\n",
+		     name, fd_pci_usp);
+
+	/* Disable runtime PM as link ASPM entry happens during device is in D0 only. */
+	igt_assert(igt_setup_runtime_pm(fd_xe));
+	igt_disable_runtime_pm();
+	rpm_disabled = true;
+
+	/* Check if ASPM sysfs is present. */
+	igt_require_f(igt_sysfs_has_attr(fd_pci_usp, link_state_sysfs[aspm_link_state].filename),
+		      "%s is not present\n", link_state_sysfs[aspm_link_state].filename);
+	ret = igt_sysfs_scanf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c",
+			      &link_state_sysfs[aspm_link_state].state);
+	igt_assert_f((ret > 0), "Couldn't read residency for %s",
+		     link_state_sysfs[aspm_link_state].filename);
+
+	/* Save current state of all available link sysfs entries and disable all link states. */
+	save_and_disable_link_states();
+
+	/* Enable only the ASPM link state needed for test. */
+	igt_debug("Enabling %s\n", link_state_sysfs[aspm_link_state].filename);
+	ret = igt_sysfs_printf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c", '1');
+
+	/* Read link state residencies before and after idle wait time. */
+	residency_pre = get_link_state_residency(fd_xe,
+						 link_state_sysfs[aspm_link_state].parse_str);
+	igt_info("Waiting for link to enter idle....\n");
+	sleep(SLEEP_DURATION);
+	residency_post = get_link_state_residency(fd_xe,
+						  link_state_sysfs[aspm_link_state].parse_str);
+
+	restore_link_states();
+	igt_restore_runtime_pm();
+	rpm_disabled = false;
+	close(fd_pci_usp);
+	close(fd_xe);
+
+	igt_assert_f(residency_post > residency_pre,
+		     "ASPM entry failed, pre %"PRIu64", post %"PRIu64"\n", residency_pre,
+		     residency_post);
+}
+
+static void aspm_residency_exit_handler(int sig)
+{
+	restore_link_states();
+	if (rpm_disabled) {
+		igt_restore_runtime_pm();
+		rpm_disabled = false;
+	}
+	if (fd_pci_usp)
+		close(fd_pci_usp);
+}
+
 int igt_main()
 {
 	uint32_t d3cold_allowed;
@@ -444,6 +624,22 @@ int igt_main()
 		cpg_gt_toggle(fd);
 	}
 
+	igt_describe("ASPM Link residency validation");
+	igt_subtest_with_dynamic("aspm_link_residency") {
+		igt_require(xe_has_vram(fd));
+		xe_for_each_gt(fd, gt) {
+			xe_for_each_engine(fd, hwe) {
+				if (gt == hwe->gt_id && !hwe->engine_instance) {
+					igt_dynamic_f("gt%u-engine-%s", gt,
+						      xe_engine_class_string(hwe->engine_class))
+						do_spin(fd, hwe);
+				}
+			}
+		}
+		igt_install_exit_handler(aspm_residency_exit_handler);
+		test_aspm_link_residency(fd, LINK_STATE_ASPM);
+	}
+
 	igt_fixture() {
 		close(fd);
 	}
-- 
2.25.1


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

* Re: [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency
  2026-01-21 14:57 ` [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency Karthik Poosa
@ 2026-01-22 15:00   ` Kamil Konieczny
  2026-01-23 10:34     ` Poosa, Karthik
  0 siblings, 1 reply; 15+ messages in thread
From: Kamil Konieczny @ 2026-01-22 15:00 UTC (permalink / raw)
  To: Karthik Poosa
  Cc: igt-dev, anshuman.gupta, badal.nilawar, riana.tauro, rodrigo.vivi

Hi Karthik,
On 2026-01-21 at 20:27:47 +0530, Karthik Poosa wrote:
> Add subtest aspm_link_residency to verify PCIe ASPM.
> Active State Power Management (ASPM) is a power management mechanism
> for PCI Express (PCIe) devices that aims to save power while the devices
> are in a fully active state.
> This test uses link state counters from the debugfs
> dgfx_pcie_link_residencies to verify this.
> 
> v2:
>  - Add dedicated function to get pcie endpoint upstream port. (Badal)
>  - Read residency counter as unsigned long long int instead of
>    unsigned long int.
>  - Print residency counter before sleep also.
>  - Don't assert if sysfs not corresponding to aspm_link_state
>    is not present. (Badal)
>  - Run workload before validation of aspm link residency. (Anshuman)
> 
> v3:
>  - Move igt_device_get_pci_usp to separate patch. (Kamil)
>  - Move reading of residency to separate function. (Badal)
> 
> v4:
>  - Add description about PCIe ASPM in commit message and code. (Kamil)
>  - Add a NULL check for the return value of igt_device_get_pci_usp().
>  - Resolve compilation warnings about using variable as format string
>    to sscanf.
> 
> v5:
>  - Use igt_device_get_pci_upstream_port() which is the renamed version
>    of igt_device_get_pci_usp().
> 
> v6:
>  - Refactor and enhance readability. (Badal)
>  - Move save and restore of link states to separate functions. (Badal)
> 
> v7:
>  - Skip aspm_link_residency on integrated platforms as it not supported.
> 
> v8:
>  - Address below review comments from Riana.
>  - Use igt_sysfs_has_attr() instead of faccess().
>  - Remove unnecessary spaces, debug logs, if checks.
>  - Wrap line length to 100 chars.
>  - Use spinner instead of mmap for workload.
> 
> v9:
>  - Address review comments from Kamil.
>  - Simplify couple of igt_asserts.
>  - Remove extra spaces.
> 
> v10:
>  - Add exit handler for aspm_link_residency test. (Riana)
>  - Remove unused and unnecessary variables.
> 
> Signed-off-by: Karthik Poosa <karthik.poosa@intel.com>
> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>  tests/intel/xe_pm_residency.c | 196 ++++++++++++++++++++++++++++++++++
>  1 file changed, 196 insertions(+)
> 
> diff --git a/tests/intel/xe_pm_residency.c b/tests/intel/xe_pm_residency.c
> index d33a87b13..2d965ef7d 100644
> --- a/tests/intel/xe_pm_residency.c
> +++ b/tests/intel/xe_pm_residency.c
> @@ -31,12 +31,36 @@
>  
>  const double tolerance = 0.1;
>  int fw_handle = -1;
> +int fd_pci_usp;

int fd_pci_usp = -1;

> +bool rpm_disabled;
> +bool link_states_saved;
>  
>  enum test_type {
>  	TEST_S2IDLE,
>  	TEST_IDLE,
>  };
>  
> +enum link_state_index {
> +	LINK_STATE_ASPM,
> +	LINK_STATE_ASPM_L1_1,
> +	LINK_STATE_ASPM_L1_2,
> +	LINK_STATE_PCIPM_L1_1,
> +	LINK_STATE_PCIPM_L1_2,
> +	MAX_LINK_STATES,
> +};
> +
> +struct link_state_info {
> +	const char *filename;
> +	char state;
> +	const char *parse_str;
> +} link_state_sysfs[] = {
> +	{ "l1_aspm", 0, "PCIE LINK L1 RESIDENCY : "},
> +	{ "l1_1_aspm", 0, "NULL"},
> +	{ "l1_2_aspm", 0, "PCIE LINK L1.2 RESIDENCY : "},
> +	{ "l1_1_pcipm", 0, NULL},
> +	{ "l1_2_pcipm", 0, NULL},
> +};
> +
>  /**
>   * SUBTEST: gt-c6-on-idle
>   * Description: Validate GT C6 state on idle
> @@ -64,6 +88,10 @@ enum test_type {
>   * SUBTEST: cpg-gt-toggle
>   * Description: Toggle GT coarse power gating states by acquiring/releasing
>   *		forcewake.
> + *
> + * SUBTEST: aspm_link_residency
> + * Description: Check for PCIe ASPM (Active State Power Management) link states
> + * entry while device is in D0.
>   */
>  IGT_TEST_DESCRIPTION("Tests for gtidle properties");
>  
> @@ -255,6 +283,21 @@ static void idle_residency_on_exec(int fd, struct drm_xe_engine_class_instance *
>  	munmap(done, 4096);
>  }
>  
> +static void do_spin(int fd, struct drm_xe_engine_class_instance *eci)
> +{
> +	igt_spin_t *spin;
> +	uint64_t vm, ahnd;
> +
> +	igt_info("Running spinner on %s:%d\n",
> +		 xe_engine_class_string(eci->engine_class), eci->engine_instance);
> +	vm = xe_vm_create(fd, 0, 0);
> +	intel_allocator_init();
> +	ahnd = intel_allocator_open(fd, 0, INTEL_ALLOCATOR_RELOC);
> +	spin = igt_spin_new(fd, .ahnd = ahnd, .vm = vm, .hwe = eci);
> +	igt_measured_usleep(USEC_PER_SEC);
> +	igt_spin_free(fd, spin);
> +}
> +
>  static void measure_power(struct igt_power *gpu, double *power)
>  {
>  	struct power_sample power_sample[2];
> @@ -370,6 +413,143 @@ static void cpg_gt_toggle(int fd)
>  		powergate_status(fd, gt, "down");
>  }
>  
> +static uint64_t get_link_state_residency(int fd_xe, const char *parse_str)
> +{
> +	int fd_debugfs_dir = 0;
> +	int ret = 0;
> +	char *ptr = NULL;
> +	char buf[1024] = {0};
> +	uint64_t residency = 0;
> +
> +	fd_debugfs_dir = igt_debugfs_dir(fd_xe);
> +	igt_assert(fd_debugfs_dir >= 0);
> +	ret = igt_debugfs_simple_read(fd_debugfs_dir, "dgfx_pcie_link_residencies", buf,
> +				      sizeof(buf));
> +	igt_assert_f(ret >= 0, "Cannot read residency file dgfx_pcie_link_residencies, ret %d\n",
> +		     ret);
> +
> +	ptr = strstr(buf, parse_str);
> +	igt_assert_f(ptr, "Cannot find residency string %s\n", parse_str);
> +	ret = sscanf(ptr + strlen(parse_str), "%lu", &residency);
> +	igt_assert_f(ret > 0, "Couldn't read residency value, ret %d", ret);
> +	igt_info("Link residency %"PRIu64"\n", residency);
> +	close(fd_debugfs_dir);
> +
> +	return residency;
> +}
> +
> +static void save_and_disable_link_states(void)
> +{
> +	int i = 0;
> +	int ret = 0;
> +	char path[256] = {0};
> +
> +	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
> +		sprintf(path, "%s", link_state_sysfs[i].filename);
> +		if (!igt_sysfs_has_attr(fd_pci_usp, path))
> +			continue;
> +		ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[i].state);
> +		igt_assert_lt(0, ret);
> +		igt_debug("saved %s = %c\n", link_state_sysfs[i].filename,
> +			  link_state_sysfs[i].state);
> +		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '0');

Disable should be done in separate function, so there should be two:

static void save_link_states(void)
static void disable_link_states(void)

> +		igt_assert_lt(0, ret);
> +	}
> +	link_states_saved = true;
> +}
> +
> +static void restore_link_states(void)
> +{
> +	int i = 0;
> +	int ret = 0;
> +	char path[256] = {0};
> +
> +	if (link_states_saved && fd_pci_usp >= 0) {
> +		/* Restore saved states of L1 sysfs entries. */
> +		for (i = 0 ; i < MAX_LINK_STATES ; i++) {
> +			sprintf(path, "%s", link_state_sysfs[i].filename);
> +			if (!igt_sysfs_has_attr(fd_pci_usp, path))
> +				continue;
> +			ret = igt_sysfs_printf(fd_pci_usp, path, "%c", link_state_sysfs[i].state);
> +			igt_assert_lt(0, ret);
> +			igt_debug("restored %s to %c\n", link_state_sysfs[i].filename,
> +				  link_state_sysfs[i].state);
> +		}
> +		link_states_saved = false;
> +	}
> +}
> +
> +static void test_aspm_link_residency(int fd_xe, enum link_state_index aspm_link_state)
> +{
> +	struct pci_device *pci_dev;
> +	char name[PATH_MAX];
> +	int ret = 0;
> +	uint64_t residency_pre = 0, residency_post = 0;
> +
> +	igt_assert(aspm_link_state <= LINK_STATE_ASPM_L1_2);
> +
> +	/* Get upstream port pci_dev */
> +	pci_dev = igt_device_get_pci_upstream_port(fd_xe);
> +	igt_assert_f(pci_dev, "Couldn't get pci device of upstream port\n");
> +	igt_debug("Upstream port PCI device: %04x:%02x:%02x.%01x\n", pci_dev->domain,
> +		  pci_dev->bus, pci_dev->dev, pci_dev->func);
> +
> +	snprintf(name, sizeof(name), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/link",
> +		 pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func);
> +	fd_pci_usp = open(name, O_DIRECTORY);
> +	igt_assert_f((fd_pci_usp >= 0), "Can't open link directory upstream port %s, ret %d\n",
> +		     name, fd_pci_usp);
> +
> +	/* Disable runtime PM as link ASPM entry happens during device is in D0 only. */
> +	igt_assert(igt_setup_runtime_pm(fd_xe));
> +	igt_disable_runtime_pm();
> +	rpm_disabled = true;
> +
> +	/* Check if ASPM sysfs is present. */
> +	igt_require_f(igt_sysfs_has_attr(fd_pci_usp, link_state_sysfs[aspm_link_state].filename),
> +		      "%s is not present\n", link_state_sysfs[aspm_link_state].filename);
> +	ret = igt_sysfs_scanf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c",
> +			      &link_state_sysfs[aspm_link_state].state);
> +	igt_assert_f((ret > 0), "Couldn't read residency for %s",
> +		     link_state_sysfs[aspm_link_state].filename);
> +
> +	/* Save current state of all available link sysfs entries and disable all link states. */
> +	save_and_disable_link_states();
> +
> +	/* Enable only the ASPM link state needed for test. */
> +	igt_debug("Enabling %s\n", link_state_sysfs[aspm_link_state].filename);
> +	ret = igt_sysfs_printf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c", '1');
> +
> +	/* Read link state residencies before and after idle wait time. */
> +	residency_pre = get_link_state_residency(fd_xe,
> +						 link_state_sysfs[aspm_link_state].parse_str);
> +	igt_info("Waiting for link to enter idle....\n");
> +	sleep(SLEEP_DURATION);
> +	residency_post = get_link_state_residency(fd_xe,
> +						  link_state_sysfs[aspm_link_state].parse_str);
> +
> +	restore_link_states();
> +	igt_restore_runtime_pm();
> +	rpm_disabled = false;
> +	close(fd_pci_usp);
> +	close(fd_xe);
> +
> +	igt_assert_f(residency_post > residency_pre,
> +		     "ASPM entry failed, pre %"PRIu64", post %"PRIu64"\n", residency_pre,
> +		     residency_post);
> +}
> +
> +static void aspm_residency_exit_handler(int sig)
> +{
> +	restore_link_states();
> +	if (rpm_disabled) {
> +		igt_restore_runtime_pm();
> +		rpm_disabled = false;
> +	}
> +	if (fd_pci_usp)

	if (fd_pci_usp != -1)

> +		close(fd_pci_usp);

Add:
	fd_pci_usp = -1;

> +}
> +
>  int igt_main()
>  {
>  	uint32_t d3cold_allowed;
> @@ -444,6 +624,22 @@ int igt_main()
>  		cpg_gt_toggle(fd);
>  	}
>  
> +	igt_describe("ASPM Link residency validation");
> +	igt_subtest_with_dynamic("aspm_link_residency") {

This should be igt_subtest():

	igt_subtest("aspm_link_residency") {

> +		igt_require(xe_has_vram(fd));
> +		xe_for_each_gt(fd, gt) {
> +			xe_for_each_engine(fd, hwe) {
> +				if (gt == hwe->gt_id && !hwe->engine_instance) {
> +					igt_dynamic_f("gt%u-engine-%s", gt,
> +						      xe_engine_class_string(hwe->engine_class))

What are you testing here? If you need to start and stop spinner
please describe here why. If you really need it, it should be:

				if (gt == hwe->gt_id && !hwe->engine_instance)
						do_spin(fd, hwe);

> +						do_spin(fd, hwe);
> +				}
> +			}
> +		}

Add newline.

> +		igt_install_exit_handler(aspm_residency_exit_handler);
> +		test_aspm_link_residency(fd, LINK_STATE_ASPM);

Btw any igt_assert outside of dynamic sub-subtest here will result
in SIGABORT, not a proper test fail.

Add cleanup here:
		aspm_residency_exit_handler(0);

> +	}
> +
>  	igt_fixture() {
>  		close(fd);
>  	}
> -- 
> 2.25.1
> 

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

* Re: [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency
  2026-01-22 15:00   ` Kamil Konieczny
@ 2026-01-23 10:34     ` Poosa, Karthik
  2026-01-23 12:07       ` Kamil Konieczny
  0 siblings, 1 reply; 15+ messages in thread
From: Poosa, Karthik @ 2026-01-23 10:34 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, anshuman.gupta, badal.nilawar,
	riana.tauro, rodrigo.vivi


On 22-01-2026 20:30, Kamil Konieczny wrote:
> Hi Karthik,
> On 2026-01-21 at 20:27:47 +0530, Karthik Poosa wrote:
>> Add subtest aspm_link_residency to verify PCIe ASPM.
>> Active State Power Management (ASPM) is a power management mechanism
>> for PCI Express (PCIe) devices that aims to save power while the devices
>> are in a fully active state.
>> This test uses link state counters from the debugfs
>> dgfx_pcie_link_residencies to verify this.
>>
>> v2:
>>   - Add dedicated function to get pcie endpoint upstream port. (Badal)
>>   - Read residency counter as unsigned long long int instead of
>>     unsigned long int.
>>   - Print residency counter before sleep also.
>>   - Don't assert if sysfs not corresponding to aspm_link_state
>>     is not present. (Badal)
>>   - Run workload before validation of aspm link residency. (Anshuman)
>>
>> v3:
>>   - Move igt_device_get_pci_usp to separate patch. (Kamil)
>>   - Move reading of residency to separate function. (Badal)
>>
>> v4:
>>   - Add description about PCIe ASPM in commit message and code. (Kamil)
>>   - Add a NULL check for the return value of igt_device_get_pci_usp().
>>   - Resolve compilation warnings about using variable as format string
>>     to sscanf.
>>
>> v5:
>>   - Use igt_device_get_pci_upstream_port() which is the renamed version
>>     of igt_device_get_pci_usp().
>>
>> v6:
>>   - Refactor and enhance readability. (Badal)
>>   - Move save and restore of link states to separate functions. (Badal)
>>
>> v7:
>>   - Skip aspm_link_residency on integrated platforms as it not supported.
>>
>> v8:
>>   - Address below review comments from Riana.
>>   - Use igt_sysfs_has_attr() instead of faccess().
>>   - Remove unnecessary spaces, debug logs, if checks.
>>   - Wrap line length to 100 chars.
>>   - Use spinner instead of mmap for workload.
>>
>> v9:
>>   - Address review comments from Kamil.
>>   - Simplify couple of igt_asserts.
>>   - Remove extra spaces.
>>
>> v10:
>>   - Add exit handler for aspm_link_residency test. (Riana)
>>   - Remove unused and unnecessary variables.
>>
>> Signed-off-by: Karthik Poosa <karthik.poosa@intel.com>
>> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
>> ---
>>   tests/intel/xe_pm_residency.c | 196 ++++++++++++++++++++++++++++++++++
>>   1 file changed, 196 insertions(+)
>>
>> diff --git a/tests/intel/xe_pm_residency.c b/tests/intel/xe_pm_residency.c
>> index d33a87b13..2d965ef7d 100644
>> --- a/tests/intel/xe_pm_residency.c
>> +++ b/tests/intel/xe_pm_residency.c
>> @@ -31,12 +31,36 @@
>>   
>>   const double tolerance = 0.1;
>>   int fw_handle = -1;
>> +int fd_pci_usp;
> int fd_pci_usp = -1;
>
>> +bool rpm_disabled;
>> +bool link_states_saved;
>>   
>>   enum test_type {
>>   	TEST_S2IDLE,
>>   	TEST_IDLE,
>>   };
>>   
>> +enum link_state_index {
>> +	LINK_STATE_ASPM,
>> +	LINK_STATE_ASPM_L1_1,
>> +	LINK_STATE_ASPM_L1_2,
>> +	LINK_STATE_PCIPM_L1_1,
>> +	LINK_STATE_PCIPM_L1_2,
>> +	MAX_LINK_STATES,
>> +};
>> +
>> +struct link_state_info {
>> +	const char *filename;
>> +	char state;
>> +	const char *parse_str;
>> +} link_state_sysfs[] = {
>> +	{ "l1_aspm", 0, "PCIE LINK L1 RESIDENCY : "},
>> +	{ "l1_1_aspm", 0, "NULL"},
>> +	{ "l1_2_aspm", 0, "PCIE LINK L1.2 RESIDENCY : "},
>> +	{ "l1_1_pcipm", 0, NULL},
>> +	{ "l1_2_pcipm", 0, NULL},
>> +};
>> +
>>   /**
>>    * SUBTEST: gt-c6-on-idle
>>    * Description: Validate GT C6 state on idle
>> @@ -64,6 +88,10 @@ enum test_type {
>>    * SUBTEST: cpg-gt-toggle
>>    * Description: Toggle GT coarse power gating states by acquiring/releasing
>>    *		forcewake.
>> + *
>> + * SUBTEST: aspm_link_residency
>> + * Description: Check for PCIe ASPM (Active State Power Management) link states
>> + * entry while device is in D0.
>>    */
>>   IGT_TEST_DESCRIPTION("Tests for gtidle properties");
>>   
>> @@ -255,6 +283,21 @@ static void idle_residency_on_exec(int fd, struct drm_xe_engine_class_instance *
>>   	munmap(done, 4096);
>>   }
>>   
>> +static void do_spin(int fd, struct drm_xe_engine_class_instance *eci)
>> +{
>> +	igt_spin_t *spin;
>> +	uint64_t vm, ahnd;
>> +
>> +	igt_info("Running spinner on %s:%d\n",
>> +		 xe_engine_class_string(eci->engine_class), eci->engine_instance);
>> +	vm = xe_vm_create(fd, 0, 0);
>> +	intel_allocator_init();
>> +	ahnd = intel_allocator_open(fd, 0, INTEL_ALLOCATOR_RELOC);
>> +	spin = igt_spin_new(fd, .ahnd = ahnd, .vm = vm, .hwe = eci);
>> +	igt_measured_usleep(USEC_PER_SEC);
>> +	igt_spin_free(fd, spin);
>> +}
>> +
>>   static void measure_power(struct igt_power *gpu, double *power)
>>   {
>>   	struct power_sample power_sample[2];
>> @@ -370,6 +413,143 @@ static void cpg_gt_toggle(int fd)
>>   		powergate_status(fd, gt, "down");
>>   }
>>   
>> +static uint64_t get_link_state_residency(int fd_xe, const char *parse_str)
>> +{
>> +	int fd_debugfs_dir = 0;
>> +	int ret = 0;
>> +	char *ptr = NULL;
>> +	char buf[1024] = {0};
>> +	uint64_t residency = 0;
>> +
>> +	fd_debugfs_dir = igt_debugfs_dir(fd_xe);
>> +	igt_assert(fd_debugfs_dir >= 0);
>> +	ret = igt_debugfs_simple_read(fd_debugfs_dir, "dgfx_pcie_link_residencies", buf,
>> +				      sizeof(buf));
>> +	igt_assert_f(ret >= 0, "Cannot read residency file dgfx_pcie_link_residencies, ret %d\n",
>> +		     ret);
>> +
>> +	ptr = strstr(buf, parse_str);
>> +	igt_assert_f(ptr, "Cannot find residency string %s\n", parse_str);
>> +	ret = sscanf(ptr + strlen(parse_str), "%lu", &residency);
>> +	igt_assert_f(ret > 0, "Couldn't read residency value, ret %d", ret);
>> +	igt_info("Link residency %"PRIu64"\n", residency);
>> +	close(fd_debugfs_dir);
>> +
>> +	return residency;
>> +}
>> +
>> +static void save_and_disable_link_states(void)
>> +{
>> +	int i = 0;
>> +	int ret = 0;
>> +	char path[256] = {0};
>> +
>> +	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
>> +		sprintf(path, "%s", link_state_sysfs[i].filename);
>> +		if (!igt_sysfs_has_attr(fd_pci_usp, path))
>> +			continue;
>> +		ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[i].state);
>> +		igt_assert_lt(0, ret);
>> +		igt_debug("saved %s = %c\n", link_state_sysfs[i].filename,
>> +			  link_state_sysfs[i].state);
>> +		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '0');
> Disable should be done in separate function, so there should be two:
>
> static void save_link_states(void)
> static void disable_link_states(void)
any reason for this Kamil, it will be unnecessary extra function.
>
>> +		igt_assert_lt(0, ret);
>> +	}
>> +	link_states_saved = true;
>> +}
>> +
>> +static void restore_link_states(void)
>> +{
>> +	int i = 0;
>> +	int ret = 0;
>> +	char path[256] = {0};
>> +
>> +	if (link_states_saved && fd_pci_usp >= 0) {
>> +		/* Restore saved states of L1 sysfs entries. */
>> +		for (i = 0 ; i < MAX_LINK_STATES ; i++) {
>> +			sprintf(path, "%s", link_state_sysfs[i].filename);
>> +			if (!igt_sysfs_has_attr(fd_pci_usp, path))
>> +				continue;
>> +			ret = igt_sysfs_printf(fd_pci_usp, path, "%c", link_state_sysfs[i].state);
>> +			igt_assert_lt(0, ret);
>> +			igt_debug("restored %s to %c\n", link_state_sysfs[i].filename,
>> +				  link_state_sysfs[i].state);
>> +		}
>> +		link_states_saved = false;
>> +	}
>> +}
>> +
>> +static void test_aspm_link_residency(int fd_xe, enum link_state_index aspm_link_state)
>> +{
>> +	struct pci_device *pci_dev;
>> +	char name[PATH_MAX];
>> +	int ret = 0;
>> +	uint64_t residency_pre = 0, residency_post = 0;
>> +
>> +	igt_assert(aspm_link_state <= LINK_STATE_ASPM_L1_2);
>> +
>> +	/* Get upstream port pci_dev */
>> +	pci_dev = igt_device_get_pci_upstream_port(fd_xe);
>> +	igt_assert_f(pci_dev, "Couldn't get pci device of upstream port\n");
>> +	igt_debug("Upstream port PCI device: %04x:%02x:%02x.%01x\n", pci_dev->domain,
>> +		  pci_dev->bus, pci_dev->dev, pci_dev->func);
>> +
>> +	snprintf(name, sizeof(name), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/link",
>> +		 pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func);
>> +	fd_pci_usp = open(name, O_DIRECTORY);
>> +	igt_assert_f((fd_pci_usp >= 0), "Can't open link directory upstream port %s, ret %d\n",
>> +		     name, fd_pci_usp);
>> +
>> +	/* Disable runtime PM as link ASPM entry happens during device is in D0 only. */
>> +	igt_assert(igt_setup_runtime_pm(fd_xe));
>> +	igt_disable_runtime_pm();
>> +	rpm_disabled = true;
>> +
>> +	/* Check if ASPM sysfs is present. */
>> +	igt_require_f(igt_sysfs_has_attr(fd_pci_usp, link_state_sysfs[aspm_link_state].filename),
>> +		      "%s is not present\n", link_state_sysfs[aspm_link_state].filename);
>> +	ret = igt_sysfs_scanf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c",
>> +			      &link_state_sysfs[aspm_link_state].state);
>> +	igt_assert_f((ret > 0), "Couldn't read residency for %s",
>> +		     link_state_sysfs[aspm_link_state].filename);
>> +
>> +	/* Save current state of all available link sysfs entries and disable all link states. */
>> +	save_and_disable_link_states();
>> +
>> +	/* Enable only the ASPM link state needed for test. */
>> +	igt_debug("Enabling %s\n", link_state_sysfs[aspm_link_state].filename);
>> +	ret = igt_sysfs_printf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c", '1');
>> +
>> +	/* Read link state residencies before and after idle wait time. */
>> +	residency_pre = get_link_state_residency(fd_xe,
>> +						 link_state_sysfs[aspm_link_state].parse_str);
>> +	igt_info("Waiting for link to enter idle....\n");
>> +	sleep(SLEEP_DURATION);
>> +	residency_post = get_link_state_residency(fd_xe,
>> +						  link_state_sysfs[aspm_link_state].parse_str);
>> +
>> +	restore_link_states();
>> +	igt_restore_runtime_pm();
>> +	rpm_disabled = false;
>> +	close(fd_pci_usp);
>> +	close(fd_xe);
>> +
>> +	igt_assert_f(residency_post > residency_pre,
>> +		     "ASPM entry failed, pre %"PRIu64", post %"PRIu64"\n", residency_pre,
>> +		     residency_post);
>> +}
>> +
>> +static void aspm_residency_exit_handler(int sig)
>> +{
>> +	restore_link_states();
>> +	if (rpm_disabled) {
>> +		igt_restore_runtime_pm();
>> +		rpm_disabled = false;
>> +	}
>> +	if (fd_pci_usp)
> 	if (fd_pci_usp != -1)
>
>> +		close(fd_pci_usp);
> Add:
> 	fd_pci_usp = -1;
>
>> +}
>> +
>>   int igt_main()
>>   {
>>   	uint32_t d3cold_allowed;
>> @@ -444,6 +624,22 @@ int igt_main()
>>   		cpg_gt_toggle(fd);
>>   	}
>>   
>> +	igt_describe("ASPM Link residency validation");
>> +	igt_subtest_with_dynamic("aspm_link_residency") {
> This should be igt_subtest():
>
> 	igt_subtest("aspm_link_residency") {
>
>> +		igt_require(xe_has_vram(fd));
>> +		xe_for_each_gt(fd, gt) {
>> +			xe_for_each_engine(fd, hwe) {
>> +				if (gt == hwe->gt_id && !hwe->engine_instance) {
>> +					igt_dynamic_f("gt%u-engine-%s", gt,
>> +						      xe_engine_class_string(hwe->engine_class))
> What are you testing here? If you need to start and stop spinner
> please describe here why. If you really need it, it should be:

we want to run a basic workload before testing ASPM entry.

So we are using spinner as workload here.

>
> 				if (gt == hwe->gt_id && !hwe->engine_instance)
> 						do_spin(fd, hwe);
>
>> +						do_spin(fd, hwe);
>> +				}
>> +			}
>> +		}
> Add newline.
>
>> +		igt_install_exit_handler(aspm_residency_exit_handler);
>> +		test_aspm_link_residency(fd, LINK_STATE_ASPM);
> Btw any igt_assert outside of dynamic sub-subtest here will result
> in SIGABORT, not a proper test fail.
>
> Add cleanup here:
> 		aspm_residency_exit_handler(0);
but installing exit handler already does this !
>
>> +	}
>> +
>>   	igt_fixture() {
>>   		close(fd);
>>   	}
>> -- 
>> 2.25.1
>>

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

* Re: [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency
  2026-01-23 10:34     ` Poosa, Karthik
@ 2026-01-23 12:07       ` Kamil Konieczny
  2026-01-23 12:35         ` Poosa, Karthik
  0 siblings, 1 reply; 15+ messages in thread
From: Kamil Konieczny @ 2026-01-23 12:07 UTC (permalink / raw)
  To: Poosa, Karthik
  Cc: igt-dev, anshuman.gupta, badal.nilawar, riana.tauro, rodrigo.vivi

Hi,
On 2026-01-23 at 16:04:11 +0530, Poosa, Karthik wrote:
> 
> On 22-01-2026 20:30, Kamil Konieczny wrote:
> > Hi Karthik,
> > On 2026-01-21 at 20:27:47 +0530, Karthik Poosa wrote:
> > > Add subtest aspm_link_residency to verify PCIe ASPM.
> > > Active State Power Management (ASPM) is a power management mechanism
> > > for PCI Express (PCIe) devices that aims to save power while the devices
> > > are in a fully active state.
> > > This test uses link state counters from the debugfs
> > > dgfx_pcie_link_residencies to verify this.
> > > 
> > > v2:
> > >   - Add dedicated function to get pcie endpoint upstream port. (Badal)
> > >   - Read residency counter as unsigned long long int instead of
> > >     unsigned long int.
> > >   - Print residency counter before sleep also.
> > >   - Don't assert if sysfs not corresponding to aspm_link_state
> > >     is not present. (Badal)
> > >   - Run workload before validation of aspm link residency. (Anshuman)
> > > 
> > > v3:
> > >   - Move igt_device_get_pci_usp to separate patch. (Kamil)
> > >   - Move reading of residency to separate function. (Badal)
> > > 
> > > v4:
> > >   - Add description about PCIe ASPM in commit message and code. (Kamil)
> > >   - Add a NULL check for the return value of igt_device_get_pci_usp().
> > >   - Resolve compilation warnings about using variable as format string
> > >     to sscanf.
> > > 
> > > v5:
> > >   - Use igt_device_get_pci_upstream_port() which is the renamed version
> > >     of igt_device_get_pci_usp().
> > > 
> > > v6:
> > >   - Refactor and enhance readability. (Badal)
> > >   - Move save and restore of link states to separate functions. (Badal)
> > > 
> > > v7:
> > >   - Skip aspm_link_residency on integrated platforms as it not supported.
> > > 
> > > v8:
> > >   - Address below review comments from Riana.
> > >   - Use igt_sysfs_has_attr() instead of faccess().
> > >   - Remove unnecessary spaces, debug logs, if checks.
> > >   - Wrap line length to 100 chars.
> > >   - Use spinner instead of mmap for workload.
> > > 
> > > v9:
> > >   - Address review comments from Kamil.
> > >   - Simplify couple of igt_asserts.
> > >   - Remove extra spaces.
> > > 
> > > v10:
> > >   - Add exit handler for aspm_link_residency test. (Riana)
> > >   - Remove unused and unnecessary variables.
> > > 
> > > Signed-off-by: Karthik Poosa <karthik.poosa@intel.com>
> > > Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
> > > ---
> > >   tests/intel/xe_pm_residency.c | 196 ++++++++++++++++++++++++++++++++++
> > >   1 file changed, 196 insertions(+)
> > > 
> > > diff --git a/tests/intel/xe_pm_residency.c b/tests/intel/xe_pm_residency.c
> > > index d33a87b13..2d965ef7d 100644
> > > --- a/tests/intel/xe_pm_residency.c
> > > +++ b/tests/intel/xe_pm_residency.c
> > > @@ -31,12 +31,36 @@
> > >   const double tolerance = 0.1;
> > >   int fw_handle = -1;
> > > +int fd_pci_usp;
> > int fd_pci_usp = -1;
> > 
> > > +bool rpm_disabled;
> > > +bool link_states_saved;
> > >   enum test_type {
> > >   	TEST_S2IDLE,
> > >   	TEST_IDLE,
> > >   };
> > > +enum link_state_index {
> > > +	LINK_STATE_ASPM,
> > > +	LINK_STATE_ASPM_L1_1,
> > > +	LINK_STATE_ASPM_L1_2,
> > > +	LINK_STATE_PCIPM_L1_1,
> > > +	LINK_STATE_PCIPM_L1_2,
> > > +	MAX_LINK_STATES,
> > > +};
> > > +
> > > +struct link_state_info {
> > > +	const char *filename;
> > > +	char state;
> > > +	const char *parse_str;
> > > +} link_state_sysfs[] = {
> > > +	{ "l1_aspm", 0, "PCIE LINK L1 RESIDENCY : "},
> > > +	{ "l1_1_aspm", 0, "NULL"},
> > > +	{ "l1_2_aspm", 0, "PCIE LINK L1.2 RESIDENCY : "},
> > > +	{ "l1_1_pcipm", 0, NULL},
> > > +	{ "l1_2_pcipm", 0, NULL},
> > > +};
> > > +
> > >   /**
> > >    * SUBTEST: gt-c6-on-idle
> > >    * Description: Validate GT C6 state on idle
> > > @@ -64,6 +88,10 @@ enum test_type {
> > >    * SUBTEST: cpg-gt-toggle
> > >    * Description: Toggle GT coarse power gating states by acquiring/releasing
> > >    *		forcewake.
> > > + *
> > > + * SUBTEST: aspm_link_residency
> > > + * Description: Check for PCIe ASPM (Active State Power Management) link states
> > > + * entry while device is in D0.
> > >    */
> > >   IGT_TEST_DESCRIPTION("Tests for gtidle properties");
> > > @@ -255,6 +283,21 @@ static void idle_residency_on_exec(int fd, struct drm_xe_engine_class_instance *
> > >   	munmap(done, 4096);
> > >   }
> > > +static void do_spin(int fd, struct drm_xe_engine_class_instance *eci)
> > > +{
> > > +	igt_spin_t *spin;
> > > +	uint64_t vm, ahnd;
> > > +
> > > +	igt_info("Running spinner on %s:%d\n",
> > > +		 xe_engine_class_string(eci->engine_class), eci->engine_instance);
> > > +	vm = xe_vm_create(fd, 0, 0);
> > > +	intel_allocator_init();
> > > +	ahnd = intel_allocator_open(fd, 0, INTEL_ALLOCATOR_RELOC);
> > > +	spin = igt_spin_new(fd, .ahnd = ahnd, .vm = vm, .hwe = eci);
> > > +	igt_measured_usleep(USEC_PER_SEC);
> > > +	igt_spin_free(fd, spin);
> > > +}
> > > +
> > >   static void measure_power(struct igt_power *gpu, double *power)
> > >   {
> > >   	struct power_sample power_sample[2];
> > > @@ -370,6 +413,143 @@ static void cpg_gt_toggle(int fd)
> > >   		powergate_status(fd, gt, "down");
> > >   }
> > > +static uint64_t get_link_state_residency(int fd_xe, const char *parse_str)
> > > +{
> > > +	int fd_debugfs_dir = 0;
> > > +	int ret = 0;
> > > +	char *ptr = NULL;
> > > +	char buf[1024] = {0};
> > > +	uint64_t residency = 0;
> > > +
> > > +	fd_debugfs_dir = igt_debugfs_dir(fd_xe);
> > > +	igt_assert(fd_debugfs_dir >= 0);
> > > +	ret = igt_debugfs_simple_read(fd_debugfs_dir, "dgfx_pcie_link_residencies", buf,
> > > +				      sizeof(buf));
> > > +	igt_assert_f(ret >= 0, "Cannot read residency file dgfx_pcie_link_residencies, ret %d\n",
> > > +		     ret);
> > > +
> > > +	ptr = strstr(buf, parse_str);
> > > +	igt_assert_f(ptr, "Cannot find residency string %s\n", parse_str);
> > > +	ret = sscanf(ptr + strlen(parse_str), "%lu", &residency);
> > > +	igt_assert_f(ret > 0, "Couldn't read residency value, ret %d", ret);
> > > +	igt_info("Link residency %"PRIu64"\n", residency);
> > > +	close(fd_debugfs_dir);
> > > +
> > > +	return residency;
> > > +}
> > > +
> > > +static void save_and_disable_link_states(void)
> > > +{
> > > +	int i = 0;
> > > +	int ret = 0;
> > > +	char path[256] = {0};
> > > +
> > > +	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
> > > +		sprintf(path, "%s", link_state_sysfs[i].filename);
> > > +		if (!igt_sysfs_has_attr(fd_pci_usp, path))
> > > +			continue;
> > > +		ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[i].state);
> > > +		igt_assert_lt(0, ret);
> > > +		igt_debug("saved %s = %c\n", link_state_sysfs[i].filename,
> > > +			  link_state_sysfs[i].state);
> > > +		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '0');
> > Disable should be done in separate function, so there should be two:
> > 
> > static void save_link_states(void)
> > static void disable_link_states(void)
> any reason for this Kamil, it will be unnecessary extra function.

Because you mix here reading and setting. imho there could be
a problem if setting first few succeeds but in middle fails.


> > 
> > > +		igt_assert_lt(0, ret);
> > > +	}
> > > +	link_states_saved = true;
> > > +}
> > > +
> > > +static void restore_link_states(void)
> > > +{
> > > +	int i = 0;
> > > +	int ret = 0;
> > > +	char path[256] = {0};
> > > +
> > > +	if (link_states_saved && fd_pci_usp >= 0) {
> > > +		/* Restore saved states of L1 sysfs entries. */
> > > +		for (i = 0 ; i < MAX_LINK_STATES ; i++) {
> > > +			sprintf(path, "%s", link_state_sysfs[i].filename);
> > > +			if (!igt_sysfs_has_attr(fd_pci_usp, path))
> > > +				continue;
> > > +			ret = igt_sysfs_printf(fd_pci_usp, path, "%c", link_state_sysfs[i].state);
> > > +			igt_assert_lt(0, ret);
> > > +			igt_debug("restored %s to %c\n", link_state_sysfs[i].filename,
> > > +				  link_state_sysfs[i].state);
> > > +		}
> > > +		link_states_saved = false;
> > > +	}
> > > +}
> > > +
> > > +static void test_aspm_link_residency(int fd_xe, enum link_state_index aspm_link_state)
> > > +{
> > > +	struct pci_device *pci_dev;
> > > +	char name[PATH_MAX];
> > > +	int ret = 0;
> > > +	uint64_t residency_pre = 0, residency_post = 0;
> > > +
> > > +	igt_assert(aspm_link_state <= LINK_STATE_ASPM_L1_2);
> > > +
> > > +	/* Get upstream port pci_dev */
> > > +	pci_dev = igt_device_get_pci_upstream_port(fd_xe);
> > > +	igt_assert_f(pci_dev, "Couldn't get pci device of upstream port\n");
> > > +	igt_debug("Upstream port PCI device: %04x:%02x:%02x.%01x\n", pci_dev->domain,
> > > +		  pci_dev->bus, pci_dev->dev, pci_dev->func);
> > > +
> > > +	snprintf(name, sizeof(name), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/link",
> > > +		 pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func);
> > > +	fd_pci_usp = open(name, O_DIRECTORY);
> > > +	igt_assert_f((fd_pci_usp >= 0), "Can't open link directory upstream port %s, ret %d\n",
> > > +		     name, fd_pci_usp);
> > > +
> > > +	/* Disable runtime PM as link ASPM entry happens during device is in D0 only. */
> > > +	igt_assert(igt_setup_runtime_pm(fd_xe));
> > > +	igt_disable_runtime_pm();
> > > +	rpm_disabled = true;
> > > +
> > > +	/* Check if ASPM sysfs is present. */
> > > +	igt_require_f(igt_sysfs_has_attr(fd_pci_usp, link_state_sysfs[aspm_link_state].filename),
> > > +		      "%s is not present\n", link_state_sysfs[aspm_link_state].filename);
> > > +	ret = igt_sysfs_scanf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c",
> > > +			      &link_state_sysfs[aspm_link_state].state);
> > > +	igt_assert_f((ret > 0), "Couldn't read residency for %s",
> > > +		     link_state_sysfs[aspm_link_state].filename);
> > > +
> > > +	/* Save current state of all available link sysfs entries and disable all link states. */
> > > +	save_and_disable_link_states();
> > > +
> > > +	/* Enable only the ASPM link state needed for test. */
> > > +	igt_debug("Enabling %s\n", link_state_sysfs[aspm_link_state].filename);
> > > +	ret = igt_sysfs_printf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c", '1');
> > > +
> > > +	/* Read link state residencies before and after idle wait time. */
> > > +	residency_pre = get_link_state_residency(fd_xe,
> > > +						 link_state_sysfs[aspm_link_state].parse_str);
> > > +	igt_info("Waiting for link to enter idle....\n");
> > > +	sleep(SLEEP_DURATION);
> > > +	residency_post = get_link_state_residency(fd_xe,
> > > +						  link_state_sysfs[aspm_link_state].parse_str);
> > > +
> > > +	restore_link_states();
> > > +	igt_restore_runtime_pm();
> > > +	rpm_disabled = false;
> > > +	close(fd_pci_usp);
> > > +	close(fd_xe);
> > > +
> > > +	igt_assert_f(residency_post > residency_pre,
> > > +		     "ASPM entry failed, pre %"PRIu64", post %"PRIu64"\n", residency_pre,
> > > +		     residency_post);
> > > +}
> > > +
> > > +static void aspm_residency_exit_handler(int sig)
> > > +{
> > > +	restore_link_states();
> > > +	if (rpm_disabled) {
> > > +		igt_restore_runtime_pm();
> > > +		rpm_disabled = false;
> > > +	}
> > > +	if (fd_pci_usp)
> > 	if (fd_pci_usp != -1)
> > 
> > > +		close(fd_pci_usp);
> > Add:
> > 	fd_pci_usp = -1;
> > 
> > > +}
> > > +
> > >   int igt_main()
> > >   {
> > >   	uint32_t d3cold_allowed;
> > > @@ -444,6 +624,22 @@ int igt_main()
> > >   		cpg_gt_toggle(fd);
> > >   	}
> > > +	igt_describe("ASPM Link residency validation");
> > > +	igt_subtest_with_dynamic("aspm_link_residency") {
> > This should be igt_subtest():
> > 
> > 	igt_subtest("aspm_link_residency") {
> > 
> > > +		igt_require(xe_has_vram(fd));
> > > +		xe_for_each_gt(fd, gt) {
> > > +			xe_for_each_engine(fd, hwe) {
> > > +				if (gt == hwe->gt_id && !hwe->engine_instance) {
> > > +					igt_dynamic_f("gt%u-engine-%s", gt,
> > > +						      xe_engine_class_string(hwe->engine_class))
> > What are you testing here? If you need to start and stop spinner
> > please describe here why. If you really need it, it should be:
> 
> we want to run a basic workload before testing ASPM entry.
> 
> So we are using spinner as workload here.

ok, but why do you need any workload? It should also work without it?

> 
> > 
> > 				if (gt == hwe->gt_id && !hwe->engine_instance)
> > 						do_spin(fd, hwe);
> > 
> > > +						do_spin(fd, hwe);
> > > +				}
> > > +			}
> > > +		}
> > Add newline.
> > 
> > > +		igt_install_exit_handler(aspm_residency_exit_handler);
> > > +		test_aspm_link_residency(fd, LINK_STATE_ASPM);
> > Btw any igt_assert outside of dynamic sub-subtest here will result
> > in SIGABORT, not a proper test fail.
> > 
> > Add cleanup here:
> > 		aspm_residency_exit_handler(0);
> but installing exit handler already does this !

It could become a problem when someone adds new test after this one.

Regards,
Kamil

> > 
> > > +	}
> > > +
> > >   	igt_fixture() {
> > >   		close(fd);
> > >   	}
> > > -- 
> > > 2.25.1
> > > 

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

* Re: [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency
  2026-01-23 12:07       ` Kamil Konieczny
@ 2026-01-23 12:35         ` Poosa, Karthik
  2026-01-23 14:06           ` Kamil Konieczny
  0 siblings, 1 reply; 15+ messages in thread
From: Poosa, Karthik @ 2026-01-23 12:35 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, anshuman.gupta, badal.nilawar,
	riana.tauro, rodrigo.vivi

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


On 23-01-2026 17:37, Kamil Konieczny wrote:
> Hi,
> On 2026-01-23 at 16:04:11 +0530, Poosa, Karthik wrote:
>> On 22-01-2026 20:30, Kamil Konieczny wrote:
>>> Hi Karthik,
>>> On 2026-01-21 at 20:27:47 +0530, Karthik Poosa wrote:
>>>> Add subtest aspm_link_residency to verify PCIe ASPM.
>>>> Active State Power Management (ASPM) is a power management mechanism
>>>> for PCI Express (PCIe) devices that aims to save power while the devices
>>>> are in a fully active state.
>>>> This test uses link state counters from the debugfs
>>>> dgfx_pcie_link_residencies to verify this.
>>>>
>>>> v2:
>>>>    - Add dedicated function to get pcie endpoint upstream port. (Badal)
>>>>    - Read residency counter as unsigned long long int instead of
>>>>      unsigned long int.
>>>>    - Print residency counter before sleep also.
>>>>    - Don't assert if sysfs not corresponding to aspm_link_state
>>>>      is not present. (Badal)
>>>>    - Run workload before validation of aspm link residency. (Anshuman)
>>>>
>>>> v3:
>>>>    - Move igt_device_get_pci_usp to separate patch. (Kamil)
>>>>    - Move reading of residency to separate function. (Badal)
>>>>
>>>> v4:
>>>>    - Add description about PCIe ASPM in commit message and code. (Kamil)
>>>>    - Add a NULL check for the return value of igt_device_get_pci_usp().
>>>>    - Resolve compilation warnings about using variable as format string
>>>>      to sscanf.
>>>>
>>>> v5:
>>>>    - Use igt_device_get_pci_upstream_port() which is the renamed version
>>>>      of igt_device_get_pci_usp().
>>>>
>>>> v6:
>>>>    - Refactor and enhance readability. (Badal)
>>>>    - Move save and restore of link states to separate functions. (Badal)
>>>>
>>>> v7:
>>>>    - Skip aspm_link_residency on integrated platforms as it not supported.
>>>>
>>>> v8:
>>>>    - Address below review comments from Riana.
>>>>    - Use igt_sysfs_has_attr() instead of faccess().
>>>>    - Remove unnecessary spaces, debug logs, if checks.
>>>>    - Wrap line length to 100 chars.
>>>>    - Use spinner instead of mmap for workload.
>>>>
>>>> v9:
>>>>    - Address review comments from Kamil.
>>>>    - Simplify couple of igt_asserts.
>>>>    - Remove extra spaces.
>>>>
>>>> v10:
>>>>    - Add exit handler for aspm_link_residency test. (Riana)
>>>>    - Remove unused and unnecessary variables.
>>>>
>>>> Signed-off-by: Karthik Poosa<karthik.poosa@intel.com>
>>>> Reviewed-by: Badal Nilawar<badal.nilawar@intel.com>
>>>> ---
>>>>    tests/intel/xe_pm_residency.c | 196 ++++++++++++++++++++++++++++++++++
>>>>    1 file changed, 196 insertions(+)
>>>>
>>>> diff --git a/tests/intel/xe_pm_residency.c b/tests/intel/xe_pm_residency.c
>>>> index d33a87b13..2d965ef7d 100644
>>>> --- a/tests/intel/xe_pm_residency.c
>>>> +++ b/tests/intel/xe_pm_residency.c
>>>> @@ -31,12 +31,36 @@
>>>>    const double tolerance = 0.1;
>>>>    int fw_handle = -1;
>>>> +int fd_pci_usp;
>>> int fd_pci_usp = -1;
>>>
>>>> +bool rpm_disabled;
>>>> +bool link_states_saved;
>>>>    enum test_type {
>>>>    	TEST_S2IDLE,
>>>>    	TEST_IDLE,
>>>>    };
>>>> +enum link_state_index {
>>>> +	LINK_STATE_ASPM,
>>>> +	LINK_STATE_ASPM_L1_1,
>>>> +	LINK_STATE_ASPM_L1_2,
>>>> +	LINK_STATE_PCIPM_L1_1,
>>>> +	LINK_STATE_PCIPM_L1_2,
>>>> +	MAX_LINK_STATES,
>>>> +};
>>>> +
>>>> +struct link_state_info {
>>>> +	const char *filename;
>>>> +	char state;
>>>> +	const char *parse_str;
>>>> +} link_state_sysfs[] = {
>>>> +	{ "l1_aspm", 0, "PCIE LINK L1 RESIDENCY : "},
>>>> +	{ "l1_1_aspm", 0, "NULL"},
>>>> +	{ "l1_2_aspm", 0, "PCIE LINK L1.2 RESIDENCY : "},
>>>> +	{ "l1_1_pcipm", 0, NULL},
>>>> +	{ "l1_2_pcipm", 0, NULL}, +}; + /** * SUBTEST: gt-c6-on-idle * Description: 
>>>> Validate GT C6 state on idle @@ -64,6 +88,10 @@ enum test_type { * 
>>>> SUBTEST: cpg-gt-toggle * Description: Toggle GT coarse power gating 
>>>> states by acquiring/releasing * forcewake. + * + * SUBTEST: 
>>>> aspm_link_residency + * Description: Check for PCIe ASPM (Active 
>>>> State Power Management) link states + * entry while device is in 
>>>> D0. */ IGT_TEST_DESCRIPTION("Tests for gtidle properties");
>>>> @@ -255,6 +283,21 @@ static void idle_residency_on_exec(int fd, struct drm_xe_engine_class_instance *
>>>>    	munmap(done, 4096);
>>>>    }
>>>> +static void do_spin(int fd, struct drm_xe_engine_class_instance *eci)
>>>> +{
>>>> +	igt_spin_t *spin;
>>>> +	uint64_t vm, ahnd;
>>>> +
>>>> +	igt_info("Running spinner on %s:%d\n",
>>>> +		 xe_engine_class_string(eci->engine_class), eci->engine_instance);
>>>> +	vm = xe_vm_create(fd, 0, 0);
>>>> +	intel_allocator_init();
>>>> +	ahnd = intel_allocator_open(fd, 0, INTEL_ALLOCATOR_RELOC);
>>>> +	spin = igt_spin_new(fd, .ahnd = ahnd, .vm = vm, .hwe = eci);
>>>> +	igt_measured_usleep(USEC_PER_SEC);
>>>> +	igt_spin_free(fd, spin);
>>>> +}
>>>> +
>>>>    static void measure_power(struct igt_power *gpu, double *power)
>>>>    {
>>>>    	struct power_sample power_sample[2];
>>>> @@ -370,6 +413,143 @@ static void cpg_gt_toggle(int fd)
>>>>    		powergate_status(fd, gt, "down");
>>>>    }
>>>> +static uint64_t get_link_state_residency(int fd_xe, const char *parse_str)
>>>> +{
>>>> +	int fd_debugfs_dir = 0;
>>>> +	int ret = 0;
>>>> +	char *ptr = NULL;
>>>> +	char buf[1024] = {0};
>>>> +	uint64_t residency = 0;
>>>> +
>>>> +	fd_debugfs_dir = igt_debugfs_dir(fd_xe);
>>>> +	igt_assert(fd_debugfs_dir >= 0);
>>>> +	ret = igt_debugfs_simple_read(fd_debugfs_dir, "dgfx_pcie_link_residencies", buf,
>>>> +				      sizeof(buf));
>>>> +	igt_assert_f(ret >= 0, "Cannot read residency file dgfx_pcie_link_residencies, ret %d\n",
>>>> +		     ret);
>>>> +
>>>> +	ptr = strstr(buf, parse_str);
>>>> +	igt_assert_f(ptr, "Cannot find residency string %s\n", parse_str);
>>>> +	ret = sscanf(ptr + strlen(parse_str), "%lu", &residency);
>>>> +	igt_assert_f(ret > 0, "Couldn't read residency value, ret %d", ret);
>>>> +	igt_info("Link residency %"PRIu64"\n", residency);
>>>> +	close(fd_debugfs_dir);
>>>> +
>>>> +	return residency;
>>>> +}
>>>> +
>>>> +static void save_and_disable_link_states(void)
>>>> +{
>>>> +	int i = 0;
>>>> +	int ret = 0;
>>>> +	char path[256] = {0};
>>>> +
>>>> +	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
>>>> +		sprintf(path, "%s", link_state_sysfs[i].filename);
>>>> +		if (!igt_sysfs_has_attr(fd_pci_usp, path))
>>>> +			continue;
>>>> +		ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[i].state);
>>>> +		igt_assert_lt(0, ret);
>>>> +		igt_debug("saved %s = %c\n", link_state_sysfs[i].filename,
>>>> +			  link_state_sysfs[i].state);
>>>> +		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '0');
>>> Disable should be done in separate function, so there should be two:
>>>
>>> static void save_link_states(void)
>>> static void disable_link_states(void)
>> any reason for this Kamil, it will be unnecessary extra function.
> Because you mix here reading and setting. imho there could be
> a problem if setting first few succeeds but in middle fails.
ok
>
>
>>>> +		igt_assert_lt(0, ret);
>>>> +	}
>>>> +	link_states_saved = true;
>>>> +}
>>>> +
>>>> +static void restore_link_states(void)
>>>> +{
>>>> +	int i = 0;
>>>> +	int ret = 0;
>>>> +	char path[256] = {0};
>>>> +
>>>> +	if (link_states_saved && fd_pci_usp >= 0) {
>>>> +		/* Restore saved states of L1 sysfs entries. */
>>>> +		for (i = 0 ; i < MAX_LINK_STATES ; i++) {
>>>> +			sprintf(path, "%s", link_state_sysfs[i].filename);
>>>> +			if (!igt_sysfs_has_attr(fd_pci_usp, path))
>>>> +				continue;
>>>> +			ret = igt_sysfs_printf(fd_pci_usp, path, "%c", link_state_sysfs[i].state);
>>>> +			igt_assert_lt(0, ret);
>>>> +			igt_debug("restored %s to %c\n", link_state_sysfs[i].filename,
>>>> +				  link_state_sysfs[i].state);
>>>> +		}
>>>> +		link_states_saved = false;
>>>> +	}
>>>> +}
>>>> +
>>>> +static void test_aspm_link_residency(int fd_xe, enum link_state_index aspm_link_state)
>>>> +{
>>>> +	struct pci_device *pci_dev;
>>>> +	char name[PATH_MAX];
>>>> +	int ret = 0;
>>>> +	uint64_t residency_pre = 0, residency_post = 0;
>>>> +
>>>> +	igt_assert(aspm_link_state <= LINK_STATE_ASPM_L1_2);
>>>> +
>>>> +	/* Get upstream port pci_dev */
>>>> +	pci_dev = igt_device_get_pci_upstream_port(fd_xe);
>>>> +	igt_assert_f(pci_dev, "Couldn't get pci device of upstream port\n");
>>>> +	igt_debug("Upstream port PCI device: %04x:%02x:%02x.%01x\n", pci_dev->domain,
>>>> +		  pci_dev->bus, pci_dev->dev, pci_dev->func);
>>>> +
>>>> +	snprintf(name, sizeof(name), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/link",
>>>> +		 pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func);
>>>> +	fd_pci_usp = open(name, O_DIRECTORY);
>>>> +	igt_assert_f((fd_pci_usp >= 0), "Can't open link directory upstream port %s, ret %d\n",
>>>> +		     name, fd_pci_usp);
>>>> +
>>>> +	/* Disable runtime PM as link ASPM entry happens during device is in D0 only. */
>>>> +	igt_assert(igt_setup_runtime_pm(fd_xe));
>>>> +	igt_disable_runtime_pm();
>>>> +	rpm_disabled = true;
>>>> +
>>>> +	/* Check if ASPM sysfs is present. */
>>>> +	igt_require_f(igt_sysfs_has_attr(fd_pci_usp, link_state_sysfs[aspm_link_state].filename),
>>>> +		      "%s is not present\n", link_state_sysfs[aspm_link_state].filename);
>>>> +	ret = igt_sysfs_scanf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c",
>>>> +			      &link_state_sysfs[aspm_link_state].state);
>>>> +	igt_assert_f((ret > 0), "Couldn't read residency for %s",
>>>> +		     link_state_sysfs[aspm_link_state].filename);
>>>> +
>>>> +	/* Save current state of all available link sysfs entries and disable all link states. */
>>>> +	save_and_disable_link_states();
>>>> +
>>>> +	/* Enable only the ASPM link state needed for test. */
>>>> +	igt_debug("Enabling %s\n", link_state_sysfs[aspm_link_state].filename);
>>>> +	ret = igt_sysfs_printf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c", '1');
>>>> +
>>>> +	/* Read link state residencies before and after idle wait time. */
>>>> +	residency_pre = get_link_state_residency(fd_xe,
>>>> +						 link_state_sysfs[aspm_link_state].parse_str);
>>>> +	igt_info("Waiting for link to enter idle....\n");
>>>> +	sleep(SLEEP_DURATION);
>>>> +	residency_post = get_link_state_residency(fd_xe,
>>>> +						  link_state_sysfs[aspm_link_state].parse_str);
>>>> +
>>>> +	restore_link_states();
>>>> +	igt_restore_runtime_pm();
>>>> +	rpm_disabled = false;
>>>> +	close(fd_pci_usp);
>>>> +	close(fd_xe);
>>>> +
>>>> +	igt_assert_f(residency_post > residency_pre,
>>>> +		     "ASPM entry failed, pre %"PRIu64", post %"PRIu64"\n", residency_pre,
>>>> +		     residency_post);
>>>> +}
>>>> +
>>>> +static void aspm_residency_exit_handler(int sig)
>>>> +{
>>>> +	restore_link_states();
>>>> +	if (rpm_disabled) {
>>>> +		igt_restore_runtime_pm();
>>>> +		rpm_disabled = false;
>>>> +	}
>>>> +	if (fd_pci_usp)
>>> 	if (fd_pci_usp != -1)
>>>
>>>> +		close(fd_pci_usp);
>>> Add:
>>> 	fd_pci_usp = -1;
>>>
>>>> +}
>>>> +
>>>>    int igt_main()
>>>>    {
>>>>    	uint32_t d3cold_allowed;
>>>> @@ -444,6 +624,22 @@ int igt_main()
>>>>    		cpg_gt_toggle(fd);
>>>>    	}
>>>> +	igt_describe("ASPM Link residency validation");
>>>> +	igt_subtest_with_dynamic("aspm_link_residency") {
>>> This should be igt_subtest():
>>>
>>> 	igt_subtest("aspm_link_residency") {
>>>
>>>> +		igt_require(xe_has_vram(fd));
>>>> +		xe_for_each_gt(fd, gt) {
>>>> +			xe_for_each_engine(fd, hwe) {
>>>> +				if (gt == hwe->gt_id && !hwe->engine_instance) {
>>>> +					igt_dynamic_f("gt%u-engine-%s", gt,
>>>> +						      xe_engine_class_string(hwe->engine_class))
>>> What are you testing here? If you need to start and stop spinner
>>> please describe here why. If you really need it, it should be:
>> we want to run a basic workload before testing ASPM entry.
>>
>> So we are using spinner as workload here.
> ok, but why do you need any workload? It should also work without it?

Yes, it works even workload also.

This was suggested by Anshuman,

I believe this is intended to wake up the GPU and ensure the engines 
execute some workload before entering ASPM.

>
>>> 				if (gt == hwe->gt_id && !hwe->engine_instance)
>>> 						do_spin(fd, hwe);
>>>
>>>> +						do_spin(fd, hwe);
>>>> +				}
>>>> +			}
>>>> +		}
>>> Add newline.
>>>
>>>> +		igt_install_exit_handler(aspm_residency_exit_handler);
>>>> +		test_aspm_link_residency(fd, LINK_STATE_ASPM);
>>> Btw any igt_assert outside of dynamic sub-subtest here will result
>>> in SIGABORT, not a proper test fail.
>>>
>>> Add cleanup here:
>>> 		aspm_residency_exit_handler(0);
>> but installing exit handler already does this !
> It could become a problem when someone adds new test after this one.
>
> Regards,
> Kamil
>
>>>> +	}
>>>> +
>>>>    	igt_fixture() {
>>>>    		close(fd);
>>>>    	}
>>>> -- 
>>>> 2.25.1
>>>>

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

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

* Re: [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency
  2026-01-23 12:35         ` Poosa, Karthik
@ 2026-01-23 14:06           ` Kamil Konieczny
  2026-02-04  5:46             ` Poosa, Karthik
  0 siblings, 1 reply; 15+ messages in thread
From: Kamil Konieczny @ 2026-01-23 14:06 UTC (permalink / raw)
  To: Poosa, Karthik
  Cc: igt-dev, anshuman.gupta, badal.nilawar, riana.tauro, rodrigo.vivi

Hi Poosa,,
On 2026-01-23 at 18:05:01 +0530, Poosa, Karthik wrote:
> 
> On 23-01-2026 17:37, Kamil Konieczny wrote:
> > Hi,
> > On 2026-01-23 at 16:04:11 +0530, Poosa, Karthik wrote:
> > > On 22-01-2026 20:30, Kamil Konieczny wrote:
> > > > Hi Karthik,
> > > > On 2026-01-21 at 20:27:47 +0530, Karthik Poosa wrote:
> > > > > Add subtest aspm_link_residency to verify PCIe ASPM.
> > > > > Active State Power Management (ASPM) is a power management mechanism
> > > > > for PCI Express (PCIe) devices that aims to save power while the devices
> > > > > are in a fully active state.
> > > > > This test uses link state counters from the debugfs
> > > > > dgfx_pcie_link_residencies to verify this.
> > > > > 
> > > > > v2:
> > > > >    - Add dedicated function to get pcie endpoint upstream port. (Badal)
> > > > >    - Read residency counter as unsigned long long int instead of
> > > > >      unsigned long int.
> > > > >    - Print residency counter before sleep also.
> > > > >    - Don't assert if sysfs not corresponding to aspm_link_state
> > > > >      is not present. (Badal)
> > > > >    - Run workload before validation of aspm link residency. (Anshuman)
> > > > > 
> > > > > v3:
> > > > >    - Move igt_device_get_pci_usp to separate patch. (Kamil)
> > > > >    - Move reading of residency to separate function. (Badal)
> > > > > 
> > > > > v4:
> > > > >    - Add description about PCIe ASPM in commit message and code. (Kamil)
> > > > >    - Add a NULL check for the return value of igt_device_get_pci_usp().
> > > > >    - Resolve compilation warnings about using variable as format string
> > > > >      to sscanf.
> > > > > 
> > > > > v5:
> > > > >    - Use igt_device_get_pci_upstream_port() which is the renamed version
> > > > >      of igt_device_get_pci_usp().
> > > > > 
> > > > > v6:
> > > > >    - Refactor and enhance readability. (Badal)
> > > > >    - Move save and restore of link states to separate functions. (Badal)
> > > > > 
> > > > > v7:
> > > > >    - Skip aspm_link_residency on integrated platforms as it not supported.
> > > > > 
> > > > > v8:
> > > > >    - Address below review comments from Riana.
> > > > >    - Use igt_sysfs_has_attr() instead of faccess().
> > > > >    - Remove unnecessary spaces, debug logs, if checks.
> > > > >    - Wrap line length to 100 chars.
> > > > >    - Use spinner instead of mmap for workload.
> > > > > 
> > > > > v9:
> > > > >    - Address review comments from Kamil.
> > > > >    - Simplify couple of igt_asserts.
> > > > >    - Remove extra spaces.
> > > > > 
> > > > > v10:
> > > > >    - Add exit handler for aspm_link_residency test. (Riana)
> > > > >    - Remove unused and unnecessary variables.
> > > > > 
> > > > > Signed-off-by: Karthik Poosa<karthik.poosa@intel.com>
> > > > > Reviewed-by: Badal Nilawar<badal.nilawar@intel.com>
> > > > > ---
> > > > >    tests/intel/xe_pm_residency.c | 196 ++++++++++++++++++++++++++++++++++
> > > > >    1 file changed, 196 insertions(+)
> > > > > 
> > > > > diff --git a/tests/intel/xe_pm_residency.c b/tests/intel/xe_pm_residency.c
> > > > > index d33a87b13..2d965ef7d 100644
> > > > > --- a/tests/intel/xe_pm_residency.c
> > > > > +++ b/tests/intel/xe_pm_residency.c
> > > > > @@ -31,12 +31,36 @@
> > > > >    const double tolerance = 0.1;
> > > > >    int fw_handle = -1;
> > > > > +int fd_pci_usp;
> > > > int fd_pci_usp = -1;
> > > > 
> > > > > +bool rpm_disabled;
> > > > > +bool link_states_saved;
> > > > >    enum test_type {
> > > > >    	TEST_S2IDLE,
> > > > >    	TEST_IDLE,
> > > > >    };
> > > > > +enum link_state_index {
> > > > > +	LINK_STATE_ASPM,
> > > > > +	LINK_STATE_ASPM_L1_1,
> > > > > +	LINK_STATE_ASPM_L1_2,
> > > > > +	LINK_STATE_PCIPM_L1_1,
> > > > > +	LINK_STATE_PCIPM_L1_2,
> > > > > +	MAX_LINK_STATES,
> > > > > +};
> > > > > +
> > > > > +struct link_state_info {
> > > > > +	const char *filename;
> > > > > +	char state;
> > > > > +	const char *parse_str;
> > > > > +} link_state_sysfs[] = {
> > > > > +	{ "l1_aspm", 0, "PCIE LINK L1 RESIDENCY : "},
> > > > > +	{ "l1_1_aspm", 0, "NULL"},
> > > > > +	{ "l1_2_aspm", 0, "PCIE LINK L1.2 RESIDENCY : "},
> > > > > +	{ "l1_1_pcipm", 0, NULL},
> > > > > +	{ "l1_2_pcipm", 0, NULL}, +}; + /** * SUBTEST:
> > > > > gt-c6-on-idle * Description: Validate GT C6 state on idle @@
> > > > > -64,6 +88,10 @@ enum test_type { * SUBTEST: cpg-gt-toggle *
> > > > > Description: Toggle GT coarse power gating states by
> > > > > acquiring/releasing * forcewake. + * + * SUBTEST:
> > > > > aspm_link_residency + * Description: Check for PCIe ASPM
> > > > > (Active State Power Management) link states + * entry while
> > > > > device is in D0. */ IGT_TEST_DESCRIPTION("Tests for gtidle
> > > > > properties");
> > > > > @@ -255,6 +283,21 @@ static void idle_residency_on_exec(int fd, struct drm_xe_engine_class_instance *
> > > > >    	munmap(done, 4096);
> > > > >    }
> > > > > +static void do_spin(int fd, struct drm_xe_engine_class_instance *eci)
> > > > > +{
> > > > > +	igt_spin_t *spin;
> > > > > +	uint64_t vm, ahnd;
> > > > > +
> > > > > +	igt_info("Running spinner on %s:%d\n",
> > > > > +		 xe_engine_class_string(eci->engine_class), eci->engine_instance);
> > > > > +	vm = xe_vm_create(fd, 0, 0);
> > > > > +	intel_allocator_init();
> > > > > +	ahnd = intel_allocator_open(fd, 0, INTEL_ALLOCATOR_RELOC);
> > > > > +	spin = igt_spin_new(fd, .ahnd = ahnd, .vm = vm, .hwe = eci);
> > > > > +	igt_measured_usleep(USEC_PER_SEC);
> > > > > +	igt_spin_free(fd, spin);
> > > > > +}
> > > > > +
> > > > >    static void measure_power(struct igt_power *gpu, double *power)
> > > > >    {
> > > > >    	struct power_sample power_sample[2];
> > > > > @@ -370,6 +413,143 @@ static void cpg_gt_toggle(int fd)
> > > > >    		powergate_status(fd, gt, "down");
> > > > >    }
> > > > > +static uint64_t get_link_state_residency(int fd_xe, const char *parse_str)
> > > > > +{
> > > > > +	int fd_debugfs_dir = 0;
> > > > > +	int ret = 0;
> > > > > +	char *ptr = NULL;
> > > > > +	char buf[1024] = {0};
> > > > > +	uint64_t residency = 0;
> > > > > +
> > > > > +	fd_debugfs_dir = igt_debugfs_dir(fd_xe);
> > > > > +	igt_assert(fd_debugfs_dir >= 0);
> > > > > +	ret = igt_debugfs_simple_read(fd_debugfs_dir, "dgfx_pcie_link_residencies", buf,
> > > > > +				      sizeof(buf));
> > > > > +	igt_assert_f(ret >= 0, "Cannot read residency file dgfx_pcie_link_residencies, ret %d\n",
> > > > > +		     ret);
> > > > > +
> > > > > +	ptr = strstr(buf, parse_str);
> > > > > +	igt_assert_f(ptr, "Cannot find residency string %s\n", parse_str);
> > > > > +	ret = sscanf(ptr + strlen(parse_str), "%lu", &residency);
> > > > > +	igt_assert_f(ret > 0, "Couldn't read residency value, ret %d", ret);
> > > > > +	igt_info("Link residency %"PRIu64"\n", residency);
> > > > > +	close(fd_debugfs_dir);
> > > > > +
> > > > > +	return residency;
> > > > > +}
> > > > > +
> > > > > +static void save_and_disable_link_states(void)
> > > > > +{
> > > > > +	int i = 0;
> > > > > +	int ret = 0;
> > > > > +	char path[256] = {0};
> > > > > +
> > > > > +	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
> > > > > +		sprintf(path, "%s", link_state_sysfs[i].filename);
> > > > > +		if (!igt_sysfs_has_attr(fd_pci_usp, path))
> > > > > +			continue;
> > > > > +		ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[i].state);
> > > > > +		igt_assert_lt(0, ret);
> > > > > +		igt_debug("saved %s = %c\n", link_state_sysfs[i].filename,
> > > > > +			  link_state_sysfs[i].state);
> > > > > +		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '0');
> > > > Disable should be done in separate function, so there should be two:
> > > > 
> > > > static void save_link_states(void)
> > > > static void disable_link_states(void)
> > > any reason for this Kamil, it will be unnecessary extra function.
> > Because you mix here reading and setting. imho there could be
> > a problem if setting first few succeeds but in middle fails.
> ok

Hmm, other way could be to read and set, and if any error
occurs break loop, do rollback, and only after that make
an assert.

> > 
> > 
> > > > > +		igt_assert_lt(0, ret);
> > > > > +	}
> > > > > +	link_states_saved = true;
> > > > > +}
> > > > > +
> > > > > +static void restore_link_states(void)
> > > > > +{
> > > > > +	int i = 0;
> > > > > +	int ret = 0;
> > > > > +	char path[256] = {0};
> > > > > +
> > > > > +	if (link_states_saved && fd_pci_usp >= 0) {
> > > > > +		/* Restore saved states of L1 sysfs entries. */
> > > > > +		for (i = 0 ; i < MAX_LINK_STATES ; i++) {
> > > > > +			sprintf(path, "%s", link_state_sysfs[i].filename);
> > > > > +			if (!igt_sysfs_has_attr(fd_pci_usp, path))
> > > > > +				continue;
> > > > > +			ret = igt_sysfs_printf(fd_pci_usp, path, "%c", link_state_sysfs[i].state);
> > > > > +			igt_assert_lt(0, ret);
> > > > > +			igt_debug("restored %s to %c\n", link_state_sysfs[i].filename,
> > > > > +				  link_state_sysfs[i].state);
> > > > > +		}
> > > > > +		link_states_saved = false;
> > > > > +	}
> > > > > +}
> > > > > +
> > > > > +static void test_aspm_link_residency(int fd_xe, enum link_state_index aspm_link_state)
> > > > > +{
> > > > > +	struct pci_device *pci_dev;
> > > > > +	char name[PATH_MAX];
> > > > > +	int ret = 0;
> > > > > +	uint64_t residency_pre = 0, residency_post = 0;
> > > > > +
> > > > > +	igt_assert(aspm_link_state <= LINK_STATE_ASPM_L1_2);
> > > > > +
> > > > > +	/* Get upstream port pci_dev */
> > > > > +	pci_dev = igt_device_get_pci_upstream_port(fd_xe);
> > > > > +	igt_assert_f(pci_dev, "Couldn't get pci device of upstream port\n");
> > > > > +	igt_debug("Upstream port PCI device: %04x:%02x:%02x.%01x\n", pci_dev->domain,
> > > > > +		  pci_dev->bus, pci_dev->dev, pci_dev->func);
> > > > > +
> > > > > +	snprintf(name, sizeof(name), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/link",
> > > > > +		 pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func);
> > > > > +	fd_pci_usp = open(name, O_DIRECTORY);
> > > > > +	igt_assert_f((fd_pci_usp >= 0), "Can't open link directory upstream port %s, ret %d\n",
> > > > > +		     name, fd_pci_usp);
> > > > > +
> > > > > +	/* Disable runtime PM as link ASPM entry happens during device is in D0 only. */
> > > > > +	igt_assert(igt_setup_runtime_pm(fd_xe));
> > > > > +	igt_disable_runtime_pm();
> > > > > +	rpm_disabled = true;
> > > > > +
> > > > > +	/* Check if ASPM sysfs is present. */
> > > > > +	igt_require_f(igt_sysfs_has_attr(fd_pci_usp, link_state_sysfs[aspm_link_state].filename),
> > > > > +		      "%s is not present\n", link_state_sysfs[aspm_link_state].filename);
> > > > > +	ret = igt_sysfs_scanf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c",
> > > > > +			      &link_state_sysfs[aspm_link_state].state);
> > > > > +	igt_assert_f((ret > 0), "Couldn't read residency for %s",
> > > > > +		     link_state_sysfs[aspm_link_state].filename);
> > > > > +
> > > > > +	/* Save current state of all available link sysfs entries and disable all link states. */
> > > > > +	save_and_disable_link_states();
> > > > > +
> > > > > +	/* Enable only the ASPM link state needed for test. */
> > > > > +	igt_debug("Enabling %s\n", link_state_sysfs[aspm_link_state].filename);
> > > > > +	ret = igt_sysfs_printf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c", '1');
> > > > > +
> > > > > +	/* Read link state residencies before and after idle wait time. */
> > > > > +	residency_pre = get_link_state_residency(fd_xe,
> > > > > +						 link_state_sysfs[aspm_link_state].parse_str);
> > > > > +	igt_info("Waiting for link to enter idle....\n");
> > > > > +	sleep(SLEEP_DURATION);
> > > > > +	residency_post = get_link_state_residency(fd_xe,
> > > > > +						  link_state_sysfs[aspm_link_state].parse_str);
> > > > > +
> > > > > +	restore_link_states();
> > > > > +	igt_restore_runtime_pm();
> > > > > +	rpm_disabled = false;
> > > > > +	close(fd_pci_usp);
> > > > > +	close(fd_xe);
> > > > > +
> > > > > +	igt_assert_f(residency_post > residency_pre,
> > > > > +		     "ASPM entry failed, pre %"PRIu64", post %"PRIu64"\n", residency_pre,
> > > > > +		     residency_post);
> > > > > +}
> > > > > +
> > > > > +static void aspm_residency_exit_handler(int sig)
> > > > > +{
> > > > > +	restore_link_states();
> > > > > +	if (rpm_disabled) {
> > > > > +		igt_restore_runtime_pm();
> > > > > +		rpm_disabled = false;
> > > > > +	}
> > > > > +	if (fd_pci_usp)
> > > > 	if (fd_pci_usp != -1)
> > > > 
> > > > > +		close(fd_pci_usp);
> > > > Add:
> > > > 	fd_pci_usp = -1;
> > > > 
> > > > > +}
> > > > > +
> > > > >    int igt_main()
> > > > >    {
> > > > >    	uint32_t d3cold_allowed;
> > > > > @@ -444,6 +624,22 @@ int igt_main()
> > > > >    		cpg_gt_toggle(fd);
> > > > >    	}
> > > > > +	igt_describe("ASPM Link residency validation");
> > > > > +	igt_subtest_with_dynamic("aspm_link_residency") {
> > > > This should be igt_subtest():
> > > > 
> > > > 	igt_subtest("aspm_link_residency") {
> > > > 
> > > > > +		igt_require(xe_has_vram(fd));
> > > > > +		xe_for_each_gt(fd, gt) {
> > > > > +			xe_for_each_engine(fd, hwe) {
> > > > > +				if (gt == hwe->gt_id && !hwe->engine_instance) {
> > > > > +					igt_dynamic_f("gt%u-engine-%s", gt,
> > > > > +						      xe_engine_class_string(hwe->engine_class))
> > > > What are you testing here? If you need to start and stop spinner
> > > > please describe here why. If you really need it, it should be:
> > > we want to run a basic workload before testing ASPM entry.
> > > 
> > > So we are using spinner as workload here.
> > ok, but why do you need any workload? It should also work without it?
> 
> Yes, it works even workload also.
> 
> This was suggested by Anshuman,
> 
> I believe this is intended to wake up the GPU and ensure the engines execute
> some workload before entering ASPM.
> 

So please add a comment before xe_for_each_gt()
why it is needed.

Regards,
Kamil 

> > 
> > > > 				if (gt == hwe->gt_id && !hwe->engine_instance)
> > > > 						do_spin(fd, hwe);
> > > > 
> > > > > +						do_spin(fd, hwe);
> > > > > +				}
> > > > > +			}
> > > > > +		}
> > > > Add newline.
> > > > 
> > > > > +		igt_install_exit_handler(aspm_residency_exit_handler);
> > > > > +		test_aspm_link_residency(fd, LINK_STATE_ASPM);
> > > > Btw any igt_assert outside of dynamic sub-subtest here will result
> > > > in SIGABORT, not a proper test fail.
> > > > 
> > > > Add cleanup here:
> > > > 		aspm_residency_exit_handler(0);
> > > but installing exit handler already does this !
> > It could become a problem when someone adds new test after this one.
> > 
> > Regards,
> > Kamil
> > 
> > > > > +	}
> > > > > +
> > > > >    	igt_fixture() {
> > > > >    		close(fd);
> > > > >    	}
> > > > > -- 
> > > > > 2.25.1
> > > > > 

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

* Re: [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency
  2026-01-23 14:06           ` Kamil Konieczny
@ 2026-02-04  5:46             ` Poosa, Karthik
  0 siblings, 0 replies; 15+ messages in thread
From: Poosa, Karthik @ 2026-02-04  5:46 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, anshuman.gupta, badal.nilawar,
	riana.tauro, rodrigo.vivi

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


On 23-01-2026 19:36, Kamil Konieczny wrote:
> Hi Poosa,,
> On 2026-01-23 at 18:05:01 +0530, Poosa, Karthik wrote:
>> On 23-01-2026 17:37, Kamil Konieczny wrote:
>>> Hi,
>>> On 2026-01-23 at 16:04:11 +0530, Poosa, Karthik wrote:
>>>> On 22-01-2026 20:30, Kamil Konieczny wrote:
>>>>> Hi Karthik,
>>>>> On 2026-01-21 at 20:27:47 +0530, Karthik Poosa wrote:
>>>>>> Add subtest aspm_link_residency to verify PCIe ASPM.
>>>>>> Active State Power Management (ASPM) is a power management mechanism
>>>>>> for PCI Express (PCIe) devices that aims to save power while the devices
>>>>>> are in a fully active state.
>>>>>> This test uses link state counters from the debugfs
>>>>>> dgfx_pcie_link_residencies to verify this.
>>>>>>
>>>>>> v2:
>>>>>>     - Add dedicated function to get pcie endpoint upstream port. (Badal)
>>>>>>     - Read residency counter as unsigned long long int instead of
>>>>>>       unsigned long int.
>>>>>>     - Print residency counter before sleep also.
>>>>>>     - Don't assert if sysfs not corresponding to aspm_link_state
>>>>>>       is not present. (Badal)
>>>>>>     - Run workload before validation of aspm link residency. (Anshuman)
>>>>>>
>>>>>> v3:
>>>>>>     - Move igt_device_get_pci_usp to separate patch. (Kamil)
>>>>>>     - Move reading of residency to separate function. (Badal)
>>>>>>
>>>>>> v4:
>>>>>>     - Add description about PCIe ASPM in commit message and code. (Kamil)
>>>>>>     - Add a NULL check for the return value of igt_device_get_pci_usp().
>>>>>>     - Resolve compilation warnings about using variable as format string
>>>>>>       to sscanf.
>>>>>>
>>>>>> v5:
>>>>>>     - Use igt_device_get_pci_upstream_port() which is the renamed version
>>>>>>       of igt_device_get_pci_usp().
>>>>>>
>>>>>> v6:
>>>>>>     - Refactor and enhance readability. (Badal)
>>>>>>     - Move save and restore of link states to separate functions. (Badal)
>>>>>>
>>>>>> v7:
>>>>>>     - Skip aspm_link_residency on integrated platforms as it not supported.
>>>>>>
>>>>>> v8:
>>>>>>     - Address below review comments from Riana.
>>>>>>     - Use igt_sysfs_has_attr() instead of faccess().
>>>>>>     - Remove unnecessary spaces, debug logs, if checks.
>>>>>>     - Wrap line length to 100 chars.
>>>>>>     - Use spinner instead of mmap for workload.
>>>>>>
>>>>>> v9:
>>>>>>     - Address review comments from Kamil.
>>>>>>     - Simplify couple of igt_asserts.
>>>>>>     - Remove extra spaces.
>>>>>>
>>>>>> v10:
>>>>>>     - Add exit handler for aspm_link_residency test. (Riana)
>>>>>>     - Remove unused and unnecessary variables.
>>>>>>
>>>>>> Signed-off-by: Karthik Poosa<karthik.poosa@intel.com>
>>>>>> Reviewed-by: Badal Nilawar<badal.nilawar@intel.com>
>>>>>> ---
>>>>>>     tests/intel/xe_pm_residency.c | 196 ++++++++++++++++++++++++++++++++++
>>>>>>     1 file changed, 196 insertions(+)
>>>>>>
>>>>>> diff --git a/tests/intel/xe_pm_residency.c b/tests/intel/xe_pm_residency.c
>>>>>> index d33a87b13..2d965ef7d 100644
>>>>>> --- a/tests/intel/xe_pm_residency.c
>>>>>> +++ b/tests/intel/xe_pm_residency.c
>>>>>> @@ -31,12 +31,36 @@
>>>>>>     const double tolerance = 0.1;
>>>>>>     int fw_handle = -1;
>>>>>> +int fd_pci_usp;
>>>>> int fd_pci_usp = -1;
>>>>>
>>>>>> +bool rpm_disabled;
>>>>>> +bool link_states_saved;
>>>>>>     enum test_type {
>>>>>>     	TEST_S2IDLE,
>>>>>>     	TEST_IDLE,
>>>>>>     };
>>>>>> +enum link_state_index {
>>>>>> +	LINK_STATE_ASPM,
>>>>>> +	LINK_STATE_ASPM_L1_1,
>>>>>> +	LINK_STATE_ASPM_L1_2,
>>>>>> +	LINK_STATE_PCIPM_L1_1,
>>>>>> +	LINK_STATE_PCIPM_L1_2,
>>>>>> +	MAX_LINK_STATES,
>>>>>> +};
>>>>>> +
>>>>>> +struct link_state_info {
>>>>>> +	const char *filename;
>>>>>> +	char state;
>>>>>> +	const char *parse_str;
>>>>>> +} link_state_sysfs[] = {
>>>>>> +	{ "l1_aspm", 0, "PCIE LINK L1 RESIDENCY : "},
>>>>>> +	{ "l1_1_aspm", 0, "NULL"},
>>>>>> +	{ "l1_2_aspm", 0, "PCIE LINK L1.2 RESIDENCY : "},
>>>>>> +	{ "l1_1_pcipm", 0, NULL},
>>>>>> +	{ "l1_2_pcipm", 0, NULL}, +}; + /** * SUBTEST: gt-c6-on-idle * Description: 
>>>>>> Validate GT C6 state on idle @@ -64,6 +88,10 @@ enum test_type { 
>>>>>> * SUBTEST: cpg-gt-toggle * Description: Toggle GT coarse power 
>>>>>> gating states by acquiring/releasing * forcewake. + * + * 
>>>>>> SUBTEST: aspm_link_residency + * Description: Check for PCIe ASPM 
>>>>>> (Active State Power Management) link states + * entry while 
>>>>>> device is in D0. */ IGT_TEST_DESCRIPTION("Tests for gtidle
>>>>>> properties");
>>>>>> @@ -255,6 +283,21 @@ static void idle_residency_on_exec(int fd, struct drm_xe_engine_class_instance *
>>>>>>     	munmap(done, 4096);
>>>>>>     }
>>>>>> +static void do_spin(int fd, struct drm_xe_engine_class_instance *eci)
>>>>>> +{
>>>>>> +	igt_spin_t *spin;
>>>>>> +	uint64_t vm, ahnd;
>>>>>> +
>>>>>> +	igt_info("Running spinner on %s:%d\n",
>>>>>> +		 xe_engine_class_string(eci->engine_class), eci->engine_instance);
>>>>>> +	vm = xe_vm_create(fd, 0, 0);
>>>>>> +	intel_allocator_init();
>>>>>> +	ahnd = intel_allocator_open(fd, 0, INTEL_ALLOCATOR_RELOC);
>>>>>> +	spin = igt_spin_new(fd, .ahnd = ahnd, .vm = vm, .hwe = eci);
>>>>>> +	igt_measured_usleep(USEC_PER_SEC);
>>>>>> +	igt_spin_free(fd, spin);
>>>>>> +}
>>>>>> +
>>>>>>     static void measure_power(struct igt_power *gpu, double *power)
>>>>>>     {
>>>>>>     	struct power_sample power_sample[2];
>>>>>> @@ -370,6 +413,143 @@ static void cpg_gt_toggle(int fd)
>>>>>>     		powergate_status(fd, gt, "down");
>>>>>>     }
>>>>>> +static uint64_t get_link_state_residency(int fd_xe, const char *parse_str)
>>>>>> +{
>>>>>> +	int fd_debugfs_dir = 0;
>>>>>> +	int ret = 0;
>>>>>> +	char *ptr = NULL;
>>>>>> +	char buf[1024] = {0};
>>>>>> +	uint64_t residency = 0;
>>>>>> +
>>>>>> +	fd_debugfs_dir = igt_debugfs_dir(fd_xe);
>>>>>> +	igt_assert(fd_debugfs_dir >= 0);
>>>>>> +	ret = igt_debugfs_simple_read(fd_debugfs_dir, "dgfx_pcie_link_residencies", buf,
>>>>>> +				      sizeof(buf));
>>>>>> +	igt_assert_f(ret >= 0, "Cannot read residency file dgfx_pcie_link_residencies, ret %d\n",
>>>>>> +		     ret);
>>>>>> +
>>>>>> +	ptr = strstr(buf, parse_str);
>>>>>> +	igt_assert_f(ptr, "Cannot find residency string %s\n", parse_str);
>>>>>> +	ret = sscanf(ptr + strlen(parse_str), "%lu", &residency);
>>>>>> +	igt_assert_f(ret > 0, "Couldn't read residency value, ret %d", ret);
>>>>>> +	igt_info("Link residency %"PRIu64"\n", residency);
>>>>>> +	close(fd_debugfs_dir);
>>>>>> +
>>>>>> +	return residency;
>>>>>> +}
>>>>>> +
>>>>>> +static void save_and_disable_link_states(void)
>>>>>> +{
>>>>>> +	int i = 0;
>>>>>> +	int ret = 0;
>>>>>> +	char path[256] = {0};
>>>>>> +
>>>>>> +	for (i = 0 ; i < MAX_LINK_STATES ; i++) {
>>>>>> +		sprintf(path, "%s", link_state_sysfs[i].filename);
>>>>>> +		if (!igt_sysfs_has_attr(fd_pci_usp, path))
>>>>>> +			continue;
>>>>>> +		ret = igt_sysfs_scanf(fd_pci_usp, path, "%c", &link_state_sysfs[i].state);
>>>>>> +		igt_assert_lt(0, ret);
>>>>>> +		igt_debug("saved %s = %c\n", link_state_sysfs[i].filename,
>>>>>> +			  link_state_sysfs[i].state);
>>>>>> +		ret = igt_sysfs_printf(fd_pci_usp, path, "%c", '0');
>>>>> Disable should be done in separate function, so there should be two:
>>>>>
>>>>> static void save_link_states(void)
>>>>> static void disable_link_states(void)
>>>> any reason for this Kamil, it will be unnecessary extra function.
>>> Because you mix here reading and setting. imho there could be
>>> a problem if setting first few succeeds but in middle fails.
>> ok
> Hmm, other way could be to read and set, and if any error
> occurs break loop, do rollback, and only after that make
> an assert.
okay
>
>>>
>>>>>> +		igt_assert_lt(0, ret);
>>>>>> +	}
>>>>>> +	link_states_saved = true;
>>>>>> +}
>>>>>> +
>>>>>> +static void restore_link_states(void)
>>>>>> +{
>>>>>> +	int i = 0;
>>>>>> +	int ret = 0;
>>>>>> +	char path[256] = {0};
>>>>>> +
>>>>>> +	if (link_states_saved && fd_pci_usp >= 0) {
>>>>>> +		/* Restore saved states of L1 sysfs entries. */
>>>>>> +		for (i = 0 ; i < MAX_LINK_STATES ; i++) {
>>>>>> +			sprintf(path, "%s", link_state_sysfs[i].filename);
>>>>>> +			if (!igt_sysfs_has_attr(fd_pci_usp, path))
>>>>>> +				continue;
>>>>>> +			ret = igt_sysfs_printf(fd_pci_usp, path, "%c", link_state_sysfs[i].state);
>>>>>> +			igt_assert_lt(0, ret);
>>>>>> +			igt_debug("restored %s to %c\n", link_state_sysfs[i].filename,
>>>>>> +				  link_state_sysfs[i].state);
>>>>>> +		}
>>>>>> +		link_states_saved = false;
>>>>>> +	}
>>>>>> +}
>>>>>> +
>>>>>> +static void test_aspm_link_residency(int fd_xe, enum link_state_index aspm_link_state)
>>>>>> +{
>>>>>> +	struct pci_device *pci_dev;
>>>>>> +	char name[PATH_MAX];
>>>>>> +	int ret = 0;
>>>>>> +	uint64_t residency_pre = 0, residency_post = 0;
>>>>>> +
>>>>>> +	igt_assert(aspm_link_state <= LINK_STATE_ASPM_L1_2);
>>>>>> +
>>>>>> +	/* Get upstream port pci_dev */
>>>>>> +	pci_dev = igt_device_get_pci_upstream_port(fd_xe);
>>>>>> +	igt_assert_f(pci_dev, "Couldn't get pci device of upstream port\n");
>>>>>> +	igt_debug("Upstream port PCI device: %04x:%02x:%02x.%01x\n", pci_dev->domain,
>>>>>> +		  pci_dev->bus, pci_dev->dev, pci_dev->func);
>>>>>> +
>>>>>> +	snprintf(name, sizeof(name), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/link",
>>>>>> +		 pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func);
>>>>>> +	fd_pci_usp = open(name, O_DIRECTORY);
>>>>>> +	igt_assert_f((fd_pci_usp >= 0), "Can't open link directory upstream port %s, ret %d\n",
>>>>>> +		     name, fd_pci_usp);
>>>>>> +
>>>>>> +	/* Disable runtime PM as link ASPM entry happens during device is in D0 only. */
>>>>>> +	igt_assert(igt_setup_runtime_pm(fd_xe));
>>>>>> +	igt_disable_runtime_pm();
>>>>>> +	rpm_disabled = true;
>>>>>> +
>>>>>> +	/* Check if ASPM sysfs is present. */
>>>>>> +	igt_require_f(igt_sysfs_has_attr(fd_pci_usp, link_state_sysfs[aspm_link_state].filename),
>>>>>> +		      "%s is not present\n", link_state_sysfs[aspm_link_state].filename);
>>>>>> +	ret = igt_sysfs_scanf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c",
>>>>>> +			      &link_state_sysfs[aspm_link_state].state);
>>>>>> +	igt_assert_f((ret > 0), "Couldn't read residency for %s",
>>>>>> +		     link_state_sysfs[aspm_link_state].filename);
>>>>>> +
>>>>>> +	/* Save current state of all available link sysfs entries and disable all link states. */
>>>>>> +	save_and_disable_link_states();
>>>>>> +
>>>>>> +	/* Enable only the ASPM link state needed for test. */
>>>>>> +	igt_debug("Enabling %s\n", link_state_sysfs[aspm_link_state].filename);
>>>>>> +	ret = igt_sysfs_printf(fd_pci_usp, link_state_sysfs[aspm_link_state].filename, "%c", '1');
>>>>>> +
>>>>>> +	/* Read link state residencies before and after idle wait time. */
>>>>>> +	residency_pre = get_link_state_residency(fd_xe,
>>>>>> +						 link_state_sysfs[aspm_link_state].parse_str);
>>>>>> +	igt_info("Waiting for link to enter idle....\n");
>>>>>> +	sleep(SLEEP_DURATION);
>>>>>> +	residency_post = get_link_state_residency(fd_xe,
>>>>>> +						  link_state_sysfs[aspm_link_state].parse_str);
>>>>>> +
>>>>>> +	restore_link_states();
>>>>>> +	igt_restore_runtime_pm();
>>>>>> +	rpm_disabled = false;
>>>>>> +	close(fd_pci_usp);
>>>>>> +	close(fd_xe);
>>>>>> +
>>>>>> +	igt_assert_f(residency_post > residency_pre,
>>>>>> +		     "ASPM entry failed, pre %"PRIu64", post %"PRIu64"\n", residency_pre,
>>>>>> +		     residency_post);
>>>>>> +}
>>>>>> +
>>>>>> +static void aspm_residency_exit_handler(int sig)
>>>>>> +{
>>>>>> +	restore_link_states();
>>>>>> +	if (rpm_disabled) {
>>>>>> +		igt_restore_runtime_pm();
>>>>>> +		rpm_disabled = false;
>>>>>> +	}
>>>>>> +	if (fd_pci_usp)
>>>>> 	if (fd_pci_usp != -1)
>>>>>
>>>>>> +		close(fd_pci_usp);
>>>>> Add:
>>>>> 	fd_pci_usp = -1;
>>>>>
>>>>>> +}
>>>>>> +
>>>>>>     int igt_main()
>>>>>>     {
>>>>>>     	uint32_t d3cold_allowed;
>>>>>> @@ -444,6 +624,22 @@ int igt_main()
>>>>>>     		cpg_gt_toggle(fd);
>>>>>>     	}
>>>>>> +	igt_describe("ASPM Link residency validation");
>>>>>> +	igt_subtest_with_dynamic("aspm_link_residency") {
>>>>> This should be igt_subtest():
>>>>>
>>>>> 	igt_subtest("aspm_link_residency") {
>>>>>
>>>>>> +		igt_require(xe_has_vram(fd));
>>>>>> +		xe_for_each_gt(fd, gt) {
>>>>>> +			xe_for_each_engine(fd, hwe) {
>>>>>> +				if (gt == hwe->gt_id && !hwe->engine_instance) {
>>>>>> +					igt_dynamic_f("gt%u-engine-%s", gt,
>>>>>> +						      xe_engine_class_string(hwe->engine_class))
>>>>> What are you testing here? If you need to start and stop spinner
>>>>> please describe here why. If you really need it, it should be:
>>>> we want to run a basic workload before testing ASPM entry.
>>>>
>>>> So we are using spinner as workload here.
>>> ok, but why do you need any workload? It should also work without it?
>> Yes, it works even workload also.
>>
>> This was suggested by Anshuman,
>>
>> I believe this is intended to wake up the GPU and ensure the engines execute
>> some workload before entering ASPM.
>>
> So please add a comment before xe_for_each_gt()
> why it is needed.
okay
>
> Regards,
> Kamil
>
>>>>> 				if (gt == hwe->gt_id && !hwe->engine_instance)
>>>>> 						do_spin(fd, hwe);
>>>>>
>>>>>> +						do_spin(fd, hwe);
>>>>>> +				}
>>>>>> +			}
>>>>>> +		}
>>>>> Add newline.
>>>>>
>>>>>> +		igt_install_exit_handler(aspm_residency_exit_handler);
>>>>>> +		test_aspm_link_residency(fd, LINK_STATE_ASPM);
>>>>> Btw any igt_assert outside of dynamic sub-subtest here will result
>>>>> in SIGABORT, not a proper test fail.
>>>>>
>>>>> Add cleanup here:
>>>>> 		aspm_residency_exit_handler(0);
>>>> but installing exit handler already does this !
>>> It could become a problem when someone adds new test after this one.

we don't need to call aspm_residency_exit_handler(), at the end of test 
in pass scenario,

as test_aspm_link_residency() at its end already does the cleanup same 
as aspm_residency_exit_handler()

>>>
>>> Regards,
>>> Kamil
>>>
>>>>>> +	}
>>>>>> +
>>>>>>     	igt_fixture() {
>>>>>>     		close(fd);
>>>>>>     	}
>>>>>> -- 
>>>>>> 2.25.1
>>>>>>

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

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

end of thread, other threads:[~2026-02-04  5:47 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-06 13:51 [PATCH i-g-t v10 0/2] tests/intel/xe_pm_residency: Add ASPM Link residency test Karthik Poosa
2026-01-06 13:51 ` [PATCH i-g-t v10 1/2] lib/igt_device: Add API to get pci device upstream port Karthik Poosa
2026-01-06 13:51 ` [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency Karthik Poosa
2026-01-07  6:24   ` Riana Tauro
2026-01-06 14:17 ` ✓ Xe.CI.BAT: success for tests/intel/xe_pm_residency: Add ASPM Link residency test Patchwork
2026-01-06 14:42 ` ✓ i915.CI.BAT: " Patchwork
2026-01-06 16:26 ` ✗ Xe.CI.Full: failure " Patchwork
2026-01-06 19:35 ` ✓ i915.CI.Full: success " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2026-01-21 14:57 [PATCH i-g-t v10 0/2] " Karthik Poosa
2026-01-21 14:57 ` [PATCH i-g-t v10 2/2] tests/intel/xe_pm_residency: Add subtest for ASPM Link state residency Karthik Poosa
2026-01-22 15:00   ` Kamil Konieczny
2026-01-23 10:34     ` Poosa, Karthik
2026-01-23 12:07       ` Kamil Konieczny
2026-01-23 12:35         ` Poosa, Karthik
2026-01-23 14:06           ` Kamil Konieczny
2026-02-04  5:46             ` Poosa, Karthik

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