public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement
@ 2026-02-04 16:32 Marcin Bernatowicz
  2026-02-04 16:32 ` [PATCH v3 i-g-t 1/7] lib/igt_sriov_device: Add helper to get VF PCI slot address Marcin Bernatowicz
                   ` (10 more replies)
  0 siblings, 11 replies; 23+ messages in thread
From: Marcin Bernatowicz @ 2026-02-04 16:32 UTC (permalink / raw)
  To: igt-dev; +Cc: Marcin Bernatowicz

This series improves PCI driver management infrastructure in IGT
and updates the xe_sriov_flr test to rely on xe-vfio-pci FLR semantics.

It introduces generic PCI driver helpers for driver_override handling
and explicit bind/unbind operations.
Adds a small SR-IOV utility to resolve VF PCI slot addresses.
Fixes igt_kmod PCI bind/unbind logic to correctly handle module vs driver
name mismatches (e.g. xe_vfio_pci vs xe-vfio-pci), marking those helpers
as deprecated in favor of driver-level APIs.

The xe_sriov_flr test is updated to attach VFs to xe-vfio-pci
before initiating FLR, allowing the test to wait for FLR completion
via the driver.

V3 -> V2:
- Add --wait-flr-ms option to configure post FLR sleep time
- Add --no-xe-vfio-pci option to skip xe-vfio-pci load
- Skip xe-vfio-pci load/bind when IOMMU is off

V2 -> V1:
- Add igt_pci_get_bound_driver_name() to query the currently bound PCI
  driver via the /sys/bus/pci/devices/<BDF>/driver symlink.
- Extend igt_pci_bind_driver_override() and
  igt_pci_unbind_driver_override() with a timeout_ms parameter so callers
  can wait for bind/unbind to actually complete, instead of relying on
  drivers_probe write success. drivers_probe only initiates an async
  reprobe, so a successful write does not mean bind/unbind succeeded -
  verify the effective bound driver with a timeout.
- Unbind VFs only if they were successfully bound.

Marcin Bernatowicz (7):
  lib/igt_sriov_device: Add helper to get VF PCI slot address
  lib/igt_pci: Add generic PCI driver override and bind/unbind helpers
  tests/intel/xe_sriov_flr: Attach VFs to xe-vfio-pci before initiating
    FLR
  lib/igt_kmod: Fix PCI bind/unbind for module/driver name mismatch
  tests/intel/xe_sriov_flr: Add --wait-flr-ms option
  tests/intel/xe_sriov_flr: Add --no-xe-vfio-pci option
  tests/intel/xe_sriov_flr: Skip xe-vfio-pci load/bind when IOMMU is off

 lib/igt_kmod.c             |  90 +++++-----
 lib/igt_pci.c              | 351 +++++++++++++++++++++++++++++++++++++
 lib/igt_pci.h              |  13 +-
 lib/igt_sriov_device.c     |  25 +++
 lib/igt_sriov_device.h     |   1 +
 tests/intel/xe_sriov_flr.c | 147 +++++++++++++++-
 6 files changed, 585 insertions(+), 42 deletions(-)

-- 
2.43.0


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

* [PATCH v3 i-g-t 1/7] lib/igt_sriov_device: Add helper to get VF PCI slot address
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
@ 2026-02-04 16:32 ` Marcin Bernatowicz
  2026-02-04 16:32 ` [PATCH v3 i-g-t 2/7] lib/igt_pci: Add generic PCI driver override and bind/unbind helpers Marcin Bernatowicz
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Marcin Bernatowicz @ 2026-02-04 16:32 UTC (permalink / raw)
  To: igt-dev
  Cc: Marcin Bernatowicz, Lukasz Laguna, Adam Miszczak,
	Jakub Kolakowski, Kamil Konieczny

Add igt_sriov_get_vf_pci_slot_alloc() to resolve the PCI slot address
of a VF by following the device/virtfnX symlink in the PF sysfs
directory, returning a newly allocated string or NULL on failure.

Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
Reviewed-by: Lukasz Laguna <lukasz.laguna@intel.com>
Cc: Adam Miszczak <adam.miszczak@linux.intel.com>
Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Cc: Lukasz Laguna <lukasz.laguna@intel.com>
---
 lib/igt_sriov_device.c | 25 +++++++++++++++++++++++++
 lib/igt_sriov_device.h |  1 +
 2 files changed, 26 insertions(+)

diff --git a/lib/igt_sriov_device.c b/lib/igt_sriov_device.c
index 788ffbfa1..1f4c3ac04 100644
--- a/lib/igt_sriov_device.c
+++ b/lib/igt_sriov_device.c
@@ -354,6 +354,31 @@ static char *__igt_sriov_get_vf_pci_slot_alloc(int pf_sysfs, unsigned int vf_num
 	return pci_slot_addr ? strdup(pci_slot_addr) : NULL;
 }
 
+/**
+ * igt_sriov_get_vf_pci_slot_alloc:
+ * @pf: PF device file descriptor
+ * @vf_num: VF number (1-based); 0 means PF
+ *
+ * Resolves the symlink under the PF sysfs directory (device/virtfnX) to obtain
+ * the PCI slot address of the VF (or PF if @vf_num is 0).
+ *
+ * Returns: newly allocated PCI slot address string (e.g. "0000:3b:00.4"),
+ * or NULL on failure. Caller must free().
+ */
+char *igt_sriov_get_vf_pci_slot_alloc(int pf, unsigned int vf_num)
+{
+	char *pci_slot;
+	int sysfs;
+
+	sysfs = igt_sysfs_open(pf);
+	igt_assert_fd(sysfs);
+
+	pci_slot = __igt_sriov_get_vf_pci_slot_alloc(sysfs, vf_num);
+	close(sysfs);
+
+	return pci_slot;
+}
+
 static bool __igt_sriov_bind_vf_drm_driver(int pf, unsigned int vf_num, bool bind)
 {
 	char *pci_slot;
diff --git a/lib/igt_sriov_device.h b/lib/igt_sriov_device.h
index 84d29b1bb..a417b30d8 100644
--- a/lib/igt_sriov_device.h
+++ b/lib/igt_sriov_device.h
@@ -28,6 +28,7 @@ void igt_sriov_enable_driver_autoprobe(int pf);
 void igt_sriov_disable_driver_autoprobe(int pf);
 int igt_sriov_open_vf_drm_device(int pf, unsigned int vf_num);
 bool igt_sriov_is_vf_drm_driver_probed(int pf, unsigned int vf_num);
+char *igt_sriov_get_vf_pci_slot_alloc(int pf, unsigned int vf_num);
 void igt_sriov_bind_vf_drm_driver(int pf, unsigned int vf_num);
 void igt_sriov_unbind_vf_drm_driver(int pf, unsigned int vf_num);
 int igt_sriov_device_sysfs_open(int pf, unsigned int vf_num);
-- 
2.43.0


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

* [PATCH v3 i-g-t 2/7] lib/igt_pci: Add generic PCI driver override and bind/unbind helpers
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
  2026-02-04 16:32 ` [PATCH v3 i-g-t 1/7] lib/igt_sriov_device: Add helper to get VF PCI slot address Marcin Bernatowicz
@ 2026-02-04 16:32 ` Marcin Bernatowicz
  2026-02-09 10:16   ` Laguna, Lukasz
  2026-02-04 16:32 ` [PATCH v3 i-g-t 3/7] tests/intel/xe_sriov_flr: Attach VFs to xe-vfio-pci before initiating FLR Marcin Bernatowicz
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: Marcin Bernatowicz @ 2026-02-04 16:32 UTC (permalink / raw)
  To: igt-dev
  Cc: Marcin Bernatowicz, Adam Miszczak, Jakub Kolakowski,
	Kamil Konieczny, Lukasz Laguna

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 11679 bytes --]

Add generic helpers for controlling PCI driver binding via sysfs.

The new APIs provide driver- and device-centric primitives for:
  - setting and clearing driver_override
  - triggering PCI driver reprobe
  - binding and unbinding devices to a specific PCI driver
  - query the currently bound PCI driver

Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
Cc: Adam Miszczak <adam.miszczak@linux.intel.com>
Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Cc: Lukasz Laguna <lukasz.laguna@intel.com>

---
v2:
- Add igt_pci_get_bound_driver_name() to query the currently bound PCI
  driver via the /sys/bus/pci/devices/<BDF>/driver symlink.
- Extend igt_pci_bind_driver_override() and igt_pci_unbind_driver_override()
  with a timeout_ms parameter so callers can wait for bind/unbind to
  actually complete, instead of relying on drivers_probe write success.

---
 lib/igt_pci.c | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_pci.h |  13 +-
 2 files changed, 363 insertions(+), 1 deletion(-)

diff --git a/lib/igt_pci.c b/lib/igt_pci.c
index 61aaf939d..80aaf07c5 100644
--- a/lib/igt_pci.c
+++ b/lib/igt_pci.c
@@ -3,9 +3,18 @@
  * Copyright © 2022 Intel Corporation
  */
 
+#include <ctype.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <string.h>
+#include <unistd.h>
 #include <pciaccess.h>
+#include "igt_aux.h"
 #include "igt_core.h"
 #include "igt_pci.h"
+#include "igt_sysfs.h"
 
 static int find_pci_cap_offset_at(struct pci_device *dev, enum pci_cap_id cap_id,
 				  int start_offset)
@@ -51,3 +60,345 @@ int find_pci_cap_offset(struct pci_device *dev, enum pci_cap_id cap_id)
 {
 	return find_pci_cap_offset_at(dev, cap_id, PCI_CAPS_START);
 }
+
+static int open_pci_driver_dir(const char *driver)
+{
+	char path[PATH_MAX];
+
+	snprintf(path, sizeof(path), "/sys/bus/pci/drivers/%s", driver);
+	return open(path, O_RDONLY | O_CLOEXEC);
+}
+
+/**
+ * igt_pci_device_unbind:
+ * @pci_slot: BDF like "0000:01:00.0"
+ *
+ * Unbind @pci_slot from its currently bound driver, if any.
+ * Returns 0 on success, or a negative errno-like value.
+ */
+int igt_pci_device_unbind(const char *pci_slot)
+{
+	char path[PATH_MAX];
+	int dirfd;
+	int ret;
+
+	snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/driver", pci_slot);
+	dirfd = open(path, O_RDONLY | O_CLOEXEC);
+	if (dirfd < 0)
+		return 0; /* already unbound */
+
+	ret = igt_sysfs_set(dirfd, "unbind", pci_slot) ? 0 : -errno;
+	close(dirfd);
+
+	return ret;
+}
+
+/**
+ * igt_pci_driver_bind:
+ * @driver: PCI driver name under /sys/bus/pci/drivers/<driver>
+ * @pci_slot: device to bind
+ *
+ * Bind @pci_slot to @driver. Driver must be present/loaded.
+ * Returns 0 on success, or a negative errno-like value.
+ */
+int igt_pci_driver_bind(const char *driver, const char *pci_slot)
+{
+	int dirfd, ret;
+
+	dirfd = open_pci_driver_dir(driver);
+	if (dirfd < 0)
+		return -errno;
+
+	ret = igt_sysfs_set(dirfd, "bind", pci_slot) ? 0 : -errno;
+	close(dirfd);
+
+	return ret;
+}
+
+/**
+ * igt_pci_driver_unbind:
+ * @driver: PCI driver name
+ * @pci_slot: device to unbind
+ *
+ * Unbind @pci_slot from @driver.
+ * Returns 0 on success, or a negative errno-like value.
+ */
+int igt_pci_driver_unbind(const char *driver, const char *pci_slot)
+{
+	int dirfd, ret;
+
+	dirfd = open_pci_driver_dir(driver);
+	if (dirfd < 0)
+		return -errno;
+
+	ret = igt_sysfs_set(dirfd, "unbind", pci_slot) ? 0 : -errno;
+	close(dirfd);
+
+	return ret;
+}
+
+/**
+ * igt_pci_driver_unbind_all:
+ * @driver: PCI driver name
+ *
+ * Unbind all devices currently bound to @driver.
+ * Returns 0 on success, or a negative errno-like value.
+ */
+int igt_pci_driver_unbind_all(const char *driver)
+{
+	char path[PATH_MAX];
+	DIR *dir;
+	struct dirent *de;
+	int driver_fd;
+
+	snprintf(path, sizeof(path), "/sys/bus/pci/drivers/%s", driver);
+	dir = opendir(path);
+	if (!dir)
+		return -errno;
+
+	driver_fd = dirfd(dir);
+
+	while ((de = readdir(dir))) {
+		bool ok;
+
+		/* BDF symlinks are like "0000:01:00.0" and start with digit */
+		if (de->d_type != DT_LNK || !isdigit(de->d_name[0]))
+			continue;
+
+		ok = igt_sysfs_set(driver_fd, "unbind", de->d_name);
+		if (!ok) {
+			int err = -errno;
+
+			closedir(dir);
+			return err;
+		}
+	}
+
+	closedir(dir);
+	return 0;
+}
+
+/**
+ * igt_pci_set_driver_override:
+ * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
+ * @driver: PCI driver name to force-bind (e.g. "xe-vfio-pci"), or
+ *          NULL / empty string to clear an existing override
+ *
+ * Set or clear the PCI driver_override for @pci_slot via sysfs.
+ *
+ * This does not trigger driver reprobe by itself. Call
+ * igt_pci_probe_drivers() afterwards to apply the override.
+ *
+ * Returns: 0 on success, negative errno on failure.
+ */
+int igt_pci_set_driver_override(const char *pci_slot, const char *driver)
+{
+	char devpath[PATH_MAX];
+	int dev;
+	bool ok;
+
+	snprintf(devpath, sizeof(devpath), "/sys/bus/pci/devices/%s", pci_slot);
+	dev = open(devpath, O_DIRECTORY | O_RDONLY);
+	if (dev < 0)
+		return -errno;
+
+	ok = igt_sysfs_set(dev, "driver_override", driver ? driver : "");
+	close(dev);
+
+	return ok ? 0 : -errno;
+}
+
+/**
+ * igt_pci_probe_drivers:
+ * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
+ *
+ * Trigger PCI driver reprobe for @pci_slot by writing to
+ * /sys/bus/pci/drivers_probe.
+ *
+ * This causes the kernel to attempt binding the device, honoring any
+ * driver_override previously set.
+ *
+ * Note: a successful write only means the reprobe request was accepted.
+ * It does not guarantee that a driver actually bound to the device.
+ *
+ * Returns: 0 on success, negative errno on failure.
+ */
+int igt_pci_probe_drivers(const char *pci_slot)
+{
+	int pci;
+	bool ok;
+
+	pci = open("/sys/bus/pci", O_DIRECTORY | O_RDONLY);
+	if (pci < 0)
+		return -errno;
+
+	ok = igt_sysfs_set(pci, "drivers_probe", pci_slot);
+	close(pci);
+
+	return ok ? 0 : -errno;
+}
+
+/**
+ * igt_pci_get_bound_driver_name:
+ * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
+ * @driver: destination buffer for the bound driver name
+ * @driver_len: size of @driver in bytes
+ *
+ * Read the currently bound PCI driver name for @pci_slot by inspecting the
+ * /sys/bus/pci/devices/<BDF>/driver symlink.
+ *
+ * Return values:
+ *  1: device is bound and @driver contains the driver name
+ *  0: device is unbound (no driver symlink)
+ * <0: negative errno-like value on error
+ */
+int igt_pci_get_bound_driver_name(const char *pci_slot, char *driver, size_t driver_len)
+{
+	char path[PATH_MAX];
+	char link[PATH_MAX];
+	const char *base;
+	ssize_t len;
+
+	if (driver && driver_len)
+		driver[0] = '\0';
+
+	snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/driver", pci_slot);
+	len = readlink(path, link, sizeof(link) - 1);
+	if (len < 0) {
+		if (errno == ENOENT)
+			return 0; /* unbound */
+
+		return -errno;
+	}
+
+	link[len] = '\0';
+	base = strrchr(link, '/');
+	base = base ? base + 1 : link;
+
+	if (driver && driver_len)
+		snprintf(driver, driver_len, "%s", base);
+
+	return 1;
+}
+
+/**
+ * igt_pci_bind_driver_override:
+ * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
+ * @driver: PCI driver name to bind (must not be NULL or empty)
+ * @timeout_ms: how long to wait for the device to become bound.
+ *              If 0, don't wait (best-effort immediate check only).
+ *
+ * Bind @pci_slot to @driver using the driver_override mechanism.
+ *
+ * This helper sets driver_override and immediately triggers driver
+ * reprobe so that the device is bound to the requested driver.
+ *
+ * Returns: 0 on success, negative errno-like value on failure.
+ * A reprobe request can be accepted by sysfs while the driver probe
+ * fails later; this helper verifies the device ended up bound.
+ *
+ * On bind failure, returns a negative error and the failure reason may
+ * also be logged to dmesg by the kernel driver.
+ */
+int igt_pci_bind_driver_override(const char *pci_slot, const char *driver,
+				 unsigned int timeout_ms)
+{
+	int ret;
+	char bound[64];
+	int bound_ret;
+	bool bound_ok;
+
+	if (!driver || !driver[0])
+		return -EINVAL;
+
+	ret = igt_pci_set_driver_override(pci_slot, driver);
+	if (ret)
+		return ret;
+
+	ret = igt_pci_probe_drivers(pci_slot);
+	if (ret)
+		return ret;
+
+	/*
+	 * Writing to drivers_probe only tells us the kernel accepted the request.
+	 * The actual driver probe may still fail (and only be reported via dmesg).
+	 * Verify that the device ended up bound to the requested driver.
+	 */
+	bound_ret = igt_pci_get_bound_driver_name(pci_slot, bound, sizeof(bound));
+	if (bound_ret < 0)
+		return bound_ret;
+
+	if (timeout_ms == 0) {
+		/*
+		 * No waiting requested. If the device is already bound, validate
+		 * it is bound to the expected driver; otherwise treat as
+		 * best-effort request-only success.
+		 */
+		if (bound_ret > 0 && strcmp(bound, driver))
+			return -EBUSY;
+
+		return 0;
+	}
+
+	bound_ok = igt_wait((bound_ret =
+			     igt_pci_get_bound_driver_name(pci_slot, bound, sizeof(bound))) != 0,
+			    timeout_ms, 1);
+	if (!bound_ok)
+		return -EIO;
+
+	if (bound_ret < 0)
+		return bound_ret;
+
+	if (strcmp(bound, driver))
+		return -EBUSY;
+
+	return 0;
+}
+
+/**
+ * igt_pci_unbind_driver_override:
+ * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
+ * @timeout_ms: how long to wait for the device to become unbound.
+ *              If 0, don't wait (best-effort immediate check only).
+ *
+ * Unbind @pci_slot from its currently bound driver (if any) and clear
+ * any driver_override setting.
+ *
+ * This is the inverse operation of igt_pci_bind_driver_override().
+ *
+ * Returns: 0 on success, negative errno on failure.
+ */
+int igt_pci_unbind_driver_override(const char *pci_slot, unsigned int timeout_ms)
+{
+	int ret;
+	int bound_ret;
+	char bound[64];
+	bool unbound_ok;
+
+	ret = igt_pci_device_unbind(pci_slot);
+	if (ret)
+		return ret;
+
+	ret = igt_pci_set_driver_override(pci_slot, "");
+	if (ret)
+		return ret;
+
+	bound_ret = igt_pci_get_bound_driver_name(pci_slot, bound, sizeof(bound));
+	if (bound_ret < 0)
+		return bound_ret;
+
+	if (timeout_ms == 0)
+		return 0;
+
+	/* Verify the device actually ends up unbound (driver symlink removed). */
+	unbound_ok = igt_wait((bound_ret =
+			       igt_pci_get_bound_driver_name(pci_slot, bound, sizeof(bound))) == 0,
+			      timeout_ms, 1);
+	if (!unbound_ok)
+		return -EBUSY;
+
+	if (bound_ret < 0)
+		return bound_ret;
+
+	return 0;
+}
diff --git a/lib/igt_pci.h b/lib/igt_pci.h
index 92b9cc392..a66eeebf2 100644
--- a/lib/igt_pci.h
+++ b/lib/igt_pci.h
@@ -6,8 +6,9 @@
 #ifndef __IGT_PCI_H__
 #define __IGT_PCI_H__
 
-#include <stdint.h>
 #include <endian.h>
+#include <stddef.h>
+#include <stdint.h>
 
 /* forward declaration */
 struct pci_device;
@@ -24,5 +25,15 @@ enum pci_cap_id {
 #define  PCI_SLOT_PWR_CTRL_PRESENT (1 << 1)
 
 int find_pci_cap_offset(struct pci_device *dev, enum pci_cap_id cap_id);
+int igt_pci_device_unbind(const char *pci_slot);
+int igt_pci_driver_bind(const char *driver, const char *pci_slot);
+int igt_pci_driver_unbind(const char *driver, const char *pci_slot);
+int igt_pci_driver_unbind_all(const char *driver);
+int igt_pci_set_driver_override(const char *pci_slot, const char *driver);
+int igt_pci_probe_drivers(const char *pci_slot);
+int igt_pci_get_bound_driver_name(const char *pci_slot, char *driver, size_t driver_len);
+int igt_pci_bind_driver_override(const char *pci_slot, const char *driver,
+				 unsigned int timeout_ms);
+int igt_pci_unbind_driver_override(const char *pci_slot, unsigned int timeout_ms);
 
 #endif
-- 
2.43.0


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

* [PATCH v3 i-g-t 3/7] tests/intel/xe_sriov_flr: Attach VFs to xe-vfio-pci before initiating FLR
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
  2026-02-04 16:32 ` [PATCH v3 i-g-t 1/7] lib/igt_sriov_device: Add helper to get VF PCI slot address Marcin Bernatowicz
  2026-02-04 16:32 ` [PATCH v3 i-g-t 2/7] lib/igt_pci: Add generic PCI driver override and bind/unbind helpers Marcin Bernatowicz
@ 2026-02-04 16:32 ` Marcin Bernatowicz
  2026-02-09 10:17   ` Laguna, Lukasz
  2026-02-04 16:32 ` [PATCH v3 i-g-t 4/7] lib/igt_kmod: Fix PCI bind/unbind for module/driver name mismatch Marcin Bernatowicz
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: Marcin Bernatowicz @ 2026-02-04 16:32 UTC (permalink / raw)
  To: igt-dev
  Cc: Marcin Bernatowicz, Michał Winiarski, Adam Miszczak,
	Jakub Kolakowski, Lukasz Laguna

Attach all VFs to the xe-vfio-pci driver before running the FLR scenario.
This allows the test to rely on xe-vfio-pci’s FLR wait handling, which is
triggered when writing to the VF reset sysfs attribute.

Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
Suggested-by: Michał Winiarski <michal.winiarski@intel.com>
Cc: Adam Miszczak <adam.miszczak@linux.intel.com>
Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
Cc: Lukasz Laguna <lukasz.laguna@intel.com>

---
v2:
- Unbind VFs only if they were successfully bound.

---
 tests/intel/xe_sriov_flr.c | 65 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)

diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
index 12989d0f5..2f6b24cf0 100644
--- a/tests/intel/xe_sriov_flr.c
+++ b/tests/intel/xe_sriov_flr.c
@@ -9,6 +9,8 @@
 #include "drmtest.h"
 #include "igt_core.h"
 #include "igt_device.h"
+#include "igt_kmod.h"
+#include "igt_pci.h"
 #include "igt_sriov_device.h"
 #include "intel_chipset.h"
 #include "intel_vram.h"
@@ -57,6 +59,8 @@ static const char STOP_REASON_ABORT[] = "ABORT";
 static const char STOP_REASON_FAIL[]  = "FAIL";
 static const char STOP_REASON_SKIP[]  = "SKIP";
 
+#define DRIVER_OVERRIDE_TIMEOUT_MS 200
+
 static struct g_mmio {
 	struct xe_mmio *mmio;
 	unsigned int num_vfs;
@@ -276,6 +280,47 @@ static void subchecks_report_results(struct subcheck *checks, int num_checks)
 	igt_skip_on(skips == num_checks);
 }
 
+static bool vf_bind_driver_override(int pf_fd, unsigned int vf_id,
+				    const char *driver)
+{
+	char *slot = igt_sriov_get_vf_pci_slot_alloc(pf_fd, vf_id);
+	int ret;
+	char bound[64] = "none";
+	int bound_ret;
+
+	igt_assert(slot);
+	igt_assert(driver);
+
+	ret = igt_pci_bind_driver_override(slot, driver, DRIVER_OVERRIDE_TIMEOUT_MS);
+	if (ret < 0) {
+		bound_ret = igt_pci_get_bound_driver_name(slot, bound, sizeof(bound));
+		if (bound_ret <= 0)
+			snprintf(bound, sizeof(bound), "%s", "none");
+
+		igt_warn_on_f(true,
+			      "bind %s (VF%u) to %s ret=%d (currently bound: %s)\n",
+			      slot, vf_id, driver, ret, bound);
+	}
+
+	free(slot);
+
+	return ret >= 0;
+}
+
+static void vf_unbind_driver_override(int pf_fd, unsigned int vf_id)
+{
+	char *slot = igt_sriov_get_vf_pci_slot_alloc(pf_fd, vf_id);
+	int ret;
+
+	igt_assert(slot);
+
+	ret = igt_pci_unbind_driver_override(slot, DRIVER_OVERRIDE_TIMEOUT_MS);
+	igt_warn_on_f(ret < 0, "unbind %s (VF%u) driver_override ret=%d\n",
+		      slot, vf_id, ret);
+
+	free(slot);
+}
+
 /**
  * flr_exec_strategy - Function pointer for FLR execution strategy
  * @pf_fd: File descriptor for the Physical Function (PF).
@@ -325,6 +370,8 @@ static void verify_flr(int pf_fd, int num_vfs, struct subcheck *checks,
 {
 	const int wait_flr_ms = 200;
 	int i, vf_id, flr_vf_id = -1;
+	bool xe_vfio_loaded;
+	bool *vf_bound = NULL;
 
 	igt_sriov_disable_driver_autoprobe(pf_fd);
 	igt_sriov_enable_vfs(pf_fd, num_vfs);
@@ -335,6 +382,16 @@ static void verify_flr(int pf_fd, int num_vfs, struct subcheck *checks,
 	if (igt_warn_on(igt_pci_system_reinit()))
 		goto disable_vfs;
 
+	xe_vfio_loaded = igt_kmod_load("xe_vfio_pci", NULL) >= 0;
+	if (xe_vfio_loaded) {
+		vf_bound = calloc(num_vfs + 1, sizeof(*vf_bound));
+		igt_assert(vf_bound);
+
+		igt_sriov_enable_driver_autoprobe(pf_fd);
+		for (vf_id = 1; vf_id <= num_vfs; vf_id++)
+			vf_bound[vf_id] = vf_bind_driver_override(pf_fd, vf_id, "xe-vfio-pci");
+	}
+
 	init_mmio(pf_fd, num_vfs);
 
 	for (i = 0; i < num_checks; ++i)
@@ -357,6 +414,14 @@ cleanup:
 
 	cleanup_mmio();
 
+	if (xe_vfio_loaded) {
+		for (vf_id = 1; vf_id <= num_vfs; vf_id++)
+			if (vf_bound && vf_bound[vf_id])
+				vf_unbind_driver_override(pf_fd, vf_id);
+	}
+
+	free(vf_bound);
+
 disable_vfs:
 	igt_sriov_disable_vfs(pf_fd);
 
-- 
2.43.0


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

* [PATCH v3 i-g-t 4/7] lib/igt_kmod: Fix PCI bind/unbind for module/driver name mismatch
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
                   ` (2 preceding siblings ...)
  2026-02-04 16:32 ` [PATCH v3 i-g-t 3/7] tests/intel/xe_sriov_flr: Attach VFs to xe-vfio-pci before initiating FLR Marcin Bernatowicz
@ 2026-02-04 16:32 ` Marcin Bernatowicz
  2026-02-04 16:32 ` [PATCH v3 i-g-t 5/7] tests/intel/xe_sriov_flr: Add --wait-flr-ms option Marcin Bernatowicz
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Marcin Bernatowicz @ 2026-02-04 16:32 UTC (permalink / raw)
  To: igt-dev; +Cc: Marcin Bernatowicz, Kamil Konieczny, Francois Dugast,
	Lukasz Laguna

igt_kmod_bind() and igt_kmod_unbind() assumed that the PCI
driver name was identical to the module name, which is not true
for drivers such as xe_vfio_pci (module) vs xe-vfio-pci (driver).

Resolve the registered PCI driver name via
/sys/module/<module>/drivers/pci:* and forward bind/unbind operations
to the generic PCI driver helpers.

Mark these helpers as deprecated, as bind/unbind are fundamentally
driver-level operations. New code should prefer the igt_pci_driver_*
APIs, while these wrappers remain for backwards compatibility and
“unbind before module unload” workflows.

Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Cc: Francois Dugast <francois.dugast@intel.com>
Reviewed-by: Lukasz Laguna <lukasz.laguna@intel.com>
---
 lib/igt_kmod.c | 90 ++++++++++++++++++++++++++++----------------------
 1 file changed, 51 insertions(+), 39 deletions(-)

diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
index d1d7a3840..008752f29 100644
--- a/lib/igt_kmod.c
+++ b/lib/igt_kmod.c
@@ -44,6 +44,7 @@
 #include "igt_hook.h"
 #include "igt_kmod.h"
 #include "igt_ktap.h"
+#include "igt_pci.h"
 #include "igt_sysfs.h"
 #include "igt_taints.h"
 
@@ -598,43 +599,58 @@ int __igt_intel_driver_unload(char **who, const char *driver)
 	return 0;
 }
 
+static char *kmod_pci_driver_from_module_alloc(const char *mod_name)
+{
+	char dirpath[PATH_MAX];
+	struct dirent *de;
+	DIR *d;
+
+	snprintf(dirpath, sizeof(dirpath), "/sys/module/%s/drivers", mod_name);
+	d = opendir(dirpath);
+	if (!d)
+		return NULL;
+
+	while ((de = readdir(d))) {
+		if (!strncmp(de->d_name, "pci:", 4)) {
+			char *drv = strdup(de->d_name + 4);
+
+			closedir(d);
+			return drv;
+		}
+	}
+
+	closedir(d);
+	return NULL;
+}
+
 /**
  * igt_kmod_unbind: Unbind driver from devices. Currently supports only PCI bus
  * @mod_name: name of the module to unbind
  * @pci_device: if provided, unbind only this device, otherwise unbind all devices
+ *
+ * Deprecated: bind/unbind is a driver operation. Prefer using:
+ *   - igt_pci_driver_unbind()/igt_pci_driver_unbind_all()
+ *   - igt_pci_device_unbind()
+ *
+ * This helper remains for backwards compatibility and for “unbind before
+ * module unload” workflows.
  */
 int igt_kmod_unbind(const char *mod_name, const char *pci_device)
 {
 	struct igt_hook *igt_hook = NULL;
-	char path[PATH_MAX];
-	struct dirent *de;
-	int dirlen;
-	DIR *dir;
-
-	dirlen = snprintf(path, sizeof(path), "/sys/module/%s/drivers/pci:%s/",
-			  mod_name, mod_name);
-	igt_assert(dirlen < sizeof(path));
-
-	dir = opendir(path);
-
-	/* Module not loaded, nothing to unbind */
-	if (!dir)
-		return 0;
-
-	while ((de = readdir(dir))) {
-		bool ret;
-
-		if (de->d_type != DT_LNK || !isdigit(de->d_name[0]))
-			continue;
+	char *driver;
+	int ret;
 
-		if (pci_device && strcmp(pci_device, de->d_name) != 0)
-			continue;
+	driver = kmod_pci_driver_from_module_alloc(mod_name);
+	if (!driver)
+		return 0; /* module not loaded / no pci driver */
 
-		ret = igt_sysfs_set(dirfd(dir), "unbind", de->d_name);
-		igt_assert(ret);
-	}
+	if (pci_device)
+		ret = igt_pci_driver_unbind(driver, pci_device);
+	else
+		ret = igt_pci_driver_unbind_all(driver);
 
-	closedir(dir);
+	free(driver);
 
 	igt_hook = igt_core_get_igt_hook();
 	igt_hook_event_notify(igt_hook, &(struct igt_hook_evt){
@@ -642,7 +658,7 @@ int igt_kmod_unbind(const char *mod_name, const char *pci_device)
 		.target_name = mod_name,
 	});
 
-	return 0;
+	return ret;
 }
 
 /**
@@ -651,25 +667,21 @@ int igt_kmod_unbind(const char *mod_name, const char *pci_device)
  * @pci_device: device to bind
  *
  * Module should already be loaded
+ *
+ * Deprecated: prefer igt_pci_driver_bind().
  */
 int igt_kmod_bind(const char *mod_name, const char *pci_device)
 {
-	char path[PATH_MAX];
-	int dirlen, dirfd;
+	char *driver;
 	int ret;
 
-	dirlen = snprintf(path, sizeof(path), "/sys/module/%s/drivers/pci:%s/",
-			  mod_name, mod_name);
-	igt_assert(dirlen < sizeof(path));
-
-	dirfd = open(path, O_RDONLY | O_CLOEXEC);
-	if (dirfd < 0)
-		return dirfd;
-
-	ret = igt_sysfs_set(dirfd, "bind", pci_device);
+	driver = kmod_pci_driver_from_module_alloc(mod_name);
+	if (!driver)
+		return -ENOENT;
 
-	close(dirfd);
+	ret = igt_pci_driver_bind(driver, pci_device);
 
+	free(driver);
 	return ret;
 }
 
-- 
2.43.0


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

* [PATCH v3 i-g-t 5/7] tests/intel/xe_sriov_flr: Add --wait-flr-ms option
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
                   ` (3 preceding siblings ...)
  2026-02-04 16:32 ` [PATCH v3 i-g-t 4/7] lib/igt_kmod: Fix PCI bind/unbind for module/driver name mismatch Marcin Bernatowicz
@ 2026-02-04 16:32 ` Marcin Bernatowicz
  2026-02-09 10:18   ` Laguna, Lukasz
  2026-02-04 16:32 ` [PATCH v3 i-g-t 6/7] tests/intel/xe_sriov_flr: Add --no-xe-vfio-pci option Marcin Bernatowicz
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: Marcin Bernatowicz @ 2026-02-04 16:32 UTC (permalink / raw)
  To: igt-dev
  Cc: Marcin Bernatowicz, Jakub Kolakowski, Lukasz Laguna,
	Piotr Piórkowski

Make the post-FLR sleep configurable (default 200ms).

Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
Cc: Lukasz Laguna <lukasz.laguna@intel.com>
Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
 tests/intel/xe_sriov_flr.c | 36 ++++++++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
index 2f6b24cf0..951628159 100644
--- a/tests/intel/xe_sriov_flr.c
+++ b/tests/intel/xe_sriov_flr.c
@@ -4,6 +4,7 @@
  */
 
 #include <fcntl.h>
+#include <limits.h>
 #include <pthread.h>
 #include <sys/stat.h>
 #include "drmtest.h"
@@ -61,6 +62,8 @@ static const char STOP_REASON_SKIP[]  = "SKIP";
 
 #define DRIVER_OVERRIDE_TIMEOUT_MS 200
 
+static int g_wait_flr_ms = 200;
+
 static struct g_mmio {
 	struct xe_mmio *mmio;
 	unsigned int num_vfs;
@@ -368,7 +371,7 @@ typedef int (*flr_exec_strategy)(int pf_fd, int num_vfs,
 static void verify_flr(int pf_fd, int num_vfs, struct subcheck *checks,
 		       int num_checks, flr_exec_strategy exec_strategy)
 {
-	const int wait_flr_ms = 200;
+	const int wait_flr_ms = g_wait_flr_ms;
 	int i, vf_id, flr_vf_id = -1;
 	bool xe_vfio_loaded;
 	bool *vf_bound = NULL;
@@ -1088,7 +1091,36 @@ static void clear_tests(int pf_fd, int num_vfs, flr_exec_strategy exec_strategy)
 	verify_flr(pf_fd, num_vfs, checks, num_checks, exec_strategy);
 }
 
-int igt_main()
+static int opt_handler(int opt, int opt_index, void *data)
+{
+	char *end = NULL;
+	long val;
+
+	switch (opt) {
+	case 'w':
+		errno = 0;
+		val = strtol(optarg, &end, 0);
+		if (errno || !end || *end != '\0' || val < 0 || val > INT_MAX)
+			return IGT_OPT_HANDLER_ERROR;
+		g_wait_flr_ms = (int)val;
+		igt_info("Using wait_flr_ms=%d\n", g_wait_flr_ms);
+		break;
+	default:
+		return IGT_OPT_HANDLER_ERROR;
+	}
+
+	return IGT_OPT_HANDLER_SUCCESS;
+}
+
+static const struct option long_options[] = {
+	{ .name = "wait-flr-ms", .has_arg = true, .val = 'w', },
+	{},
+};
+
+static const char help_str[] =
+	"  --wait-flr-ms=MS\tSleep MS milliseconds after VF reset sysfs write (default: 200)\n";
+
+int igt_main_args("w:", long_options, help_str, opt_handler, NULL)
 {
 	int pf_fd;
 	bool autoprobe;
-- 
2.43.0


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

* [PATCH v3 i-g-t 6/7] tests/intel/xe_sriov_flr: Add --no-xe-vfio-pci option
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
                   ` (4 preceding siblings ...)
  2026-02-04 16:32 ` [PATCH v3 i-g-t 5/7] tests/intel/xe_sriov_flr: Add --wait-flr-ms option Marcin Bernatowicz
@ 2026-02-04 16:32 ` Marcin Bernatowicz
  2026-02-09 10:18   ` Laguna, Lukasz
  2026-02-04 16:32 ` [PATCH v3 i-g-t 7/7] tests/intel/xe_sriov_flr: Skip xe-vfio-pci load/bind when IOMMU is off Marcin Bernatowicz
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: Marcin Bernatowicz @ 2026-02-04 16:32 UTC (permalink / raw)
  To: igt-dev
  Cc: Marcin Bernatowicz, Jakub Kolakowski, Lukasz Laguna,
	Piotr Piórkowski

Add --no-xe-vfio-pci to skip loading/binding VFs to xe-vfio-pci.

Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
Cc: Lukasz Laguna <lukasz.laguna@intel.com>
Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
 tests/intel/xe_sriov_flr.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
index 951628159..b73727787 100644
--- a/tests/intel/xe_sriov_flr.c
+++ b/tests/intel/xe_sriov_flr.c
@@ -63,6 +63,7 @@ static const char STOP_REASON_SKIP[]  = "SKIP";
 #define DRIVER_OVERRIDE_TIMEOUT_MS 200
 
 static int g_wait_flr_ms = 200;
+static bool g_use_xe_vfio_pci = true;
 
 static struct g_mmio {
 	struct xe_mmio *mmio;
@@ -385,7 +386,9 @@ static void verify_flr(int pf_fd, int num_vfs, struct subcheck *checks,
 	if (igt_warn_on(igt_pci_system_reinit()))
 		goto disable_vfs;
 
-	xe_vfio_loaded = igt_kmod_load("xe_vfio_pci", NULL) >= 0;
+	xe_vfio_loaded = false;
+	if (g_use_xe_vfio_pci)
+		xe_vfio_loaded = igt_kmod_load("xe_vfio_pci", NULL) >= 0;
 	if (xe_vfio_loaded) {
 		vf_bound = calloc(num_vfs + 1, sizeof(*vf_bound));
 		igt_assert(vf_bound);
@@ -1097,6 +1100,10 @@ static int opt_handler(int opt, int opt_index, void *data)
 	long val;
 
 	switch (opt) {
+	case 'v':
+		g_use_xe_vfio_pci = false;
+		igt_info("xe-vfio-pci binding: disabled\n");
+		break;
 	case 'w':
 		errno = 0;
 		val = strtol(optarg, &end, 0);
@@ -1113,14 +1120,16 @@ static int opt_handler(int opt, int opt_index, void *data)
 }
 
 static const struct option long_options[] = {
+	{ .name = "no-xe-vfio-pci", .has_arg = false, .val = 'v', },
 	{ .name = "wait-flr-ms", .has_arg = true, .val = 'w', },
 	{},
 };
 
 static const char help_str[] =
+	"  --no-xe-vfio-pci\tDo not load/bind xe-vfio-pci for VFs\n"
 	"  --wait-flr-ms=MS\tSleep MS milliseconds after VF reset sysfs write (default: 200)\n";
 
-int igt_main_args("w:", long_options, help_str, opt_handler, NULL)
+int igt_main_args("vw:", long_options, help_str, opt_handler, NULL)
 {
 	int pf_fd;
 	bool autoprobe;
-- 
2.43.0


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

* [PATCH v3 i-g-t 7/7] tests/intel/xe_sriov_flr: Skip xe-vfio-pci load/bind when IOMMU is off
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
                   ` (5 preceding siblings ...)
  2026-02-04 16:32 ` [PATCH v3 i-g-t 6/7] tests/intel/xe_sriov_flr: Add --no-xe-vfio-pci option Marcin Bernatowicz
@ 2026-02-04 16:32 ` Marcin Bernatowicz
  2026-02-09 10:42   ` Laguna, Lukasz
  2026-02-04 18:27 ` ✓ Xe.CI.BAT: success for PCI driver helpers and xe-vfio-pci FLR improvement (rev3) Patchwork
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: Marcin Bernatowicz @ 2026-02-04 16:32 UTC (permalink / raw)
  To: igt-dev
  Cc: Marcin Bernatowicz, Jakub Kolakowski, Lukasz Laguna,
	Michał Winiarski, Piotr Piórkowski

When the IOMMU is disabled VFs typically lack an iommu_group, and
xe-vfio-pci binding may fail. Skip load/bind in that case.

Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
Cc: Lukasz Laguna <lukasz.laguna@intel.com>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
 tests/intel/xe_sriov_flr.c | 43 +++++++++++++++++++++++++++++++++++---
 1 file changed, 40 insertions(+), 3 deletions(-)

diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
index b73727787..3fc84bbf9 100644
--- a/tests/intel/xe_sriov_flr.c
+++ b/tests/intel/xe_sriov_flr.c
@@ -13,6 +13,7 @@
 #include "igt_kmod.h"
 #include "igt_pci.h"
 #include "igt_sriov_device.h"
+#include "igt_sysfs.h"
 #include "intel_chipset.h"
 #include "intel_vram.h"
 #include "linux_scaffold.h"
@@ -325,6 +326,44 @@ static void vf_unbind_driver_override(int pf_fd, unsigned int vf_id)
 	free(slot);
 }
 
+static bool vf_has_iommu_group(int pf_fd, unsigned int vf_id)
+{
+	int sysfs;
+	bool present;
+
+	sysfs = igt_sriov_device_sysfs_open(pf_fd, vf_id);
+	if (sysfs < 0)
+		return false;
+
+	present = igt_sysfs_has_attr(sysfs, "iommu_group");
+	close(sysfs);
+
+	return present;
+}
+
+static bool vfs_have_iommu_groups(int pf_fd, int num_vfs)
+{
+	for (int vf_id = 1; vf_id <= num_vfs; vf_id++)
+		if (!vf_has_iommu_group(pf_fd, vf_id))
+			return false;
+
+	return true;
+}
+
+static bool try_load_xe_vfio_pci(int pf_fd, int num_vfs)
+{
+	if (!g_use_xe_vfio_pci)
+		return false;
+
+	if (!vfs_have_iommu_groups(pf_fd, num_vfs)) {
+		igt_info("Disabling xe-vfio-pci binding: missing VF IOMMU group(s) (IOMMU off?)\n");
+		g_use_xe_vfio_pci = false;
+		return false;
+	}
+
+	return igt_kmod_load("xe_vfio_pci", NULL) >= 0;
+}
+
 /**
  * flr_exec_strategy - Function pointer for FLR execution strategy
  * @pf_fd: File descriptor for the Physical Function (PF).
@@ -386,9 +425,7 @@ static void verify_flr(int pf_fd, int num_vfs, struct subcheck *checks,
 	if (igt_warn_on(igt_pci_system_reinit()))
 		goto disable_vfs;
 
-	xe_vfio_loaded = false;
-	if (g_use_xe_vfio_pci)
-		xe_vfio_loaded = igt_kmod_load("xe_vfio_pci", NULL) >= 0;
+	xe_vfio_loaded = try_load_xe_vfio_pci(pf_fd, num_vfs);
 	if (xe_vfio_loaded) {
 		vf_bound = calloc(num_vfs + 1, sizeof(*vf_bound));
 		igt_assert(vf_bound);
-- 
2.43.0


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

* ✓ Xe.CI.BAT: success for PCI driver helpers and xe-vfio-pci FLR improvement (rev3)
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
                   ` (6 preceding siblings ...)
  2026-02-04 16:32 ` [PATCH v3 i-g-t 7/7] tests/intel/xe_sriov_flr: Skip xe-vfio-pci load/bind when IOMMU is off Marcin Bernatowicz
@ 2026-02-04 18:27 ` Patchwork
  2026-02-04 18:41 ` ✓ i915.CI.BAT: " Patchwork
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2026-02-04 18:27 UTC (permalink / raw)
  To: Marcin Bernatowicz; +Cc: igt-dev

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

== Series Details ==

Series: PCI driver helpers and xe-vfio-pci FLR improvement (rev3)
URL   : https://patchwork.freedesktop.org/series/160140/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_8736_BAT -> XEIGTPW_14492_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  Missing    (1): bat-bmg-3 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@xe_waitfence@engine:
    - bat-dg2-oem2:       [PASS][1] -> [FAIL][2] ([Intel XE#6519])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/bat-dg2-oem2/igt@xe_waitfence@engine.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/bat-dg2-oem2/igt@xe_waitfence@engine.html

  
#### Possible fixes ####

  * igt@xe_pat@pat-index-xe2@render:
    - bat-ptl-vm:         [DMESG-WARN][3] ([Intel XE#7110]) -> [PASS][4] +1 other test pass
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/bat-ptl-vm/igt@xe_pat@pat-index-xe2@render.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/bat-ptl-vm/igt@xe_pat@pat-index-xe2@render.html

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


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

  * IGT: IGT_8736 -> IGTPW_14492

  IGTPW_14492: 14492
  IGT_8736: 8736
  xe-4497-241994730989320c926da9f2d0a5ec80b48f993d: 241994730989320c926da9f2d0a5ec80b48f993d

== Logs ==

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

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

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

* ✓ i915.CI.BAT: success for PCI driver helpers and xe-vfio-pci FLR improvement (rev3)
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
                   ` (7 preceding siblings ...)
  2026-02-04 18:27 ` ✓ Xe.CI.BAT: success for PCI driver helpers and xe-vfio-pci FLR improvement (rev3) Patchwork
@ 2026-02-04 18:41 ` Patchwork
  2026-02-05  5:02 ` ✗ Xe.CI.FULL: failure " Patchwork
  2026-02-05  8:13 ` ✓ i915.CI.Full: success " Patchwork
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2026-02-04 18:41 UTC (permalink / raw)
  To: Marcin Bernatowicz; +Cc: igt-dev

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

== Series Details ==

Series: PCI driver helpers and xe-vfio-pci FLR improvement (rev3)
URL   : https://patchwork.freedesktop.org/series/160140/
State : success

== Summary ==

CI Bug Log - changes from IGT_8736 -> IGTPW_14492
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (43 -> 41)
------------------------------

  Missing    (2): bat-dg2-13 fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@workarounds:
    - bat-arls-5:         [PASS][1] -> [DMESG-FAIL][2] ([i915#12061]) +1 other test dmesg-fail
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/bat-arls-5/igt@i915_selftest@live@workarounds.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/bat-arls-5/igt@i915_selftest@live@workarounds.html

  
#### Possible fixes ####

  * igt@i915_selftest@live:
    - bat-mtlp-8:         [DMESG-FAIL][3] ([i915#12061]) -> [PASS][4] +1 other test pass
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/bat-mtlp-8/igt@i915_selftest@live.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/bat-mtlp-8/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-dg2-9:          [DMESG-FAIL][5] ([i915#12061]) -> [PASS][6] +1 other test pass
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/bat-dg2-9/igt@i915_selftest@live@workarounds.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/bat-dg2-9/igt@i915_selftest@live@workarounds.html
    - bat-dg2-14:         [DMESG-FAIL][7] ([i915#12061]) -> [PASS][8] +1 other test pass
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/bat-dg2-14/igt@i915_selftest@live@workarounds.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/bat-dg2-14/igt@i915_selftest@live@workarounds.html

  * igt@kms_pm_rpm@basic-rte:
    - bat-rpls-4:         [DMESG-WARN][9] ([i915#13400]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/bat-rpls-4/igt@kms_pm_rpm@basic-rte.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/bat-rpls-4/igt@kms_pm_rpm@basic-rte.html

  
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#13400]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13400


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

  * CI: CI-20190529 -> None
  * IGT: IGT_8736 -> IGTPW_14492

  CI-20190529: 20190529
  CI_DRM_17930: 241994730989320c926da9f2d0a5ec80b48f993d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_14492: 14492
  IGT_8736: 8736

== Logs ==

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

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

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

* ✗ Xe.CI.FULL: failure for PCI driver helpers and xe-vfio-pci FLR improvement (rev3)
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
                   ` (8 preceding siblings ...)
  2026-02-04 18:41 ` ✓ i915.CI.BAT: " Patchwork
@ 2026-02-05  5:02 ` Patchwork
  2026-02-05 10:13   ` Bernatowicz, Marcin
  2026-02-05  8:13 ` ✓ i915.CI.Full: success " Patchwork
  10 siblings, 1 reply; 23+ messages in thread
From: Patchwork @ 2026-02-05  5:02 UTC (permalink / raw)
  To: Marcin Bernatowicz; +Cc: igt-dev

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

== Series Details ==

Series: PCI driver helpers and xe-vfio-pci FLR improvement (rev3)
URL   : https://patchwork.freedesktop.org/series/160140/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_8736_FULL -> XEIGTPW_14492_FULL
====================================================

Summary
-------

  **FAILURE**

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_async_flips@async-flip-dpms:
    - shard-lnl:          [PASS][1] -> [SKIP][2] +3 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-5/igt@kms_async_flips@async-flip-dpms.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-6/igt@kms_async_flips@async-flip-dpms.html

  * igt@xe_configfs@ctx-restore-post-bb:
    - shard-lnl:          [PASS][3] -> [DMESG-WARN][4] +3 other tests dmesg-warn
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-1/igt@xe_configfs@ctx-restore-post-bb.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-6/igt@xe_configfs@ctx-restore-post-bb.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@async-flip-with-page-flip-events-linear:
    - shard-lnl:          [PASS][5] -> [FAIL][6] ([Intel XE#5993]) +3 other tests fail
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-1/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-1/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html

  * igt@kms_big_fb@linear-64bpp-rotate-270:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#2327]) +1 other test skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-3/igt@kms_big_fb@linear-64bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-270:
    - shard-lnl:          NOTRUN -> [SKIP][8] ([Intel XE#1407]) +1 other test skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@kms_big_fb@x-tiled-64bpp-rotate-270.html

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

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

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

  * igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p:
    - shard-bmg:          [PASS][12] -> [SKIP][13] ([Intel XE#2314] / [Intel XE#2894])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-8/igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p.html

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

  * igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs@pipe-c-dp-2:
    - shard-bmg:          NOTRUN -> [SKIP][16] ([Intel XE#2652] / [Intel XE#787]) +3 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-9/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs@pipe-c-dp-2.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-a-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][17] ([Intel XE#2669] / [Intel XE#3433]) +3 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-7/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-a-edp-1.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#3432]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-8/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc.html

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

  * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][20] ([Intel XE#2887]) +9 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-7/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs.html

  * igt@kms_chamelium_audio@hdmi-audio-edid:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#2252]) +7 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@kms_chamelium_audio@hdmi-audio-edid.html

  * igt@kms_chamelium_color@ctm-max:
    - shard-lnl:          NOTRUN -> [SKIP][22] ([Intel XE#306])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@kms_chamelium_color@ctm-max.html
    - shard-bmg:          NOTRUN -> [SKIP][23] ([Intel XE#2325])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-7/igt@kms_chamelium_color@ctm-max.html

  * igt@kms_chamelium_hpd@vga-hpd-for-each-pipe:
    - shard-lnl:          NOTRUN -> [SKIP][24] ([Intel XE#373]) +3 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-3/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html

  * igt@kms_color_pipeline@plane-lut1d-ctm3x4-lut1d@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [FAIL][25] ([Intel XE#6968]) +3 other tests fail
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-1/igt@kms_color_pipeline@plane-lut1d-ctm3x4-lut1d@pipe-b-edp-1.html

  * igt@kms_color_pipeline@plane-lut3d-green-only@pipe-c-hdmi-a-3:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#6969]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_color_pipeline@plane-lut3d-green-only@pipe-c-hdmi-a-3.html

  * igt@kms_color_pipeline@plane-lut3d-green-only@pipe-d-hdmi-a-3:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#6969] / [Intel XE#7006])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_color_pipeline@plane-lut3d-green-only@pipe-d-hdmi-a-3.html

  * igt@kms_content_protection@atomic-hdcp14:
    - shard-bmg:          NOTRUN -> [FAIL][28] ([Intel XE#3304]) +2 other tests fail
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-9/igt@kms_content_protection@atomic-hdcp14.html

  * igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
    - shard-bmg:          NOTRUN -> [SKIP][29] ([Intel XE#6974]) +1 other test skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-9/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html
    - shard-lnl:          NOTRUN -> [SKIP][30] ([Intel XE#6974])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-lnl:          NOTRUN -> [SKIP][31] ([Intel XE#307] / [Intel XE#6974])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@kms_content_protection@dp-mst-type-1.html
    - shard-bmg:          NOTRUN -> [SKIP][32] ([Intel XE#2390] / [Intel XE#6974])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@srm:
    - shard-lnl:          NOTRUN -> [SKIP][33] ([Intel XE#3278])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-6/igt@kms_content_protection@srm.html

  * igt@kms_content_protection@uevent-hdcp14:
    - shard-lnl:          NOTRUN -> [SKIP][34] ([Intel XE#6973])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-6/igt@kms_content_protection@uevent-hdcp14.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-bmg:          NOTRUN -> [SKIP][35] ([Intel XE#2321])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x10:
    - shard-bmg:          NOTRUN -> [SKIP][36] ([Intel XE#2320]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-lnl:          NOTRUN -> [SKIP][37] ([Intel XE#2321])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_crc@cursor-sliding-max-size:
    - shard-lnl:          NOTRUN -> [SKIP][38] ([Intel XE#1424])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@kms_cursor_crc@cursor-sliding-max-size.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-bmg:          NOTRUN -> [SKIP][39] ([Intel XE#2291])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions:
    - shard-bmg:          [PASS][40] -> [SKIP][41] ([Intel XE#2291]) +5 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-2/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-toggle:
    - shard-lnl:          NOTRUN -> [SKIP][42] ([Intel XE#309]) +5 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-3/igt@kms_cursor_legacy@cursorb-vs-flipb-toggle.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic:
    - shard-bmg:          [PASS][43] -> [FAIL][44] ([Intel XE#6715])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html

  * igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
    - shard-lnl:          NOTRUN -> [SKIP][45] ([Intel XE#1508])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-7/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html

  * igt@kms_dp_link_training@uhbr-mst:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#4354])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@kms_dp_link_training@uhbr-mst.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-lnl:          NOTRUN -> [SKIP][47] ([Intel XE#2244])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-2/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#2244])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

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

  * igt@kms_flip@2x-flip-vs-dpms-on-nop:
    - shard-bmg:          [PASS][50] -> [SKIP][51] ([Intel XE#2316]) +3 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-2/igt@kms_flip@2x-flip-vs-dpms-on-nop.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_flip@2x-flip-vs-dpms-on-nop.html

  * igt@kms_flip@2x-flip-vs-suspend:
    - shard-lnl:          NOTRUN -> [SKIP][52] ([Intel XE#1421]) +3 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@kms_flip@2x-flip-vs-suspend.html

  * igt@kms_flip@flip-vs-expired-vblank@b-edp1:
    - shard-lnl:          [PASS][53] -> [FAIL][54] ([Intel XE#301])
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-6/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][55] ([Intel XE#7178]) +2 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html

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

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

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling:
    - shard-lnl:          NOTRUN -> [SKIP][58] ([Intel XE#7178])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-4/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling.html

  * igt@kms_frontbuffer_tracking@drrs-1p-offscreen-pri-shrfb-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][59] ([Intel XE#6312])
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-2/igt@kms_frontbuffer_tracking@drrs-1p-offscreen-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][60] ([Intel XE#651]) +4 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-3/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][61] ([Intel XE#2311]) +13 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc:
    - shard-bmg:          NOTRUN -> [SKIP][62] ([Intel XE#2312]) +2 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html

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

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-onoff:
    - shard-lnl:          NOTRUN -> [SKIP][64] ([Intel XE#656]) +22 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][65] ([Intel XE#2313]) +17 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][66] ([Intel XE#7061]) +3 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt.html
    - shard-bmg:          NOTRUN -> [SKIP][67] ([Intel XE#7061]) +3 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-8/igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-lnl:          NOTRUN -> [SKIP][68] ([Intel XE#7086])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-lnl:          NOTRUN -> [SKIP][69] ([Intel XE#6901])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-4/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-bmg:          NOTRUN -> [SKIP][70] ([Intel XE#2501])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_pipe_stress@stress-xrgb8888-yftiled:
    - shard-bmg:          NOTRUN -> [SKIP][71] ([Intel XE#6912])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
    - shard-lnl:          NOTRUN -> [SKIP][72] ([Intel XE#6912])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-4/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html

  * igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier@pipe-b-plane-0:
    - shard-lnl:          NOTRUN -> [SKIP][73] ([Intel XE#7130]) +24 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-2/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier@pipe-b-plane-0.html

  * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping@pipe-b-plane-5:
    - shard-bmg:          NOTRUN -> [SKIP][74] ([Intel XE#7111] / [Intel XE#7131]) +1 other test skip
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping@pipe-b-plane-5.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier@pipe-a-plane-0:
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#7130]) +12 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier@pipe-a-plane-0.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier@pipe-b-plane-5:
    - shard-bmg:          NOTRUN -> [SKIP][76] ([Intel XE#7111] / [Intel XE#7130]) +1 other test skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier@pipe-b-plane-5.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier-source-clamping:
    - shard-lnl:          NOTRUN -> [SKIP][77] ([Intel XE#7130] / [Intel XE#7131])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier-source-clamping@pipe-a-plane-5:
    - shard-lnl:          NOTRUN -> [SKIP][78] ([Intel XE#7131]) +1 other test skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier-source-clamping@pipe-a-plane-5.html

  * igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping:
    - shard-bmg:          NOTRUN -> [SKIP][79] ([Intel XE#7111] / [Intel XE#7130] / [Intel XE#7131]) +1 other test skip
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-a-plane-5:
    - shard-bmg:          NOTRUN -> [SKIP][80] ([Intel XE#7131]) +1 other test skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-a-plane-5.html

  * igt@kms_plane_multiple@2x-tiling-x:
    - shard-lnl:          NOTRUN -> [SKIP][81] ([Intel XE#4596])
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-2/igt@kms_plane_multiple@2x-tiling-x.html

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

  * igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a:
    - shard-lnl:          NOTRUN -> [SKIP][84] ([Intel XE#6886]) +7 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-6/igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a.html

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

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

  * igt@kms_pm_dc@dc5-dpms:
    - shard-lnl:          [PASS][87] -> [FAIL][88] ([Intel XE#718])
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-6/igt@kms_pm_dc@dc5-dpms.html
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-3/igt@kms_pm_dc@dc5-dpms.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-bmg:          NOTRUN -> [SKIP][89] ([Intel XE#3309])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-bmg:          NOTRUN -> [SKIP][90] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#836]) +1 other test skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf:
    - shard-bmg:          NOTRUN -> [SKIP][91] ([Intel XE#1406] / [Intel XE#1489]) +5 other tests skip
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area:
    - shard-lnl:          NOTRUN -> [SKIP][92] ([Intel XE#1406] / [Intel XE#2893] / [Intel XE#4608]) +1 other test skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][93] ([Intel XE#1406] / [Intel XE#4608]) +3 other tests skip
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area@pipe-b-edp-1.html

  * igt@kms_psr2_sf@pr-overlay-primary-update-sf-dmg-area:
    - shard-lnl:          NOTRUN -> [SKIP][94] ([Intel XE#1406] / [Intel XE#2893]) +2 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@kms_psr2_sf@pr-overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-lnl:          NOTRUN -> [SKIP][95] ([Intel XE#1128] / [Intel XE#1406])
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@kms_psr2_su@frontbuffer-xrgb8888.html
    - shard-bmg:          NOTRUN -> [SKIP][96] ([Intel XE#1406] / [Intel XE#2387])
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@kms_psr2_su@frontbuffer-xrgb8888.html

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

  * igt@kms_psr@pr-primary-blt:
    - shard-lnl:          NOTRUN -> [SKIP][98] ([Intel XE#1406]) +4 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-4/igt@kms_psr@pr-primary-blt.html

  * igt@kms_psr@psr-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][99] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +7 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-3/igt@kms_psr@psr-suspend.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-lnl:          NOTRUN -> [SKIP][100] ([Intel XE#3414] / [Intel XE#3904])
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-3/igt@kms_rotation_crc@primary-rotation-270.html
    - shard-bmg:          NOTRUN -> [SKIP][101] ([Intel XE#3414] / [Intel XE#3904])
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-7/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-bmg:          NOTRUN -> [SKIP][102] ([Intel XE#2330])
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_scaling_modes@scaling-mode-full:
    - shard-bmg:          NOTRUN -> [SKIP][103] ([Intel XE#2413])
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@kms_scaling_modes@scaling-mode-full.html

  * igt@kms_sharpness_filter@filter-modifiers:
    - shard-bmg:          NOTRUN -> [SKIP][104] ([Intel XE#6503])
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@kms_sharpness_filter@filter-modifiers.html

  * igt@kms_vrr@flip-basic-fastset:
    - shard-bmg:          NOTRUN -> [SKIP][105] ([Intel XE#1499])
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-8/igt@kms_vrr@flip-basic-fastset.html

  * igt@kms_vrr@max-min@pipe-a-edp-1:
    - shard-lnl:          [PASS][106] -> [FAIL][107] ([Intel XE#4227]) +1 other test fail
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-2/igt@kms_vrr@max-min@pipe-a-edp-1.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-4/igt@kms_vrr@max-min@pipe-a-edp-1.html

  * igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-7:
    - shard-bmg:          [PASS][108] -> [FAIL][109] ([Intel XE#5937]) +28 other tests fail
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-7/igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-7.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-7.html

  * igt@xe_ccs@suspend-resume@linear-compressed-compfmt0-system-system:
    - shard-lnl:          [PASS][110] -> [ABORT][111] ([Intel XE#7169]) +1 other test abort
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-1/igt@xe_ccs@suspend-resume@linear-compressed-compfmt0-system-system.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-6/igt@xe_ccs@suspend-resume@linear-compressed-compfmt0-system-system.html

  * igt@xe_compute@eu-busy-10s:
    - shard-lnl:          NOTRUN -> [SKIP][112] ([Intel XE#6592] / [Intel XE#6645])
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-3/igt@xe_compute@eu-busy-10s.html
    - shard-bmg:          NOTRUN -> [SKIP][113] ([Intel XE#6599])
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@xe_compute@eu-busy-10s.html

  * igt@xe_eudebug@basic-vm-bind-extended:
    - shard-lnl:          NOTRUN -> [SKIP][114] ([Intel XE#4837]) +1 other test skip
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-2/igt@xe_eudebug@basic-vm-bind-extended.html

  * igt@xe_eudebug@basic-vm-bind-ufence:
    - shard-bmg:          NOTRUN -> [SKIP][115] ([Intel XE#4837]) +2 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@xe_eudebug@basic-vm-bind-ufence.html

  * igt@xe_eudebug_online@pagefault-one-of-many:
    - shard-lnl:          NOTRUN -> [SKIP][116] ([Intel XE#6665])
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@xe_eudebug_online@pagefault-one-of-many.html

  * igt@xe_eudebug_online@single-step:
    - shard-bmg:          NOTRUN -> [SKIP][117] ([Intel XE#4837] / [Intel XE#6665]) +2 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-7/igt@xe_eudebug_online@single-step.html

  * igt@xe_eudebug_online@writes-caching-sram-bb-vram-target-vram:
    - shard-lnl:          NOTRUN -> [SKIP][118] ([Intel XE#4837] / [Intel XE#6665]) +2 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-7/igt@xe_eudebug_online@writes-caching-sram-bb-vram-target-vram.html

  * igt@xe_evict@evict-small-multi-queue-priority-cm:
    - shard-bmg:          NOTRUN -> [SKIP][119] ([Intel XE#7140])
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@xe_evict@evict-small-multi-queue-priority-cm.html

  * igt@xe_evict_ccs@evict-overcommit-parallel-nofree-reopen:
    - shard-lnl:          NOTRUN -> [SKIP][120] ([Intel XE#688]) +9 other tests skip
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@xe_evict_ccs@evict-overcommit-parallel-nofree-reopen.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr:
    - shard-bmg:          NOTRUN -> [SKIP][121] ([Intel XE#2322]) +6 other tests skip
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr.html

  * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][122] ([Intel XE#1392]) +4 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind.html

  * igt@xe_exec_fault_mode@many-multi-queue-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][123] ([Intel XE#7136]) +9 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-2/igt@xe_exec_fault_mode@many-multi-queue-rebind.html

  * igt@xe_exec_fault_mode@twice-multi-queue-userptr-rebind-prefetch:
    - shard-bmg:          NOTRUN -> [SKIP][124] ([Intel XE#7136]) +5 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-8/igt@xe_exec_fault_mode@twice-multi-queue-userptr-rebind-prefetch.html

  * igt@xe_exec_multi_queue@many-queues-preempt-mode-fault-userptr-invalidate:
    - shard-lnl:          NOTRUN -> [SKIP][125] ([Intel XE#6874]) +15 other tests skip
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@xe_exec_multi_queue@many-queues-preempt-mode-fault-userptr-invalidate.html

  * igt@xe_exec_multi_queue@one-queue-priority-smem:
    - shard-bmg:          NOTRUN -> [SKIP][126] ([Intel XE#6874]) +17 other tests skip
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@xe_exec_multi_queue@one-queue-priority-smem.html

  * igt@xe_exec_system_allocator@many-64k-mmap-free-huge:
    - shard-lnl:          NOTRUN -> [SKIP][127] ([Intel XE#5007]) +1 other test skip
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@xe_exec_system_allocator@many-64k-mmap-free-huge.html

  * igt@xe_exec_system_allocator@many-64k-mmap-new-huge:
    - shard-bmg:          NOTRUN -> [SKIP][128] ([Intel XE#5007]) +1 other test skip
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-7/igt@xe_exec_system_allocator@many-64k-mmap-new-huge.html

  * igt@xe_exec_system_allocator@many-large-mmap-free:
    - shard-bmg:          [PASS][129] -> [DMESG-FAIL][130] ([Intel XE#5213] / [Intel XE#5545] / [Intel XE#6652])
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-3/igt@xe_exec_system_allocator@many-large-mmap-free.html
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_exec_system_allocator@many-large-mmap-free.html

  * igt@xe_exec_system_allocator@many-stride-mmap-prefetch-shared:
    - shard-bmg:          NOTRUN -> [SKIP][131] ([Intel XE#6703]) +7 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_exec_system_allocator@many-stride-mmap-prefetch-shared.html

  * igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-new-huge:
    - shard-bmg:          NOTRUN -> [SKIP][132] ([Intel XE#4943]) +10 other tests skip
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-new-huge.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-malloc-prefetch-madvise:
    - shard-bmg:          [PASS][133] -> [SKIP][134] ([Intel XE#6703]) +46 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-10/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-malloc-prefetch-madvise.html
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-malloc-prefetch-madvise.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-malloc-race-nomemset:
    - shard-bmg:          NOTRUN -> [DMESG-FAIL][135] ([Intel XE#6652])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_exec_system_allocator@threads-shared-vm-many-large-malloc-race-nomemset.html

  * igt@xe_exec_system_allocator@twice-mmap-huge:
    - shard-lnl:          NOTRUN -> [SKIP][136] ([Intel XE#4943]) +13 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-3/igt@xe_exec_system_allocator@twice-mmap-huge.html

  * igt@xe_exec_threads@threads-many-queues:
    - shard-lnl:          NOTRUN -> [FAIL][137] ([Intel XE#7166])
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@xe_exec_threads@threads-many-queues.html

  * igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic:
    - shard-lnl:          NOTRUN -> [SKIP][138] ([Intel XE#7138]) +3 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-7/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic.html

  * igt@xe_exec_threads@threads-multi-queue-hang-fd-userptr-invalidate-race:
    - shard-bmg:          NOTRUN -> [SKIP][139] ([Intel XE#7138]) +3 other tests skip
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-3/igt@xe_exec_threads@threads-multi-queue-hang-fd-userptr-invalidate-race.html

  * igt@xe_live_ktest@xe_eudebug:
    - shard-lnl:          NOTRUN -> [SKIP][140] ([Intel XE#2833])
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-4/igt@xe_live_ktest@xe_eudebug.html

  * igt@xe_multigpu_svm@mgpu-coherency-prefetch:
    - shard-lnl:          NOTRUN -> [SKIP][141] ([Intel XE#6964]) +2 other tests skip
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-4/igt@xe_multigpu_svm@mgpu-coherency-prefetch.html

  * igt@xe_multigpu_svm@mgpu-latency-copy-basic:
    - shard-bmg:          NOTRUN -> [SKIP][142] ([Intel XE#6964]) +1 other test skip
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-9/igt@xe_multigpu_svm@mgpu-latency-copy-basic.html

  * igt@xe_pat@pat-index-xelpg:
    - shard-bmg:          NOTRUN -> [SKIP][143] ([Intel XE#2236])
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-9/igt@xe_pat@pat-index-xelpg.html
    - shard-lnl:          NOTRUN -> [SKIP][144] ([Intel XE#979])
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pxp@display-black-pxp-fb:
    - shard-bmg:          NOTRUN -> [SKIP][145] ([Intel XE#4733]) +2 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@xe_pxp@display-black-pxp-fb.html

  * igt@xe_query@multigpu-query-oa-units:
    - shard-bmg:          NOTRUN -> [SKIP][146] ([Intel XE#944])
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@xe_query@multigpu-query-oa-units.html

  * igt@xe_query@multigpu-query-pxp-status:
    - shard-lnl:          NOTRUN -> [SKIP][147] ([Intel XE#944]) +1 other test skip
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-8/igt@xe_query@multigpu-query-pxp-status.html

  * igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs:
    - shard-lnl:          NOTRUN -> [SKIP][148] ([Intel XE#4130])
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-2/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs.html

  * igt@xe_sriov_flr@flr-vf1-clear:
    - shard-lnl:          NOTRUN -> [SKIP][149] ([Intel XE#3342]) +1 other test skip
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-3/igt@xe_sriov_flr@flr-vf1-clear.html
    - shard-bmg:          NOTRUN -> [FAIL][150] ([Intel XE#6569])
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@xe_sriov_flr@flr-vf1-clear.html

  
#### Possible fixes ####

  * igt@intel_hwmon@hwmon-write:
    - shard-bmg:          [FAIL][151] ([Intel XE#4665]) -> [PASS][152]
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-9/igt@intel_hwmon@hwmon-write.html
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-3/igt@intel_hwmon@hwmon-write.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1:
    - shard-lnl:          [FAIL][153] ([Intel XE#6054]) -> [PASS][154] +3 other tests pass
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-2/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-3/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-bmg:          [FAIL][155] ([Intel XE#5299]) -> [PASS][156]
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_flip@2x-flip-vs-panning:
    - shard-bmg:          [SKIP][157] ([Intel XE#2316]) -> [PASS][158] +4 other tests pass
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_flip@2x-flip-vs-panning.html
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_flip@2x-flip-vs-panning.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible:
    - shard-bmg:          [DMESG-WARN][159] ([Intel XE#3428] / [Intel XE#5208]) -> [PASS][160]
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-3/igt@kms_flip@2x-flip-vs-suspend-interruptible.html
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_flip@2x-flip-vs-suspend-interruptible.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible@ac-dp2-hdmi-a3:
    - shard-bmg:          [DMESG-WARN][161] ([Intel XE#3428]) -> [PASS][162] +3 other tests pass
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-3/igt@kms_flip@2x-flip-vs-suspend-interruptible@ac-dp2-hdmi-a3.html
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_flip@2x-flip-vs-suspend-interruptible@ac-dp2-hdmi-a3.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-bmg:          [INCOMPLETE][163] ([Intel XE#2049] / [Intel XE#2597]) -> [PASS][164] +1 other test pass
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-10/igt@kms_flip@flip-vs-suspend-interruptible.html
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-bmg:          [SKIP][165] ([Intel XE#1503]) -> [PASS][166]
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_hdr@static-toggle-dpms.html
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_plane_multiple@2x-tiling-none:
    - shard-bmg:          [SKIP][167] ([Intel XE#4596]) -> [PASS][168]
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_plane_multiple@2x-tiling-none.html
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_plane_multiple@2x-tiling-none.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-lnl:          [FAIL][169] ([Intel XE#718]) -> [PASS][170]
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-3/igt@kms_pm_dc@dc6-dpms.html
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_setmode@clone-exclusive-crtc:
    - shard-bmg:          [SKIP][171] ([Intel XE#1435]) -> [PASS][172] +1 other test pass
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_setmode@clone-exclusive-crtc.html
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@kms_setmode@clone-exclusive-crtc.html

  * igt@xe_exec_system_allocator@once-large-malloc-bo-unmap:
    - shard-bmg:          [ABORT][173] ([Intel XE#7169]) -> [PASS][174]
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-1/igt@xe_exec_system_allocator@once-large-malloc-bo-unmap.html
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@xe_exec_system_allocator@once-large-malloc-bo-unmap.html

  * igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma:
    - shard-lnl:          [FAIL][175] ([Intel XE#5625]) -> [PASS][176]
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-2/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-4/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html

  * igt@xe_fault_injection@exec-queue-create-fail-xe_exec_queue_create:
    - shard-bmg:          [ABORT][177] -> [PASS][178]
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-9/igt@xe_fault_injection@exec-queue-create-fail-xe_exec_queue_create.html
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-3/igt@xe_fault_injection@exec-queue-create-fail-xe_exec_queue_create.html

  * igt@xe_module_load@load:
    - shard-bmg:          ([PASS][179], [PASS][180], [SKIP][181], [PASS][182], [PASS][183], [PASS][184], [PASS][185], [PASS][186], [PASS][187], [PASS][188], [PASS][189], [PASS][190], [PASS][191], [PASS][192], [PASS][193], [PASS][194], [PASS][195], [PASS][196], [PASS][197], [PASS][198], [PASS][199], [PASS][200], [PASS][201], [PASS][202], [PASS][203], [PASS][204]) ([Intel XE#2457]) -> ([PASS][205], [PASS][206], [PASS][207], [PASS][208], [PASS][209], [PASS][210], [PASS][211], [PASS][212], [PASS][213], [PASS][214], [PASS][215], [PASS][216], [PASS][217], [PASS][218], [PASS][219], [PASS][220], [PASS][221], [PASS][222], [PASS][223], [PASS][224], [PASS][225], [PASS][226], [PASS][227], [PASS][228], [PASS][229])
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-10/igt@xe_module_load@load.html
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-8/igt@xe_module_load@load.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-8/igt@xe_module_load@load.html
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-1/igt@xe_module_load@load.html
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@xe_module_load@load.html
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-9/igt@xe_module_load@load.html
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-4/igt@xe_module_load@load.html
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-1/igt@xe_module_load@load.html
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-4/igt@xe_module_load@load.html
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-3/igt@xe_module_load@load.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-3/igt@xe_module_load@load.html
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-8/igt@xe_module_load@load.html
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-7/igt@xe_module_load@load.html
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-7/igt@xe_module_load@load.html
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-8/igt@xe_module_load@load.html
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@xe_module_load@load.html
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-7/igt@xe_module_load@load.html
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-1/igt@xe_module_load@load.html
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-2/igt@xe_module_load@load.html
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-10/igt@xe_module_load@load.html
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-10/igt@xe_module_load@load.html
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-2/igt@xe_module_load@load.html
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@xe_module_load@load.html
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-9/igt@xe_module_load@load.html
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-9/igt@xe_module_load@load.html
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-2/igt@xe_module_load@load.html
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_module_load@load.html
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-9/igt@xe_module_load@load.html
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@xe_module_load@load.html
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-9/igt@xe_module_load@load.html
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-8/igt@xe_module_load@load.html
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-8/igt@xe_module_load@load.html
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-7/igt@xe_module_load@load.html
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-7/igt@xe_module_load@load.html
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-7/igt@xe_module_load@load.html
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@xe_module_load@load.html
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@xe_module_load@load.html
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@xe_module_load@load.html
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@xe_module_load@load.html
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_module_load@load.html
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_module_load@load.html
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@xe_module_load@load.html
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-1/igt@xe_module_load@load.html
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@xe_module_load@load.html
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-3/igt@xe_module_load@load.html
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-3/igt@xe_module_load@load.html
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-3/igt@xe_module_load@load.html
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@xe_module_load@load.html
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@xe_module_load@load.html
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-10/igt@xe_module_load@load.html
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@xe_module_load@load.html

  * igt@xe_pm@s4-multiple-execs:
    - shard-lnl:          [ABORT][230] ([Intel XE#7169]) -> [PASS][231]
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-4/igt@xe_pm@s4-multiple-execs.html
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-5/igt@xe_pm@s4-multiple-execs.html

  
#### Warnings ####

  * igt@kms_bw@linear-tiling-2-displays-3840x2160p:
    - shard-bmg:          [SKIP][232] ([Intel XE#367]) -> [SKIP][233] ([Intel XE#6703])
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-3/igt@kms_bw@linear-tiling-2-displays-3840x2160p.html
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_bw@linear-tiling-2-displays-3840x2160p.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs:
    - shard-bmg:          [SKIP][234] ([Intel XE#2652] / [Intel XE#787]) -> [SKIP][235] ([Intel XE#6703])
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html

  * igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs:
    - shard-bmg:          [SKIP][236] ([Intel XE#2887]) -> [SKIP][237] ([Intel XE#6703]) +2 other tests skip
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs.html
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs.html

  * igt@kms_chamelium_edid@hdmi-edid-change-during-hibernate:
    - shard-bmg:          [SKIP][238] ([Intel XE#2252]) -> [SKIP][239] ([Intel XE#6703]) +1 other test skip
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-7/igt@kms_chamelium_edid@hdmi-edid-change-during-hibernate.html
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_chamelium_edid@hdmi-edid-change-during-hibernate.html

  * igt@kms_content_protection@legacy:
    - shard-bmg:          [FAIL][240] ([Intel XE#1178] / [Intel XE#3304]) -> [SKIP][241] ([Intel XE#6703])
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-3/igt@kms_content_protection@legacy.html
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@legacy-hdcp14:
    - shard-bmg:          [SKIP][242] ([Intel XE#7194]) -> [FAIL][243] ([Intel XE#3304])
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_content_protection@legacy-hdcp14.html
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-3/igt@kms_content_protection@legacy-hdcp14.html

  * igt@kms_content_protection@lic-type-0-hdcp14:
    - shard-bmg:          [FAIL][244] ([Intel XE#3304]) -> [SKIP][245] ([Intel XE#7194])
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-8/igt@kms_content_protection@lic-type-0-hdcp14.html
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_content_protection@lic-type-0-hdcp14.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-blt:
    - shard-bmg:          [SKIP][246] ([Intel XE#2311]) -> [ABORT][247] ([Intel XE#7169])
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-1/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-blt.html
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move:
    - shard-bmg:          [SKIP][248] ([Intel XE#2312]) -> [SKIP][249] ([Intel XE#2311]) +7 other tests skip
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move.html
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render:
    - shard-bmg:          [SKIP][250] ([Intel XE#4141]) -> [SKIP][251] ([Intel XE#6703])
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render.html
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
    - shard-bmg:          [SKIP][252] ([Intel XE#2312]) -> [SKIP][253] ([Intel XE#4141]) +7 other tests skip
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
    - shard-bmg:          [SKIP][254] ([Intel XE#4141]) -> [SKIP][255] ([Intel XE#2312]) +6 other tests skip
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-onoff:
    - shard-bmg:          [SKIP][256] ([Intel XE#2311]) -> [SKIP][257] ([Intel XE#6703])
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-onoff.html
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-render:
    - shard-bmg:          [SKIP][258] ([Intel XE#2311]) -> [SKIP][259] ([Intel XE#2312]) +4 other tests skip
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-render.html
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt:
    - shard-bmg:          [SKIP][260] ([Intel XE#2312]) -> [SKIP][261] ([Intel XE#2313]) +6 other tests skip
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt.html
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-blt:
    - shard-bmg:          [SKIP][262] ([Intel XE#2313]) -> [SKIP][263] ([Intel XE#6703]) +1 other test skip
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-blt.html
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-move:
    - shard-bmg:          [SKIP][264] ([Intel XE#2312]) -> [SKIP][265] ([Intel XE#6703])
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-move.html
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-pgflip-blt:
    - shard-bmg:          [SKIP][266] ([Intel XE#2313]) -> [SKIP][267] ([Intel XE#2312]) +11 other tests skip
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-1/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-pgflip-blt.html
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-pgflip-blt.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          [SKIP][268] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][269] ([Intel XE#3544])
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-3/igt@kms_hdr@brightness-with-hdr.html
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-4/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_plane_multiple@2x-tiling-y:
    - shard-bmg:          [SKIP][270] ([Intel XE#5021]) -> [SKIP][271] ([Intel XE#4596])
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-10/igt@kms_plane_multiple@2x-tiling-y.html
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-5/igt@kms_plane_multiple@2x-tiling-y.html

  * igt@kms_pm_backlight@brightness-with-dpms:
    - shard-bmg:          [SKIP][272] ([Intel XE#2938]) -> [SKIP][273] ([Intel XE#6703])
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-1/igt@kms_pm_backlight@brightness-with-dpms.html
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_pm_backlight@brightness-with-dpms.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf:
    - shard-bmg:          [SKIP][274] ([Intel XE#1406] / [Intel XE#1489]) -> [SKIP][275] ([Intel XE#1406] / [Intel XE#6703])
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-8/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr@psr-cursor-plane-move:
    - shard-bmg:          [SKIP][276] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) -> [SKIP][277] ([Intel XE#1406] / [Intel XE#6703]) +1 other test skip
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-9/igt@kms_psr@psr-cursor-plane-move.html
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_psr@psr-cursor-plane-move.html

  * igt@kms_sharpness_filter@filter-tap:
    - shard-bmg:          [SKIP][278] ([Intel XE#6503]) -> [SKIP][279] ([Intel XE#6703])
   [278]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-4/igt@kms_sharpness_filter@filter-tap.html
   [279]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@kms_sharpness_filter@filter-tap.html

  * igt@xe_eudebug@basic-vm-bind-ufence-reconnect:
    - shard-bmg:          [SKIP][280] ([Intel XE#4837]) -> [SKIP][281] ([Intel XE#6557] / [Intel XE#6703])
   [280]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-10/igt@xe_eudebug@basic-vm-bind-ufence-reconnect.html
   [281]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_eudebug@basic-vm-bind-ufence-reconnect.html

  * igt@xe_eudebug_online@pagefault-write-stress:
    - shard-bmg:          [SKIP][282] ([Intel XE#6665] / [Intel XE#6681]) -> [SKIP][283] ([Intel XE#6703])
   [282]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@xe_eudebug_online@pagefault-write-stress.html
   [283]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_eudebug_online@pagefault-write-stress.html

  * igt@xe_exec_basic@multigpu-no-exec-null-defer-bind:
    - shard-bmg:          [SKIP][284] ([Intel XE#2322]) -> [SKIP][285] ([Intel XE#6703])
   [284]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-8/igt@xe_exec_basic@multigpu-no-exec-null-defer-bind.html
   [285]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_exec_basic@multigpu-no-exec-null-defer-bind.html

  * igt@xe_exec_multi_queue@many-execs-close-fd-smem:
    - shard-bmg:          [SKIP][286] ([Intel XE#6874]) -> [SKIP][287] ([Intel XE#6703]) +1 other test skip
   [286]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-2/igt@xe_exec_multi_queue@many-execs-close-fd-smem.html
   [287]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_exec_multi_queue@many-execs-close-fd-smem.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-mmap-new-huge:
    - shard-bmg:          [SKIP][288] ([Intel XE#4943]) -> [SKIP][289] ([Intel XE#6703]) +2 other tests skip
   [288]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-2/igt@xe_exec_system_allocator@threads-shared-vm-many-mmap-new-huge.html
   [289]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_exec_system_allocator@threads-shared-vm-many-mmap-new-huge.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-fd-basic:
    - shard-bmg:          [SKIP][290] ([Intel XE#7138]) -> [SKIP][291] ([Intel XE#6703])
   [290]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-9/igt@xe_exec_threads@threads-multi-queue-mixed-fd-basic.html
   [291]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_exec_threads@threads-multi-queue-mixed-fd-basic.html

  * igt@xe_pxp@pxp-termination-key-update-post-suspend:
    - shard-bmg:          [SKIP][292] ([Intel XE#4733]) -> [SKIP][293] ([Intel XE#6703])
   [292]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-bmg-5/igt@xe_pxp@pxp-termination-key-update-post-suspend.html
   [293]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-bmg-2/igt@xe_pxp@pxp-termination-key-update-post-suspend.html

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

  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
  [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#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
  [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#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
  [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#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
  [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#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
  [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#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
  [Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
  [Intel XE#2501]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2501
  [Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
  [Intel XE#2833]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2833
  [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#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [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#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309
  [Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
  [Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3428
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#3433]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3433
  [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#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
  [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#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
  [Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
  [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
  [Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#4665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4665
  [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#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
  [Intel XE#5208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5208
  [Intel XE#5213]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5213
  [Intel XE#5299]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5299
  [Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
  [Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
  [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#6054]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6054
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
  [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#6557]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6557
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
  [Intel XE#6592]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6592
  [Intel XE#6599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6599
  [Intel XE#6645]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6645
  [Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
  [Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
  [Intel XE#6681]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6681
  [Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
  [Intel XE#6715]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6715
  [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
  [Intel XE#6901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6901
  [Intel XE#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#6968]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6968
  [Intel XE#6969]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6969
  [Intel XE#6973]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6973
  [Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
  [Intel XE#7006]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7006
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7086]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7086
  [Intel XE#7111]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7111
  [Intel XE#7130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7130
  [Intel XE#7131]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7131
  [Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
  [Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
  [Intel XE#7140]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7140
  [Intel XE#7166]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7166
  [Intel XE#7169]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7169
  [Intel XE#7174]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7174
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
  [Intel XE#7194]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7194
  [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
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979


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

  * IGT: IGT_8736 -> IGTPW_14492

  IGTPW_14492: 14492
  IGT_8736: 8736
  xe-4497-241994730989320c926da9f2d0a5ec80b48f993d: 241994730989320c926da9f2d0a5ec80b48f993d

== Logs ==

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

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

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

* ✓ i915.CI.Full: success for PCI driver helpers and xe-vfio-pci FLR improvement (rev3)
  2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
                   ` (9 preceding siblings ...)
  2026-02-05  5:02 ` ✗ Xe.CI.FULL: failure " Patchwork
@ 2026-02-05  8:13 ` Patchwork
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2026-02-05  8:13 UTC (permalink / raw)
  To: Marcin Bernatowicz; +Cc: igt-dev

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

== Series Details ==

Series: PCI driver helpers and xe-vfio-pci FLR improvement (rev3)
URL   : https://patchwork.freedesktop.org/series/160140/
State : success

== Summary ==

CI Bug Log - changes from IGT_8736_full -> IGTPW_14492_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

  No changes in participating hosts

New tests
---------

  New tests have been introduced between IGT_8736_full and IGTPW_14492_full:

### New IGT tests (15) ###

  * igt@gem_exec_balancer@2x-flip-vs-panning-interruptible:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@dsc-with-output-formats:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@evict-active-interruptible:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@fbc-2p-scndscrn-pri-indfb-draw-mmap-gtt:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@fbc-psr-sprite-blt:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@fbc-rgb565-draw-mmap-wc:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-gtt:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@freq-suspend:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@gem-execbuf-stress:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@invalid-get-prop:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@multigpu-basic-process:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@single-wait-all-for-submit-available-signaled:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_exec_balancer@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_cursor_crc@cursor-offscreen-256x85@pipe-a-dp-3:
    - Statuses : 1 pass(s)
    - Exec time: [2.57] s

  * igt@kms_cursor_crc@cursor-rapid-movement-128x128@pipe-a-dp-3:
    - Statuses : 1 pass(s)
    - Exec time: [0.49] s

  

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

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

### IGT changes ###

#### Issues hit ####

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

  * igt@device_reset@unbind-reset-rebind:
    - shard-dg1:          NOTRUN -> [ABORT][2] ([i915#11814] / [i915#11815])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-14/igt@device_reset@unbind-reset-rebind.html

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

  * igt@gem_busy@semaphore:
    - shard-dg2:          NOTRUN -> [SKIP][4] ([i915#3936])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-1/igt@gem_busy@semaphore.html
    - shard-dg1:          NOTRUN -> [SKIP][5] ([i915#3936])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-18/igt@gem_busy@semaphore.html

  * igt@gem_ccs@suspend-resume:
    - shard-dg2:          [PASS][6] -> [INCOMPLETE][7] ([i915#13356]) +1 other test incomplete
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg2-8/igt@gem_ccs@suspend-resume.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-4/igt@gem_ccs@suspend-resume.html
    - shard-tglu-1:       NOTRUN -> [SKIP][8] ([i915#9323])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@gem_ccs@suspend-resume.html

  * igt@gem_create@create-ext-set-pat:
    - shard-tglu:         NOTRUN -> [SKIP][9] ([i915#8562])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-2/igt@gem_create@create-ext-set-pat.html

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-rkl:          NOTRUN -> [SKIP][10] ([i915#280])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-3/igt@gem_ctx_sseu@invalid-sseu.html

  * igt@gem_eio@in-flight-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][11] ([i915#13390])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk2/igt@gem_eio@in-flight-suspend.html

  * igt@gem_eio@kms:
    - shard-rkl:          [PASS][12] -> [DMESG-WARN][13] ([i915#13363])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-5/igt@gem_eio@kms.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@gem_eio@kms.html
    - shard-tglu:         [PASS][14] -> [DMESG-WARN][15] ([i915#13363])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-tglu-4/igt@gem_eio@kms.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-5/igt@gem_eio@kms.html

  * igt@gem_exec_balancer@full:
    - shard-mtlp:         [PASS][16] -> [ABORT][17] ([i915#13562])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-mtlp-3/igt@gem_exec_balancer@full.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-2/igt@gem_exec_balancer@full.html

  * igt@gem_exec_balancer@invalid-bonds:
    - shard-dg2:          NOTRUN -> [SKIP][18] ([i915#4036])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-8/igt@gem_exec_balancer@invalid-bonds.html
    - shard-dg1:          NOTRUN -> [SKIP][19] ([i915#4036])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-16/igt@gem_exec_balancer@invalid-bonds.html
    - shard-mtlp:         NOTRUN -> [SKIP][20] ([i915#4036])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-8/igt@gem_exec_balancer@invalid-bonds.html

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

  * igt@gem_exec_balancer@parallel-keep-submit-fence:
    - shard-glk10:        NOTRUN -> [SKIP][22] +147 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk10/igt@gem_exec_balancer@parallel-keep-submit-fence.html

  * igt@gem_exec_balancer@parallel-ordering:
    - shard-rkl:          NOTRUN -> [SKIP][23] ([i915#4525]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@gem_exec_balancer@parallel-ordering.html

  * igt@gem_exec_reloc@basic-gtt-cpu-noreloc:
    - shard-rkl:          NOTRUN -> [SKIP][24] ([i915#14544] / [i915#3281]) +2 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-cpu-noreloc.html

  * igt@gem_exec_reloc@basic-write-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][25] ([i915#3281]) +3 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-6/igt@gem_exec_reloc@basic-write-cpu.html
    - shard-dg1:          NOTRUN -> [SKIP][26] ([i915#3281]) +3 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-13/igt@gem_exec_reloc@basic-write-cpu.html
    - shard-mtlp:         NOTRUN -> [SKIP][27] ([i915#3281]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-3/igt@gem_exec_reloc@basic-write-cpu.html

  * igt@gem_exec_reloc@basic-write-wc-noreloc:
    - shard-rkl:          NOTRUN -> [SKIP][28] ([i915#3281]) +8 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@gem_exec_reloc@basic-write-wc-noreloc.html

  * igt@gem_huc_copy@huc-copy:
    - shard-tglu:         NOTRUN -> [SKIP][29] ([i915#2190])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-9/igt@gem_huc_copy@huc-copy.html
    - shard-glk:          NOTRUN -> [SKIP][30] ([i915#2190])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk6/igt@gem_huc_copy@huc-copy.html

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

  * igt@gem_lmem_swapping@massive:
    - shard-glk:          NOTRUN -> [SKIP][32] ([i915#4613])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk5/igt@gem_lmem_swapping@massive.html

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

  * igt@gem_lmem_swapping@verify-random-ccs:
    - shard-dg1:          NOTRUN -> [SKIP][34] ([i915#12193])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-18/igt@gem_lmem_swapping@verify-random-ccs.html
    - shard-tglu:         NOTRUN -> [SKIP][35] ([i915#4613]) +1 other test skip
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-3/igt@gem_lmem_swapping@verify-random-ccs.html
    - shard-mtlp:         NOTRUN -> [SKIP][36] ([i915#4613])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-7/igt@gem_lmem_swapping@verify-random-ccs.html

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

  * igt@gem_mmap_gtt@basic-read-write-distinct:
    - shard-dg2:          NOTRUN -> [SKIP][38] ([i915#4077]) +5 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@gem_mmap_gtt@basic-read-write-distinct.html
    - shard-dg1:          NOTRUN -> [SKIP][39] ([i915#4077]) +5 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-14/igt@gem_mmap_gtt@basic-read-write-distinct.html

  * igt@gem_mmap_gtt@basic-short:
    - shard-mtlp:         NOTRUN -> [SKIP][40] ([i915#4077]) +2 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-2/igt@gem_mmap_gtt@basic-short.html

  * igt@gem_mmap_offset@clear-via-pagefault:
    - shard-mtlp:         [PASS][41] -> [ABORT][42] ([i915#14809]) +1 other test abort
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-mtlp-4/igt@gem_mmap_offset@clear-via-pagefault.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-6/igt@gem_mmap_offset@clear-via-pagefault.html

  * igt@gem_mmap_wc@close:
    - shard-dg2:          NOTRUN -> [SKIP][43] ([i915#4083]) +3 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-5/igt@gem_mmap_wc@close.html

  * igt@gem_mmap_wc@write-read:
    - shard-dg1:          NOTRUN -> [SKIP][44] ([i915#4083]) +3 other tests skip
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@gem_mmap_wc@write-read.html
    - shard-mtlp:         NOTRUN -> [SKIP][45] ([i915#4083]) +1 other test skip
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-4/igt@gem_mmap_wc@write-read.html

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

  * igt@gem_partial_pwrite_pread@write-display:
    - shard-dg2:          NOTRUN -> [SKIP][47] ([i915#3282]) +2 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-7/igt@gem_partial_pwrite_pread@write-display.html
    - shard-dg1:          NOTRUN -> [SKIP][48] ([i915#3282]) +3 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@gem_partial_pwrite_pread@write-display.html

  * igt@gem_pread@exhaustion:
    - shard-glk10:        NOTRUN -> [WARN][49] ([i915#2658])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk10/igt@gem_pread@exhaustion.html

  * igt@gem_pxp@protected-raw-src-copy-not-readible:
    - shard-dg2:          NOTRUN -> [SKIP][50] ([i915#4270]) +1 other test skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-8/igt@gem_pxp@protected-raw-src-copy-not-readible.html
    - shard-dg1:          NOTRUN -> [SKIP][51] ([i915#4270]) +1 other test skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-14/igt@gem_pxp@protected-raw-src-copy-not-readible.html

  * igt@gem_render_copy@y-tiled-ccs-to-y-tiled-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][52] ([i915#5190] / [i915#8428]) +2 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-5/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-ccs.html

  * igt@gem_render_copy@yf-tiled-ccs-to-y-tiled-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][53] ([i915#8428])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-2/igt@gem_render_copy@yf-tiled-ccs-to-y-tiled-ccs.html

  * igt@gem_set_tiling_vs_blt@untiled-to-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][54] ([i915#4079])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-7/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html
    - shard-dg1:          NOTRUN -> [SKIP][55] ([i915#4079])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-17/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html

  * igt@gem_set_tiling_vs_pwrite:
    - shard-rkl:          NOTRUN -> [SKIP][56] ([i915#3282]) +10 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@gem_set_tiling_vs_pwrite.html

  * igt@gem_softpin@noreloc-s3:
    - shard-rkl:          [PASS][57] -> [INCOMPLETE][58] ([i915#13809])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-5/igt@gem_softpin@noreloc-s3.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@gem_softpin@noreloc-s3.html

  * igt@gem_tiled_pread_basic@basic:
    - shard-rkl:          NOTRUN -> [SKIP][59] ([i915#15656])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@gem_tiled_pread_basic@basic.html

  * igt@gem_userptr_blits@readonly-pwrite-unsync:
    - shard-tglu:         NOTRUN -> [SKIP][60] ([i915#3297])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-5/igt@gem_userptr_blits@readonly-pwrite-unsync.html

  * igt@gem_userptr_blits@readonly-unsync:
    - shard-rkl:          NOTRUN -> [SKIP][61] ([i915#14544] / [i915#3297])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@gem_userptr_blits@readonly-unsync.html

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

  * igt@gem_workarounds@suspend-resume-context:
    - shard-rkl:          NOTRUN -> [ABORT][63] ([i915#15131])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@gem_workarounds@suspend-resume-context.html

  * igt@gem_workarounds@suspend-resume-fd:
    - shard-glk:          [PASS][64] -> [INCOMPLETE][65] ([i915#13356] / [i915#14586])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-glk5/igt@gem_workarounds@suspend-resume-fd.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk5/igt@gem_workarounds@suspend-resume-fd.html

  * igt@gen7_exec_parse@batch-without-end:
    - shard-dg2:          NOTRUN -> [SKIP][66] +2 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-7/igt@gen7_exec_parse@batch-without-end.html

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

  * igt@gen9_exec_parse@bb-start-far:
    - shard-rkl:          NOTRUN -> [SKIP][68] ([i915#2527]) +1 other test skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@gen9_exec_parse@bb-start-far.html

  * igt@gen9_exec_parse@unaligned-access:
    - shard-tglu-1:       NOTRUN -> [SKIP][69] ([i915#2527] / [i915#2856]) +1 other test skip
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@gen9_exec_parse@unaligned-access.html

  * igt@i915_module_load@fault-injection@intel_connector_register:
    - shard-tglu:         NOTRUN -> [ABORT][70] ([i915#15342]) +1 other test abort
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-3/igt@i915_module_load@fault-injection@intel_connector_register.html

  * igt@i915_module_load@fault-injection@uc_fw_rsa_data_create:
    - shard-tglu:         NOTRUN -> [SKIP][71] ([i915#15479]) +4 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-3/igt@i915_module_load@fault-injection@uc_fw_rsa_data_create.html

  * igt@i915_module_load@resize-bar:
    - shard-rkl:          NOTRUN -> [SKIP][72] ([i915#6412])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@i915_module_load@resize-bar.html

  * igt@i915_pm_freq_api@freq-reset:
    - shard-rkl:          NOTRUN -> [SKIP][73] ([i915#14544] / [i915#8399])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@i915_pm_freq_api@freq-reset.html

  * igt@i915_pm_freq_api@freq-suspend@gt0:
    - shard-dg2:          [PASS][74] -> [INCOMPLETE][75] ([i915#13356] / [i915#13820]) +1 other test incomplete
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg2-8/igt@i915_pm_freq_api@freq-suspend@gt0.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-1/igt@i915_pm_freq_api@freq-suspend@gt0.html

  * igt@i915_pm_rps@basic-api:
    - shard-dg1:          NOTRUN -> [SKIP][76] ([i915#11681] / [i915#6621])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-16/igt@i915_pm_rps@basic-api.html
    - shard-dg2:          NOTRUN -> [SKIP][77] ([i915#11681] / [i915#6621])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-3/igt@i915_pm_rps@basic-api.html

  * igt@i915_pm_rps@thresholds-idle-park:
    - shard-dg2:          NOTRUN -> [SKIP][78] ([i915#11681])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-6/igt@i915_pm_rps@thresholds-idle-park.html
    - shard-dg1:          NOTRUN -> [SKIP][79] ([i915#11681])
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@i915_pm_rps@thresholds-idle-park.html

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

  * igt@i915_query@query-topology-known-pci-ids:
    - shard-tglu-1:       NOTRUN -> [SKIP][81] +27 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@i915_query@query-topology-known-pci-ids.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
    - shard-rkl:          [PASS][82] -> [INCOMPLETE][83] ([i915#4817])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-8/igt@i915_suspend@fence-restore-tiled2untiled.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@i915_suspend@fence-restore-tiled2untiled.html

  * igt@i915_suspend@fence-restore-untiled:
    - shard-rkl:          NOTRUN -> [INCOMPLETE][84] ([i915#4817])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@i915_suspend@fence-restore-untiled.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-tglu-1:       NOTRUN -> [SKIP][85] ([i915#1769] / [i915#3555])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-0:
    - shard-rkl:          NOTRUN -> [SKIP][86] ([i915#5286]) +3 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-3/igt@kms_big_fb@4-tiled-32bpp-rotate-0.html

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

  * igt@kms_big_fb@4-tiled-addfb:
    - shard-rkl:          NOTRUN -> [SKIP][88] ([i915#14544] / [i915#5286]) +1 other test skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_big_fb@4-tiled-addfb.html

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

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-tglu-1:       NOTRUN -> [SKIP][90] ([i915#5286]) +1 other test skip
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html

  * igt@kms_big_fb@linear-8bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][91] ([i915#3638]) +3 other tests skip
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_big_fb@linear-8bpp-rotate-270.html
    - shard-dg1:          NOTRUN -> [SKIP][92] ([i915#3638]) +1 other test skip
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-16/igt@kms_big_fb@linear-8bpp-rotate-270.html

  * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-tglu-1:       NOTRUN -> [SKIP][93] ([i915#3828])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html

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

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-180:
    - shard-rkl:          NOTRUN -> [SKIP][95] +14 other tests skip
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html
    - shard-dg1:          NOTRUN -> [SKIP][96] ([i915#4538]) +1 other test skip
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html
    - shard-mtlp:         NOTRUN -> [SKIP][97] +1 other test skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-7/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][98] ([i915#10307] / [i915#10434] / [i915#6095])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-4/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs:
    - shard-tglu:         NOTRUN -> [SKIP][99] ([i915#12313])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-7/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2:
    - shard-glk:          NOTRUN -> [SKIP][100] +312 other tests skip
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/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-4-tiled-bmg-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][101] ([i915#12313])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc:
    - shard-tglu:         NOTRUN -> [SKIP][102] ([i915#6095]) +44 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-2/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc.html

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

  * igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-d-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][104] ([i915#6095]) +226 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-13/igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-d-hdmi-a-3.html

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

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

  * igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][107] ([i915#6095]) +4 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-1/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-b-edp-1.html

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

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][109] ([i915#10307] / [i915#6095]) +114 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-c-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [SKIP][110] ([i915#6095]) +24 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-c-hdmi-a-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][111] ([i915#14098] / [i915#6095]) +50 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][112] ([i915#14544] / [i915#6095]) +2 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][113] ([i915#14098] / [i915#14544] / [i915#6095]) +1 other test skip
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][114] ([i915#6095]) +76 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html

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

  * igt@kms_chamelium_color@ctm-max:
    - shard-rkl:          NOTRUN -> [SKIP][116] ([i915#14544]) +1 other test skip
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_chamelium_color@ctm-max.html

  * igt@kms_chamelium_edid@hdmi-edid-stress-resolution-non-4k:
    - shard-rkl:          NOTRUN -> [SKIP][117] ([i915#11151] / [i915#7828]) +5 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-non-4k.html

  * igt@kms_chamelium_frames@hdmi-crc-fast:
    - shard-tglu:         NOTRUN -> [SKIP][118] ([i915#11151] / [i915#7828]) +2 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-8/igt@kms_chamelium_frames@hdmi-crc-fast.html

  * igt@kms_chamelium_hpd@common-hpd-after-suspend:
    - shard-dg2:          NOTRUN -> [SKIP][119] ([i915#11151] / [i915#7828]) +2 other tests skip
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-5/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
    - shard-dg1:          NOTRUN -> [SKIP][120] ([i915#11151] / [i915#7828]) +2 other tests skip
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-18/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
    - shard-mtlp:         NOTRUN -> [SKIP][121] ([i915#11151] / [i915#7828])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-7/igt@kms_chamelium_hpd@common-hpd-after-suspend.html

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

  * igt@kms_chamelium_hpd@vga-hpd:
    - shard-rkl:          NOTRUN -> [SKIP][123] ([i915#11151] / [i915#14544] / [i915#7828])
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_chamelium_hpd@vga-hpd.html

  * igt@kms_color@deep-color:
    - shard-dg2:          [PASS][124] -> [SKIP][125] ([i915#12655] / [i915#3555])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg2-11/igt@kms_color@deep-color.html
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-4/igt@kms_color@deep-color.html

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

  * igt@kms_content_protection@atomic-hdcp14:
    - shard-tglu:         NOTRUN -> [SKIP][127] ([i915#6944])
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-3/igt@kms_content_protection@atomic-hdcp14.html

  * igt@kms_content_protection@content-type-change:
    - shard-rkl:          NOTRUN -> [SKIP][128] ([i915#14544] / [i915#6944] / [i915#9424])
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_content_protection@content-type-change.html

  * igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
    - shard-tglu-1:       NOTRUN -> [SKIP][129] ([i915#15330]) +1 other test skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html

  * igt@kms_content_protection@dp-mst-type-1-suspend-resume:
    - shard-dg2:          NOTRUN -> [SKIP][130] ([i915#15330])
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@kms_content_protection@dp-mst-type-1-suspend-resume.html
    - shard-dg1:          NOTRUN -> [SKIP][131] ([i915#15330])
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_content_protection@dp-mst-type-1-suspend-resume.html

  * igt@kms_content_protection@srm:
    - shard-tglu:         NOTRUN -> [SKIP][132] ([i915#6944] / [i915#7116] / [i915#7118])
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-8/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-offscreen-32x10:
    - shard-dg2:          NOTRUN -> [SKIP][133] ([i915#3555])
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-8/igt@kms_cursor_crc@cursor-offscreen-32x10.html
    - shard-dg1:          NOTRUN -> [SKIP][134] ([i915#3555]) +2 other tests skip
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-16/igt@kms_cursor_crc@cursor-offscreen-32x10.html

  * igt@kms_cursor_crc@cursor-onscreen-32x32:
    - shard-tglu-1:       NOTRUN -> [SKIP][135] ([i915#3555]) +1 other test skip
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-32x32.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-rkl:          NOTRUN -> [SKIP][136] ([i915#13049])
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-random-128x42:
    - shard-mtlp:         NOTRUN -> [SKIP][137] ([i915#8814])
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-4/igt@kms_cursor_crc@cursor-random-128x42.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-tglu-1:       NOTRUN -> [SKIP][138] ([i915#13049])
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_cursor_crc@cursor-random-512x170.html
    - shard-dg1:          NOTRUN -> [SKIP][139] ([i915#13049])
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-18/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x32:
    - shard-rkl:          NOTRUN -> [SKIP][140] ([i915#3555]) +3 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@kms_cursor_crc@cursor-rapid-movement-32x32.html

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

  * igt@kms_cursor_crc@cursor-rapid-movement-64x64:
    - shard-dg1:          [PASS][142] -> [DMESG-WARN][143] ([i915#4423]) +3 other tests dmesg-warn
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg1-13/igt@kms_cursor_crc@cursor-rapid-movement-64x64.html
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-17/igt@kms_cursor_crc@cursor-rapid-movement-64x64.html

  * igt@kms_cursor_crc@cursor-sliding-128x42:
    - shard-rkl:          [PASS][144] -> [FAIL][145] ([i915#13566])
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_cursor_crc@cursor-sliding-128x42.html
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_cursor_crc@cursor-sliding-128x42.html

  * igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [FAIL][146] ([i915#13566])
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1.html
    - shard-tglu:         [PASS][147] -> [FAIL][148] ([i915#13566]) +1 other test fail
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-tglu-8/igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1.html
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-7/igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic:
    - shard-dg2:          NOTRUN -> [SKIP][149] ([i915#13046] / [i915#5354])
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-7/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html

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

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-dg2:          NOTRUN -> [SKIP][151] ([i915#4103] / [i915#4213])
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
    - shard-dg1:          NOTRUN -> [SKIP][152] ([i915#4103] / [i915#4213])
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

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

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][154] ([i915#3804])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1.html

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

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-dg2:          [PASS][156] -> [SKIP][157] ([i915#13749])
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg2-11/igt@kms_dp_link_training@non-uhbr-sst.html
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-4/igt@kms_dp_link_training@non-uhbr-sst.html

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

  * igt@kms_dsc@dsc-with-bpc:
    - shard-dg2:          NOTRUN -> [SKIP][159] ([i915#3555] / [i915#3840])
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-7/igt@kms_dsc@dsc-with-bpc.html
    - shard-dg1:          NOTRUN -> [SKIP][160] ([i915#3555] / [i915#3840])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-17/igt@kms_dsc@dsc-with-bpc.html
    - shard-mtlp:         NOTRUN -> [SKIP][161] ([i915#3555] / [i915#3840])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-3/igt@kms_dsc@dsc-with-bpc.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-rkl:          NOTRUN -> [SKIP][162] ([i915#3555] / [i915#3840]) +1 other test skip
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_dsc@dsc-with-output-formats:
    - shard-tglu:         NOTRUN -> [SKIP][163] ([i915#3555] / [i915#3840]) +1 other test skip
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-7/igt@kms_dsc@dsc-with-output-formats.html

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

  * igt@kms_feature_discovery@dp-mst:
    - shard-dg2:          NOTRUN -> [SKIP][166] ([i915#9337])
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-8/igt@kms_feature_discovery@dp-mst.html
    - shard-dg1:          NOTRUN -> [SKIP][167] ([i915#9337])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-16/igt@kms_feature_discovery@dp-mst.html

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

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

  * igt@kms_flip@2x-flip-vs-absolute-wf_vblank:
    - shard-tglu:         NOTRUN -> [SKIP][170] ([i915#3637] / [i915#9934]) +2 other tests skip
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-10/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-dpms-on-nop:
    - shard-rkl:          NOTRUN -> [SKIP][171] ([i915#14544] / [i915#9934])
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_flip@2x-flip-vs-dpms-on-nop.html

  * igt@kms_flip@2x-flip-vs-panning-vs-hang:
    - shard-rkl:          NOTRUN -> [SKIP][172] ([i915#9934]) +1 other test skip
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@kms_flip@2x-flip-vs-panning-vs-hang.html

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

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

  * igt@kms_flip@2x-plain-flip-fb-recreate:
    - shard-dg2:          NOTRUN -> [SKIP][175] ([i915#9934]) +1 other test skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@kms_flip@2x-plain-flip-fb-recreate.html
    - shard-dg1:          NOTRUN -> [SKIP][176] ([i915#9934]) +1 other test skip
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_flip@2x-plain-flip-fb-recreate.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-glk10:        NOTRUN -> [INCOMPLETE][177] ([i915#12745] / [i915#4839])
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk10/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_flip@flip-vs-suspend@a-hdmi-a1:
    - shard-glk10:        NOTRUN -> [INCOMPLETE][178] ([i915#12745])
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk10/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
    - shard-tglu:         NOTRUN -> [SKIP][179] ([i915#15643]) +1 other test skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling:
    - shard-rkl:          NOTRUN -> [SKIP][180] ([i915#15643]) +1 other test skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-linear-to-32bpp-linear-reflect-x:
    - shard-dg2:          NOTRUN -> [SKIP][181] ([i915#15645])
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-7/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-32bpp-linear-reflect-x.html
    - shard-dg1:          NOTRUN -> [SKIP][182] ([i915#15645])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-32bpp-linear-reflect-x.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
    - shard-dg2:          NOTRUN -> [SKIP][183] ([i915#15643]) +1 other test skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html
    - shard-dg1:          NOTRUN -> [SKIP][184] ([i915#15643])
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-14/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
    - shard-dg2:          NOTRUN -> [SKIP][185] ([i915#15643] / [i915#5190])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-8/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
    - shard-mtlp:         NOTRUN -> [SKIP][186] ([i915#15643])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][187] ([i915#8708]) +5 other tests skip
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-16/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render:
    - shard-rkl:          NOTRUN -> [SKIP][188] ([i915#1825]) +34 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][189] ([i915#10056])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk2/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt:
    - shard-dg2:          NOTRUN -> [SKIP][190] ([i915#15102])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html
    - shard-rkl:          NOTRUN -> [SKIP][191] ([i915#15102]) +2 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html
    - shard-dg1:          NOTRUN -> [SKIP][192] ([i915#15102]) +1 other test skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-16/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][193] ([i915#10433] / [i915#15102] / [i915#3458])
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-rte:
    - shard-rkl:          NOTRUN -> [SKIP][194] ([i915#15102] / [i915#3023]) +16 other tests skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html
    - shard-dg1:          NOTRUN -> [SKIP][195] ([i915#15102] / [i915#3458]) +6 other tests skip
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-16/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html

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

  * igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][197] ([i915#15574]) +2 other tests skip
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-mmap-gtt.html
    - shard-snb:          NOTRUN -> [SKIP][198] +72 other tests skip
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-snb7/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-mmap-gtt.html
    - shard-mtlp:         NOTRUN -> [SKIP][199] ([i915#15574]) +1 other test skip
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-1/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-modesetfrombusy:
    - shard-tglu:         NOTRUN -> [SKIP][200] ([i915#15102]) +10 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-7/igt@kms_frontbuffer_tracking@fbcpsr-modesetfrombusy.html

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

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-pwrite:
    - shard-rkl:          NOTRUN -> [SKIP][202] ([i915#14544] / [i915#15102])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-tglu-1:       NOTRUN -> [SKIP][203] ([i915#15102]) +9 other tests skip
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt:
    - shard-dg2:          NOTRUN -> [SKIP][204] ([i915#15102] / [i915#3458]) +3 other tests skip
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite:
    - shard-rkl:          NOTRUN -> [SKIP][205] ([i915#14544] / [i915#15102] / [i915#3023])
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][206] ([i915#8708]) +4 other tests skip
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-3/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-render:
    - shard-mtlp:         NOTRUN -> [SKIP][207] ([i915#1825]) +3 other tests skip
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-1/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-wc:
    - shard-tglu:         NOTRUN -> [SKIP][208] +33 other tests skip
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-3/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt:
    - shard-dg2:          NOTRUN -> [SKIP][209] ([i915#5354]) +5 other tests skip
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-8/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][210] ([i915#8708])
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-blt:
    - shard-tglu-1:       NOTRUN -> [SKIP][211] ([i915#15574]) +2 other tests skip
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-render:
    - shard-dg2:          NOTRUN -> [SKIP][212] ([i915#15574]) +2 other tests skip
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-render.html
    - shard-rkl:          NOTRUN -> [SKIP][213] ([i915#15574]) +3 other tests skip
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-render.html
    - shard-tglu:         NOTRUN -> [SKIP][214] ([i915#15574]) +1 other test skip
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-2/igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-render.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-rkl:          NOTRUN -> [SKIP][215] ([i915#15460])
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@basic-max-non-joiner:
    - shard-tglu:         NOTRUN -> [SKIP][216] ([i915#13688])
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-6/igt@kms_joiner@basic-max-non-joiner.html
    - shard-mtlp:         NOTRUN -> [SKIP][217] ([i915#13688])
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-3/igt@kms_joiner@basic-max-non-joiner.html
    - shard-dg2:          NOTRUN -> [SKIP][218] ([i915#13688])
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-7/igt@kms_joiner@basic-max-non-joiner.html
    - shard-rkl:          NOTRUN -> [SKIP][219] ([i915#13688])
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_joiner@basic-max-non-joiner.html
    - shard-dg1:          NOTRUN -> [SKIP][220] ([i915#13688])
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-17/igt@kms_joiner@basic-max-non-joiner.html

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

  * igt@kms_pipe_b_c_ivb@enable-pipe-c-while-b-has-3-lanes:
    - shard-dg1:          NOTRUN -> [SKIP][222] +10 other tests skip
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_pipe_b_c_ivb@enable-pipe-c-while-b-has-3-lanes.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [INCOMPLETE][223] ([i915#12756] / [i915#13409] / [i915#13476]) +1 other test incomplete
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk9/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-1.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier:
    - shard-tglu:         NOTRUN -> [SKIP][224] ([i915#15608] / [i915#8825]) +5 other tests skip
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-4/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier.html

  * igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier@pipe-b-plane-7:
    - shard-tglu-1:       NOTRUN -> [SKIP][225] ([i915#15608] / [i915#8825]) +3 other tests skip
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier@pipe-b-plane-7.html

  * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier@pipe-a-plane-0:
    - shard-tglu-1:       NOTRUN -> [SKIP][226] ([i915#15608]) +19 other tests skip
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier@pipe-a-plane-0.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier:
    - shard-rkl:          NOTRUN -> [SKIP][227] ([i915#15608] / [i915#8825]) +5 other tests skip
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html
    - shard-dg1:          NOTRUN -> [SKIP][228] ([i915#15608] / [i915#8825]) +1 other test skip
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-16/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier@pipe-b-plane-0:
    - shard-rkl:          NOTRUN -> [SKIP][229] ([i915#15608]) +18 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier@pipe-b-plane-0.html

  * igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping:
    - shard-rkl:          NOTRUN -> [SKIP][230] ([i915#15608] / [i915#15609] / [i915#8825])
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping.html
    - shard-tglu-1:       NOTRUN -> [SKIP][231] ([i915#15608] / [i915#15609] / [i915#8825])
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-a-plane-5:
    - shard-rkl:          NOTRUN -> [SKIP][232] ([i915#15609]) +6 other tests skip
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-a-plane-5.html

  * igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-a-plane-7:
    - shard-tglu-1:       NOTRUN -> [SKIP][233] ([i915#15609])
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-a-plane-7.html

  * igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-b-plane-5:
    - shard-rkl:          NOTRUN -> [SKIP][234] ([i915#15609] / [i915#8825])
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-b-plane-5.html

  * igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-b-plane-7:
    - shard-tglu-1:       NOTRUN -> [SKIP][235] ([i915#15609] / [i915#8825])
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-b-plane-7.html

  * igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping:
    - shard-dg1:          NOTRUN -> [SKIP][236] ([i915#15608] / [i915#15609] / [i915#8825])
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping.html
    - shard-dg2:          NOTRUN -> [SKIP][237] ([i915#15608] / [i915#15609] / [i915#8825])
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-a-plane-0:
    - shard-dg2:          NOTRUN -> [SKIP][238] ([i915#15608]) +3 other tests skip
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-a-plane-0.html

  * igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-a-plane-5:
    - shard-dg2:          NOTRUN -> [SKIP][239] ([i915#15609])
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-a-plane-5.html

  * igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-a-plane-7:
    - shard-dg1:          NOTRUN -> [SKIP][240] ([i915#15609])
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-a-plane-7.html

  * igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-b-plane-3:
    - shard-dg1:          NOTRUN -> [SKIP][241] ([i915#15608]) +12 other tests skip
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-b-plane-3.html

  * igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-b-plane-5:
    - shard-dg2:          NOTRUN -> [SKIP][242] ([i915#15609] / [i915#8825])
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-b-plane-5.html

  * igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-b-plane-7:
    - shard-dg1:          NOTRUN -> [SKIP][243] ([i915#15609] / [i915#8825])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping@pipe-b-plane-7.html

  * igt@kms_plane@pixel-format-yf-tiled-modifier@pipe-a-plane-7:
    - shard-tglu:         NOTRUN -> [SKIP][244] ([i915#15608]) +22 other tests skip
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-4/igt@kms_plane@pixel-format-yf-tiled-modifier@pipe-a-plane-7.html

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

  * igt@kms_plane_multiple@2x-tiling-none:
    - shard-dg2:          NOTRUN -> [SKIP][246] ([i915#13958])
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@kms_plane_multiple@2x-tiling-none.html
    - shard-dg1:          NOTRUN -> [SKIP][247] ([i915#13958])
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_plane_multiple@2x-tiling-none.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c:
    - shard-tglu:         NOTRUN -> [SKIP][248] ([i915#15329]) +9 other tests skip
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5:
    - shard-mtlp:         NOTRUN -> [SKIP][249] ([i915#15329] / [i915#6953])
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-b:
    - shard-mtlp:         NOTRUN -> [SKIP][250] ([i915#15329]) +3 other tests skip
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-b.html

  * igt@kms_pm_backlight@bad-brightness:
    - shard-tglu-1:       NOTRUN -> [SKIP][251] ([i915#9812])
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_pm_backlight@bad-brightness.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][252] ([i915#5354]) +1 other test skip
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-tglu:         NOTRUN -> [SKIP][253] ([i915#9685])
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-6/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-rkl:          [PASS][254] -> [SKIP][255] ([i915#15073]) +2 other tests skip
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-5/igt@kms_pm_rpm@dpms-lpsp.html
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-dg2:          NOTRUN -> [SKIP][256] ([i915#15073])
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-7/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
    - shard-dg1:          NOTRUN -> [SKIP][257] ([i915#15073])
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-17/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-dg1:          [PASS][258] -> [SKIP][259] ([i915#15073]) +2 other tests skip
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg1-14/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-13/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_pm_rpm@package-g7:
    - shard-tglu-1:       NOTRUN -> [SKIP][260] ([i915#15403])
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_pm_rpm@package-g7.html

  * igt@kms_pm_rpm@system-suspend-idle:
    - shard-dg2:          [PASS][261] -> [INCOMPLETE][262] ([i915#14419])
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg2-4/igt@kms_pm_rpm@system-suspend-idle.html
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-6/igt@kms_pm_rpm@system-suspend-idle.html

  * igt@kms_psr2_sf@fbc-pr-overlay-primary-update-sf-dmg-area:
    - shard-rkl:          NOTRUN -> [SKIP][263] ([i915#11520]) +9 other tests skip
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@kms_psr2_sf@fbc-pr-overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area:
    - shard-glk:          NOTRUN -> [SKIP][264] ([i915#11520]) +7 other tests skip
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk2/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html
    - shard-dg2:          NOTRUN -> [SKIP][265] ([i915#11520]) +2 other tests skip
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-6/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html
    - shard-snb:          NOTRUN -> [SKIP][266] ([i915#11520]) +1 other test skip
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-snb4/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html
    - shard-tglu:         NOTRUN -> [SKIP][267] ([i915#11520]) +3 other tests skip
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-2/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html
    - shard-mtlp:         NOTRUN -> [SKIP][268] ([i915#12316])
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-3/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf:
    - shard-glk10:        NOTRUN -> [SKIP][269] ([i915#11520]) +1 other test skip
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk10/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf:
    - shard-tglu-1:       NOTRUN -> [SKIP][270] ([i915#11520]) +3 other tests skip
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
    - shard-dg1:          NOTRUN -> [SKIP][271] ([i915#11520]) +2 other tests skip
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-13/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-dg2:          NOTRUN -> [SKIP][272] ([i915#9683])
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-1/igt@kms_psr2_su@frontbuffer-xrgb8888.html
    - shard-tglu-1:       NOTRUN -> [SKIP][273] ([i915#9683])
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_psr2_su@frontbuffer-xrgb8888.html
    - shard-dg1:          NOTRUN -> [SKIP][274] ([i915#9683])
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-18/igt@kms_psr2_su@frontbuffer-xrgb8888.html
    - shard-mtlp:         NOTRUN -> [SKIP][275] ([i915#4348])
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-4/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-rkl:          NOTRUN -> [SKIP][276] ([i915#9683]) +1 other test skip
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-psr-basic:
    - shard-dg2:          NOTRUN -> [SKIP][277] ([i915#1072] / [i915#9732]) +9 other tests skip
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-6/igt@kms_psr@fbc-psr-basic.html

  * igt@kms_psr@fbc-psr-cursor-plane-onoff:
    - shard-mtlp:         NOTRUN -> [SKIP][278] ([i915#9688]) +3 other tests skip
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-4/igt@kms_psr@fbc-psr-cursor-plane-onoff.html

  * igt@kms_psr@pr-cursor-plane-onoff:
    - shard-dg1:          NOTRUN -> [SKIP][279] ([i915#1072] / [i915#9732]) +9 other tests skip
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@kms_psr@pr-cursor-plane-onoff.html

  * igt@kms_psr@psr-sprite-mmap-cpu:
    - shard-tglu-1:       NOTRUN -> [SKIP][280] ([i915#9732]) +9 other tests skip
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_psr@psr-sprite-mmap-cpu.html

  * igt@kms_psr@psr2-cursor-plane-onoff:
    - shard-tglu:         NOTRUN -> [SKIP][281] ([i915#9732]) +12 other tests skip
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-7/igt@kms_psr@psr2-cursor-plane-onoff.html

  * igt@kms_psr@psr2-primary-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][282] ([i915#1072] / [i915#9732]) +20 other tests skip
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@kms_psr@psr2-primary-mmap-gtt.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-rkl:          NOTRUN -> [SKIP][283] ([i915#14544] / [i915#5289])
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
    - shard-dg1:          NOTRUN -> [SKIP][284] ([i915#5289])
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-17/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
    - shard-tglu:         NOTRUN -> [SKIP][285] ([i915#5289])
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-4/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
    - shard-mtlp:         NOTRUN -> [SKIP][286] ([i915#5289])
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
    - shard-dg2:          NOTRUN -> [SKIP][287] ([i915#5190])
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-rkl:          NOTRUN -> [SKIP][288] ([i915#5289]) +2 other tests skip
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_rotation_crc@sprite-rotation-90:
    - shard-dg2:          NOTRUN -> [SKIP][289] ([i915#12755])
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-5/igt@kms_rotation_crc@sprite-rotation-90.html

  * igt@kms_scaling_modes@scaling-mode-full-aspect:
    - shard-tglu:         NOTRUN -> [SKIP][290] ([i915#3555]) +2 other tests skip
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-10/igt@kms_scaling_modes@scaling-mode-full-aspect.html

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

  * igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2:
    - shard-glk:          NOTRUN -> [INCOMPLETE][292] ([i915#12276])
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk5/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2.html

  * igt@kms_vrr@flip-basic:
    - shard-dg2:          NOTRUN -> [SKIP][293] ([i915#15243] / [i915#3555]) +1 other test skip
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-7/igt@kms_vrr@flip-basic.html

  * igt@kms_vrr@flipline:
    - shard-mtlp:         NOTRUN -> [SKIP][294] ([i915#3555] / [i915#8808])
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-6/igt@kms_vrr@flipline.html
    - shard-rkl:          NOTRUN -> [SKIP][295] ([i915#15243] / [i915#3555])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@kms_vrr@flipline.html

  * igt@kms_vrr@max-min:
    - shard-rkl:          NOTRUN -> [SKIP][296] ([i915#9906])
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_vrr@max-min.html

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - shard-dg2:          NOTRUN -> [SKIP][297] ([i915#9906])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-4/igt@kms_vrr@seamless-rr-switch-vrr.html
    - shard-tglu-1:       NOTRUN -> [SKIP][298] ([i915#9906])
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@kms_vrr@seamless-rr-switch-vrr.html
    - shard-dg1:          NOTRUN -> [SKIP][299] ([i915#9906])
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-18/igt@kms_vrr@seamless-rr-switch-vrr.html

  * igt@perf@unprivileged-single-ctx-counters:
    - shard-rkl:          NOTRUN -> [SKIP][300] ([i915#2433])
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@perf@unprivileged-single-ctx-counters.html

  * igt@perf_pmu@event-wait:
    - shard-mtlp:         NOTRUN -> [SKIP][301] ([i915#8807])
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-6/igt@perf_pmu@event-wait.html

  * igt@perf_pmu@event-wait@rcs0:
    - shard-mtlp:         NOTRUN -> [SKIP][302] ([i915#3555] / [i915#8807])
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-6/igt@perf_pmu@event-wait@rcs0.html

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

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-dg2:          NOTRUN -> [SKIP][304] ([i915#9917])
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@sriov_basic@enable-vfs-autoprobe-off.html
    - shard-dg1:          NOTRUN -> [SKIP][305] ([i915#9917])
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-12/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-7:
    - shard-tglu-1:       NOTRUN -> [FAIL][306] ([i915#12910]) +9 other tests fail
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-1/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-7.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
    - shard-tglu:         NOTRUN -> [FAIL][307] ([i915#12910])
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-4/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html

  
#### Possible fixes ####

  * igt@gem_eio@hibernate:
    - shard-rkl:          [ABORT][308] ([i915#7975]) -> [PASS][309]
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-1/igt@gem_eio@hibernate.html
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@gem_eio@hibernate.html

  * igt@gem_exec_suspend@basic-s3:
    - shard-rkl:          [INCOMPLETE][310] ([i915#13356]) -> [PASS][311] +1 other test pass
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@gem_exec_suspend@basic-s3.html
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-3/igt@gem_exec_suspend@basic-s3.html

  * igt@i915_pm_rc6_residency@rc6-fence:
    - shard-tglu:         [WARN][312] ([i915#13790] / [i915#2681]) -> [PASS][313] +1 other test pass
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-tglu-7/igt@i915_pm_rc6_residency@rc6-fence.html
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-6/igt@i915_pm_rc6_residency@rc6-fence.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-mtlp:         [FAIL][314] ([i915#5138]) -> [PASS][315] +1 other test pass
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-mtlp-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-dg1:          [DMESG-WARN][316] ([i915#4423]) -> [PASS][317] +2 other tests pass
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg1-12/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-14/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_color@deep-color:
    - shard-rkl:          [SKIP][318] ([i915#12655] / [i915#3555]) -> [PASS][319]
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-4/igt@kms_color@deep-color.html
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@kms_color@deep-color.html

  * igt@kms_cursor_crc@cursor-random-256x85:
    - shard-rkl:          [FAIL][320] ([i915#13566]) -> [PASS][321] +2 other tests pass
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-2/igt@kms_cursor_crc@cursor-random-256x85.html
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_cursor_crc@cursor-random-256x85.html

  * igt@kms_cursor_crc@cursor-sliding-64x21@pipe-a-hdmi-a-1:
    - shard-tglu:         [FAIL][322] ([i915#13566]) -> [PASS][323] +1 other test pass
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-tglu-5/igt@kms_cursor_crc@cursor-sliding-64x21@pipe-a-hdmi-a-1.html
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-tglu-10/igt@kms_cursor_crc@cursor-sliding-64x21@pipe-a-hdmi-a-1.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-dg2:          [FAIL][324] ([i915#4767]) -> [PASS][325]
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg2-5/igt@kms_fbcon_fbt@fbc-suspend.html
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible:
    - shard-snb:          [TIMEOUT][326] ([i915#14033] / [i915#14350]) -> [PASS][327]
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible.html
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-snb7/igt@kms_flip@2x-flip-vs-suspend-interruptible.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1:
    - shard-snb:          [TIMEOUT][328] ([i915#14033]) -> [PASS][329]
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-snb7/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - shard-mtlp:         [SKIP][330] -> [PASS][331] +1 other test pass
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-mtlp-1/igt@kms_force_connector_basic@prune-stale-modes.html
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-8/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-rkl:          [SKIP][332] ([i915#3555] / [i915#8228]) -> [PASS][333] +1 other test pass
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@kms_hdr@invalid-metadata-sizes.html
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a:
    - shard-rkl:          [INCOMPLETE][334] ([i915#14412]) -> [PASS][335] +1 other test pass
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-3/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a.html
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a.html

  * igt@kms_plane_multiple@tiling-4@pipe-a-edp-1:
    - shard-mtlp:         [FAIL][336] -> [PASS][337] +1 other test pass
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-mtlp-6/igt@kms_plane_multiple@tiling-4@pipe-a-edp-1.html
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-mtlp-8/igt@kms_plane_multiple@tiling-4@pipe-a-edp-1.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-dg1:          [SKIP][338] ([i915#15073]) -> [PASS][339]
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg1-13/igt@kms_pm_rpm@dpms-lpsp.html
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-14/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-rkl:          [SKIP][340] ([i915#15073]) -> [PASS][341] +1 other test pass
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-4/igt@kms_pm_rpm@modeset-lpsp.html
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-rkl:          [SKIP][342] ([i915#14544] / [i915#15073]) -> [PASS][343]
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-1:
    - shard-glk:          [INCOMPLETE][344] ([i915#12276]) -> [PASS][345]
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-glk5/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-1.html
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-glk5/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-1.html

  * igt@kms_vrr@negative-basic:
    - shard-dg2:          [SKIP][346] ([i915#3555] / [i915#9906]) -> [PASS][347]
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg2-1/igt@kms_vrr@negative-basic.html
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@kms_vrr@negative-basic.html

  * igt@perf_pmu@rc6-suspend:
    - shard-rkl:          [ABORT][348] ([i915#15131]) -> [PASS][349]
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-1/igt@perf_pmu@rc6-suspend.html
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-3/igt@perf_pmu@rc6-suspend.html

  
#### Warnings ####

  * igt@api_intel_bb@blit-reloc-keep-cache:
    - shard-rkl:          [SKIP][350] ([i915#14544] / [i915#8411]) -> [SKIP][351] ([i915#8411])
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@api_intel_bb@blit-reloc-keep-cache.html
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@api_intel_bb@blit-reloc-keep-cache.html

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-rkl:          [SKIP][352] ([i915#3555] / [i915#9323]) -> [SKIP][353] ([i915#14544] / [i915#3555] / [i915#9323]) +1 other test skip
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-2/igt@gem_ccs@ctrl-surf-copy.html
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@gem_ccs@ctrl-surf-copy.html

  * igt@gem_ccs@large-ctrl-surf-copy:
    - shard-snb:          [INCOMPLETE][354] -> [SKIP][355]
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-snb5/igt@gem_ccs@large-ctrl-surf-copy.html
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-snb1/igt@gem_ccs@large-ctrl-surf-copy.html

  * igt@gem_ccs@suspend-resume:
    - shard-rkl:          [SKIP][356] ([i915#14544] / [i915#9323]) -> [SKIP][357] ([i915#9323]) +1 other test skip
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@gem_ccs@suspend-resume.html
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@gem_ccs@suspend-resume.html

  * igt@gem_exec_balancer@parallel-balancer:
    - shard-rkl:          [SKIP][358] ([i915#4525]) -> [SKIP][359] ([i915#14544] / [i915#4525]) +1 other test skip
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-3/igt@gem_exec_balancer@parallel-balancer.html
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@gem_exec_balancer@parallel-balancer.html

  * igt@gem_exec_reloc@basic-wc-active:
    - shard-rkl:          [SKIP][360] ([i915#3281]) -> [SKIP][361] ([i915#14544] / [i915#3281]) +1 other test skip
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@gem_exec_reloc@basic-wc-active.html
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@gem_exec_reloc@basic-wc-active.html

  * igt@gem_exec_reloc@basic-write-read-active:
    - shard-rkl:          [SKIP][362] ([i915#14544] / [i915#3281]) -> [SKIP][363] ([i915#3281]) +4 other tests skip
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@gem_exec_reloc@basic-write-read-active.html
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@gem_exec_reloc@basic-write-read-active.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - shard-rkl:          [SKIP][364] ([i915#14544] / [i915#4613]) -> [SKIP][365] ([i915#4613])
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@gem_lmem_swapping@parallel-random-engines.html
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_lmem_swapping@verify-random:
    - shard-rkl:          [SKIP][366] ([i915#4613]) -> [SKIP][367] ([i915#14544] / [i915#4613]) +1 other test skip
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-2/igt@gem_lmem_swapping@verify-random.html
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@gem_lmem_swapping@verify-random.html

  * igt@gem_partial_pwrite_pread@reads-uncached:
    - shard-rkl:          [SKIP][368] ([i915#14544] / [i915#3282]) -> [SKIP][369] ([i915#3282])
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@gem_partial_pwrite_pread@reads-uncached.html
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@gem_partial_pwrite_pread@reads-uncached.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - shard-rkl:          [SKIP][370] ([i915#14544] / [i915#3297]) -> [SKIP][371] ([i915#3297])
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@gem_userptr_blits@dmabuf-unsync.html
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-3/igt@gem_userptr_blits@dmabuf-unsync.html

  * igt@gen9_exec_parse@basic-rejected-ctx-param:
    - shard-rkl:          [SKIP][372] ([i915#14544] / [i915#2527]) -> [SKIP][373] ([i915#2527])
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@gen9_exec_parse@basic-rejected-ctx-param.html
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@gen9_exec_parse@basic-rejected-ctx-param.html

  * igt@gen9_exec_parse@bb-chained:
    - shard-rkl:          [SKIP][374] ([i915#2527]) -> [SKIP][375] ([i915#14544] / [i915#2527])
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@gen9_exec_parse@bb-chained.html
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@gen9_exec_parse@bb-chained.html

  * igt@i915_pm_rc6_residency@media-rc6-accuracy:
    - shard-rkl:          [SKIP][376] -> [SKIP][377] ([i915#14544]) +6 other tests skip
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-3/igt@i915_pm_rc6_residency@media-rc6-accuracy.html
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@i915_pm_rc6_residency@media-rc6-accuracy.html

  * igt@i915_query@test-query-geometry-subslices:
    - shard-rkl:          [SKIP][378] ([i915#5723]) -> [SKIP][379] ([i915#14544] / [i915#5723])
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-5/igt@i915_query@test-query-geometry-subslices.html
   [379]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@i915_query@test-query-geometry-subslices.html

  * igt@i915_suspend@sysfs-reader:
    - shard-rkl:          [INCOMPLETE][380] ([i915#4817]) -> [ABORT][381] ([i915#15140])
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@i915_suspend@sysfs-reader.html
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@i915_suspend@sysfs-reader.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-rkl:          [SKIP][382] ([i915#14544] / [i915#5286]) -> [SKIP][383] ([i915#5286]) +2 other tests skip
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-270:
    - shard-rkl:          [SKIP][384] ([i915#3638]) -> [SKIP][385] ([i915#14544] / [i915#3638])
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-5/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-270:
    - shard-dg1:          [SKIP][386] ([i915#3638] / [i915#4423]) -> [SKIP][387] ([i915#3638])
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg1-12/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-13/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html

  * igt@kms_ccs@bad-rotation-90-yf-tiled-ccs:
    - shard-rkl:          [SKIP][388] ([i915#14098] / [i915#6095]) -> [SKIP][389] ([i915#14098] / [i915#14544] / [i915#6095]) +7 other tests skip
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@kms_ccs@bad-rotation-90-yf-tiled-ccs.html
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_ccs@bad-rotation-90-yf-tiled-ccs.html

  * igt@kms_ccs@bad-rotation-90-yf-tiled-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][390] ([i915#6095]) -> [SKIP][391] ([i915#14544] / [i915#6095]) +5 other tests skip
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@kms_ccs@bad-rotation-90-yf-tiled-ccs@pipe-b-hdmi-a-2.html
   [391]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_ccs@bad-rotation-90-yf-tiled-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2:
    - shard-rkl:          [SKIP][392] ([i915#14544] / [i915#6095]) -> [SKIP][393] ([i915#6095]) +6 other tests skip
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2.html
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-3/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2:
    - shard-rkl:          [SKIP][394] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][395] ([i915#14098] / [i915#6095]) +12 other tests skip
   [394]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2.html
   [395]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-3/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_chamelium_frames@dp-crc-multiple:
    - shard-rkl:          [SKIP][396] ([i915#11151] / [i915#7828]) -> [SKIP][397] ([i915#11151] / [i915#14544] / [i915#7828]) +1 other test skip
   [396]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@kms_chamelium_frames@dp-crc-multiple.html
   [397]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_chamelium_frames@dp-crc-multiple.html

  * igt@kms_chamelium_frames@hdmi-crc-fast:
    - shard-rkl:          [SKIP][398] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][399] ([i915#11151] / [i915#7828]) +3 other tests skip
   [398]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_chamelium_frames@hdmi-crc-fast.html
   [399]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_chamelium_frames@hdmi-crc-fast.html

  * igt@kms_content_protection@atomic-dpms-hdcp14:
    - shard-rkl:          [SKIP][400] ([i915#14544] / [i915#6944]) -> [SKIP][401] ([i915#6944]) +1 other test skip
   [400]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_content_protection@atomic-dpms-hdcp14.html
   [401]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@kms_content_protection@atomic-dpms-hdcp14.html

  * igt@kms_content_protection@legacy:
    - shard-dg2:          [FAIL][402] ([i915#7173]) -> [SKIP][403] ([i915#6944] / [i915#7118] / [i915#9424])
   [402]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg2-11/igt@kms_content_protection@legacy.html
   [403]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-3/igt@kms_content_protection@legacy.html
    - shard-rkl:          [SKIP][404] ([i915#6944] / [i915#7118] / [i915#9424]) -> [SKIP][405] ([i915#14544] / [i915#6944] / [i915#7118] / [i915#9424])
   [404]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-2/igt@kms_content_protection@legacy.html
   [405]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@lic-type-1:
    - shard-rkl:          [SKIP][406] ([i915#14544] / [i915#6944] / [i915#9424]) -> [SKIP][407] ([i915#6944] / [i915#9424])
   [406]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_content_protection@lic-type-1.html
   [407]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@kms_content_protection@lic-type-1.html

  * igt@kms_cursor_crc@cursor-onscreen-32x10:
    - shard-rkl:          [SKIP][408] ([i915#14544] / [i915#3555]) -> [SKIP][409] ([i915#3555])
   [408]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-32x10.html
   [409]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@kms_cursor_crc@cursor-onscreen-32x10.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-rkl:          [SKIP][410] ([i915#13049] / [i915#14544]) -> [SKIP][411] ([i915#13049])
   [410]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html
   [411]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-legacy:
    - shard-rkl:          [SKIP][412] ([i915#14544]) -> [SKIP][413] +8 other tests skip
   [412]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html
   [413]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-rkl:          [SKIP][414] ([i915#13691] / [i915#14544]) -> [SKIP][415] ([i915#13691])
   [414]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_display_modes@extended-mode-basic.html
   [415]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc:
    - shard-rkl:          [SKIP][416] ([i915#14544] / [i915#3555] / [i915#3804]) -> [SKIP][417] ([i915#3555] / [i915#3804])
   [416]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
   [417]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-rkl:          [SKIP][418] ([i915#14544] / [i915#3555] / [i915#3840]) -> [SKIP][419] ([i915#3555] / [i915#3840])
   [418]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_dsc@dsc-with-formats.html
   [419]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_flip@2x-blocking-wf_vblank:
    - shard-rkl:          [SKIP][420] ([i915#14544] / [i915#9934]) -> [SKIP][421] ([i915#9934]) +4 other tests skip
   [420]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_flip@2x-blocking-wf_vblank.html
   [421]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-3/igt@kms_flip@2x-blocking-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-expired-vblank:
    - shard-rkl:          [SKIP][422] ([i915#9934]) -> [SKIP][423] ([i915#14544] / [i915#9934]) +1 other test skip
   [422]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@kms_flip@2x-flip-vs-expired-vblank.html
   [423]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_flip@2x-flip-vs-expired-vblank.html

  * igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-render:
    - shard-rkl:          [SKIP][424] ([i915#14544] / [i915#15574]) -> [SKIP][425] ([i915#15574])
   [424]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-render.html
   [425]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-1/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-pwrite:
    - shard-rkl:          [SKIP][426] ([i915#15102]) -> [SKIP][427] ([i915#14544] / [i915#15102]) +1 other test skip
   [426]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-pwrite.html
   [427]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-render:
    - shard-rkl:          [SKIP][428] ([i915#14544] / [i915#15102]) -> [SKIP][429] ([i915#15102])
   [428]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-render.html
   [429]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move:
    - shard-rkl:          [SKIP][430] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][431] ([i915#15102] / [i915#3023]) +7 other tests skip
   [430]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html
   [431]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render:
    - shard-dg1:          [SKIP][432] -> [SKIP][433] ([i915#4423])
   [432]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg1-13/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html
   [433]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-17/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@pipe-fbc-rte:
    - shard-rkl:          [SKIP][434] ([i915#14544] / [i915#9766]) -> [SKIP][435] ([i915#9766])
   [434]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html
   [435]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move:
    - shard-rkl:          [SKIP][436] ([i915#15102] / [i915#3023]) -> [SKIP][437] ([i915#14544] / [i915#15102] / [i915#3023]) +3 other tests skip
   [436]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
   [437]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render:
    - shard-rkl:          [SKIP][438] ([i915#14544] / [i915#1825]) -> [SKIP][439] ([i915#1825]) +17 other tests skip
   [438]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render.html
   [439]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-dg1:          [SKIP][440] ([i915#8708]) -> [SKIP][441] ([i915#4423] / [i915#8708])
   [440]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc.html
   [441]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-17/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-blt:
    - shard-rkl:          [SKIP][442] ([i915#1825]) -> [SKIP][443] ([i915#14544] / [i915#1825]) +8 other tests skip
   [442]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-blt.html
   [443]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-cpu:
    - shard-dg1:          [SKIP][444] ([i915#4423]) -> [SKIP][445]
   [444]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg1-12/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-cpu.html
   [445]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-mmap-wc:
    - shard-dg1:          [SKIP][446] ([i915#15574] / [i915#4423]) -> [SKIP][447] ([i915#15574])
   [446]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg1-12/igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-mmap-wc.html
   [447]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
    - shard-dg2:          [SKIP][448] ([i915#10433] / [i915#15102] / [i915#3458]) -> [SKIP][449] ([i915#15102] / [i915#3458]) +2 other tests skip
   [448]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
   [449]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg2-11/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-rkl:          [SKIP][450] ([i915#12713]) -> [SKIP][451] ([i915#13331] / [i915#14544])
   [450]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-4/igt@kms_hdr@brightness-with-hdr.html
   [451]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_panel_fitting@legacy:
    - shard-rkl:          [SKIP][452] ([i915#14544] / [i915#6301]) -> [SKIP][453] ([i915#6301])
   [452]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_panel_fitting@legacy.html
   [453]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_stress@stress-xrgb8888-4tiled:
    - shard-rkl:          [SKIP][454] ([i915#14544] / [i915#14712]) -> [SKIP][455] ([i915#14712])
   [454]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_pipe_stress@stress-xrgb8888-4tiled.html
   [455]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_pipe_stress@stress-xrgb8888-4tiled.html

  * igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier-source-clamping:
    - shard-rkl:          [SKIP][456] ([i915#15608] / [i915#15609] / [i915#8825]) -> [SKIP][457] ([i915#14544] / [i915#15608] / [i915#15609] / [i915#8825]) +1 other test skip
   [456]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-4/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier-source-clamping.html
   [457]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier:
    - shard-rkl:          [SKIP][458] ([i915#14544] / [i915#15608] / [i915#8825]) -> [SKIP][459] ([i915#15608] / [i915#8825]) +1 other test skip
   [458]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier.html
   [459]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier@pipe-a-plane-0:
    - shard-rkl:          [SKIP][460] ([i915#14544] / [i915#15608]) -> [SKIP][461] ([i915#15608])
   [460]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier@pipe-a-plane-0.html
   [461]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier@pipe-a-plane-0.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier@pipe-a-plane-0:
    - shard-rkl:          [SKIP][462] ([i915#15608]) -> [SKIP][463] ([i915#14544] / [i915#15608]) +2 other tests skip
   [462]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-2/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier@pipe-a-plane-0.html
   [463]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier@pipe-a-plane-0.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier@pipe-b-plane-5:
    - shard-rkl:          [SKIP][464] ([i915#15608] / [i915#8825]) -> [SKIP][465] ([i915#14544] / [i915#15608] / [i915#8825]) +1 other test skip
   [464]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-2/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier@pipe-b-plane-5.html
   [465]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier@pipe-b-plane-5.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping@pipe-b-plane-5:
    - shard-rkl:          [SKIP][466] ([i915#15609] / [i915#8825]) -> [SKIP][467] ([i915#14544] / [i915#15609] / [i915#8825]) +1 other test skip
   [466]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping@pipe-b-plane-5.html
   [467]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping@pipe-b-plane-5.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b:
    - shard-rkl:          [SKIP][468] ([i915#14544] / [i915#15329]) -> [SKIP][469] ([i915#15329]) +3 other tests skip
   [468]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html
   [469]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
    - shard-rkl:          [SKIP][470] ([i915#15329] / [i915#3555]) -> [SKIP][471] ([i915#14544] / [i915#15329] / [i915#3555])
   [470]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html
   [471]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b:
    - shard-rkl:          [SKIP][472] ([i915#15329]) -> [SKIP][473] ([i915#14544] / [i915#15329]) +2 other tests skip
   [472]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html
   [473]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-rkl:          [SKIP][474] ([i915#14544] / [i915#3828]) -> [SKIP][475] ([i915#3828])
   [474]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_pm_dc@dc5-retention-flops.html
   [475]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-7/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-rkl:          [SKIP][476] ([i915#15073]) -> [SKIP][477] ([i915#14544] / [i915#15073])
   [476]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [477]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-dg1:          [SKIP][478] ([i915#11520]) -> [SKIP][479] ([i915#11520] / [i915#4423])
   [478]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-dg1-17/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf.html
   [479]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-dg1-17/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area:
    - shard-rkl:          [SKIP][480] ([i915#11520] / [i915#14544]) -> [SKIP][481] ([i915#11520]) +2 other tests skip
   [480]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area.html
   [481]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-2/igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf:
    - shard-rkl:          [SKIP][482] ([i915#11520]) -> [SKIP][483] ([i915#11520] / [i915#14544]) +1 other test skip
   [482]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-2/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf.html
   [483]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-rkl:          [SKIP][484] ([i915#9683]) -> [SKIP][485] ([i915#14544] / [i915#9683])
   [484]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-3/igt@kms_psr2_su@page_flip-p010.html
   [485]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_psr2_su@page_flip-p010.html

  * igt@kms_psr@fbc-psr-cursor-blt:
    - shard-rkl:          [SKIP][486] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][487] ([i915#1072] / [i915#9732]) +9 other tests skip
   [486]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_psr@fbc-psr-cursor-blt.html
   [487]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-3/igt@kms_psr@fbc-psr-cursor-blt.html

  * igt@kms_psr@psr-sprite-render:
    - shard-rkl:          [SKIP][488] ([i915#1072] / [i915#9732]) -> [SKIP][489] ([i915#1072] / [i915#14544] / [i915#9732]) +5 other tests skip
   [488]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-4/igt@kms_psr@psr-sprite-render.html
   [489]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_psr@psr-sprite-render.html

  * igt@kms_scaling_modes@scaling-mode-center:
    - shard-rkl:          [SKIP][490] ([i915#3555]) -> [SKIP][491] ([i915#14544] / [i915#3555]) +1 other test skip
   [490]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-7/igt@kms_scaling_modes@scaling-mode-center.html
   [491]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-6/igt@kms_scaling_modes@scaling-mode-center.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-rkl:          [SKIP][492] ([i915#14544] / [i915#8623]) -> [SKIP][493] ([i915#8623])
   [492]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@kms_tiled_display@basic-test-pattern.html
   [493]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-5/igt@kms_tiled_display@basic-test-pattern.html

  * igt@perf@gen8-unprivileged-single-ctx-counters:
    - shard-rkl:          [SKIP][494] ([i915#14544] / [i915#2436]) -> [SKIP][495] ([i915#2436])
   [494]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@perf@gen8-unprivileged-single-ctx-counters.html
   [495]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-4/igt@perf@gen8-unprivileged-single-ctx-counters.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
    - shard-rkl:          [SKIP][496] ([i915#14544] / [i915#9917]) -> [SKIP][497] ([i915#9917])
   [496]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8736/shard-rkl-6/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
   [497]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14492/shard-rkl-8/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html

  
  [i915#10056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10056
  [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#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [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#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#11814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11814
  [i915#11815]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11815
  [i915#12193]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12193
  [i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12316]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12316
  [i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
  [i915#12655]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12655
  [i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
  [i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
  [i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
  [i915#12756]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12756
  [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#13331]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13331
  [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
  [i915#13363]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13363
  [i915#13390]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13390
  [i915#13409]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13409
  [i915#13476]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13476
  [i915#13562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13562
  [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
  [i915#13688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13688
  [i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
  [i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
  [i915#13790]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13790
  [i915#13809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13809
  [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#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
  [i915#14350]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14350
  [i915#14412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14412
  [i915#14419]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14419
  [i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
  [i915#14586]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14586
  [i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
  [i915#14809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14809
  [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#15131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15131
  [i915#15140]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15140
  [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#15342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15342
  [i915#15403]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15403
  [i915#15459]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15459
  [i915#15460]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15460
  [i915#15479]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15479
  [i915#15574]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15574
  [i915#15582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15582
  [i915#15608]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15608
  [i915#15609]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15609
  [i915#15643]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15643
  [i915#15645]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15645
  [i915#15656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15656
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433
  [i915#2436]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2436
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
  [i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681
  [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#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [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#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
  [i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#3936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3936
  [i915#4036]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4036
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4348]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4348
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [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#4767]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4767
  [i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
  [i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
  [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#5723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5723
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6412
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [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#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
  [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8807]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8807
  [i915#8808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8808
  [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
  [i915#8825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8825
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [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_8736 -> IGTPW_14492

  CI-20190529: 20190529
  CI_DRM_17930: 241994730989320c926da9f2d0a5ec80b48f993d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_14492: 14492
  IGT_8736: 8736

== Logs ==

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

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

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

* Re: ✗ Xe.CI.FULL: failure for PCI driver helpers and xe-vfio-pci FLR improvement (rev3)
  2026-02-05  5:02 ` ✗ Xe.CI.FULL: failure " Patchwork
@ 2026-02-05 10:13   ` Bernatowicz, Marcin
  0 siblings, 0 replies; 23+ messages in thread
From: Bernatowicz, Marcin @ 2026-02-05 10:13 UTC (permalink / raw)
  To: igt-dev, lgci.bug.filing


On 2/5/2026 6:02 AM, Patchwork wrote:
> == Series Details ==
>
> Series: PCI driver helpers and xe-vfio-pci FLR improvement (rev3)
> URL   : https://patchwork.freedesktop.org/series/160140/
> State : failure
>
> == Summary ==
>
> CI Bug Log - changes from XEIGT_8736_FULL -> XEIGTPW_14492_FULL
> ====================================================
>
> Summary
> -------
>
>    **FAILURE**
>
>    Serious unknown changes coming with XEIGTPW_14492_FULL absolutely need to be
>    verified manually.
>    
>    If you think the reported changes have nothing to do with the changes
>    introduced in XEIGTPW_14492_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_14492_FULL:
>
> ### IGT changes ###
>
> #### Possible regressions ####
>
>    * igt@kms_async_flips@async-flip-dpms:
>      - shard-lnl:          [PASS][1] -> [SKIP][2] +3 other tests skip
>     [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-5/igt@kms_async_flips@async-flip-dpms.html
>     [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-6/igt@kms_async_flips@async-flip-dpms.html
>
>    * igt@xe_configfs@ctx-restore-post-bb:
>      - shard-lnl:          [PASS][3] -> [DMESG-WARN][4] +3 other tests dmesg-warn
>     [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8736/shard-lnl-1/igt@xe_configfs@ctx-restore-post-bb.html
>     [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/shard-lnl-6/igt@xe_configfs@ctx-restore-post-bb.html

Not related to the change.

---

marcin

[...]

>    
> Known issues
> ------------
[...]
>
> Build changes
> -------------
>
>    * IGT: IGT_8736 -> IGTPW_14492
>
>    IGTPW_14492: 14492
>    IGT_8736: 8736
>    xe-4497-241994730989320c926da9f2d0a5ec80b48f993d: 241994730989320c926da9f2d0a5ec80b48f993d
>
> == Logs ==
>
> For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14492/index.html
>

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

* Re: [PATCH v3 i-g-t 2/7] lib/igt_pci: Add generic PCI driver override and bind/unbind helpers
  2026-02-04 16:32 ` [PATCH v3 i-g-t 2/7] lib/igt_pci: Add generic PCI driver override and bind/unbind helpers Marcin Bernatowicz
@ 2026-02-09 10:16   ` Laguna, Lukasz
  2026-02-10 10:19     ` Bernatowicz, Marcin
  0 siblings, 1 reply; 23+ messages in thread
From: Laguna, Lukasz @ 2026-02-09 10:16 UTC (permalink / raw)
  To: Marcin Bernatowicz, igt-dev
  Cc: Adam Miszczak, Jakub Kolakowski, Kamil Konieczny


On 2/4/2026 17:32, Marcin Bernatowicz wrote:
> Add generic helpers for controlling PCI driver binding via sysfs.
>
> The new APIs provide driver- and device-centric primitives for:
>    - setting and clearing driver_override
>    - triggering PCI driver reprobe
>    - binding and unbinding devices to a specific PCI driver
>    - query the currently bound PCI driver
>
> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
> Cc: Adam Miszczak <adam.miszczak@linux.intel.com>
> Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
> Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
> Cc: Lukasz Laguna <lukasz.laguna@intel.com>
>
> ---
> v2:
> - Add igt_pci_get_bound_driver_name() to query the currently bound PCI
>    driver via the /sys/bus/pci/devices/<BDF>/driver symlink.
> - Extend igt_pci_bind_driver_override() and igt_pci_unbind_driver_override()
>    with a timeout_ms parameter so callers can wait for bind/unbind to
>    actually complete, instead of relying on drivers_probe write success.
>
> ---
>   lib/igt_pci.c | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++
>   lib/igt_pci.h |  13 +-
>   2 files changed, 363 insertions(+), 1 deletion(-)
>
> diff --git a/lib/igt_pci.c b/lib/igt_pci.c
> index 61aaf939d..80aaf07c5 100644
> --- a/lib/igt_pci.c
> +++ b/lib/igt_pci.c
> @@ -3,9 +3,18 @@
>    * Copyright © 2022 Intel Corporation
>    */
>   
> +#include <ctype.h>
> +#include <dirent.h>
> +#include <errno.h>
> +#include <fcntl.h>
> +#include <limits.h>
> +#include <string.h>
> +#include <unistd.h>
>   #include <pciaccess.h>
> +#include "igt_aux.h"
>   #include "igt_core.h"
>   #include "igt_pci.h"
> +#include "igt_sysfs.h"
>   
>   static int find_pci_cap_offset_at(struct pci_device *dev, enum pci_cap_id cap_id,
>   				  int start_offset)
> @@ -51,3 +60,345 @@ int find_pci_cap_offset(struct pci_device *dev, enum pci_cap_id cap_id)
>   {
>   	return find_pci_cap_offset_at(dev, cap_id, PCI_CAPS_START);
>   }
> +
> +static int open_pci_driver_dir(const char *driver)
> +{
> +	char path[PATH_MAX];
> +
> +	snprintf(path, sizeof(path), "/sys/bus/pci/drivers/%s", driver);
> +	return open(path, O_RDONLY | O_CLOEXEC);
> +}
> +
> +/**
> + * igt_pci_device_unbind:
> + * @pci_slot: BDF like "0000:01:00.0"
> + *
> + * Unbind @pci_slot from its currently bound driver, if any.
> + * Returns 0 on success, or a negative errno-like value.
> + */
> +int igt_pci_device_unbind(const char *pci_slot)
> +{
> +	char path[PATH_MAX];
> +	int dirfd;
> +	int ret;
> +
> +	snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/driver", pci_slot);
> +	dirfd = open(path, O_RDONLY | O_CLOEXEC);
> +	if (dirfd < 0)
> +		return 0; /* already unbound */
> +
> +	ret = igt_sysfs_set(dirfd, "unbind", pci_slot) ? 0 : -errno;
> +	close(dirfd);
> +
> +	return ret;
> +}
> +
> +/**
> + * igt_pci_driver_bind:
> + * @driver: PCI driver name under /sys/bus/pci/drivers/<driver>
> + * @pci_slot: device to bind
> + *
> + * Bind @pci_slot to @driver. Driver must be present/loaded.
> + * Returns 0 on success, or a negative errno-like value.
> + */
> +int igt_pci_driver_bind(const char *driver, const char *pci_slot)
> +{
> +	int dirfd, ret;
> +
> +	dirfd = open_pci_driver_dir(driver);
> +	if (dirfd < 0)
> +		return -errno;
> +
> +	ret = igt_sysfs_set(dirfd, "bind", pci_slot) ? 0 : -errno;
> +	close(dirfd);
> +
> +	return ret;
> +}
> +
> +/**
> + * igt_pci_driver_unbind:
> + * @driver: PCI driver name
> + * @pci_slot: device to unbind
> + *
> + * Unbind @pci_slot from @driver.
> + * Returns 0 on success, or a negative errno-like value.
> + */
> +int igt_pci_driver_unbind(const char *driver, const char *pci_slot)
> +{
> +	int dirfd, ret;
> +
> +	dirfd = open_pci_driver_dir(driver);
> +	if (dirfd < 0)
> +		return -errno;
> +
> +	ret = igt_sysfs_set(dirfd, "unbind", pci_slot) ? 0 : -errno;
> +	close(dirfd);
> +
> +	return ret;
> +}
> +
> +/**
> + * igt_pci_driver_unbind_all:
> + * @driver: PCI driver name
> + *
> + * Unbind all devices currently bound to @driver.
> + * Returns 0 on success, or a negative errno-like value.
> + */
> +int igt_pci_driver_unbind_all(const char *driver)
> +{
> +	char path[PATH_MAX];
> +	DIR *dir;
> +	struct dirent *de;
> +	int driver_fd;
> +
> +	snprintf(path, sizeof(path), "/sys/bus/pci/drivers/%s", driver);
> +	dir = opendir(path);
> +	if (!dir)
> +		return -errno;
> +
> +	driver_fd = dirfd(dir);
> +
> +	while ((de = readdir(dir))) {
> +		bool ok;
> +
> +		/* BDF symlinks are like "0000:01:00.0" and start with digit */
> +		if (de->d_type != DT_LNK || !isdigit(de->d_name[0]))
> +			continue;
> +
> +		ok = igt_sysfs_set(driver_fd, "unbind", de->d_name);
> +		if (!ok) {
> +			int err = -errno;
> +
> +			closedir(dir);
> +			return err;
> +		}
> +	}
> +
> +	closedir(dir);
> +	return 0;
> +}
> +
> +/**
> + * igt_pci_set_driver_override:
> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
> + * @driver: PCI driver name to force-bind (e.g. "xe-vfio-pci"), or
> + *          NULL / empty string to clear an existing override
> + *
> + * Set or clear the PCI driver_override for @pci_slot via sysfs.
> + *
> + * This does not trigger driver reprobe by itself. Call
> + * igt_pci_probe_drivers() afterwards to apply the override.
> + *
> + * Returns: 0 on success, negative errno on failure.
> + */
> +int igt_pci_set_driver_override(const char *pci_slot, const char *driver)
> +{
> +	char devpath[PATH_MAX];
> +	int dev;
> +	bool ok;
> +
> +	snprintf(devpath, sizeof(devpath), "/sys/bus/pci/devices/%s", pci_slot);
> +	dev = open(devpath, O_DIRECTORY | O_RDONLY);
> +	if (dev < 0)
> +		return -errno;
> +
> +	ok = igt_sysfs_set(dev, "driver_override", driver ? driver : "");
> +	close(dev);
> +
> +	return ok ? 0 : -errno;
> +}
> +
> +/**
> + * igt_pci_probe_drivers:
> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
> + *
> + * Trigger PCI driver reprobe for @pci_slot by writing to
> + * /sys/bus/pci/drivers_probe.
> + *
> + * This causes the kernel to attempt binding the device, honoring any
> + * driver_override previously set.
> + *
> + * Note: a successful write only means the reprobe request was accepted.
> + * It does not guarantee that a driver actually bound to the device.
> + *
> + * Returns: 0 on success, negative errno on failure.
> + */
> +int igt_pci_probe_drivers(const char *pci_slot)
> +{
> +	int pci;
> +	bool ok;
> +
> +	pci = open("/sys/bus/pci", O_DIRECTORY | O_RDONLY);
> +	if (pci < 0)
> +		return -errno;
> +
> +	ok = igt_sysfs_set(pci, "drivers_probe", pci_slot);
> +	close(pci);
> +
> +	return ok ? 0 : -errno;
> +}
> +
> +/**
> + * igt_pci_get_bound_driver_name:
> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
> + * @driver: destination buffer for the bound driver name
> + * @driver_len: size of @driver in bytes
> + *
> + * Read the currently bound PCI driver name for @pci_slot by inspecting the
> + * /sys/bus/pci/devices/<BDF>/driver symlink.
> + *
> + * Return values:
> + *  1: device is bound and @driver contains the driver name
> + *  0: device is unbound (no driver symlink)
> + * <0: negative errno-like value on error
> + */
> +int igt_pci_get_bound_driver_name(const char *pci_slot, char *driver, size_t driver_len)
> +{
> +	char path[PATH_MAX];
> +	char link[PATH_MAX];
> +	const char *base;
> +	ssize_t len;
> +
> +	if (driver && driver_len)
> +		driver[0] = '\0';
> +
> +	snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/driver", pci_slot);
> +	len = readlink(path, link, sizeof(link) - 1);
> +	if (len < 0) {
> +		if (errno == ENOENT)
> +			return 0; /* unbound */
> +
> +		return -errno;
> +	}
> +
> +	link[len] = '\0';
> +	base = strrchr(link, '/');
> +	base = base ? base + 1 : link;
> +
> +	if (driver && driver_len)

You can check the input params at the beginning of the function and 
return error if they are invalid.

> +		snprintf(driver, driver_len, "%s", base);
> +
> +	return 1;
> +}
> +
> +/**
> + * igt_pci_bind_driver_override:
> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
> + * @driver: PCI driver name to bind (must not be NULL or empty)
> + * @timeout_ms: how long to wait for the device to become bound.
> + *              If 0, don't wait (best-effort immediate check only).
> + *
> + * Bind @pci_slot to @driver using the driver_override mechanism.
> + *
> + * This helper sets driver_override and immediately triggers driver
> + * reprobe so that the device is bound to the requested driver.
> + *
> + * Returns: 0 on success, negative errno-like value on failure.
> + * A reprobe request can be accepted by sysfs while the driver probe
> + * fails later; this helper verifies the device ended up bound.
> + *
> + * On bind failure, returns a negative error and the failure reason may
> + * also be logged to dmesg by the kernel driver.
> + */
> +int igt_pci_bind_driver_override(const char *pci_slot, const char *driver,
> +				 unsigned int timeout_ms)
> +{
> +	int ret;
> +	char bound[64];
> +	int bound_ret;
> +	bool bound_ok;
> +
> +	if (!driver || !driver[0])
> +		return -EINVAL;
> +
> +	ret = igt_pci_set_driver_override(pci_slot, driver);
> +	if (ret)
> +		return ret;
> +
> +	ret = igt_pci_probe_drivers(pci_slot);
> +	if (ret)
> +		return ret;
> +
> +	/*
> +	 * Writing to drivers_probe only tells us the kernel accepted the request.
> +	 * The actual driver probe may still fail (and only be reported via dmesg).
> +	 * Verify that the device ended up bound to the requested driver.
> +	 */
> +	bound_ret = igt_pci_get_bound_driver_name(pci_slot, bound, sizeof(bound));
> +	if (bound_ret < 0)
> +		return bound_ret;
> +
> +	if (timeout_ms == 0) {
> +		/*
> +		 * No waiting requested. If the device is already bound, validate
> +		 * it is bound to the expected driver; otherwise treat as
> +		 * best-effort request-only success.
> +		 */
> +		if (bound_ret > 0 && strcmp(bound, driver))
> +			return -EBUSY;
> +
> +		return 0;
> +	}
> +
> +	bound_ok = igt_wait((bound_ret =
> +			     igt_pci_get_bound_driver_name(pci_slot, bound, sizeof(bound))) != 0,
> +			    timeout_ms, 1);
> +	if (!bound_ok)
> +		return -EIO;
> +
> +	if (bound_ret < 0)
> +		return bound_ret;
> +
> +	if (strcmp(bound, driver))
> +		return -EBUSY;
> +
> +	return 0;
> +}
> +
> +/**
> + * igt_pci_unbind_driver_override:
> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
> + * @timeout_ms: how long to wait for the device to become unbound.
> + *              If 0, don't wait (best-effort immediate check only).
> + *
> + * Unbind @pci_slot from its currently bound driver (if any) and clear
> + * any driver_override setting.
> + *
> + * This is the inverse operation of igt_pci_bind_driver_override().
> + *
> + * Returns: 0 on success, negative errno on failure.
> + */
> +int igt_pci_unbind_driver_override(const char *pci_slot, unsigned int timeout_ms)
> +{
> +	int ret;
> +	int bound_ret;
> +	char bound[64];
> +	bool unbound_ok;
> +
> +	ret = igt_pci_device_unbind(pci_slot);
> +	if (ret)
> +		return ret;
> +
> +	ret = igt_pci_set_driver_override(pci_slot, "");
> +	if (ret)
> +		return ret;
> +
> +	bound_ret = igt_pci_get_bound_driver_name(pci_slot, bound, sizeof(bound));
> +	if (bound_ret < 0)
> +		return bound_ret;
> +
> +	if (timeout_ms == 0)
> +		return 0;
> +
> +	/* Verify the device actually ends up unbound (driver symlink removed). */
> +	unbound_ok = igt_wait((bound_ret =
> +			       igt_pci_get_bound_driver_name(pci_slot, bound, sizeof(bound))) == 0,
> +			      timeout_ms, 1);
> +	if (!unbound_ok)
> +		return -EBUSY;
> +
> +	if (bound_ret < 0)
> +		return bound_ret;
> +
> +	return 0;
> +}
> diff --git a/lib/igt_pci.h b/lib/igt_pci.h
> index 92b9cc392..a66eeebf2 100644
> --- a/lib/igt_pci.h
> +++ b/lib/igt_pci.h
> @@ -6,8 +6,9 @@
>   #ifndef __IGT_PCI_H__
>   #define __IGT_PCI_H__
>   
> -#include <stdint.h>
>   #include <endian.h>
> +#include <stddef.h>
> +#include <stdint.h>
>   
>   /* forward declaration */
>   struct pci_device;
> @@ -24,5 +25,15 @@ enum pci_cap_id {
>   #define  PCI_SLOT_PWR_CTRL_PRESENT (1 << 1)
>   
>   int find_pci_cap_offset(struct pci_device *dev, enum pci_cap_id cap_id);
> +int igt_pci_device_unbind(const char *pci_slot);
> +int igt_pci_driver_bind(const char *driver, const char *pci_slot);
> +int igt_pci_driver_unbind(const char *driver, const char *pci_slot);
> +int igt_pci_driver_unbind_all(const char *driver);
> +int igt_pci_set_driver_override(const char *pci_slot, const char *driver);
> +int igt_pci_probe_drivers(const char *pci_slot);
> +int igt_pci_get_bound_driver_name(const char *pci_slot, char *driver, size_t driver_len);
> +int igt_pci_bind_driver_override(const char *pci_slot, const char *driver,
> +				 unsigned int timeout_ms);
> +int igt_pci_unbind_driver_override(const char *pci_slot, unsigned int timeout_ms);
>   
>   #endif

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

* Re: [PATCH v3 i-g-t 3/7] tests/intel/xe_sriov_flr: Attach VFs to xe-vfio-pci before initiating FLR
  2026-02-04 16:32 ` [PATCH v3 i-g-t 3/7] tests/intel/xe_sriov_flr: Attach VFs to xe-vfio-pci before initiating FLR Marcin Bernatowicz
@ 2026-02-09 10:17   ` Laguna, Lukasz
  0 siblings, 0 replies; 23+ messages in thread
From: Laguna, Lukasz @ 2026-02-09 10:17 UTC (permalink / raw)
  To: Marcin Bernatowicz, igt-dev
  Cc: Michał Winiarski, Adam Miszczak, Jakub Kolakowski


On 2/4/2026 17:32, Marcin Bernatowicz wrote:
> Attach all VFs to the xe-vfio-pci driver before running the FLR scenario.
> This allows the test to rely on xe-vfio-pci’s FLR wait handling, which is
> triggered when writing to the VF reset sysfs attribute.
>
> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
> Suggested-by: Michał Winiarski <michal.winiarski@intel.com>
> Cc: Adam Miszczak <adam.miszczak@linux.intel.com>
> Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
> Cc: Lukasz Laguna <lukasz.laguna@intel.com>

Reviewed-by: Lukasz Laguna <lukasz.laguna@intel.com>

>
> ---
> v2:
> - Unbind VFs only if they were successfully bound.
>
> ---
>   tests/intel/xe_sriov_flr.c | 65 ++++++++++++++++++++++++++++++++++++++
>   1 file changed, 65 insertions(+)
>
> diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
> index 12989d0f5..2f6b24cf0 100644
> --- a/tests/intel/xe_sriov_flr.c
> +++ b/tests/intel/xe_sriov_flr.c
> @@ -9,6 +9,8 @@
>   #include "drmtest.h"
>   #include "igt_core.h"
>   #include "igt_device.h"
> +#include "igt_kmod.h"
> +#include "igt_pci.h"
>   #include "igt_sriov_device.h"
>   #include "intel_chipset.h"
>   #include "intel_vram.h"
> @@ -57,6 +59,8 @@ static const char STOP_REASON_ABORT[] = "ABORT";
>   static const char STOP_REASON_FAIL[]  = "FAIL";
>   static const char STOP_REASON_SKIP[]  = "SKIP";
>   
> +#define DRIVER_OVERRIDE_TIMEOUT_MS 200
> +
>   static struct g_mmio {
>   	struct xe_mmio *mmio;
>   	unsigned int num_vfs;
> @@ -276,6 +280,47 @@ static void subchecks_report_results(struct subcheck *checks, int num_checks)
>   	igt_skip_on(skips == num_checks);
>   }
>   
> +static bool vf_bind_driver_override(int pf_fd, unsigned int vf_id,
> +				    const char *driver)
> +{
> +	char *slot = igt_sriov_get_vf_pci_slot_alloc(pf_fd, vf_id);
> +	int ret;
> +	char bound[64] = "none";
> +	int bound_ret;
> +
> +	igt_assert(slot);
> +	igt_assert(driver);
> +
> +	ret = igt_pci_bind_driver_override(slot, driver, DRIVER_OVERRIDE_TIMEOUT_MS);
> +	if (ret < 0) {
> +		bound_ret = igt_pci_get_bound_driver_name(slot, bound, sizeof(bound));
> +		if (bound_ret <= 0)
> +			snprintf(bound, sizeof(bound), "%s", "none");
> +
> +		igt_warn_on_f(true,
> +			      "bind %s (VF%u) to %s ret=%d (currently bound: %s)\n",
> +			      slot, vf_id, driver, ret, bound);
> +	}
> +
> +	free(slot);
> +
> +	return ret >= 0;
> +}
> +
> +static void vf_unbind_driver_override(int pf_fd, unsigned int vf_id)
> +{
> +	char *slot = igt_sriov_get_vf_pci_slot_alloc(pf_fd, vf_id);
> +	int ret;
> +
> +	igt_assert(slot);
> +
> +	ret = igt_pci_unbind_driver_override(slot, DRIVER_OVERRIDE_TIMEOUT_MS);
> +	igt_warn_on_f(ret < 0, "unbind %s (VF%u) driver_override ret=%d\n",
> +		      slot, vf_id, ret);
> +
> +	free(slot);
> +}
> +
>   /**
>    * flr_exec_strategy - Function pointer for FLR execution strategy
>    * @pf_fd: File descriptor for the Physical Function (PF).
> @@ -325,6 +370,8 @@ static void verify_flr(int pf_fd, int num_vfs, struct subcheck *checks,
>   {
>   	const int wait_flr_ms = 200;
>   	int i, vf_id, flr_vf_id = -1;
> +	bool xe_vfio_loaded;
> +	bool *vf_bound = NULL;
>   
>   	igt_sriov_disable_driver_autoprobe(pf_fd);
>   	igt_sriov_enable_vfs(pf_fd, num_vfs);
> @@ -335,6 +382,16 @@ static void verify_flr(int pf_fd, int num_vfs, struct subcheck *checks,
>   	if (igt_warn_on(igt_pci_system_reinit()))
>   		goto disable_vfs;
>   
> +	xe_vfio_loaded = igt_kmod_load("xe_vfio_pci", NULL) >= 0;
> +	if (xe_vfio_loaded) {
> +		vf_bound = calloc(num_vfs + 1, sizeof(*vf_bound));
> +		igt_assert(vf_bound);
> +
> +		igt_sriov_enable_driver_autoprobe(pf_fd);
> +		for (vf_id = 1; vf_id <= num_vfs; vf_id++)
> +			vf_bound[vf_id] = vf_bind_driver_override(pf_fd, vf_id, "xe-vfio-pci");
> +	}
> +
>   	init_mmio(pf_fd, num_vfs);
>   
>   	for (i = 0; i < num_checks; ++i)
> @@ -357,6 +414,14 @@ cleanup:
>   
>   	cleanup_mmio();
>   
> +	if (xe_vfio_loaded) {
> +		for (vf_id = 1; vf_id <= num_vfs; vf_id++)
> +			if (vf_bound && vf_bound[vf_id])
> +				vf_unbind_driver_override(pf_fd, vf_id);
> +	}
> +
> +	free(vf_bound);
> +
>   disable_vfs:
>   	igt_sriov_disable_vfs(pf_fd);
>   

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

* Re: [PATCH v3 i-g-t 5/7] tests/intel/xe_sriov_flr: Add --wait-flr-ms option
  2026-02-04 16:32 ` [PATCH v3 i-g-t 5/7] tests/intel/xe_sriov_flr: Add --wait-flr-ms option Marcin Bernatowicz
@ 2026-02-09 10:18   ` Laguna, Lukasz
  0 siblings, 0 replies; 23+ messages in thread
From: Laguna, Lukasz @ 2026-02-09 10:18 UTC (permalink / raw)
  To: Marcin Bernatowicz, igt-dev; +Cc: Jakub Kolakowski, Piotr Piórkowski


On 2/4/2026 17:32, Marcin Bernatowicz wrote:
> Make the post-FLR sleep configurable (default 200ms).
>
> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
> Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
> Cc: Lukasz Laguna <lukasz.laguna@intel.com>

Reviewed-by: Lukasz Laguna <lukasz.laguna@intel.com>

> Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
> ---
>   tests/intel/xe_sriov_flr.c | 36 ++++++++++++++++++++++++++++++++++--
>   1 file changed, 34 insertions(+), 2 deletions(-)
>
> diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
> index 2f6b24cf0..951628159 100644
> --- a/tests/intel/xe_sriov_flr.c
> +++ b/tests/intel/xe_sriov_flr.c
> @@ -4,6 +4,7 @@
>    */
>   
>   #include <fcntl.h>
> +#include <limits.h>
>   #include <pthread.h>
>   #include <sys/stat.h>
>   #include "drmtest.h"
> @@ -61,6 +62,8 @@ static const char STOP_REASON_SKIP[]  = "SKIP";
>   
>   #define DRIVER_OVERRIDE_TIMEOUT_MS 200
>   
> +static int g_wait_flr_ms = 200;
> +
>   static struct g_mmio {
>   	struct xe_mmio *mmio;
>   	unsigned int num_vfs;
> @@ -368,7 +371,7 @@ typedef int (*flr_exec_strategy)(int pf_fd, int num_vfs,
>   static void verify_flr(int pf_fd, int num_vfs, struct subcheck *checks,
>   		       int num_checks, flr_exec_strategy exec_strategy)
>   {
> -	const int wait_flr_ms = 200;
> +	const int wait_flr_ms = g_wait_flr_ms;
>   	int i, vf_id, flr_vf_id = -1;
>   	bool xe_vfio_loaded;
>   	bool *vf_bound = NULL;
> @@ -1088,7 +1091,36 @@ static void clear_tests(int pf_fd, int num_vfs, flr_exec_strategy exec_strategy)
>   	verify_flr(pf_fd, num_vfs, checks, num_checks, exec_strategy);
>   }
>   
> -int igt_main()
> +static int opt_handler(int opt, int opt_index, void *data)
> +{
> +	char *end = NULL;
> +	long val;
> +
> +	switch (opt) {
> +	case 'w':
> +		errno = 0;
> +		val = strtol(optarg, &end, 0);
> +		if (errno || !end || *end != '\0' || val < 0 || val > INT_MAX)
> +			return IGT_OPT_HANDLER_ERROR;
> +		g_wait_flr_ms = (int)val;
> +		igt_info("Using wait_flr_ms=%d\n", g_wait_flr_ms);
> +		break;
> +	default:
> +		return IGT_OPT_HANDLER_ERROR;
> +	}
> +
> +	return IGT_OPT_HANDLER_SUCCESS;
> +}
> +
> +static const struct option long_options[] = {
> +	{ .name = "wait-flr-ms", .has_arg = true, .val = 'w', },
> +	{},
> +};
> +
> +static const char help_str[] =
> +	"  --wait-flr-ms=MS\tSleep MS milliseconds after VF reset sysfs write (default: 200)\n";
> +
> +int igt_main_args("w:", long_options, help_str, opt_handler, NULL)
>   {
>   	int pf_fd;
>   	bool autoprobe;

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

* Re: [PATCH v3 i-g-t 6/7] tests/intel/xe_sriov_flr: Add --no-xe-vfio-pci option
  2026-02-04 16:32 ` [PATCH v3 i-g-t 6/7] tests/intel/xe_sriov_flr: Add --no-xe-vfio-pci option Marcin Bernatowicz
@ 2026-02-09 10:18   ` Laguna, Lukasz
  0 siblings, 0 replies; 23+ messages in thread
From: Laguna, Lukasz @ 2026-02-09 10:18 UTC (permalink / raw)
  To: Marcin Bernatowicz, igt-dev; +Cc: Jakub Kolakowski, Piotr Piórkowski


On 2/4/2026 17:32, Marcin Bernatowicz wrote:
> Add --no-xe-vfio-pci to skip loading/binding VFs to xe-vfio-pci.
>
> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
> Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
> Cc: Lukasz Laguna <lukasz.laguna@intel.com>

Reviewed-by: Lukasz Laguna <lukasz.laguna@intel.com>

> Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
> ---
>   tests/intel/xe_sriov_flr.c | 13 +++++++++++--
>   1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
> index 951628159..b73727787 100644
> --- a/tests/intel/xe_sriov_flr.c
> +++ b/tests/intel/xe_sriov_flr.c
> @@ -63,6 +63,7 @@ static const char STOP_REASON_SKIP[]  = "SKIP";
>   #define DRIVER_OVERRIDE_TIMEOUT_MS 200
>   
>   static int g_wait_flr_ms = 200;
> +static bool g_use_xe_vfio_pci = true;
>   
>   static struct g_mmio {
>   	struct xe_mmio *mmio;
> @@ -385,7 +386,9 @@ static void verify_flr(int pf_fd, int num_vfs, struct subcheck *checks,
>   	if (igt_warn_on(igt_pci_system_reinit()))
>   		goto disable_vfs;
>   
> -	xe_vfio_loaded = igt_kmod_load("xe_vfio_pci", NULL) >= 0;
> +	xe_vfio_loaded = false;
> +	if (g_use_xe_vfio_pci)
> +		xe_vfio_loaded = igt_kmod_load("xe_vfio_pci", NULL) >= 0;
>   	if (xe_vfio_loaded) {
>   		vf_bound = calloc(num_vfs + 1, sizeof(*vf_bound));
>   		igt_assert(vf_bound);
> @@ -1097,6 +1100,10 @@ static int opt_handler(int opt, int opt_index, void *data)
>   	long val;
>   
>   	switch (opt) {
> +	case 'v':
> +		g_use_xe_vfio_pci = false;
> +		igt_info("xe-vfio-pci binding: disabled\n");
> +		break;
>   	case 'w':
>   		errno = 0;
>   		val = strtol(optarg, &end, 0);
> @@ -1113,14 +1120,16 @@ static int opt_handler(int opt, int opt_index, void *data)
>   }
>   
>   static const struct option long_options[] = {
> +	{ .name = "no-xe-vfio-pci", .has_arg = false, .val = 'v', },
>   	{ .name = "wait-flr-ms", .has_arg = true, .val = 'w', },
>   	{},
>   };
>   
>   static const char help_str[] =
> +	"  --no-xe-vfio-pci\tDo not load/bind xe-vfio-pci for VFs\n"
>   	"  --wait-flr-ms=MS\tSleep MS milliseconds after VF reset sysfs write (default: 200)\n";
>   
> -int igt_main_args("w:", long_options, help_str, opt_handler, NULL)
> +int igt_main_args("vw:", long_options, help_str, opt_handler, NULL)
>   {
>   	int pf_fd;
>   	bool autoprobe;

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

* Re: [PATCH v3 i-g-t 7/7] tests/intel/xe_sriov_flr: Skip xe-vfio-pci load/bind when IOMMU is off
  2026-02-04 16:32 ` [PATCH v3 i-g-t 7/7] tests/intel/xe_sriov_flr: Skip xe-vfio-pci load/bind when IOMMU is off Marcin Bernatowicz
@ 2026-02-09 10:42   ` Laguna, Lukasz
  2026-02-10 11:23     ` Bernatowicz, Marcin
  0 siblings, 1 reply; 23+ messages in thread
From: Laguna, Lukasz @ 2026-02-09 10:42 UTC (permalink / raw)
  To: Marcin Bernatowicz, igt-dev
  Cc: Jakub Kolakowski, Michał Winiarski, Piotr Piórkowski


On 2/4/2026 17:32, Marcin Bernatowicz wrote:
> When the IOMMU is disabled VFs typically lack an iommu_group, and
> xe-vfio-pci binding may fail. Skip load/bind in that case.

I'm not sure if checking for IOMMU groups is enough.
I think it's possible that the device has the IOMMU group and vfio-pci 
still fail to bind if e.g. CONFIG_VFIO_IOMMU_TYPE1 is disabled.

We have a control on the environment where test is executed, so I'm not 
sure if this patch is needed. We prefer to use the approach with 
xe-vfio-pci, so if it fails because of the system configuration than I 
think it would be better to fix the configuration.

> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
> Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
> Cc: Lukasz Laguna <lukasz.laguna@intel.com>
> Cc: Michał Winiarski <michal.winiarski@intel.com>
> Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
> ---
>   tests/intel/xe_sriov_flr.c | 43 +++++++++++++++++++++++++++++++++++---
>   1 file changed, 40 insertions(+), 3 deletions(-)
>
> diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
> index b73727787..3fc84bbf9 100644
> --- a/tests/intel/xe_sriov_flr.c
> +++ b/tests/intel/xe_sriov_flr.c
> @@ -13,6 +13,7 @@
>   #include "igt_kmod.h"
>   #include "igt_pci.h"
>   #include "igt_sriov_device.h"
> +#include "igt_sysfs.h"
>   #include "intel_chipset.h"
>   #include "intel_vram.h"
>   #include "linux_scaffold.h"
> @@ -325,6 +326,44 @@ static void vf_unbind_driver_override(int pf_fd, unsigned int vf_id)
>   	free(slot);
>   }
>   
> +static bool vf_has_iommu_group(int pf_fd, unsigned int vf_id)
> +{
> +	int sysfs;
> +	bool present;
> +
> +	sysfs = igt_sriov_device_sysfs_open(pf_fd, vf_id);
> +	if (sysfs < 0)
> +		return false;
> +
> +	present = igt_sysfs_has_attr(sysfs, "iommu_group");
> +	close(sysfs);
> +
> +	return present;
> +}
> +
> +static bool vfs_have_iommu_groups(int pf_fd, int num_vfs)
> +{
> +	for (int vf_id = 1; vf_id <= num_vfs; vf_id++)
> +		if (!vf_has_iommu_group(pf_fd, vf_id))
> +			return false;
> +
> +	return true;
> +}
> +
> +static bool try_load_xe_vfio_pci(int pf_fd, int num_vfs)
> +{
> +	if (!g_use_xe_vfio_pci)
> +		return false;
> +
> +	if (!vfs_have_iommu_groups(pf_fd, num_vfs)) {
> +		igt_info("Disabling xe-vfio-pci binding: missing VF IOMMU group(s) (IOMMU off?)\n");
> +		g_use_xe_vfio_pci = false;
> +		return false;
> +	}
> +
> +	return igt_kmod_load("xe_vfio_pci", NULL) >= 0;
> +}
> +
>   /**
>    * flr_exec_strategy - Function pointer for FLR execution strategy
>    * @pf_fd: File descriptor for the Physical Function (PF).
> @@ -386,9 +425,7 @@ static void verify_flr(int pf_fd, int num_vfs, struct subcheck *checks,
>   	if (igt_warn_on(igt_pci_system_reinit()))
>   		goto disable_vfs;
>   
> -	xe_vfio_loaded = false;
> -	if (g_use_xe_vfio_pci)
> -		xe_vfio_loaded = igt_kmod_load("xe_vfio_pci", NULL) >= 0;
> +	xe_vfio_loaded = try_load_xe_vfio_pci(pf_fd, num_vfs);
>   	if (xe_vfio_loaded) {
>   		vf_bound = calloc(num_vfs + 1, sizeof(*vf_bound));
>   		igt_assert(vf_bound);

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

* Re: [PATCH v3 i-g-t 2/7] lib/igt_pci: Add generic PCI driver override and bind/unbind helpers
  2026-02-09 10:16   ` Laguna, Lukasz
@ 2026-02-10 10:19     ` Bernatowicz, Marcin
  2026-02-11  6:39       ` Laguna, Lukasz
  0 siblings, 1 reply; 23+ messages in thread
From: Bernatowicz, Marcin @ 2026-02-10 10:19 UTC (permalink / raw)
  To: Laguna, Lukasz, igt-dev; +Cc: Adam Miszczak, Jakub Kolakowski, Kamil Konieczny


On 2/9/2026 11:16 AM, Laguna, Lukasz wrote:
>
> On 2/4/2026 17:32, Marcin Bernatowicz wrote:
>> Add generic helpers for controlling PCI driver binding via sysfs.
>>
>> The new APIs provide driver- and device-centric primitives for:
>>    - setting and clearing driver_override
>>    - triggering PCI driver reprobe
>>    - binding and unbinding devices to a specific PCI driver
>>    - query the currently bound PCI driver
>>
>> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
>> Cc: Adam Miszczak <adam.miszczak@linux.intel.com>
>> Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
>> Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
>> Cc: Lukasz Laguna <lukasz.laguna@intel.com>
>>
>> ---
>> v2:
>> - Add igt_pci_get_bound_driver_name() to query the currently bound PCI
>>    driver via the /sys/bus/pci/devices/<BDF>/driver symlink.
>> - Extend igt_pci_bind_driver_override() and 
>> igt_pci_unbind_driver_override()
>>    with a timeout_ms parameter so callers can wait for bind/unbind to
>>    actually complete, instead of relying on drivers_probe write success.
>>
>> ---
>>   lib/igt_pci.c | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++
>>   lib/igt_pci.h |  13 +-
>>   2 files changed, 363 insertions(+), 1 deletion(-)
>>
>> diff --git a/lib/igt_pci.c b/lib/igt_pci.c
>> index 61aaf939d..80aaf07c5 100644
>> --- a/lib/igt_pci.c
>> +++ b/lib/igt_pci.c
>> @@ -3,9 +3,18 @@
>>    * Copyright © 2022 Intel Corporation
>>    */
>>   +#include <ctype.h>
>> +#include <dirent.h>
>> +#include <errno.h>
>> +#include <fcntl.h>
>> +#include <limits.h>
>> +#include <string.h>
>> +#include <unistd.h>
>>   #include <pciaccess.h>
>> +#include "igt_aux.h"
>>   #include "igt_core.h"
>>   #include "igt_pci.h"
>> +#include "igt_sysfs.h"
>>     static int find_pci_cap_offset_at(struct pci_device *dev, enum 
>> pci_cap_id cap_id,
>>                     int start_offset)
>> @@ -51,3 +60,345 @@ int find_pci_cap_offset(struct pci_device *dev, 
>> enum pci_cap_id cap_id)
>>   {
>>       return find_pci_cap_offset_at(dev, cap_id, PCI_CAPS_START);
>>   }
>> +
>> +static int open_pci_driver_dir(const char *driver)
>> +{
>> +    char path[PATH_MAX];
>> +
>> +    snprintf(path, sizeof(path), "/sys/bus/pci/drivers/%s", driver);
>> +    return open(path, O_RDONLY | O_CLOEXEC);
>> +}
>> +
>> +/**
>> + * igt_pci_device_unbind:
>> + * @pci_slot: BDF like "0000:01:00.0"
>> + *
>> + * Unbind @pci_slot from its currently bound driver, if any.
>> + * Returns 0 on success, or a negative errno-like value.
>> + */
>> +int igt_pci_device_unbind(const char *pci_slot)
>> +{
>> +    char path[PATH_MAX];
>> +    int dirfd;
>> +    int ret;
>> +
>> +    snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/driver", 
>> pci_slot);
>> +    dirfd = open(path, O_RDONLY | O_CLOEXEC);
>> +    if (dirfd < 0)
>> +        return 0; /* already unbound */
>> +
>> +    ret = igt_sysfs_set(dirfd, "unbind", pci_slot) ? 0 : -errno;
>> +    close(dirfd);
>> +
>> +    return ret;
>> +}
>> +
>> +/**
>> + * igt_pci_driver_bind:
>> + * @driver: PCI driver name under /sys/bus/pci/drivers/<driver>
>> + * @pci_slot: device to bind
>> + *
>> + * Bind @pci_slot to @driver. Driver must be present/loaded.
>> + * Returns 0 on success, or a negative errno-like value.
>> + */
>> +int igt_pci_driver_bind(const char *driver, const char *pci_slot)
>> +{
>> +    int dirfd, ret;
>> +
>> +    dirfd = open_pci_driver_dir(driver);
>> +    if (dirfd < 0)
>> +        return -errno;
>> +
>> +    ret = igt_sysfs_set(dirfd, "bind", pci_slot) ? 0 : -errno;
>> +    close(dirfd);
>> +
>> +    return ret;
>> +}
>> +
>> +/**
>> + * igt_pci_driver_unbind:
>> + * @driver: PCI driver name
>> + * @pci_slot: device to unbind
>> + *
>> + * Unbind @pci_slot from @driver.
>> + * Returns 0 on success, or a negative errno-like value.
>> + */
>> +int igt_pci_driver_unbind(const char *driver, const char *pci_slot)
>> +{
>> +    int dirfd, ret;
>> +
>> +    dirfd = open_pci_driver_dir(driver);
>> +    if (dirfd < 0)
>> +        return -errno;
>> +
>> +    ret = igt_sysfs_set(dirfd, "unbind", pci_slot) ? 0 : -errno;
>> +    close(dirfd);
>> +
>> +    return ret;
>> +}
>> +
>> +/**
>> + * igt_pci_driver_unbind_all:
>> + * @driver: PCI driver name
>> + *
>> + * Unbind all devices currently bound to @driver.
>> + * Returns 0 on success, or a negative errno-like value.
>> + */
>> +int igt_pci_driver_unbind_all(const char *driver)
>> +{
>> +    char path[PATH_MAX];
>> +    DIR *dir;
>> +    struct dirent *de;
>> +    int driver_fd;
>> +
>> +    snprintf(path, sizeof(path), "/sys/bus/pci/drivers/%s", driver);
>> +    dir = opendir(path);
>> +    if (!dir)
>> +        return -errno;
>> +
>> +    driver_fd = dirfd(dir);
>> +
>> +    while ((de = readdir(dir))) {
>> +        bool ok;
>> +
>> +        /* BDF symlinks are like "0000:01:00.0" and start with digit */
>> +        if (de->d_type != DT_LNK || !isdigit(de->d_name[0]))
>> +            continue;
>> +
>> +        ok = igt_sysfs_set(driver_fd, "unbind", de->d_name);
>> +        if (!ok) {
>> +            int err = -errno;
>> +
>> +            closedir(dir);
>> +            return err;
>> +        }
>> +    }
>> +
>> +    closedir(dir);
>> +    return 0;
>> +}
>> +
>> +/**
>> + * igt_pci_set_driver_override:
>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>> + * @driver: PCI driver name to force-bind (e.g. "xe-vfio-pci"), or
>> + *          NULL / empty string to clear an existing override
>> + *
>> + * Set or clear the PCI driver_override for @pci_slot via sysfs.
>> + *
>> + * This does not trigger driver reprobe by itself. Call
>> + * igt_pci_probe_drivers() afterwards to apply the override.
>> + *
>> + * Returns: 0 on success, negative errno on failure.
>> + */
>> +int igt_pci_set_driver_override(const char *pci_slot, const char 
>> *driver)
>> +{
>> +    char devpath[PATH_MAX];
>> +    int dev;
>> +    bool ok;
>> +
>> +    snprintf(devpath, sizeof(devpath), "/sys/bus/pci/devices/%s", 
>> pci_slot);
>> +    dev = open(devpath, O_DIRECTORY | O_RDONLY);
>> +    if (dev < 0)
>> +        return -errno;
>> +
>> +    ok = igt_sysfs_set(dev, "driver_override", driver ? driver : "");
>> +    close(dev);
>> +
>> +    return ok ? 0 : -errno;
>> +}
>> +
>> +/**
>> + * igt_pci_probe_drivers:
>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>> + *
>> + * Trigger PCI driver reprobe for @pci_slot by writing to
>> + * /sys/bus/pci/drivers_probe.
>> + *
>> + * This causes the kernel to attempt binding the device, honoring any
>> + * driver_override previously set.
>> + *
>> + * Note: a successful write only means the reprobe request was 
>> accepted.
>> + * It does not guarantee that a driver actually bound to the device.
>> + *
>> + * Returns: 0 on success, negative errno on failure.
>> + */
>> +int igt_pci_probe_drivers(const char *pci_slot)
>> +{
>> +    int pci;
>> +    bool ok;
>> +
>> +    pci = open("/sys/bus/pci", O_DIRECTORY | O_RDONLY);
>> +    if (pci < 0)
>> +        return -errno;
>> +
>> +    ok = igt_sysfs_set(pci, "drivers_probe", pci_slot);
>> +    close(pci);
>> +
>> +    return ok ? 0 : -errno;
>> +}
>> +
>> +/**
>> + * igt_pci_get_bound_driver_name:
>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>> + * @driver: destination buffer for the bound driver name
>> + * @driver_len: size of @driver in bytes
>> + *
>> + * Read the currently bound PCI driver name for @pci_slot by 
>> inspecting the
>> + * /sys/bus/pci/devices/<BDF>/driver symlink.
>> + *
>> + * Return values:
>> + *  1: device is bound and @driver contains the driver name
>> + *  0: device is unbound (no driver symlink)
>> + * <0: negative errno-like value on error
>> + */
>> +int igt_pci_get_bound_driver_name(const char *pci_slot, char 
>> *driver, size_t driver_len)
>> +{
>> +    char path[PATH_MAX];
>> +    char link[PATH_MAX];
>> +    const char *base;
>> +    ssize_t len;
>> +
>> +    if (driver && driver_len)
>> +        driver[0] = '\0';
>> +
>> +    snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/driver", 
>> pci_slot);
>> +    len = readlink(path, link, sizeof(link) - 1);
>> +    if (len < 0) {
>> +        if (errno == ENOENT)
>> +            return 0; /* unbound */
>> +
>> +        return -errno;
>> +    }
>> +
>> +    link[len] = '\0';
>> +    base = strrchr(link, '/');
>> +    base = base ? base + 1 : link;
>> +
>> +    if (driver && driver_len)
>
> You can check the input params at the beginning of the function and 
> return error if they are invalid.

driver/driver_len are optional, callers may pass NULL and/or 0 when they 
only need the

return value (bound/unbound) and don’t care about the driver name...

>
>> +        snprintf(driver, driver_len, "%s", base);
>> +
>> +    return 1;
>> +}
>> +
>> +/**
>> + * igt_pci_bind_driver_override:
>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>> + * @driver: PCI driver name to bind (must not be NULL or empty)
>> + * @timeout_ms: how long to wait for the device to become bound.
>> + *              If 0, don't wait (best-effort immediate check only).
>> + *
>> + * Bind @pci_slot to @driver using the driver_override mechanism.
>> + *
>> + * This helper sets driver_override and immediately triggers driver
>> + * reprobe so that the device is bound to the requested driver.
>> + *
>> + * Returns: 0 on success, negative errno-like value on failure.
>> + * A reprobe request can be accepted by sysfs while the driver probe
>> + * fails later; this helper verifies the device ended up bound.
>> + *
>> + * On bind failure, returns a negative error and the failure reason may
>> + * also be logged to dmesg by the kernel driver.
>> + */
>> +int igt_pci_bind_driver_override(const char *pci_slot, const char 
>> *driver,
>> +                 unsigned int timeout_ms)
>> +{
>> +    int ret;
>> +    char bound[64];
>> +    int bound_ret;
>> +    bool bound_ok;
>> +
>> +    if (!driver || !driver[0])
>> +        return -EINVAL;
>> +
>> +    ret = igt_pci_set_driver_override(pci_slot, driver);
>> +    if (ret)
>> +        return ret;
>> +
>> +    ret = igt_pci_probe_drivers(pci_slot);
>> +    if (ret)
>> +        return ret;
>> +
>> +    /*
>> +     * Writing to drivers_probe only tells us the kernel accepted 
>> the request.
>> +     * The actual driver probe may still fail (and only be reported 
>> via dmesg).
>> +     * Verify that the device ended up bound to the requested driver.
>> +     */
>> +    bound_ret = igt_pci_get_bound_driver_name(pci_slot, bound, 
>> sizeof(bound));
>> +    if (bound_ret < 0)
>> +        return bound_ret;
>> +
>> +    if (timeout_ms == 0) {
>> +        /*
>> +         * No waiting requested. If the device is already bound, 
>> validate
>> +         * it is bound to the expected driver; otherwise treat as
>> +         * best-effort request-only success.
>> +         */
>> +        if (bound_ret > 0 && strcmp(bound, driver))
>> +            return -EBUSY;
>> +
>> +        return 0;
>> +    }
>> +
>> +    bound_ok = igt_wait((bound_ret =
>> +                 igt_pci_get_bound_driver_name(pci_slot, bound, 
>> sizeof(bound))) != 0,
>> +                timeout_ms, 1);
>> +    if (!bound_ok)
>> +        return -EIO;
>> +
>> +    if (bound_ret < 0)
>> +        return bound_ret;
>> +
>> +    if (strcmp(bound, driver))
>> +        return -EBUSY;
>> +
>> +    return 0;
>> +}
>> +
>> +/**
>> + * igt_pci_unbind_driver_override:
>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>> + * @timeout_ms: how long to wait for the device to become unbound.
>> + *              If 0, don't wait (best-effort immediate check only).
>> + *
>> + * Unbind @pci_slot from its currently bound driver (if any) and clear
>> + * any driver_override setting.
>> + *
>> + * This is the inverse operation of igt_pci_bind_driver_override().
>> + *
>> + * Returns: 0 on success, negative errno on failure.
>> + */
>> +int igt_pci_unbind_driver_override(const char *pci_slot, unsigned 
>> int timeout_ms)
>> +{
>> +    int ret;
>> +    int bound_ret;
>> +    char bound[64];
>> +    bool unbound_ok;
>> +
>> +    ret = igt_pci_device_unbind(pci_slot);
>> +    if (ret)
>> +        return ret;
>> +
>> +    ret = igt_pci_set_driver_override(pci_slot, "");
>> +    if (ret)
>> +        return ret;
>> +
>> +    bound_ret = igt_pci_get_bound_driver_name(pci_slot, bound, 
>> sizeof(bound));
>> +    if (bound_ret < 0)
>> +        return bound_ret;
>> +
>> +    if (timeout_ms == 0)
>> +        return 0;
>> +
>> +    /* Verify the device actually ends up unbound (driver symlink 
>> removed). */
>> +    unbound_ok = igt_wait((bound_ret =
>> +                   igt_pci_get_bound_driver_name(pci_slot, bound, 
>> sizeof(bound))) == 0,
>> +                  timeout_ms, 1);
>> +    if (!unbound_ok)
>> +        return -EBUSY;
>> +
>> +    if (bound_ret < 0)
>> +        return bound_ret;
>> +
>> +    return 0;
>> +}
>> diff --git a/lib/igt_pci.h b/lib/igt_pci.h
>> index 92b9cc392..a66eeebf2 100644
>> --- a/lib/igt_pci.h
>> +++ b/lib/igt_pci.h
>> @@ -6,8 +6,9 @@
>>   #ifndef __IGT_PCI_H__
>>   #define __IGT_PCI_H__
>>   -#include <stdint.h>
>>   #include <endian.h>
>> +#include <stddef.h>
>> +#include <stdint.h>
>>     /* forward declaration */
>>   struct pci_device;
>> @@ -24,5 +25,15 @@ enum pci_cap_id {
>>   #define  PCI_SLOT_PWR_CTRL_PRESENT (1 << 1)
>>     int find_pci_cap_offset(struct pci_device *dev, enum pci_cap_id 
>> cap_id);
>> +int igt_pci_device_unbind(const char *pci_slot);
>> +int igt_pci_driver_bind(const char *driver, const char *pci_slot);
>> +int igt_pci_driver_unbind(const char *driver, const char *pci_slot);
>> +int igt_pci_driver_unbind_all(const char *driver);
>> +int igt_pci_set_driver_override(const char *pci_slot, const char 
>> *driver);
>> +int igt_pci_probe_drivers(const char *pci_slot);
>> +int igt_pci_get_bound_driver_name(const char *pci_slot, char 
>> *driver, size_t driver_len);
>> +int igt_pci_bind_driver_override(const char *pci_slot, const char 
>> *driver,
>> +                 unsigned int timeout_ms);
>> +int igt_pci_unbind_driver_override(const char *pci_slot, unsigned 
>> int timeout_ms);
>>     #endif

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

* Re: [PATCH v3 i-g-t 7/7] tests/intel/xe_sriov_flr: Skip xe-vfio-pci load/bind when IOMMU is off
  2026-02-09 10:42   ` Laguna, Lukasz
@ 2026-02-10 11:23     ` Bernatowicz, Marcin
  2026-02-11  6:43       ` Laguna, Lukasz
  0 siblings, 1 reply; 23+ messages in thread
From: Bernatowicz, Marcin @ 2026-02-10 11:23 UTC (permalink / raw)
  To: Laguna, Lukasz, igt-dev
  Cc: Jakub Kolakowski, Michał Winiarski, Piotr Piórkowski


On 2/9/2026 11:42 AM, Laguna, Lukasz wrote:
>
> On 2/4/2026 17:32, Marcin Bernatowicz wrote:
>> When the IOMMU is disabled VFs typically lack an iommu_group, and
>> xe-vfio-pci binding may fail. Skip load/bind in that case.
>
> I'm not sure if checking for IOMMU groups is enough.
> I think it's possible that the device has the IOMMU group and vfio-pci 
> still fail to bind if e.g. CONFIG_VFIO_IOMMU_TYPE1 is disabled.
>
> We have a control on the environment where test is executed, so I'm 
> not sure if this patch is needed. We prefer to use the approach with 
> xe-vfio-pci, so if it fails because of the system configuration than I 
> think it would be better to fix the configuration.


Maybe it's good time to add xe_sriov_vfio test with some basic checks:

igt@xe_sriov_vfio@load-xe-vfio-pci
igt@xe_sriov_vfio@unload-xe-vfio-pci
igt@xe_sriov_vfio@bind-unbind-vf
igt@xe_sriov_vfio@open-basic

?

>> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
>> Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
>> Cc: Lukasz Laguna <lukasz.laguna@intel.com>
>> Cc: Michał Winiarski <michal.winiarski@intel.com>
>> Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
>> ---
>>   tests/intel/xe_sriov_flr.c | 43 +++++++++++++++++++++++++++++++++++---
>>   1 file changed, 40 insertions(+), 3 deletions(-)
>>
>> diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
>> index b73727787..3fc84bbf9 100644
>> --- a/tests/intel/xe_sriov_flr.c
>> +++ b/tests/intel/xe_sriov_flr.c
>> @@ -13,6 +13,7 @@
>>   #include "igt_kmod.h"
>>   #include "igt_pci.h"
>>   #include "igt_sriov_device.h"
>> +#include "igt_sysfs.h"
>>   #include "intel_chipset.h"
>>   #include "intel_vram.h"
>>   #include "linux_scaffold.h"
>> @@ -325,6 +326,44 @@ static void vf_unbind_driver_override(int pf_fd, 
>> unsigned int vf_id)
>>       free(slot);
>>   }
>>   +static bool vf_has_iommu_group(int pf_fd, unsigned int vf_id)
>> +{
>> +    int sysfs;
>> +    bool present;
>> +
>> +    sysfs = igt_sriov_device_sysfs_open(pf_fd, vf_id);
>> +    if (sysfs < 0)
>> +        return false;
>> +
>> +    present = igt_sysfs_has_attr(sysfs, "iommu_group");
>> +    close(sysfs);
>> +
>> +    return present;
>> +}
>> +
>> +static bool vfs_have_iommu_groups(int pf_fd, int num_vfs)
>> +{
>> +    for (int vf_id = 1; vf_id <= num_vfs; vf_id++)
>> +        if (!vf_has_iommu_group(pf_fd, vf_id))
>> +            return false;
>> +
>> +    return true;
>> +}
>> +
>> +static bool try_load_xe_vfio_pci(int pf_fd, int num_vfs)
>> +{
>> +    if (!g_use_xe_vfio_pci)
>> +        return false;
>> +
>> +    if (!vfs_have_iommu_groups(pf_fd, num_vfs)) {
>> +        igt_info("Disabling xe-vfio-pci binding: missing VF IOMMU 
>> group(s) (IOMMU off?)\n");
>> +        g_use_xe_vfio_pci = false;
>> +        return false;
>> +    }
>> +
>> +    return igt_kmod_load("xe_vfio_pci", NULL) >= 0;
>> +}
>> +
>>   /**
>>    * flr_exec_strategy - Function pointer for FLR execution strategy
>>    * @pf_fd: File descriptor for the Physical Function (PF).
>> @@ -386,9 +425,7 @@ static void verify_flr(int pf_fd, int num_vfs, 
>> struct subcheck *checks,
>>       if (igt_warn_on(igt_pci_system_reinit()))
>>           goto disable_vfs;
>>   -    xe_vfio_loaded = false;
>> -    if (g_use_xe_vfio_pci)
>> -        xe_vfio_loaded = igt_kmod_load("xe_vfio_pci", NULL) >= 0;
>> +    xe_vfio_loaded = try_load_xe_vfio_pci(pf_fd, num_vfs);
>>       if (xe_vfio_loaded) {
>>           vf_bound = calloc(num_vfs + 1, sizeof(*vf_bound));
>>           igt_assert(vf_bound);

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

* Re: [PATCH v3 i-g-t 2/7] lib/igt_pci: Add generic PCI driver override and bind/unbind helpers
  2026-02-10 10:19     ` Bernatowicz, Marcin
@ 2026-02-11  6:39       ` Laguna, Lukasz
  2026-02-11 11:21         ` Bernatowicz, Marcin
  0 siblings, 1 reply; 23+ messages in thread
From: Laguna, Lukasz @ 2026-02-11  6:39 UTC (permalink / raw)
  To: Bernatowicz, Marcin, igt-dev
  Cc: Adam Miszczak, Jakub Kolakowski, Kamil Konieczny


On 2/10/2026 11:19, Bernatowicz, Marcin wrote:
>
> On 2/9/2026 11:16 AM, Laguna, Lukasz wrote:
>>
>> On 2/4/2026 17:32, Marcin Bernatowicz wrote:
>>> Add generic helpers for controlling PCI driver binding via sysfs.
>>>
>>> The new APIs provide driver- and device-centric primitives for:
>>>    - setting and clearing driver_override
>>>    - triggering PCI driver reprobe
>>>    - binding and unbinding devices to a specific PCI driver
>>>    - query the currently bound PCI driver
>>>
>>> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
>>> Cc: Adam Miszczak <adam.miszczak@linux.intel.com>
>>> Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
>>> Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
>>> Cc: Lukasz Laguna <lukasz.laguna@intel.com>
>>>
>>> ---
>>> v2:
>>> - Add igt_pci_get_bound_driver_name() to query the currently bound PCI
>>>    driver via the /sys/bus/pci/devices/<BDF>/driver symlink.
>>> - Extend igt_pci_bind_driver_override() and 
>>> igt_pci_unbind_driver_override()
>>>    with a timeout_ms parameter so callers can wait for bind/unbind to
>>>    actually complete, instead of relying on drivers_probe write 
>>> success.
>>>
>>> ---
>>>   lib/igt_pci.c | 351 
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++
>>>   lib/igt_pci.h |  13 +-
>>>   2 files changed, 363 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/lib/igt_pci.c b/lib/igt_pci.c
>>> index 61aaf939d..80aaf07c5 100644
>>> --- a/lib/igt_pci.c
>>> +++ b/lib/igt_pci.c
>>> @@ -3,9 +3,18 @@
>>>    * Copyright © 2022 Intel Corporation
>>>    */
>>>   +#include <ctype.h>
>>> +#include <dirent.h>
>>> +#include <errno.h>
>>> +#include <fcntl.h>
>>> +#include <limits.h>
>>> +#include <string.h>
>>> +#include <unistd.h>
>>>   #include <pciaccess.h>
>>> +#include "igt_aux.h"
>>>   #include "igt_core.h"
>>>   #include "igt_pci.h"
>>> +#include "igt_sysfs.h"
>>>     static int find_pci_cap_offset_at(struct pci_device *dev, enum 
>>> pci_cap_id cap_id,
>>>                     int start_offset)
>>> @@ -51,3 +60,345 @@ int find_pci_cap_offset(struct pci_device *dev, 
>>> enum pci_cap_id cap_id)
>>>   {
>>>       return find_pci_cap_offset_at(dev, cap_id, PCI_CAPS_START);
>>>   }
>>> +
>>> +static int open_pci_driver_dir(const char *driver)
>>> +{
>>> +    char path[PATH_MAX];
>>> +
>>> +    snprintf(path, sizeof(path), "/sys/bus/pci/drivers/%s", driver);
>>> +    return open(path, O_RDONLY | O_CLOEXEC);
>>> +}
>>> +
>>> +/**
>>> + * igt_pci_device_unbind:
>>> + * @pci_slot: BDF like "0000:01:00.0"
>>> + *
>>> + * Unbind @pci_slot from its currently bound driver, if any.
>>> + * Returns 0 on success, or a negative errno-like value.
>>> + */
>>> +int igt_pci_device_unbind(const char *pci_slot)
>>> +{
>>> +    char path[PATH_MAX];
>>> +    int dirfd;
>>> +    int ret;
>>> +
>>> +    snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/driver", 
>>> pci_slot);
>>> +    dirfd = open(path, O_RDONLY | O_CLOEXEC);
>>> +    if (dirfd < 0)
>>> +        return 0; /* already unbound */
>>> +
>>> +    ret = igt_sysfs_set(dirfd, "unbind", pci_slot) ? 0 : -errno;
>>> +    close(dirfd);
>>> +
>>> +    return ret;
>>> +}
>>> +
>>> +/**
>>> + * igt_pci_driver_bind:
>>> + * @driver: PCI driver name under /sys/bus/pci/drivers/<driver>
>>> + * @pci_slot: device to bind
>>> + *
>>> + * Bind @pci_slot to @driver. Driver must be present/loaded.
>>> + * Returns 0 on success, or a negative errno-like value.
>>> + */
>>> +int igt_pci_driver_bind(const char *driver, const char *pci_slot)
>>> +{
>>> +    int dirfd, ret;
>>> +
>>> +    dirfd = open_pci_driver_dir(driver);
>>> +    if (dirfd < 0)
>>> +        return -errno;
>>> +
>>> +    ret = igt_sysfs_set(dirfd, "bind", pci_slot) ? 0 : -errno;
>>> +    close(dirfd);
>>> +
>>> +    return ret;
>>> +}
>>> +
>>> +/**
>>> + * igt_pci_driver_unbind:
>>> + * @driver: PCI driver name
>>> + * @pci_slot: device to unbind
>>> + *
>>> + * Unbind @pci_slot from @driver.
>>> + * Returns 0 on success, or a negative errno-like value.
>>> + */
>>> +int igt_pci_driver_unbind(const char *driver, const char *pci_slot)
>>> +{
>>> +    int dirfd, ret;
>>> +
>>> +    dirfd = open_pci_driver_dir(driver);
>>> +    if (dirfd < 0)
>>> +        return -errno;
>>> +
>>> +    ret = igt_sysfs_set(dirfd, "unbind", pci_slot) ? 0 : -errno;
>>> +    close(dirfd);
>>> +
>>> +    return ret;
>>> +}
>>> +
>>> +/**
>>> + * igt_pci_driver_unbind_all:
>>> + * @driver: PCI driver name
>>> + *
>>> + * Unbind all devices currently bound to @driver.
>>> + * Returns 0 on success, or a negative errno-like value.
>>> + */
>>> +int igt_pci_driver_unbind_all(const char *driver)
>>> +{
>>> +    char path[PATH_MAX];
>>> +    DIR *dir;
>>> +    struct dirent *de;
>>> +    int driver_fd;
>>> +
>>> +    snprintf(path, sizeof(path), "/sys/bus/pci/drivers/%s", driver);
>>> +    dir = opendir(path);
>>> +    if (!dir)
>>> +        return -errno;
>>> +
>>> +    driver_fd = dirfd(dir);
>>> +
>>> +    while ((de = readdir(dir))) {
>>> +        bool ok;
>>> +
>>> +        /* BDF symlinks are like "0000:01:00.0" and start with 
>>> digit */
>>> +        if (de->d_type != DT_LNK || !isdigit(de->d_name[0]))
>>> +            continue;
>>> +
>>> +        ok = igt_sysfs_set(driver_fd, "unbind", de->d_name);
>>> +        if (!ok) {
>>> +            int err = -errno;
>>> +
>>> +            closedir(dir);
>>> +            return err;
>>> +        }
>>> +    }
>>> +
>>> +    closedir(dir);
>>> +    return 0;
>>> +}
>>> +
>>> +/**
>>> + * igt_pci_set_driver_override:
>>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>>> + * @driver: PCI driver name to force-bind (e.g. "xe-vfio-pci"), or
>>> + *          NULL / empty string to clear an existing override
>>> + *
>>> + * Set or clear the PCI driver_override for @pci_slot via sysfs.
>>> + *
>>> + * This does not trigger driver reprobe by itself. Call
>>> + * igt_pci_probe_drivers() afterwards to apply the override.
>>> + *
>>> + * Returns: 0 on success, negative errno on failure.
>>> + */
>>> +int igt_pci_set_driver_override(const char *pci_slot, const char 
>>> *driver)
>>> +{
>>> +    char devpath[PATH_MAX];
>>> +    int dev;
>>> +    bool ok;
>>> +
>>> +    snprintf(devpath, sizeof(devpath), "/sys/bus/pci/devices/%s", 
>>> pci_slot);
>>> +    dev = open(devpath, O_DIRECTORY | O_RDONLY);
>>> +    if (dev < 0)
>>> +        return -errno;
>>> +
>>> +    ok = igt_sysfs_set(dev, "driver_override", driver ? driver : "");
>>> +    close(dev);
>>> +
>>> +    return ok ? 0 : -errno;
>>> +}
>>> +
>>> +/**
>>> + * igt_pci_probe_drivers:
>>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>>> + *
>>> + * Trigger PCI driver reprobe for @pci_slot by writing to
>>> + * /sys/bus/pci/drivers_probe.
>>> + *
>>> + * This causes the kernel to attempt binding the device, honoring any
>>> + * driver_override previously set.
>>> + *
>>> + * Note: a successful write only means the reprobe request was 
>>> accepted.
>>> + * It does not guarantee that a driver actually bound to the device.
>>> + *
>>> + * Returns: 0 on success, negative errno on failure.
>>> + */
>>> +int igt_pci_probe_drivers(const char *pci_slot)
>>> +{
>>> +    int pci;
>>> +    bool ok;
>>> +
>>> +    pci = open("/sys/bus/pci", O_DIRECTORY | O_RDONLY);
>>> +    if (pci < 0)
>>> +        return -errno;
>>> +
>>> +    ok = igt_sysfs_set(pci, "drivers_probe", pci_slot);
>>> +    close(pci);
>>> +
>>> +    return ok ? 0 : -errno;
>>> +}
>>> +
>>> +/**
>>> + * igt_pci_get_bound_driver_name:
>>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>>> + * @driver: destination buffer for the bound driver name
>>> + * @driver_len: size of @driver in bytes
>>> + *
>>> + * Read the currently bound PCI driver name for @pci_slot by 
>>> inspecting the
>>> + * /sys/bus/pci/devices/<BDF>/driver symlink.
>>> + *
>>> + * Return values:
>>> + *  1: device is bound and @driver contains the driver name
>>> + *  0: device is unbound (no driver symlink)
>>> + * <0: negative errno-like value on error
>>> + */
>>> +int igt_pci_get_bound_driver_name(const char *pci_slot, char 
>>> *driver, size_t driver_len)
>>> +{
>>> +    char path[PATH_MAX];
>>> +    char link[PATH_MAX];
>>> +    const char *base;
>>> +    ssize_t len;
>>> +
>>> +    if (driver && driver_len)
>>> +        driver[0] = '\0';
>>> +
>>> +    snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/driver", 
>>> pci_slot);
>>> +    len = readlink(path, link, sizeof(link) - 1);
>>> +    if (len < 0) {
>>> +        if (errno == ENOENT)
>>> +            return 0; /* unbound */
>>> +
>>> +        return -errno;
>>> +    }
>>> +
>>> +    link[len] = '\0';
>>> +    base = strrchr(link, '/');
>>> +    base = base ? base + 1 : link;
>>> +
>>> +    if (driver && driver_len)
>>
>> You can check the input params at the beginning of the function and 
>> return error if they are invalid.
>
> driver/driver_len are optional, callers may pass NULL and/or 0 when 
> they only need the
>
> return value (bound/unbound) and don’t care about the driver name...
>

Right... now I see it, but it wasn't clear at first glance. Maybe 
function doc should be updated?
Or probably it would be even better to introduce separate helper 
igt_pci_is_driver_bound()? It would call igt_pci_get_bound_driver_name() 
without passing buffer.

>>
>>> +        snprintf(driver, driver_len, "%s", base);
>>> +
>>> +    return 1;
>>> +}
>>> +
>>> +/**
>>> + * igt_pci_bind_driver_override:
>>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>>> + * @driver: PCI driver name to bind (must not be NULL or empty)
>>> + * @timeout_ms: how long to wait for the device to become bound.
>>> + *              If 0, don't wait (best-effort immediate check only).
>>> + *
>>> + * Bind @pci_slot to @driver using the driver_override mechanism.
>>> + *
>>> + * This helper sets driver_override and immediately triggers driver
>>> + * reprobe so that the device is bound to the requested driver.
>>> + *
>>> + * Returns: 0 on success, negative errno-like value on failure.
>>> + * A reprobe request can be accepted by sysfs while the driver probe
>>> + * fails later; this helper verifies the device ended up bound.
>>> + *
>>> + * On bind failure, returns a negative error and the failure reason 
>>> may
>>> + * also be logged to dmesg by the kernel driver.
>>> + */
>>> +int igt_pci_bind_driver_override(const char *pci_slot, const char 
>>> *driver,
>>> +                 unsigned int timeout_ms)
>>> +{
>>> +    int ret;
>>> +    char bound[64];
>>> +    int bound_ret;
>>> +    bool bound_ok;
>>> +
>>> +    if (!driver || !driver[0])
>>> +        return -EINVAL;
>>> +
>>> +    ret = igt_pci_set_driver_override(pci_slot, driver);
>>> +    if (ret)
>>> +        return ret;
>>> +
>>> +    ret = igt_pci_probe_drivers(pci_slot);
>>> +    if (ret)
>>> +        return ret;
>>> +
>>> +    /*
>>> +     * Writing to drivers_probe only tells us the kernel accepted 
>>> the request.
>>> +     * The actual driver probe may still fail (and only be reported 
>>> via dmesg).
>>> +     * Verify that the device ended up bound to the requested driver.
>>> +     */
>>> +    bound_ret = igt_pci_get_bound_driver_name(pci_slot, bound, 
>>> sizeof(bound));
>>> +    if (bound_ret < 0)
>>> +        return bound_ret;
>>> +
>>> +    if (timeout_ms == 0) {
>>> +        /*
>>> +         * No waiting requested. If the device is already bound, 
>>> validate
>>> +         * it is bound to the expected driver; otherwise treat as
>>> +         * best-effort request-only success.
>>> +         */
>>> +        if (bound_ret > 0 && strcmp(bound, driver))
>>> +            return -EBUSY;
>>> +
>>> +        return 0;
>>> +    }
>>> +
>>> +    bound_ok = igt_wait((bound_ret =
>>> +                 igt_pci_get_bound_driver_name(pci_slot, bound, 
>>> sizeof(bound))) != 0,
>>> +                timeout_ms, 1);
>>> +    if (!bound_ok)
>>> +        return -EIO;
>>> +
>>> +    if (bound_ret < 0)
>>> +        return bound_ret;
>>> +
>>> +    if (strcmp(bound, driver))
>>> +        return -EBUSY;
>>> +
>>> +    return 0;
>>> +}
>>> +
>>> +/**
>>> + * igt_pci_unbind_driver_override:
>>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>>> + * @timeout_ms: how long to wait for the device to become unbound.
>>> + *              If 0, don't wait (best-effort immediate check only).
>>> + *
>>> + * Unbind @pci_slot from its currently bound driver (if any) and clear
>>> + * any driver_override setting.
>>> + *
>>> + * This is the inverse operation of igt_pci_bind_driver_override().
>>> + *
>>> + * Returns: 0 on success, negative errno on failure.
>>> + */
>>> +int igt_pci_unbind_driver_override(const char *pci_slot, unsigned 
>>> int timeout_ms)
>>> +{
>>> +    int ret;
>>> +    int bound_ret;
>>> +    char bound[64];
>>> +    bool unbound_ok;
>>> +
>>> +    ret = igt_pci_device_unbind(pci_slot);
>>> +    if (ret)
>>> +        return ret;
>>> +
>>> +    ret = igt_pci_set_driver_override(pci_slot, "");
>>> +    if (ret)
>>> +        return ret;
>>> +
>>> +    bound_ret = igt_pci_get_bound_driver_name(pci_slot, bound, 
>>> sizeof(bound));
>>> +    if (bound_ret < 0)
>>> +        return bound_ret;
>>> +
>>> +    if (timeout_ms == 0)
>>> +        return 0;
>>> +
>>> +    /* Verify the device actually ends up unbound (driver symlink 
>>> removed). */
>>> +    unbound_ok = igt_wait((bound_ret =
>>> +                   igt_pci_get_bound_driver_name(pci_slot, bound, 
>>> sizeof(bound))) == 0,
>>> +                  timeout_ms, 1);
>>> +    if (!unbound_ok)
>>> +        return -EBUSY;
>>> +
>>> +    if (bound_ret < 0)
>>> +        return bound_ret;
>>> +
>>> +    return 0;
>>> +}
>>> diff --git a/lib/igt_pci.h b/lib/igt_pci.h
>>> index 92b9cc392..a66eeebf2 100644
>>> --- a/lib/igt_pci.h
>>> +++ b/lib/igt_pci.h
>>> @@ -6,8 +6,9 @@
>>>   #ifndef __IGT_PCI_H__
>>>   #define __IGT_PCI_H__
>>>   -#include <stdint.h>
>>>   #include <endian.h>
>>> +#include <stddef.h>
>>> +#include <stdint.h>
>>>     /* forward declaration */
>>>   struct pci_device;
>>> @@ -24,5 +25,15 @@ enum pci_cap_id {
>>>   #define  PCI_SLOT_PWR_CTRL_PRESENT (1 << 1)
>>>     int find_pci_cap_offset(struct pci_device *dev, enum pci_cap_id 
>>> cap_id);
>>> +int igt_pci_device_unbind(const char *pci_slot);
>>> +int igt_pci_driver_bind(const char *driver, const char *pci_slot);
>>> +int igt_pci_driver_unbind(const char *driver, const char *pci_slot);
>>> +int igt_pci_driver_unbind_all(const char *driver);
>>> +int igt_pci_set_driver_override(const char *pci_slot, const char 
>>> *driver);
>>> +int igt_pci_probe_drivers(const char *pci_slot);
>>> +int igt_pci_get_bound_driver_name(const char *pci_slot, char 
>>> *driver, size_t driver_len);
>>> +int igt_pci_bind_driver_override(const char *pci_slot, const char 
>>> *driver,
>>> +                 unsigned int timeout_ms);
>>> +int igt_pci_unbind_driver_override(const char *pci_slot, unsigned 
>>> int timeout_ms);
>>>     #endif

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

* Re: [PATCH v3 i-g-t 7/7] tests/intel/xe_sriov_flr: Skip xe-vfio-pci load/bind when IOMMU is off
  2026-02-10 11:23     ` Bernatowicz, Marcin
@ 2026-02-11  6:43       ` Laguna, Lukasz
  0 siblings, 0 replies; 23+ messages in thread
From: Laguna, Lukasz @ 2026-02-11  6:43 UTC (permalink / raw)
  To: Bernatowicz, Marcin, igt-dev
  Cc: Jakub Kolakowski, Michał Winiarski, Piotr Piórkowski


On 2/10/2026 12:23, Bernatowicz, Marcin wrote:
>
> On 2/9/2026 11:42 AM, Laguna, Lukasz wrote:
>>
>> On 2/4/2026 17:32, Marcin Bernatowicz wrote:
>>> When the IOMMU is disabled VFs typically lack an iommu_group, and
>>> xe-vfio-pci binding may fail. Skip load/bind in that case.
>>
>> I'm not sure if checking for IOMMU groups is enough.
>> I think it's possible that the device has the IOMMU group and 
>> vfio-pci still fail to bind if e.g. CONFIG_VFIO_IOMMU_TYPE1 is disabled.
>>
>> We have a control on the environment where test is executed, so I'm 
>> not sure if this patch is needed. We prefer to use the approach with 
>> xe-vfio-pci, so if it fails because of the system configuration than 
>> I think it would be better to fix the configuration.
>
>
> Maybe it's good time to add xe_sriov_vfio test with some basic checks:
>
> igt@xe_sriov_vfio@load-xe-vfio-pci
> igt@xe_sriov_vfio@unload-xe-vfio-pci
> igt@xe_sriov_vfio@bind-unbind-vf
> igt@xe_sriov_vfio@open-basic
>
> ?
>

Sounds good to me

>>> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
>>> Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
>>> Cc: Lukasz Laguna <lukasz.laguna@intel.com>
>>> Cc: Michał Winiarski <michal.winiarski@intel.com>
>>> Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
>>> ---
>>>   tests/intel/xe_sriov_flr.c | 43 
>>> +++++++++++++++++++++++++++++++++++---
>>>   1 file changed, 40 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
>>> index b73727787..3fc84bbf9 100644
>>> --- a/tests/intel/xe_sriov_flr.c
>>> +++ b/tests/intel/xe_sriov_flr.c
>>> @@ -13,6 +13,7 @@
>>>   #include "igt_kmod.h"
>>>   #include "igt_pci.h"
>>>   #include "igt_sriov_device.h"
>>> +#include "igt_sysfs.h"
>>>   #include "intel_chipset.h"
>>>   #include "intel_vram.h"
>>>   #include "linux_scaffold.h"
>>> @@ -325,6 +326,44 @@ static void vf_unbind_driver_override(int 
>>> pf_fd, unsigned int vf_id)
>>>       free(slot);
>>>   }
>>>   +static bool vf_has_iommu_group(int pf_fd, unsigned int vf_id)
>>> +{
>>> +    int sysfs;
>>> +    bool present;
>>> +
>>> +    sysfs = igt_sriov_device_sysfs_open(pf_fd, vf_id);
>>> +    if (sysfs < 0)
>>> +        return false;
>>> +
>>> +    present = igt_sysfs_has_attr(sysfs, "iommu_group");
>>> +    close(sysfs);
>>> +
>>> +    return present;
>>> +}
>>> +
>>> +static bool vfs_have_iommu_groups(int pf_fd, int num_vfs)
>>> +{
>>> +    for (int vf_id = 1; vf_id <= num_vfs; vf_id++)
>>> +        if (!vf_has_iommu_group(pf_fd, vf_id))
>>> +            return false;
>>> +
>>> +    return true;
>>> +}
>>> +
>>> +static bool try_load_xe_vfio_pci(int pf_fd, int num_vfs)
>>> +{
>>> +    if (!g_use_xe_vfio_pci)
>>> +        return false;
>>> +
>>> +    if (!vfs_have_iommu_groups(pf_fd, num_vfs)) {
>>> +        igt_info("Disabling xe-vfio-pci binding: missing VF IOMMU 
>>> group(s) (IOMMU off?)\n");
>>> +        g_use_xe_vfio_pci = false;
>>> +        return false;
>>> +    }
>>> +
>>> +    return igt_kmod_load("xe_vfio_pci", NULL) >= 0;
>>> +}
>>> +
>>>   /**
>>>    * flr_exec_strategy - Function pointer for FLR execution strategy
>>>    * @pf_fd: File descriptor for the Physical Function (PF).
>>> @@ -386,9 +425,7 @@ static void verify_flr(int pf_fd, int num_vfs, 
>>> struct subcheck *checks,
>>>       if (igt_warn_on(igt_pci_system_reinit()))
>>>           goto disable_vfs;
>>>   -    xe_vfio_loaded = false;
>>> -    if (g_use_xe_vfio_pci)
>>> -        xe_vfio_loaded = igt_kmod_load("xe_vfio_pci", NULL) >= 0;
>>> +    xe_vfio_loaded = try_load_xe_vfio_pci(pf_fd, num_vfs);
>>>       if (xe_vfio_loaded) {
>>>           vf_bound = calloc(num_vfs + 1, sizeof(*vf_bound));
>>>           igt_assert(vf_bound);

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

* Re: [PATCH v3 i-g-t 2/7] lib/igt_pci: Add generic PCI driver override and bind/unbind helpers
  2026-02-11  6:39       ` Laguna, Lukasz
@ 2026-02-11 11:21         ` Bernatowicz, Marcin
  0 siblings, 0 replies; 23+ messages in thread
From: Bernatowicz, Marcin @ 2026-02-11 11:21 UTC (permalink / raw)
  To: Laguna, Lukasz, igt-dev; +Cc: Adam Miszczak, Jakub Kolakowski, Kamil Konieczny


On 2/11/2026 7:39 AM, Laguna, Lukasz wrote:
>
> On 2/10/2026 11:19, Bernatowicz, Marcin wrote:
>>
>> On 2/9/2026 11:16 AM, Laguna, Lukasz wrote:
>>>
>>> On 2/4/2026 17:32, Marcin Bernatowicz wrote:
>>>> Add generic helpers for controlling PCI driver binding via sysfs.
>>>>
>>>> The new APIs provide driver- and device-centric primitives for:
>>>>    - setting and clearing driver_override
>>>>    - triggering PCI driver reprobe
>>>>    - binding and unbinding devices to a specific PCI driver
>>>>    - query the currently bound PCI driver
>>>>
>>>> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
>>>> Cc: Adam Miszczak <adam.miszczak@linux.intel.com>
>>>> Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
>>>> Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
>>>> Cc: Lukasz Laguna <lukasz.laguna@intel.com>
>>>>
>>>> ---
>>>> v2:
>>>> - Add igt_pci_get_bound_driver_name() to query the currently bound PCI
>>>>    driver via the /sys/bus/pci/devices/<BDF>/driver symlink.
>>>> - Extend igt_pci_bind_driver_override() and 
>>>> igt_pci_unbind_driver_override()
>>>>    with a timeout_ms parameter so callers can wait for bind/unbind to
>>>>    actually complete, instead of relying on drivers_probe write 
>>>> success.
>>>>
>>>> ---
>>>>   lib/igt_pci.c | 351 
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>   lib/igt_pci.h |  13 +-
>>>>   2 files changed, 363 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/lib/igt_pci.c b/lib/igt_pci.c
>>>> index 61aaf939d..80aaf07c5 100644
>>>> --- a/lib/igt_pci.c
>>>> +++ b/lib/igt_pci.c
>>>> @@ -3,9 +3,18 @@
>>>>    * Copyright © 2022 Intel Corporation
>>>>    */
>>>>   +#include <ctype.h>
>>>> +#include <dirent.h>
>>>> +#include <errno.h>
>>>> +#include <fcntl.h>
>>>> +#include <limits.h>
>>>> +#include <string.h>
>>>> +#include <unistd.h>
>>>>   #include <pciaccess.h>
>>>> +#include "igt_aux.h"
>>>>   #include "igt_core.h"
>>>>   #include "igt_pci.h"
>>>> +#include "igt_sysfs.h"
>>>>     static int find_pci_cap_offset_at(struct pci_device *dev, enum 
>>>> pci_cap_id cap_id,
>>>>                     int start_offset)
>>>> @@ -51,3 +60,345 @@ int find_pci_cap_offset(struct pci_device *dev, 
>>>> enum pci_cap_id cap_id)
>>>>   {
>>>>       return find_pci_cap_offset_at(dev, cap_id, PCI_CAPS_START);
>>>>   }
>>>> +
>>>> +static int open_pci_driver_dir(const char *driver)
>>>> +{
>>>> +    char path[PATH_MAX];
>>>> +
>>>> +    snprintf(path, sizeof(path), "/sys/bus/pci/drivers/%s", driver);
>>>> +    return open(path, O_RDONLY | O_CLOEXEC);
>>>> +}
>>>> +
>>>> +/**
>>>> + * igt_pci_device_unbind:
>>>> + * @pci_slot: BDF like "0000:01:00.0"
>>>> + *
>>>> + * Unbind @pci_slot from its currently bound driver, if any.
>>>> + * Returns 0 on success, or a negative errno-like value.
>>>> + */
>>>> +int igt_pci_device_unbind(const char *pci_slot)
>>>> +{
>>>> +    char path[PATH_MAX];
>>>> +    int dirfd;
>>>> +    int ret;
>>>> +
>>>> +    snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/driver", 
>>>> pci_slot);
>>>> +    dirfd = open(path, O_RDONLY | O_CLOEXEC);
>>>> +    if (dirfd < 0)
>>>> +        return 0; /* already unbound */
>>>> +
>>>> +    ret = igt_sysfs_set(dirfd, "unbind", pci_slot) ? 0 : -errno;
>>>> +    close(dirfd);
>>>> +
>>>> +    return ret;
>>>> +}
>>>> +
>>>> +/**
>>>> + * igt_pci_driver_bind:
>>>> + * @driver: PCI driver name under /sys/bus/pci/drivers/<driver>
>>>> + * @pci_slot: device to bind
>>>> + *
>>>> + * Bind @pci_slot to @driver. Driver must be present/loaded.
>>>> + * Returns 0 on success, or a negative errno-like value.
>>>> + */
>>>> +int igt_pci_driver_bind(const char *driver, const char *pci_slot)
>>>> +{
>>>> +    int dirfd, ret;
>>>> +
>>>> +    dirfd = open_pci_driver_dir(driver);
>>>> +    if (dirfd < 0)
>>>> +        return -errno;
>>>> +
>>>> +    ret = igt_sysfs_set(dirfd, "bind", pci_slot) ? 0 : -errno;
>>>> +    close(dirfd);
>>>> +
>>>> +    return ret;
>>>> +}
>>>> +
>>>> +/**
>>>> + * igt_pci_driver_unbind:
>>>> + * @driver: PCI driver name
>>>> + * @pci_slot: device to unbind
>>>> + *
>>>> + * Unbind @pci_slot from @driver.
>>>> + * Returns 0 on success, or a negative errno-like value.
>>>> + */
>>>> +int igt_pci_driver_unbind(const char *driver, const char *pci_slot)
>>>> +{
>>>> +    int dirfd, ret;
>>>> +
>>>> +    dirfd = open_pci_driver_dir(driver);
>>>> +    if (dirfd < 0)
>>>> +        return -errno;
>>>> +
>>>> +    ret = igt_sysfs_set(dirfd, "unbind", pci_slot) ? 0 : -errno;
>>>> +    close(dirfd);
>>>> +
>>>> +    return ret;
>>>> +}
>>>> +
>>>> +/**
>>>> + * igt_pci_driver_unbind_all:
>>>> + * @driver: PCI driver name
>>>> + *
>>>> + * Unbind all devices currently bound to @driver.
>>>> + * Returns 0 on success, or a negative errno-like value.
>>>> + */
>>>> +int igt_pci_driver_unbind_all(const char *driver)
>>>> +{
>>>> +    char path[PATH_MAX];
>>>> +    DIR *dir;
>>>> +    struct dirent *de;
>>>> +    int driver_fd;
>>>> +
>>>> +    snprintf(path, sizeof(path), "/sys/bus/pci/drivers/%s", driver);
>>>> +    dir = opendir(path);
>>>> +    if (!dir)
>>>> +        return -errno;
>>>> +
>>>> +    driver_fd = dirfd(dir);
>>>> +
>>>> +    while ((de = readdir(dir))) {
>>>> +        bool ok;
>>>> +
>>>> +        /* BDF symlinks are like "0000:01:00.0" and start with 
>>>> digit */
>>>> +        if (de->d_type != DT_LNK || !isdigit(de->d_name[0]))
>>>> +            continue;
>>>> +
>>>> +        ok = igt_sysfs_set(driver_fd, "unbind", de->d_name);
>>>> +        if (!ok) {
>>>> +            int err = -errno;
>>>> +
>>>> +            closedir(dir);
>>>> +            return err;
>>>> +        }
>>>> +    }
>>>> +
>>>> +    closedir(dir);
>>>> +    return 0;
>>>> +}
>>>> +
>>>> +/**
>>>> + * igt_pci_set_driver_override:
>>>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>>>> + * @driver: PCI driver name to force-bind (e.g. "xe-vfio-pci"), or
>>>> + *          NULL / empty string to clear an existing override
>>>> + *
>>>> + * Set or clear the PCI driver_override for @pci_slot via sysfs.
>>>> + *
>>>> + * This does not trigger driver reprobe by itself. Call
>>>> + * igt_pci_probe_drivers() afterwards to apply the override.
>>>> + *
>>>> + * Returns: 0 on success, negative errno on failure.
>>>> + */
>>>> +int igt_pci_set_driver_override(const char *pci_slot, const char 
>>>> *driver)
>>>> +{
>>>> +    char devpath[PATH_MAX];
>>>> +    int dev;
>>>> +    bool ok;
>>>> +
>>>> +    snprintf(devpath, sizeof(devpath), "/sys/bus/pci/devices/%s", 
>>>> pci_slot);
>>>> +    dev = open(devpath, O_DIRECTORY | O_RDONLY);
>>>> +    if (dev < 0)
>>>> +        return -errno;
>>>> +
>>>> +    ok = igt_sysfs_set(dev, "driver_override", driver ? driver : "");
>>>> +    close(dev);
>>>> +
>>>> +    return ok ? 0 : -errno;
>>>> +}
>>>> +
>>>> +/**
>>>> + * igt_pci_probe_drivers:
>>>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>>>> + *
>>>> + * Trigger PCI driver reprobe for @pci_slot by writing to
>>>> + * /sys/bus/pci/drivers_probe.
>>>> + *
>>>> + * This causes the kernel to attempt binding the device, honoring any
>>>> + * driver_override previously set.
>>>> + *
>>>> + * Note: a successful write only means the reprobe request was 
>>>> accepted.
>>>> + * It does not guarantee that a driver actually bound to the device.
>>>> + *
>>>> + * Returns: 0 on success, negative errno on failure.
>>>> + */
>>>> +int igt_pci_probe_drivers(const char *pci_slot)
>>>> +{
>>>> +    int pci;
>>>> +    bool ok;
>>>> +
>>>> +    pci = open("/sys/bus/pci", O_DIRECTORY | O_RDONLY);
>>>> +    if (pci < 0)
>>>> +        return -errno;
>>>> +
>>>> +    ok = igt_sysfs_set(pci, "drivers_probe", pci_slot);
>>>> +    close(pci);
>>>> +
>>>> +    return ok ? 0 : -errno;
>>>> +}
>>>> +
>>>> +/**
>>>> + * igt_pci_get_bound_driver_name:
>>>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>>>> + * @driver: destination buffer for the bound driver name
>>>> + * @driver_len: size of @driver in bytes
>>>> + *
>>>> + * Read the currently bound PCI driver name for @pci_slot by 
>>>> inspecting the
>>>> + * /sys/bus/pci/devices/<BDF>/driver symlink.
>>>> + *
>>>> + * Return values:
>>>> + *  1: device is bound and @driver contains the driver name
>>>> + *  0: device is unbound (no driver symlink)
>>>> + * <0: negative errno-like value on error
>>>> + */
>>>> +int igt_pci_get_bound_driver_name(const char *pci_slot, char 
>>>> *driver, size_t driver_len)
>>>> +{
>>>> +    char path[PATH_MAX];
>>>> +    char link[PATH_MAX];
>>>> +    const char *base;
>>>> +    ssize_t len;
>>>> +
>>>> +    if (driver && driver_len)
>>>> +        driver[0] = '\0';
>>>> +
>>>> +    snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/driver", 
>>>> pci_slot);
>>>> +    len = readlink(path, link, sizeof(link) - 1);
>>>> +    if (len < 0) {
>>>> +        if (errno == ENOENT)
>>>> +            return 0; /* unbound */
>>>> +
>>>> +        return -errno;
>>>> +    }
>>>> +
>>>> +    link[len] = '\0';
>>>> +    base = strrchr(link, '/');
>>>> +    base = base ? base + 1 : link;
>>>> +
>>>> +    if (driver && driver_len)
>>>
>>> You can check the input params at the beginning of the function and 
>>> return error if they are invalid.
>>
>> driver/driver_len are optional, callers may pass NULL and/or 0 when 
>> they only need the
>>
>> return value (bound/unbound) and don’t care about the driver name...
>>
>
> Right... now I see it, but it wasn't clear at first glance. Maybe 
> function doc should be updated?
> Or probably it would be even better to introduce separate helper 
> igt_pci_is_driver_bound()? It would call 
> igt_pci_get_bound_driver_name() without passing buffer.
>
Send v4 with updated doc.
>>>
>>>> +        snprintf(driver, driver_len, "%s", base);
>>>> +
>>>> +    return 1;
>>>> +}
>>>> +
>>>> +/**
>>>> + * igt_pci_bind_driver_override:
>>>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>>>> + * @driver: PCI driver name to bind (must not be NULL or empty)
>>>> + * @timeout_ms: how long to wait for the device to become bound.
>>>> + *              If 0, don't wait (best-effort immediate check only).
>>>> + *
>>>> + * Bind @pci_slot to @driver using the driver_override mechanism.
>>>> + *
>>>> + * This helper sets driver_override and immediately triggers driver
>>>> + * reprobe so that the device is bound to the requested driver.
>>>> + *
>>>> + * Returns: 0 on success, negative errno-like value on failure.
>>>> + * A reprobe request can be accepted by sysfs while the driver probe
>>>> + * fails later; this helper verifies the device ended up bound.
>>>> + *
>>>> + * On bind failure, returns a negative error and the failure 
>>>> reason may
>>>> + * also be logged to dmesg by the kernel driver.
>>>> + */
>>>> +int igt_pci_bind_driver_override(const char *pci_slot, const char 
>>>> *driver,
>>>> +                 unsigned int timeout_ms)
>>>> +{
>>>> +    int ret;
>>>> +    char bound[64];
>>>> +    int bound_ret;
>>>> +    bool bound_ok;
>>>> +
>>>> +    if (!driver || !driver[0])
>>>> +        return -EINVAL;
>>>> +
>>>> +    ret = igt_pci_set_driver_override(pci_slot, driver);
>>>> +    if (ret)
>>>> +        return ret;
>>>> +
>>>> +    ret = igt_pci_probe_drivers(pci_slot);
>>>> +    if (ret)
>>>> +        return ret;
>>>> +
>>>> +    /*
>>>> +     * Writing to drivers_probe only tells us the kernel accepted 
>>>> the request.
>>>> +     * The actual driver probe may still fail (and only be 
>>>> reported via dmesg).
>>>> +     * Verify that the device ended up bound to the requested driver.
>>>> +     */
>>>> +    bound_ret = igt_pci_get_bound_driver_name(pci_slot, bound, 
>>>> sizeof(bound));
>>>> +    if (bound_ret < 0)
>>>> +        return bound_ret;
>>>> +
>>>> +    if (timeout_ms == 0) {
>>>> +        /*
>>>> +         * No waiting requested. If the device is already bound, 
>>>> validate
>>>> +         * it is bound to the expected driver; otherwise treat as
>>>> +         * best-effort request-only success.
>>>> +         */
>>>> +        if (bound_ret > 0 && strcmp(bound, driver))
>>>> +            return -EBUSY;
>>>> +
>>>> +        return 0;
>>>> +    }
>>>> +
>>>> +    bound_ok = igt_wait((bound_ret =
>>>> +                 igt_pci_get_bound_driver_name(pci_slot, bound, 
>>>> sizeof(bound))) != 0,
>>>> +                timeout_ms, 1);
>>>> +    if (!bound_ok)
>>>> +        return -EIO;
>>>> +
>>>> +    if (bound_ret < 0)
>>>> +        return bound_ret;
>>>> +
>>>> +    if (strcmp(bound, driver))
>>>> +        return -EBUSY;
>>>> +
>>>> +    return 0;
>>>> +}
>>>> +
>>>> +/**
>>>> + * igt_pci_unbind_driver_override:
>>>> + * @pci_slot: PCI device BDF (e.g. "0000:01:00.0")
>>>> + * @timeout_ms: how long to wait for the device to become unbound.
>>>> + *              If 0, don't wait (best-effort immediate check only).
>>>> + *
>>>> + * Unbind @pci_slot from its currently bound driver (if any) and 
>>>> clear
>>>> + * any driver_override setting.
>>>> + *
>>>> + * This is the inverse operation of igt_pci_bind_driver_override().
>>>> + *
>>>> + * Returns: 0 on success, negative errno on failure.
>>>> + */
>>>> +int igt_pci_unbind_driver_override(const char *pci_slot, unsigned 
>>>> int timeout_ms)
>>>> +{
>>>> +    int ret;
>>>> +    int bound_ret;
>>>> +    char bound[64];
>>>> +    bool unbound_ok;
>>>> +
>>>> +    ret = igt_pci_device_unbind(pci_slot);
>>>> +    if (ret)
>>>> +        return ret;
>>>> +
>>>> +    ret = igt_pci_set_driver_override(pci_slot, "");
>>>> +    if (ret)
>>>> +        return ret;
>>>> +
>>>> +    bound_ret = igt_pci_get_bound_driver_name(pci_slot, bound, 
>>>> sizeof(bound));
>>>> +    if (bound_ret < 0)
>>>> +        return bound_ret;
>>>> +
>>>> +    if (timeout_ms == 0)
>>>> +        return 0;
>>>> +
>>>> +    /* Verify the device actually ends up unbound (driver symlink 
>>>> removed). */
>>>> +    unbound_ok = igt_wait((bound_ret =
>>>> +                   igt_pci_get_bound_driver_name(pci_slot, bound, 
>>>> sizeof(bound))) == 0,
>>>> +                  timeout_ms, 1);
>>>> +    if (!unbound_ok)
>>>> +        return -EBUSY;
>>>> +
>>>> +    if (bound_ret < 0)
>>>> +        return bound_ret;
>>>> +
>>>> +    return 0;
>>>> +}
>>>> diff --git a/lib/igt_pci.h b/lib/igt_pci.h
>>>> index 92b9cc392..a66eeebf2 100644
>>>> --- a/lib/igt_pci.h
>>>> +++ b/lib/igt_pci.h
>>>> @@ -6,8 +6,9 @@
>>>>   #ifndef __IGT_PCI_H__
>>>>   #define __IGT_PCI_H__
>>>>   -#include <stdint.h>
>>>>   #include <endian.h>
>>>> +#include <stddef.h>
>>>> +#include <stdint.h>
>>>>     /* forward declaration */
>>>>   struct pci_device;
>>>> @@ -24,5 +25,15 @@ enum pci_cap_id {
>>>>   #define  PCI_SLOT_PWR_CTRL_PRESENT (1 << 1)
>>>>     int find_pci_cap_offset(struct pci_device *dev, enum pci_cap_id 
>>>> cap_id);
>>>> +int igt_pci_device_unbind(const char *pci_slot);
>>>> +int igt_pci_driver_bind(const char *driver, const char *pci_slot);
>>>> +int igt_pci_driver_unbind(const char *driver, const char *pci_slot);
>>>> +int igt_pci_driver_unbind_all(const char *driver);
>>>> +int igt_pci_set_driver_override(const char *pci_slot, const char 
>>>> *driver);
>>>> +int igt_pci_probe_drivers(const char *pci_slot);
>>>> +int igt_pci_get_bound_driver_name(const char *pci_slot, char 
>>>> *driver, size_t driver_len);
>>>> +int igt_pci_bind_driver_override(const char *pci_slot, const char 
>>>> *driver,
>>>> +                 unsigned int timeout_ms);
>>>> +int igt_pci_unbind_driver_override(const char *pci_slot, unsigned 
>>>> int timeout_ms);
>>>>     #endif

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

end of thread, other threads:[~2026-02-11 11:21 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-04 16:32 [PATCH v3 i-g-t 0/7] PCI driver helpers and xe-vfio-pci FLR improvement Marcin Bernatowicz
2026-02-04 16:32 ` [PATCH v3 i-g-t 1/7] lib/igt_sriov_device: Add helper to get VF PCI slot address Marcin Bernatowicz
2026-02-04 16:32 ` [PATCH v3 i-g-t 2/7] lib/igt_pci: Add generic PCI driver override and bind/unbind helpers Marcin Bernatowicz
2026-02-09 10:16   ` Laguna, Lukasz
2026-02-10 10:19     ` Bernatowicz, Marcin
2026-02-11  6:39       ` Laguna, Lukasz
2026-02-11 11:21         ` Bernatowicz, Marcin
2026-02-04 16:32 ` [PATCH v3 i-g-t 3/7] tests/intel/xe_sriov_flr: Attach VFs to xe-vfio-pci before initiating FLR Marcin Bernatowicz
2026-02-09 10:17   ` Laguna, Lukasz
2026-02-04 16:32 ` [PATCH v3 i-g-t 4/7] lib/igt_kmod: Fix PCI bind/unbind for module/driver name mismatch Marcin Bernatowicz
2026-02-04 16:32 ` [PATCH v3 i-g-t 5/7] tests/intel/xe_sriov_flr: Add --wait-flr-ms option Marcin Bernatowicz
2026-02-09 10:18   ` Laguna, Lukasz
2026-02-04 16:32 ` [PATCH v3 i-g-t 6/7] tests/intel/xe_sriov_flr: Add --no-xe-vfio-pci option Marcin Bernatowicz
2026-02-09 10:18   ` Laguna, Lukasz
2026-02-04 16:32 ` [PATCH v3 i-g-t 7/7] tests/intel/xe_sriov_flr: Skip xe-vfio-pci load/bind when IOMMU is off Marcin Bernatowicz
2026-02-09 10:42   ` Laguna, Lukasz
2026-02-10 11:23     ` Bernatowicz, Marcin
2026-02-11  6:43       ` Laguna, Lukasz
2026-02-04 18:27 ` ✓ Xe.CI.BAT: success for PCI driver helpers and xe-vfio-pci FLR improvement (rev3) Patchwork
2026-02-04 18:41 ` ✓ i915.CI.BAT: " Patchwork
2026-02-05  5:02 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-02-05 10:13   ` Bernatowicz, Marcin
2026-02-05  8:13 ` ✓ i915.CI.Full: success " Patchwork

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