All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t 0/4] Validate VF accesses to VRAM via BAR
@ 2025-07-17  9:08 Lukasz Laguna
  2025-07-17  9:08 ` [PATCH i-g-t 1/4] lib/igt_sriov_device: Add helper to iterate over enabled VFs Lukasz Laguna
                   ` (7 more replies)
  0 siblings, 8 replies; 16+ messages in thread
From: Lukasz Laguna @ 2025-07-17  9:08 UTC (permalink / raw)
  To: igt-dev
  Cc: marcin.bernatowicz, michal.wajdeczko, michal.winiarski,
	satyanarayana.k.v.p, adam.miszczak, jakub1.kolakowski,
	lukasz.laguna

Series includes a test to validate VF access to VRAM via BAR. The
following scenarios are covered:
- VF can access all provisioned memory via the VRAM BAR,
- VF cannot access memory beyond what's provisioned via the VRAM BAR,
- VF can access memory via the VRAM BAR after reprovisioning.

Additionally, it introduces a library for VRAM accesses and helper to
iterate over enabled VFs.

Lukasz Laguna (4):
  lib/igt_sriov_device: Add helper to iterate over enabled VFs
  lib/intel_vram: Add library for VRAM accesses
  tests/intel/xe_sriov_flr: Use VRAM access helpers from intel_vram
    library
  tests/intel/xe_sriov_vram: Add test checking VF access to VRAM

 lib/igt_sriov_device.h      |  12 ++
 lib/intel_vram.c            | 183 +++++++++++++++++++++
 lib/intel_vram.h            |  22 +++
 lib/meson.build             |   1 +
 tests/intel/xe_sriov_flr.c  | 106 +++---------
 tests/intel/xe_sriov_vram.c | 310 ++++++++++++++++++++++++++++++++++++
 tests/meson.build           |   1 +
 7 files changed, 549 insertions(+), 86 deletions(-)
 create mode 100644 lib/intel_vram.c
 create mode 100644 lib/intel_vram.h
 create mode 100644 tests/intel/xe_sriov_vram.c

-- 
2.40.0


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

* [PATCH i-g-t 1/4] lib/igt_sriov_device: Add helper to iterate over enabled VFs
  2025-07-17  9:08 [PATCH i-g-t 0/4] Validate VF accesses to VRAM via BAR Lukasz Laguna
@ 2025-07-17  9:08 ` Lukasz Laguna
  2025-07-21 10:05   ` Piotr Piórkowski
  2025-07-17  9:08 ` [PATCH i-g-t 2/4] lib/intel_vram: Add library for VRAM accesses Lukasz Laguna
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 16+ messages in thread
From: Lukasz Laguna @ 2025-07-17  9:08 UTC (permalink / raw)
  To: igt-dev
  Cc: marcin.bernatowicz, michal.wajdeczko, michal.winiarski,
	satyanarayana.k.v.p, adam.miszczak, jakub1.kolakowski,
	lukasz.laguna

Helper allows to iterate over enabled VFs.

Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
---
 lib/igt_sriov_device.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/lib/igt_sriov_device.h b/lib/igt_sriov_device.h
index 912449086..930e97982 100644
--- a/lib/igt_sriov_device.h
+++ b/lib/igt_sriov_device.h
@@ -87,6 +87,18 @@ igt_sriov_random_vf_in_range(int pf_fd, unsigned int start, unsigned int end)
 	     ++__vf_num)
 #define for_each_sriov_num_vfs for_each_sriov_vf
 
+/**
+ * for_each_sriov_enabled_vf - Helper for running code on each enabled VF
+ * @__pf_fd: PF device file descriptor
+ * @__vf_num: VFs iterator
+ *
+ * For loop that iterates over all enabled VFs associated with given PF @__pf_fd.
+ */
+#define for_each_sriov_enabled_vf(__pf_fd, __vf_num) \
+	for (unsigned int __vf_num = 1, __enabled_vfs = igt_sriov_get_enabled_vfs(__pf_fd); \
+	     __vf_num <= __enabled_vfs; \
+	     ++__vf_num)
+
 /**
  * for_each_sriov_vf_in_range - Iterate over VFs in a specified range
  * @__pf_fd: PF device file descriptor
-- 
2.40.0


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

* [PATCH i-g-t 2/4] lib/intel_vram: Add library for VRAM accesses
  2025-07-17  9:08 [PATCH i-g-t 0/4] Validate VF accesses to VRAM via BAR Lukasz Laguna
  2025-07-17  9:08 ` [PATCH i-g-t 1/4] lib/igt_sriov_device: Add helper to iterate over enabled VFs Lukasz Laguna
@ 2025-07-17  9:08 ` Lukasz Laguna
  2025-08-21 20:26   ` Bernatowicz, Marcin
  2025-07-17  9:08 ` [PATCH i-g-t 3/4] tests/intel/xe_sriov_flr: Use VRAM access helpers from intel_vram library Lukasz Laguna
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 16+ messages in thread
From: Lukasz Laguna @ 2025-07-17  9:08 UTC (permalink / raw)
  To: igt-dev
  Cc: marcin.bernatowicz, michal.wajdeczko, michal.winiarski,
	satyanarayana.k.v.p, adam.miszczak, jakub1.kolakowski,
	lukasz.laguna

Prepare a library with helpers to map and unmap VRAM BAR region and
perform read/write operations.

Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
---
 lib/intel_vram.c | 183 +++++++++++++++++++++++++++++++++++++++++++++++
 lib/intel_vram.h |  22 ++++++
 lib/meson.build  |   1 +
 3 files changed, 206 insertions(+)
 create mode 100644 lib/intel_vram.c
 create mode 100644 lib/intel_vram.h

diff --git a/lib/intel_vram.c b/lib/intel_vram.c
new file mode 100644
index 000000000..38e2ccf36
--- /dev/null
+++ b/lib/intel_vram.c
@@ -0,0 +1,183 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+
+#include "igt_core.h"
+#include "igt_sriov_device.h"
+#include "intel_vram.h"
+
+static int intel_vram_open_bar(int pf_fd, unsigned int vf_num, int mode)
+{
+	int sysfs, fd;
+
+	sysfs = igt_sriov_device_sysfs_open(pf_fd, vf_num);
+	if (sysfs < 0) {
+		igt_debug("Failed to open sysfs for VF%d: %s\n", vf_num, strerror(errno));
+		return -1;
+	}
+
+	fd = openat(sysfs, "resource2", mode | O_SYNC);
+	if (fd < 0)
+		igt_debug("Failed to open resource2 for VF%d: %s\n", vf_num, strerror(errno));
+
+	close(sysfs);
+
+	return fd;
+}
+
+/**
+ * intel_vram_bar_size - Get the size of the VRAM BAR
+ * @pf_fd: PF device file descriptor
+ * @vf_num: VF number (1-based), or 0 for the PF
+ *
+ * Opens the VRAM BAR file descriptor for the specified device and retrieves
+ * its size by using fstat().
+ *
+ * Return: The size of the VRAM BAR in bytes on success,
+ *         or negative value on failure.
+ */
+ssize_t intel_vram_bar_size(int pf_fd, unsigned int vf_num)
+{
+	int fd;
+	struct stat st;
+
+	fd = intel_vram_open_bar(pf_fd, vf_num, O_RDONLY);
+	if (fd < 0)
+		return fd;
+
+	if (fstat(fd, &st)) {
+		igt_debug("Failed to stat resource2 for VF%u: %s\n", vf_num, strerror(errno));
+		close(fd);
+		return -1;
+	}
+
+	close(fd);
+
+	return st.st_size;
+}
+
+/**
+ * intel_vram_mmap - Map VRAM BAR region
+ * @pf_fd: PF device file descriptor
+ * @vf_num: VF number (1-based), or 0 for the PF
+ * @length: Number of bytes to map
+ * @prot: Memory protection flags
+ * @offset: Offset (in bytes) within the BAR to begin the mapping
+ *
+ * Maps a PF or VF VRAM BAR into user space using mmap().
+ *
+ * Return: A vram_mapping struct with the mapped address and size on success,
+ *         or NULL address and zero size on failure.
+ */
+struct vram_mapping intel_vram_mmap(int pf_fd, unsigned int vf_num, size_t length, int prot,
+				    off_t offset)
+{
+	int open_flags = ((prot & PROT_WRITE) != 0) ? O_RDWR : O_RDONLY;
+	struct vram_mapping m = { .addr = NULL, .size = 0 };
+	ssize_t vram_bar_size;
+	int vram_bar_fd;
+	void *addr;
+
+	vram_bar_size = intel_vram_bar_size(pf_fd, vf_num);
+	if (vram_bar_size < 0) {
+		igt_debug("Failed to get VRAM BAR size for VF%u: %s\n", vf_num, strerror(errno));
+		return m;
+	}
+
+	if (vram_bar_size < length) {
+		igt_debug("Mapping length (%zu) exceeds VRAM BAR size (%" PRIu64 ")\n",
+			  length, (uint64_t)vram_bar_size);
+		return m;
+	}
+
+	vram_bar_fd = intel_vram_open_bar(pf_fd, vf_num, open_flags);
+	if (vram_bar_fd < 0) {
+		igt_debug("Failed to open VRAM BAR file for VF%u: %s\n", vf_num, strerror(errno));
+		return m;
+	}
+
+	addr = mmap(NULL, length, prot, MAP_SHARED, vram_bar_fd, offset);
+	close(vram_bar_fd);
+	if (addr == MAP_FAILED) {
+		igt_debug("Failed to map VRAM BAR for VF%u: %s\n", vf_num, strerror(errno));
+		return m;
+	}
+
+	m.addr = addr;
+	m.size = length;
+	return m;
+}
+
+/**
+ * intel_vram_munmap - Unmap previously mapped VRAM region
+ * @m: Pointer to a vram_mapping struct representing the mapped region
+ *
+ * Unmaps the user-space memory region previously mapped by intel_vram_mmap().
+ *
+ * Return: 0 on success, or negative value on failure.
+ */
+int intel_vram_munmap(struct vram_mapping *m)
+{
+	int ret;
+
+	ret = munmap(m->addr, m->size);
+	if (ret < 0)
+		igt_debug("Failed munmap %p: %s\n", m->addr, strerror(errno));
+
+	return ret;
+}
+
+/**
+ * intel_vram_read8 - Read 8-bit value from a mapped VRAM region
+ * @m: Pointer to a vram_mapping struct representing the mapped region
+ * @offset: Offset (in bytes) to read from
+ *
+ * Reads a single 8-bit value from the specified offset in the mapped VRAM.
+ *
+ * Return: The 8-bit value read from the given offset.
+ */
+uint8_t intel_vram_read8(struct vram_mapping *m, size_t offset)
+{
+	igt_assert(offset < m->size);
+
+	return READ_ONCE(*((uint8_t *)m->addr + offset));
+}
+
+/**
+ * intel_vram_write8 - Write 8-bit value to a mapped VRAM region
+ * @m: Pointer to a vram_mapping struct representing the mapped region
+ * @offset: Offset (in bytes) to write to
+ * @value: The 8-bit value to write
+ *
+ * Writes a single 8-bit value to the specified offset in the mapped VRAM.
+ */
+void intel_vram_write8(struct vram_mapping *m, size_t offset, uint8_t value)
+{
+	igt_assert(offset < m->size);
+
+	WRITE_ONCE(*((uint8_t *)m->addr + offset), value);
+}
+
+/**
+ * intel_vram_write_readback8 - Write and then read back an 8-bit value
+ * @m: Pointer to a vram_mapping struct representing the mapped region
+ * @offset: Offset (in bytes) to write to and read from
+ * @value: The 8-bit value to write
+ *
+ * Writes an 8-bit value to the specified offset in the mapped VRAM and
+ * reads it back to verify if the write was successful.
+ *
+ * Return: The 8-bit value read back from the given offset.
+ */
+uint8_t intel_vram_write_readback8(struct vram_mapping *m, size_t offset, uint8_t value)
+{
+	intel_vram_write8(m, offset, value);
+	return intel_vram_read8(m, offset);
+}
diff --git a/lib/intel_vram.h b/lib/intel_vram.h
new file mode 100644
index 000000000..b93f915e9
--- /dev/null
+++ b/lib/intel_vram.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#ifndef __INTEL_VRAM_H__
+#define __INTEL_VRAM_H__
+
+struct vram_mapping {
+	void *addr; /* Pointer to the mapped VRAM */
+	size_t size; /* Size of the mapped VRAM region */
+};
+
+ssize_t intel_vram_bar_size(int pf_fd, unsigned int vf_num);
+struct vram_mapping intel_vram_mmap(int pf_fd, unsigned int vf_num, size_t length, int prot,
+				    off_t offset);
+int intel_vram_munmap(struct vram_mapping *m);
+uint8_t intel_vram_read8(struct vram_mapping *m, size_t offset);
+void intel_vram_write8(struct vram_mapping *m, size_t offset, uint8_t value);
+uint8_t intel_vram_write_readback8(struct vram_mapping *m, size_t offset, uint8_t value);
+
+#endif	/* INTEL_VRAM_H */
diff --git a/lib/meson.build b/lib/meson.build
index 2eaca42a4..25c68011d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -70,6 +70,7 @@ lib_sources = [
 	'intel_mocs.c',
 	'igt_multigpu.c',
 	'intel_pat.c',
+	'intel_vram.c',
 	'ioctl_wrappers.c',
 	'media_spin.c',
 	'media_fill.c',
-- 
2.40.0


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

* [PATCH i-g-t 3/4] tests/intel/xe_sriov_flr: Use VRAM access helpers from intel_vram library
  2025-07-17  9:08 [PATCH i-g-t 0/4] Validate VF accesses to VRAM via BAR Lukasz Laguna
  2025-07-17  9:08 ` [PATCH i-g-t 1/4] lib/igt_sriov_device: Add helper to iterate over enabled VFs Lukasz Laguna
  2025-07-17  9:08 ` [PATCH i-g-t 2/4] lib/intel_vram: Add library for VRAM accesses Lukasz Laguna
@ 2025-07-17  9:08 ` Lukasz Laguna
  2025-08-21 20:30   ` Bernatowicz, Marcin
  2025-07-17  9:08 ` [PATCH i-g-t 4/4] tests/intel/xe_sriov_vram: Add test checking VF access to VRAM Lukasz Laguna
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 16+ messages in thread
From: Lukasz Laguna @ 2025-07-17  9:08 UTC (permalink / raw)
  To: igt-dev
  Cc: marcin.bernatowicz, michal.wajdeczko, michal.winiarski,
	satyanarayana.k.v.p, adam.miszczak, jakub1.kolakowski,
	lukasz.laguna

Replace local VRAM access helper functions with the helpers provided by
the intel_vram library.

Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
---
 tests/intel/xe_sriov_flr.c | 106 +++++++------------------------------
 1 file changed, 20 insertions(+), 86 deletions(-)

diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
index 0c6a0c97e..3b7001ec7 100644
--- a/tests/intel/xe_sriov_flr.c
+++ b/tests/intel/xe_sriov_flr.c
@@ -11,6 +11,7 @@
 #include "igt_device.h"
 #include "igt_sriov_device.h"
 #include "intel_chipset.h"
+#include "intel_vram.h"
 #include "linux_scaffold.h"
 #include "xe/xe_mmio.h"
 #include "xe/xe_query.h"
@@ -676,94 +677,28 @@ struct lmem_data {
 	size_t *vf_lmem_size;
 };
 
-struct lmem_info {
-	/* pointer to the mapped area */
-	char *addr;
-	/* size of mapped area */
-	size_t size;
-};
-
 const size_t STEP = SZ_1M;
 
-static void *mmap_vf_lmem(int pf_fd, int vf_num, size_t length, int prot, off_t offset)
-{
-	int open_flags = ((prot & PROT_WRITE) != 0) ? O_RDWR : O_RDONLY;
-	struct stat st;
-	int sysfs, fd;
-	void *addr;
-
-	sysfs = igt_sriov_device_sysfs_open(pf_fd, vf_num);
-	if (sysfs < 0) {
-		igt_debug("Failed to open sysfs for VF%d: %s\n", vf_num, strerror(errno));
-		return NULL;
-	}
-
-	fd = openat(sysfs, "resource2", open_flags | O_SYNC);
-	close(sysfs);
-	if (fd < 0) {
-		igt_debug("Failed to open resource2 for VF%d: %s\n", vf_num, strerror(errno));
-		return NULL;
-	}
-
-	if (fstat(fd, &st)) {
-		igt_debug("Failed to stat resource2 for VF%d: %s\n", vf_num, strerror(errno));
-		close(fd);
-		return NULL;
-	}
-
-	if (st.st_size < length) {
-		igt_debug("Mapping length (%zu) exceeds BAR2 size (%" PRIu64 ")\n", length, (uint64_t)st.st_size);
-		close(fd);
-		return NULL;
-	}
-
-	addr = mmap(NULL, length, prot, MAP_SHARED, fd, offset);
-	close(fd);
-	if (addr == MAP_FAILED) {
-		igt_debug("Failed mmap resource2 for VF%d: %s\n", vf_num, strerror(errno));
-		return NULL;
-	}
-
-	return addr;
-}
-
-static void munmap_vf_lmem(struct lmem_info *lmem)
-{
-	igt_debug_on_f(munmap(lmem->addr, lmem->size),
-		       "Failed munmap %p: %s\n", lmem->addr, strerror(errno));
-}
-
-static char lmem_read(const char *addr, size_t idx)
-{
-	return READ_ONCE(*(addr + idx));
-}
-
-static char lmem_write_readback(char *addr, size_t idx, char value)
-{
-	WRITE_ONCE(*(addr + idx), value);
-	return lmem_read(addr, idx);
-}
-
-static bool lmem_write_pattern(struct lmem_info *lmem, char value, size_t start, size_t step)
+static bool lmem_write_pattern(struct vram_mapping *m, uint8_t value, size_t start, size_t step)
 {
-	char read;
+	uint8_t read;
 
-	for (; start < lmem->size; start += step) {
-		read = lmem_write_readback(lmem->addr, start, value);
+	for (; start < m->size; start += step) {
+		read = intel_vram_write_readback8(m, start, value);
 		if (igt_debug_on_f(read != value, "LMEM[%zu]=%u != %u\n", start, read, value))
 			return false;
 	}
 	return true;
 }
 
-static bool lmem_contains_expected_values_(struct lmem_info *lmem,
-					   char expected, size_t start,
+static bool lmem_contains_expected_values_(struct vram_mapping *m,
+					   uint8_t expected, size_t start,
 					   size_t step)
 {
-	char read;
+	uint8_t read;
 
-	for (; start < lmem->size; start += step) {
-		read = lmem_read(lmem->addr, start);
+	for (; start < m->size; start += step) {
+		read = intel_vram_read8(m, start);
 		if (igt_debug_on_f(read != expected,
 				   "LMEM[%zu]=%u != %u\n", start, read, expected))
 			return false;
@@ -774,30 +709,29 @@ static bool lmem_contains_expected_values_(struct lmem_info *lmem,
 static bool lmem_contains_expected_values(int pf_fd, int vf_num, size_t length,
 					  char expected)
 {
-	struct lmem_info lmem = { .size = length };
+	struct vram_mapping vram;
 	bool result;
 
-	lmem.addr = mmap_vf_lmem(pf_fd, vf_num, length, PROT_READ | PROT_WRITE, 0);
-	if (igt_debug_on(!lmem.addr))
+	vram = intel_vram_mmap(pf_fd, vf_num, length, PROT_READ | PROT_WRITE, 0);
+	if (igt_debug_on(!vram.addr))
 		return false;
 
-	result = lmem_contains_expected_values_(&lmem, expected, 0, STEP);
-	munmap_vf_lmem(&lmem);
+	result = lmem_contains_expected_values_(&vram, expected, 0, STEP);
+	intel_vram_munmap(&vram);
 
 	return result;
 }
 
 static bool lmem_mmap_write_munmap(int pf_fd, int vf_num, size_t length, char value)
 {
-	struct lmem_info lmem;
+	struct vram_mapping vram;
 	bool result;
 
-	lmem.size = length;
-	lmem.addr = mmap_vf_lmem(pf_fd, vf_num, length, PROT_READ | PROT_WRITE, 0);
-	if (igt_debug_on(!lmem.addr))
+	vram = intel_vram_mmap(pf_fd, vf_num, length, PROT_READ | PROT_WRITE, 0);
+	if (igt_debug_on(!vram.addr))
 		return false;
-	result = lmem_write_pattern(&lmem, value, 0, STEP);
-	munmap_vf_lmem(&lmem);
+	result = lmem_write_pattern(&vram, value, 0, STEP);
+	intel_vram_munmap(&vram);
 
 	return result;
 }
-- 
2.40.0


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

* [PATCH i-g-t 4/4] tests/intel/xe_sriov_vram: Add test checking VF access to VRAM
  2025-07-17  9:08 [PATCH i-g-t 0/4] Validate VF accesses to VRAM via BAR Lukasz Laguna
                   ` (2 preceding siblings ...)
  2025-07-17  9:08 ` [PATCH i-g-t 3/4] tests/intel/xe_sriov_flr: Use VRAM access helpers from intel_vram library Lukasz Laguna
@ 2025-07-17  9:08 ` Lukasz Laguna
  2025-07-31  8:29   ` Piotr Piórkowski
  2025-08-21 16:53   ` Bernatowicz, Marcin
  2025-07-17 12:42 ` ✓ i915.CI.BAT: success for Validate VF accesses to VRAM via BAR Patchwork
                   ` (3 subsequent siblings)
  7 siblings, 2 replies; 16+ messages in thread
From: Lukasz Laguna @ 2025-07-17  9:08 UTC (permalink / raw)
  To: igt-dev
  Cc: marcin.bernatowicz, michal.wajdeczko, michal.winiarski,
	satyanarayana.k.v.p, adam.miszczak, jakub1.kolakowski,
	lukasz.laguna

Add a test to validate VF access to VRAM via BAR. The following
scenarios are covered:
- VF can access all provisioned memory via the VRAM BAR,
- VF cannot access memory beyond what's provisioned via the VRAM BAR,
- VF can access memory via the VRAM BAR after reprovisioning.

Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
---
 tests/intel/xe_sriov_vram.c | 310 ++++++++++++++++++++++++++++++++++++
 tests/meson.build           |   1 +
 2 files changed, 311 insertions(+)
 create mode 100644 tests/intel/xe_sriov_vram.c

diff --git a/tests/intel/xe_sriov_vram.c b/tests/intel/xe_sriov_vram.c
new file mode 100644
index 000000000..82f0a2f09
--- /dev/null
+++ b/tests/intel/xe_sriov_vram.c
@@ -0,0 +1,310 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright(c) 2025 Intel Corporation. All rights reserved.
+ */
+
+#include "drmtest.h"
+#include "igt_core.h"
+#include "igt_sriov_device.h"
+#include "intel_vram.h"
+#include "xe/xe_sriov_provisioning.h"
+#include "xe/xe_query.h"
+
+/**
+ * TEST: xe_sriov_vram
+ * Category: Core
+ * Mega feature: SR-IOV
+ * Sub-category: LMTT
+ * Functionality: VRAM access
+ * Description: Validate VF access to VRAM
+ *
+ * SUBTEST: vf-access-basic
+ * Description: Verify that VF can access all the provisioned memory via VRAM BAR
+ *
+ * SUBTEST: vf-access-beyond
+ * Description: Verify that VF cannot access memory beyond what's provisioned via VRAM BAR
+ *
+ * SUBTEST: vf-access-after-resize-down
+ * Description: Verify that VF can access the reprovisioned memory (reduced size) via VRAM BAR
+ *
+ * SUBTEST: vf-access-after-resize-up
+ * Description: Verify that VF can access the reprovisioned memory (increased size) via VRAM BAR
+ */
+
+IGT_TEST_DESCRIPTION("Xe tests for VRAM in SR-IOV context");
+
+const size_t STEP = SZ_1M;
+
+static uint64_t get_provisioned_vram(unsigned int pf_fd, unsigned int vf_id)
+{
+	uint64_t size = 0;
+
+	/* TODO: adjust for multitile platforms */
+	size = xe_sriov_pf_get_provisioned_quota(pf_fd, XE_SRIOV_SHARED_RES_LMEM, vf_id, 0);
+
+	return size;
+}
+
+static bool validate_access_basic(struct vram_mapping *vram, unsigned int vf_id,
+				  uint64_t provisioned_lmem)
+{
+	uint8_t read, orig;
+	bool passed = true;
+
+	for (size_t offset = 0; offset < provisioned_lmem; offset += STEP) {
+		orig = intel_vram_read8(vram, offset);
+
+		read = intel_vram_write_readback8(vram, offset, vf_id);
+		if (read != vf_id) {
+			igt_debug("VRAM write/read check failed on VF%u (offset: %#lx, write: %u, read: %u)\n",
+				  vf_id, offset, vf_id, read);
+			passed = false;
+		}
+
+		read = intel_vram_write_readback8(vram, offset, orig);
+		if (read != orig) {
+			igt_debug("Failed to restore original value on VF%u (offset: %#lx, orig: %u, read: %u)\n",
+				  vf_id, offset, orig, read);
+			passed = false;
+		}
+	}
+
+	return passed;
+}
+
+static void access_basic(unsigned int pf_fd, unsigned int num_vfs)
+{
+	uint64_t provisioned_lmem;
+	struct vram_mapping vram;
+	size_t vram_bar_size;
+	bool passed = true;
+
+	igt_sriov_disable_driver_autoprobe(pf_fd);
+	igt_sriov_enable_vfs(pf_fd, num_vfs);
+
+	for_each_sriov_enabled_vf(pf_fd, vf_id) {
+		provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
+		igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n",
+			  vf_id, provisioned_lmem);
+
+		vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
+		igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
+
+		if (vram_bar_size < provisioned_lmem) {
+			igt_sriov_disable_vfs(pf_fd);
+			igt_skip("VRAM BAR size is smaller than provisioned VRAM\n");
+		}
+
+		vram = intel_vram_mmap(pf_fd, vf_id, provisioned_lmem, PROT_READ | PROT_WRITE, 0);
+		igt_assert(vram.addr);
+
+		passed &= validate_access_basic(&vram, vf_id, provisioned_lmem);
+
+		intel_vram_munmap(&vram);
+	}
+
+	igt_sriov_disable_vfs(pf_fd);
+
+	igt_assert(passed);
+}
+
+static bool validate_access_beyond(struct vram_mapping *vram, unsigned int vf_id,
+				   uint64_t provisioned_lmem, size_t vram_bar_size)
+{
+	uint8_t read, orig;
+	bool passed = true;
+
+	for (size_t offset = provisioned_lmem; offset < vram_bar_size; offset += STEP) {
+		orig = intel_vram_read8(vram, offset);
+
+		read = intel_vram_write_readback8(vram, offset, vf_id);
+		if (read == vf_id) {
+			igt_debug("Successful VRAM write above provisioned size on VF%u (offset: %#lx)\n",
+				  vf_id, offset);
+			passed = false;
+
+			read = intel_vram_write_readback8(vram, offset, orig);
+			if (read != orig)
+				igt_debug("Failed to restore original value on VF%u (offset: %#lx, orig: %u, read: %u)\n",
+					  vf_id, offset, orig, read);
+		}
+	}
+
+	return passed;
+}
+
+static void access_beyond(unsigned int pf_fd, unsigned int num_vfs)
+{
+	uint64_t provisioned_lmem;
+	struct vram_mapping vram;
+	size_t vram_bar_size;
+	bool passed = true;
+
+	igt_sriov_disable_driver_autoprobe(pf_fd);
+	igt_sriov_enable_vfs(pf_fd, num_vfs);
+
+	for_each_sriov_enabled_vf(pf_fd, vf_id) {
+		provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
+		igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n",
+			  vf_id, provisioned_lmem);
+
+		vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
+		igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
+
+		if (vram_bar_size <= provisioned_lmem) {
+			igt_sriov_disable_vfs(pf_fd);
+			igt_skip("VRAM BAR size is smaller or equal to provisioned VRAM\n");
+		}
+
+		vram = intel_vram_mmap(pf_fd, vf_id, vram_bar_size, PROT_READ | PROT_WRITE, 0);
+		igt_assert(vram.addr);
+
+		passed &= validate_access_beyond(&vram, vf_id, provisioned_lmem, vram_bar_size);
+
+		intel_vram_munmap(&vram);
+	}
+
+	igt_sriov_disable_vfs(pf_fd);
+
+	igt_assert(passed);
+}
+
+static void resize_and_access(unsigned int pf_fd, bool resize_up)
+{
+	const unsigned int vf_id = 1;
+	uint64_t provisioned_lmem;
+	struct vram_mapping vram;
+	unsigned int total_vfs;
+	size_t vram_bar_size;
+	bool passed;
+
+	total_vfs = igt_sriov_get_total_vfs(pf_fd);
+
+	igt_sriov_disable_driver_autoprobe(pf_fd);
+	igt_sriov_enable_vfs(pf_fd, resize_up ? total_vfs : 1);
+
+	provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
+	igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n", vf_id, provisioned_lmem);
+
+	igt_sriov_disable_vfs(pf_fd);
+	igt_sriov_enable_vfs(pf_fd, resize_up ? 1 : total_vfs);
+
+	provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
+	igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n", vf_id, provisioned_lmem);
+
+	vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
+	igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
+
+	if (vram_bar_size <= provisioned_lmem) {
+		igt_sriov_disable_vfs(pf_fd);
+		igt_skip("VRAM BAR size is smaller or equal to provisioned VRAM\n");
+	}
+
+	vram = intel_vram_mmap(pf_fd, vf_id, vram_bar_size, PROT_READ | PROT_WRITE, 0);
+	igt_assert(vram.addr);
+
+	passed = validate_access_basic(&vram, vf_id, provisioned_lmem);
+	passed &= validate_access_beyond(&vram, vf_id, provisioned_lmem, vram_bar_size);
+
+	intel_vram_munmap(&vram);
+
+	igt_sriov_disable_vfs(pf_fd);
+
+	igt_assert(passed);
+}
+
+static bool extended_scope;
+
+static int opts_handler(int opt, int opt_index, void *data)
+{
+	switch (opt) {
+	case 'e':
+		extended_scope = true;
+		break;
+	default:
+		return IGT_OPT_HANDLER_ERROR;
+	}
+
+	return IGT_OPT_HANDLER_SUCCESS;
+}
+
+static const struct option long_opts[] = {
+	{ .name = "extended", .has_arg = false, .val = 'e', },
+	{}
+};
+
+static const char help_str[] =
+	"  --extended\tRun the extended test scope\n";
+
+igt_main_args("", long_opts, help_str, opts_handler, NULL)
+{
+	bool autoprobe;
+	int pf_fd;
+	static struct subtest_resize_variants {
+		const char *name;
+		bool resize_up;
+	} resize_variant[] = {
+		{ "up", true },
+		{ "down", false },
+		{ NULL },
+	};
+
+	igt_fixture {
+		pf_fd = drm_open_driver(DRIVER_XE);
+		igt_require(igt_sriov_is_pf(pf_fd));
+		igt_require(igt_sriov_get_enabled_vfs(pf_fd) == 0);
+		autoprobe = igt_sriov_is_driver_autoprobe_enabled(pf_fd);
+	}
+
+	igt_describe("Verify that VF can access all the provisioned memory via VRAM BAR");
+	igt_subtest_with_dynamic_f("vf-access-basic") {
+		if (extended_scope)
+			for_each_sriov_num_vfs(pf_fd, num_vfs)
+				igt_dynamic_f("numvfs-%d", num_vfs)
+					access_basic(pf_fd, num_vfs);
+
+		for_random_sriov_num_vfs(pf_fd, num_vfs) {
+			igt_dynamic_f("numvfs-random") {
+				igt_debug("numvfs=%u\n", num_vfs);
+				access_basic(pf_fd, num_vfs);
+			}
+		}
+	}
+
+	igt_describe("Verify that VF cannot access memory beyond what's provisioned via VRAM BAR");
+	igt_subtest_with_dynamic_f("vf-access-beyond") {
+		if (extended_scope)
+			for_each_sriov_num_vfs(pf_fd, num_vfs)
+				igt_dynamic_f("numvfs-%d", num_vfs)
+					access_beyond(pf_fd, num_vfs);
+
+		for_random_sriov_num_vfs(pf_fd, num_vfs) {
+			igt_dynamic_f("numvfs-random") {
+				igt_debug("numvfs=%u\n", num_vfs);
+				access_beyond(pf_fd, num_vfs);
+			}
+		}
+	}
+
+	for (const struct subtest_resize_variants *s = resize_variant; s->name; s++) {
+		igt_describe("Verify that VF can access the reprovisioned memory via VRAM BAR");
+		igt_subtest_f("vf-access-after-resize-%s", s->name) {
+			unsigned int total_vfs = igt_sriov_get_total_vfs(pf_fd);
+
+			igt_require(total_vfs > 1);
+
+			resize_and_access(pf_fd, s->resize_up);
+		}
+	}
+
+	igt_fixture {
+		igt_sriov_disable_vfs(pf_fd);
+		/* abort to avoid execution of next tests with enabled VFs */
+		igt_abort_on_f(igt_sriov_get_enabled_vfs(pf_fd) > 0, "Failed to disable VF(s)");
+		autoprobe ? igt_sriov_enable_driver_autoprobe(pf_fd) :
+			    igt_sriov_disable_driver_autoprobe(pf_fd);
+		igt_abort_on_f(autoprobe != igt_sriov_is_driver_autoprobe_enabled(pf_fd),
+			       "Failed to restore sriov_drivers_autoprobe value\n");
+		close(pf_fd);
+	}
+}
diff --git a/tests/meson.build b/tests/meson.build
index 5c01c64e9..6054a2c34 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -329,6 +329,7 @@ intel_xe_progs = [
 	'xe_sriov_auto_provisioning',
 	'xe_sriov_flr',
 	'xe_sriov_scheduling',
+	'xe_sriov_vram',
 	'xe_sysfs_defaults',
 	'xe_sysfs_preempt_timeout',
 	'xe_sysfs_scheduler',
-- 
2.40.0


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

* ✓ i915.CI.BAT: success for Validate VF accesses to VRAM via BAR
  2025-07-17  9:08 [PATCH i-g-t 0/4] Validate VF accesses to VRAM via BAR Lukasz Laguna
                   ` (3 preceding siblings ...)
  2025-07-17  9:08 ` [PATCH i-g-t 4/4] tests/intel/xe_sriov_vram: Add test checking VF access to VRAM Lukasz Laguna
@ 2025-07-17 12:42 ` Patchwork
  2025-07-17 13:56 ` ✓ Xe.CI.BAT: " Patchwork
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-07-17 12:42 UTC (permalink / raw)
  To: Lukasz Laguna; +Cc: igt-dev

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

== Series Details ==

Series: Validate VF accesses to VRAM via BAR
URL   : https://patchwork.freedesktop.org/series/151749/
State : success

== Summary ==

CI Bug Log - changes from IGT_8463 -> IGTPW_13490
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (43 -> 44)
------------------------------

  Additional (1): bat-adlp-11 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@dmabuf@all-tests:
    - bat-apl-1:          [PASS][1] -> [ABORT][2] ([i915#12904]) +1 other test abort
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/bat-apl-1/igt@dmabuf@all-tests.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-apl-1/igt@dmabuf@all-tests.html

  * igt@fbdev@eof:
    - bat-adlp-11:        NOTRUN -> [SKIP][3] ([i915#2582]) +3 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@fbdev@eof.html

  * igt@fbdev@info:
    - bat-adlp-11:        NOTRUN -> [SKIP][4] ([i915#1849] / [i915#2582])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@fbdev@info.html

  * igt@gem_lmem_swapping@verify-random:
    - bat-adlp-11:        NOTRUN -> [SKIP][5] ([i915#4613]) +3 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@gem_lmem_swapping@verify-random.html

  * igt@gem_tiled_pread_basic:
    - bat-adlp-11:        NOTRUN -> [SKIP][6] ([i915#3282])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@gem_tiled_pread_basic.html

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

  * igt@i915_selftest@live@active:
    - bat-dg2-14:         [PASS][8] -> [ABORT][9] ([i915#14201]) +1 other test abort
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/bat-dg2-14/igt@i915_selftest@live@active.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-dg2-14/igt@i915_selftest@live@active.html

  * igt@i915_selftest@live@workarounds:
    - bat-mtlp-9:         [PASS][10] -> [DMESG-FAIL][11] ([i915#12061]) +1 other test dmesg-fail
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-mtlp-9/igt@i915_selftest@live@workarounds.html

  * igt@intel_hwmon@hwmon-read:
    - bat-adlp-11:        NOTRUN -> [SKIP][12] ([i915#7707]) +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@intel_hwmon@hwmon-read.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - bat-adlp-11:        NOTRUN -> [SKIP][13] ([i915#3637]) +3 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-adlp-11:        NOTRUN -> [SKIP][14] ([i915#4093]) +3 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-adlp-11:        NOTRUN -> [SKIP][15] ([i915#4342] / [i915#5354])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_hdmi_inject@inject-audio:
    - bat-adlp-11:        NOTRUN -> [SKIP][16] ([i915#4369])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_pipe_crc_basic@read-crc:
    - bat-adlp-11:        NOTRUN -> [SKIP][17] ([i915#10470] / [i915#11190]) +16 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@kms_pipe_crc_basic@read-crc.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-adlp-11:        NOTRUN -> [SKIP][18] ([i915#9812])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr-primary-page-flip:
    - bat-adlp-11:        NOTRUN -> [SKIP][19] ([i915#1072] / [i915#9732]) +3 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-adlp-11/igt@kms_psr@psr-primary-page-flip.html

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

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

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

  
#### Possible fixes ####

  * igt@i915_selftest@live:
    - bat-jsl-1:          [DMESG-FAIL][23] ([i915#13774] / [i915#13827]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/bat-jsl-1/igt@i915_selftest@live.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-jsl-1/igt@i915_selftest@live.html

  * igt@i915_selftest@live@gt_pm:
    - bat-jsl-1:          [DMESG-FAIL][25] ([i915#13774]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/bat-jsl-1/igt@i915_selftest@live@gt_pm.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-jsl-1/igt@i915_selftest@live@gt_pm.html

  * igt@i915_selftest@live@hangcheck:
    - bat-jsl-1:          [DMESG-WARN][27] ([i915#13827]) -> [PASS][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/bat-jsl-1/igt@i915_selftest@live@hangcheck.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/bat-jsl-1/igt@i915_selftest@live@hangcheck.html

  
  [i915#10470]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10470
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#11190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11190
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12904]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12904
  [i915#13774]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13774
  [i915#13827]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13827
  [i915#14201]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14201
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#4093]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4093
  [i915#4342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4342
  [i915#4369]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4369
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812


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

  * CI: CI-20190529 -> None
  * IGT: IGT_8463 -> IGTPW_13490

  CI-20190529: 20190529
  CI_DRM_16882: 32c3655fcecb4e7e7dd624bf7b201ae69eb5bb5f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_13490: 805d41a0659c90488f137596c82b92b8b4336882 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8463: 348dbef0314ccb588cbe83492444afc215965982 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* ✓ Xe.CI.BAT: success for Validate VF accesses to VRAM via BAR
  2025-07-17  9:08 [PATCH i-g-t 0/4] Validate VF accesses to VRAM via BAR Lukasz Laguna
                   ` (4 preceding siblings ...)
  2025-07-17 12:42 ` ✓ i915.CI.BAT: success for Validate VF accesses to VRAM via BAR Patchwork
@ 2025-07-17 13:56 ` Patchwork
  2025-07-18  1:23 ` ✗ i915.CI.Full: failure " Patchwork
  2025-07-18 19:07 ` ✗ Xe.CI.Full: " Patchwork
  7 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-07-17 13:56 UTC (permalink / raw)
  To: Lukasz Laguna; +Cc: igt-dev

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

== Series Details ==

Series: Validate VF accesses to VRAM via BAR
URL   : https://patchwork.freedesktop.org/series/151749/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_8463_BAT -> XEIGTPW_13490_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (7 -> 7)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


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

  * IGT: IGT_8463 -> IGTPW_13490

  IGTPW_13490: 805d41a0659c90488f137596c82b92b8b4336882 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8463: 348dbef0314ccb588cbe83492444afc215965982 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-3430-32c3655fcecb4e7e7dd624bf7b201ae69eb5bb5f: 32c3655fcecb4e7e7dd624bf7b201ae69eb5bb5f

== Logs ==

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

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

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

* ✗ i915.CI.Full: failure for Validate VF accesses to VRAM via BAR
  2025-07-17  9:08 [PATCH i-g-t 0/4] Validate VF accesses to VRAM via BAR Lukasz Laguna
                   ` (5 preceding siblings ...)
  2025-07-17 13:56 ` ✓ Xe.CI.BAT: " Patchwork
@ 2025-07-18  1:23 ` Patchwork
  2025-07-18 19:07 ` ✗ Xe.CI.Full: " Patchwork
  7 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-07-18  1:23 UTC (permalink / raw)
  To: Lukasz Laguna; +Cc: igt-dev

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

== Series Details ==

Series: Validate VF accesses to VRAM via BAR
URL   : https://patchwork.freedesktop.org/series/151749/
State : failure

== Summary ==

CI Bug Log - changes from IGT_8463_full -> IGTPW_13490_full
====================================================

Summary
-------

  **FAILURE**

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

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

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live:
    - shard-rkl:          [PASS][1] -> [DMESG-FAIL][2] +1 other test dmesg-fail
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-4/igt@i915_selftest@live.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@i915_selftest@live.html

  
New tests
---------

  New tests have been introduced between IGT_8463_full and IGTPW_13490_full:

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

  * igt@kms_properties@connector-properties-legacy@pipe-a-vga-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.20] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@blit-reloc-keep-cache:
    - shard-dg1:          NOTRUN -> [SKIP][3] ([i915#8411])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-17/igt@api_intel_bb@blit-reloc-keep-cache.html
    - shard-mtlp:         NOTRUN -> [SKIP][4] ([i915#8411])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-4/igt@api_intel_bb@blit-reloc-keep-cache.html
    - shard-dg2:          NOTRUN -> [SKIP][5] ([i915#8411])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@api_intel_bb@blit-reloc-keep-cache.html
    - shard-rkl:          NOTRUN -> [SKIP][6] ([i915#8411])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@api_intel_bb@blit-reloc-keep-cache.html

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

  * igt@gem_basic@multigpu-create-close:
    - shard-tglu-1:       NOTRUN -> [SKIP][9] ([i915#7697])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@gem_basic@multigpu-create-close.html

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

  * igt@gem_ccs@block-multicopy-inplace:
    - shard-rkl:          NOTRUN -> [SKIP][11] ([i915#3555] / [i915#9323]) +1 other test skip
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@gem_ccs@block-multicopy-inplace.html

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-tglu:         NOTRUN -> [SKIP][12] ([i915#3555] / [i915#9323]) +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-7/igt@gem_ccs@ctrl-surf-copy.html
    - shard-mtlp:         NOTRUN -> [SKIP][13] ([i915#3555] / [i915#9323])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-4/igt@gem_ccs@ctrl-surf-copy.html
    - shard-dg1:          NOTRUN -> [SKIP][14] ([i915#3555] / [i915#9323])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-17/igt@gem_ccs@ctrl-surf-copy.html

  * igt@gem_ccs@suspend-resume:
    - shard-tglu:         NOTRUN -> [SKIP][15] ([i915#9323])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-8/igt@gem_ccs@suspend-resume.html

  * igt@gem_create@create-ext-cpu-access-big:
    - shard-dg2-9:        NOTRUN -> [ABORT][16] ([i915#13427])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_create@create-ext-cpu-access-big.html

  * igt@gem_ctx_persistence@legacy-engines-mixed-process:
    - shard-snb:          NOTRUN -> [SKIP][17] ([i915#1099]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-snb4/igt@gem_ctx_persistence@legacy-engines-mixed-process.html

  * igt@gem_eio@kms:
    - shard-tglu:         NOTRUN -> [DMESG-WARN][18] ([i915#13363])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-3/igt@gem_eio@kms.html
    - shard-dg2:          [PASS][19] -> [FAIL][20] ([i915#5784])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-4/igt@gem_eio@kms.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-5/igt@gem_eio@kms.html

  * igt@gem_exec_balancer@bonded-dual:
    - shard-dg2:          NOTRUN -> [SKIP][21] ([i915#4771])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@gem_exec_balancer@bonded-dual.html

  * igt@gem_exec_balancer@bonded-pair:
    - shard-dg2-9:        NOTRUN -> [SKIP][22] ([i915#4771])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_exec_balancer@bonded-pair.html

  * igt@gem_exec_balancer@noheartbeat:
    - shard-dg2-9:        NOTRUN -> [SKIP][23] ([i915#8555]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_exec_balancer@noheartbeat.html

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

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

  * igt@gem_exec_capture@capture:
    - shard-mtlp:         NOTRUN -> [FAIL][26] ([i915#11965]) +1 other test fail
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-4/igt@gem_exec_capture@capture.html

  * igt@gem_exec_capture@capture-invisible@smem0:
    - shard-glk:          NOTRUN -> [SKIP][27] ([i915#6334]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-glk9/igt@gem_exec_capture@capture-invisible@smem0.html

  * igt@gem_exec_capture@capture-recoverable:
    - shard-tglu:         NOTRUN -> [SKIP][28] ([i915#6344])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-4/igt@gem_exec_capture@capture-recoverable.html

  * igt@gem_exec_capture@capture@vecs0-lmem0:
    - shard-dg2:          NOTRUN -> [FAIL][29] ([i915#11965]) +4 other tests fail
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@gem_exec_capture@capture@vecs0-lmem0.html
    - shard-dg1:          NOTRUN -> [FAIL][30] ([i915#11965]) +2 other tests fail
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-17/igt@gem_exec_capture@capture@vecs0-lmem0.html

  * igt@gem_exec_fence@submit3:
    - shard-dg2:          NOTRUN -> [SKIP][31] ([i915#4812])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@gem_exec_fence@submit3.html

  * igt@gem_exec_flush@basic-uc-ro-default:
    - shard-dg2:          NOTRUN -> [SKIP][32] ([i915#3539] / [i915#4852]) +2 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@gem_exec_flush@basic-uc-ro-default.html

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

  * igt@gem_exec_reloc@basic-cpu-noreloc:
    - shard-mtlp:         NOTRUN -> [SKIP][34] ([i915#3281]) +1 other test skip
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-1/igt@gem_exec_reloc@basic-cpu-noreloc.html

  * igt@gem_exec_reloc@basic-cpu-read:
    - shard-dg2:          NOTRUN -> [SKIP][35] ([i915#3281]) +9 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@gem_exec_reloc@basic-cpu-read.html

  * igt@gem_exec_reloc@basic-gtt-read-noreloc:
    - shard-rkl:          NOTRUN -> [SKIP][36] ([i915#3281]) +4 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@gem_exec_reloc@basic-gtt-read-noreloc.html

  * igt@gem_exec_reloc@basic-wc-gtt-active:
    - shard-dg2-9:        NOTRUN -> [SKIP][37] ([i915#3281]) +2 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_exec_reloc@basic-wc-gtt-active.html

  * igt@gem_exec_reloc@basic-write-gtt-active:
    - shard-dg1:          NOTRUN -> [SKIP][38] ([i915#3281]) +3 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-19/igt@gem_exec_reloc@basic-write-gtt-active.html

  * igt@gem_exec_suspend@basic-s3:
    - shard-rkl:          NOTRUN -> [INCOMPLETE][39] ([i915#13304]) +1 other test incomplete
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@gem_exec_suspend@basic-s3.html

  * igt@gem_fence_thrash@bo-write-verify-threaded-none:
    - shard-dg2:          NOTRUN -> [SKIP][40] ([i915#4860])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@gem_fence_thrash@bo-write-verify-threaded-none.html

  * igt@gem_fence_thrash@bo-write-verify-y:
    - shard-dg2-9:        NOTRUN -> [SKIP][41] ([i915#4860]) +1 other test skip
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_fence_thrash@bo-write-verify-y.html

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

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

  * igt@gem_lmem_swapping@random-engines:
    - shard-rkl:          NOTRUN -> [SKIP][45] ([i915#4613])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_media_vme:
    - shard-rkl:          NOTRUN -> [SKIP][46] ([i915#284])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@gem_media_vme.html

  * igt@gem_mmap@basic:
    - shard-dg1:          NOTRUN -> [SKIP][47] ([i915#4083])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-18/igt@gem_mmap@basic.html

  * igt@gem_mmap_gtt@cpuset-medium-copy-xy:
    - shard-dg2-9:        NOTRUN -> [SKIP][48] ([i915#4077]) +3 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_mmap_gtt@cpuset-medium-copy-xy.html

  * igt@gem_mmap_gtt@medium-copy-odd:
    - shard-dg1:          NOTRUN -> [SKIP][49] ([i915#4077]) +2 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-15/igt@gem_mmap_gtt@medium-copy-odd.html
    - shard-mtlp:         NOTRUN -> [SKIP][50] ([i915#4077]) +1 other test skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-7/igt@gem_mmap_gtt@medium-copy-odd.html

  * igt@gem_mmap_gtt@zero-extend:
    - shard-dg2:          NOTRUN -> [SKIP][51] ([i915#4077]) +8 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@gem_mmap_gtt@zero-extend.html

  * igt@gem_mmap_offset@open-flood:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][52] ([i915#12964] / [i915#14602])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@gem_mmap_offset@open-flood.html

  * igt@gem_mmap_wc@fault-concurrent:
    - shard-dg2:          NOTRUN -> [SKIP][53] ([i915#4083]) +4 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-5/igt@gem_mmap_wc@fault-concurrent.html

  * igt@gem_mmap_wc@invalid-flags:
    - shard-dg2-9:        NOTRUN -> [SKIP][54] ([i915#4083]) +2 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_mmap_wc@invalid-flags.html

  * igt@gem_partial_pwrite_pread@reads-uncached:
    - shard-dg2-9:        NOTRUN -> [SKIP][55] ([i915#3282]) +4 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_partial_pwrite_pread@reads-uncached.html

  * igt@gem_pread@exhaustion:
    - shard-dg1:          NOTRUN -> [SKIP][56] ([i915#3282]) +2 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-16/igt@gem_pread@exhaustion.html
    - shard-snb:          NOTRUN -> [WARN][57] ([i915#2658])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-snb6/igt@gem_pread@exhaustion.html
    - shard-tglu:         NOTRUN -> [WARN][58] ([i915#2658])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-10/igt@gem_pread@exhaustion.html
    - shard-mtlp:         NOTRUN -> [SKIP][59] ([i915#3282]) +2 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-5/igt@gem_pread@exhaustion.html

  * igt@gem_pread@snoop:
    - shard-dg2:          NOTRUN -> [SKIP][60] ([i915#3282]) +2 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@gem_pread@snoop.html

  * igt@gem_pwrite_snooped:
    - shard-rkl:          NOTRUN -> [SKIP][61] ([i915#3282]) +3 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@gem_pwrite_snooped.html

  * igt@gem_pxp@create-regular-buffer:
    - shard-rkl:          [PASS][62] -> [TIMEOUT][63] ([i915#12917] / [i915#12964]) +1 other test timeout
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-8/igt@gem_pxp@create-regular-buffer.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@gem_pxp@create-regular-buffer.html

  * igt@gem_pxp@create-valid-protected-context:
    - shard-dg2:          NOTRUN -> [SKIP][64] ([i915#4270]) +2 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-3/igt@gem_pxp@create-valid-protected-context.html

  * igt@gem_pxp@protected-encrypted-src-copy-not-readible:
    - shard-rkl:          NOTRUN -> [TIMEOUT][65] ([i915#12917] / [i915#12964])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html

  * igt@gem_pxp@reject-modify-context-protection-off-1:
    - shard-dg2-9:        NOTRUN -> [SKIP][66] ([i915#4270])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_pxp@reject-modify-context-protection-off-1.html

  * igt@gem_pxp@reject-modify-context-protection-off-3:
    - shard-dg1:          NOTRUN -> [SKIP][67] ([i915#4270])
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-17/igt@gem_pxp@reject-modify-context-protection-off-3.html

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

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

  * igt@gem_render_copy@yf-tiled-ccs-to-y-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][70] ([i915#5190] / [i915#8428])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@gem_render_copy@yf-tiled-ccs-to-y-tiled.html

  * igt@gem_set_tiling_vs_blt@tiled-to-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][71] ([i915#4079]) +1 other test skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html

  * igt@gem_softpin@evict-prime@vcs0:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][72] ([i915#12964]) +4 other tests dmesg-warn
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@gem_softpin@evict-prime@vcs0.html

  * igt@gem_softpin@evict-snoop:
    - shard-dg2-9:        NOTRUN -> [SKIP][73] ([i915#4885])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_softpin@evict-snoop.html

  * igt@gem_tiled_pread_basic:
    - shard-dg2-9:        NOTRUN -> [SKIP][74] ([i915#4079])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_tiled_pread_basic.html

  * igt@gem_tiled_pread_pwrite:
    - shard-dg1:          NOTRUN -> [SKIP][75] ([i915#4079])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-16/igt@gem_tiled_pread_pwrite.html
    - shard-mtlp:         NOTRUN -> [SKIP][76] ([i915#4079])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-5/igt@gem_tiled_pread_pwrite.html
    - shard-rkl:          NOTRUN -> [SKIP][77] ([i915#14544] / [i915#3282])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@gem_tiled_pread_pwrite.html

  * igt@gem_userptr_blits@access-control:
    - shard-dg2-9:        NOTRUN -> [SKIP][78] ([i915#3297]) +1 other test skip
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gem_userptr_blits@access-control.html

  * igt@gem_userptr_blits@coherency-unsync:
    - shard-dg2:          NOTRUN -> [SKIP][79] ([i915#3297]) +1 other test skip
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@gem_userptr_blits@coherency-unsync.html
    - shard-rkl:          NOTRUN -> [SKIP][80] ([i915#3297])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@gem_userptr_blits@coherency-unsync.html
    - shard-tglu-1:       NOTRUN -> [SKIP][81] ([i915#3297]) +2 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@gem_userptr_blits@coherency-unsync.html
    - shard-dg1:          NOTRUN -> [SKIP][82] ([i915#3297])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-17/igt@gem_userptr_blits@coherency-unsync.html
    - shard-mtlp:         NOTRUN -> [SKIP][83] ([i915#3297])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-7/igt@gem_userptr_blits@coherency-unsync.html

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

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

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

  * igt@gen9_exec_parse@cmd-crossing-page:
    - shard-dg2:          NOTRUN -> [SKIP][87] ([i915#2856]) +3 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-5/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@gen9_exec_parse@shadow-peek:
    - shard-dg2-9:        NOTRUN -> [SKIP][88] ([i915#2856]) +1 other test skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@gen9_exec_parse@shadow-peek.html
    - shard-tglu-1:       NOTRUN -> [SKIP][89] ([i915#2527] / [i915#2856]) +1 other test skip
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@gen9_exec_parse@shadow-peek.html

  * igt@i915_drm_fdinfo@busy-hang@vecs0:
    - shard-rkl:          [PASS][90] -> [DMESG-WARN][91] ([i915#12964]) +20 other tests dmesg-warn
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@i915_drm_fdinfo@busy-hang@vecs0.html
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@i915_drm_fdinfo@busy-hang@vecs0.html

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

  * igt@i915_module_load@load:
    - shard-dg2:          ([PASS][93], [PASS][94], [PASS][95], [PASS][96], [PASS][97], [PASS][98], [PASS][99], [PASS][100], [PASS][101], [PASS][102], [PASS][103], [PASS][104], [PASS][105], [PASS][106], [PASS][107], [PASS][108], [PASS][109], [PASS][110], [PASS][111], [PASS][112], [PASS][113], [PASS][114], [PASS][115]) -> ([PASS][116], [PASS][117], [PASS][118], [DMESG-WARN][119], [PASS][120], [PASS][121], [PASS][122], [PASS][123], [PASS][124], [PASS][125], [PASS][126], [PASS][127], [PASS][128], [PASS][129], [PASS][130], [PASS][131], [PASS][132], [PASS][133], [PASS][134], [PASS][135], [PASS][136], [PASS][137], [PASS][138]) ([i915#14559])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-4/igt@i915_module_load@load.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-1/igt@i915_module_load@load.html
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-7/igt@i915_module_load@load.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-2/igt@i915_module_load@load.html
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-5/igt@i915_module_load@load.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-6/igt@i915_module_load@load.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-11/igt@i915_module_load@load.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-11/igt@i915_module_load@load.html
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-8/igt@i915_module_load@load.html
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-1/igt@i915_module_load@load.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-7/igt@i915_module_load@load.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-3/igt@i915_module_load@load.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-2/igt@i915_module_load@load.html
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-6/igt@i915_module_load@load.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-6/igt@i915_module_load@load.html
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-5/igt@i915_module_load@load.html
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-8/igt@i915_module_load@load.html
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-4/igt@i915_module_load@load.html
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-3/igt@i915_module_load@load.html
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-11/igt@i915_module_load@load.html
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-2/igt@i915_module_load@load.html
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-4/igt@i915_module_load@load.html
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-1/igt@i915_module_load@load.html
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-2/igt@i915_module_load@load.html
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@i915_module_load@load.html
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-5/igt@i915_module_load@load.html
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-2/igt@i915_module_load@load.html
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@i915_module_load@load.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-3/igt@i915_module_load@load.html
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@i915_module_load@load.html
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@i915_module_load@load.html
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@i915_module_load@load.html
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@i915_module_load@load.html
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-5/igt@i915_module_load@load.html
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-3/igt@i915_module_load@load.html
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@i915_module_load@load.html
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@i915_module_load@load.html
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-4/igt@i915_module_load@load.html
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@i915_module_load@load.html
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@i915_module_load@load.html
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@i915_module_load@load.html
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@i915_module_load@load.html
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@i915_module_load@load.html
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-3/igt@i915_module_load@load.html
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-5/igt@i915_module_load@load.html
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@i915_module_load@load.html

  * igt@i915_pm_freq_api@freq-basic-api:
    - shard-rkl:          NOTRUN -> [SKIP][139] ([i915#8399])
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@i915_pm_freq_api@freq-basic-api.html

  * igt@i915_pm_freq_api@freq-reset-multiple:
    - shard-tglu-1:       NOTRUN -> [SKIP][140] ([i915#8399])
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@i915_pm_freq_api@freq-reset-multiple.html

  * igt@i915_pm_freq_api@freq-suspend:
    - shard-tglu:         NOTRUN -> [SKIP][141] ([i915#8399])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-9/igt@i915_pm_freq_api@freq-suspend.html

  * igt@i915_pm_rpm@system-suspend:
    - shard-rkl:          [PASS][142] -> [INCOMPLETE][143] ([i915#12797])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-8/igt@i915_pm_rpm@system-suspend.html
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-3/igt@i915_pm_rpm@system-suspend.html

  * igt@i915_pm_rpm@system-suspend-devices:
    - shard-snb:          NOTRUN -> [SKIP][144] +128 other tests skip
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-snb7/igt@i915_pm_rpm@system-suspend-devices.html

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

  * igt@i915_pm_sseu@full-enable:
    - shard-dg2:          NOTRUN -> [SKIP][146] ([i915#4387])
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-3/igt@i915_pm_sseu@full-enable.html

  * igt@i915_power@sanity:
    - shard-mtlp:         [PASS][147] -> [SKIP][148] ([i915#7984])
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-mtlp-6/igt@i915_power@sanity.html
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-4/igt@i915_power@sanity.html

  * igt@i915_selftest@live@workarounds:
    - shard-dg2:          NOTRUN -> [DMESG-FAIL][149] ([i915#12061]) +1 other test dmesg-fail
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-4/igt@i915_selftest@live@workarounds.html
    - shard-mtlp:         [PASS][150] -> [DMESG-FAIL][151] ([i915#12061]) +1 other test dmesg-fail
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-mtlp-4/igt@i915_selftest@live@workarounds.html
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-7/igt@i915_selftest@live@workarounds.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-tglu:         NOTRUN -> [INCOMPLETE][152] ([i915#4817] / [i915#7443])
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-6/igt@i915_suspend@basic-s3-without-i915.html

  * igt@i915_suspend@forcewake:
    - shard-rkl:          [PASS][153] -> [INCOMPLETE][154] ([i915#4817])
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@i915_suspend@forcewake.html
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-3/igt@i915_suspend@forcewake.html

  * igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
    - shard-dg1:          NOTRUN -> [SKIP][155] ([i915#4212])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-18/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html

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

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-tglu-1:       NOTRUN -> [SKIP][157] ([i915#12454] / [i915#12712])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_atomic@plane-primary-overlay-mutable-zpos:
    - shard-dg2:          NOTRUN -> [SKIP][158] ([i915#9531])
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
    - shard-tglu:         NOTRUN -> [SKIP][159] ([i915#9531])
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-4/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
    - shard-dg2:          [PASS][160] -> [FAIL][161] ([i915#5956])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-11/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [FAIL][162] ([i915#5956])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-3.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-dg2:          NOTRUN -> [SKIP][163] ([i915#1769] / [i915#3555])
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
    - shard-rkl:          NOTRUN -> [SKIP][164] ([i915#1769] / [i915#3555])
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
    - shard-dg1:          NOTRUN -> [SKIP][165] ([i915#1769] / [i915#3555])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-15/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
    - shard-snb:          NOTRUN -> [SKIP][166] ([i915#1769])
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-snb2/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
    - shard-tglu:         NOTRUN -> [SKIP][167] ([i915#1769] / [i915#3555])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-2/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

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

  * igt@kms_big_fb@4-tiled-8bpp-rotate-90:
    - shard-dg2-9:        NOTRUN -> [SKIP][169] +5 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0:
    - shard-rkl:          NOTRUN -> [SKIP][170] ([i915#5286])
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html

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

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][172] ([i915#3638]) +2 other tests skip
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_big_fb@linear-64bpp-rotate-90.html
    - shard-dg1:          NOTRUN -> [SKIP][173] ([i915#3638])
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-19/igt@kms_big_fb@linear-64bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-270:
    - shard-dg2:          NOTRUN -> [SKIP][174] +11 other tests skip
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@kms_big_fb@x-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-addfb-size-overflow:
    - shard-dg2:          NOTRUN -> [SKIP][175] ([i915#5190]) +1 other test skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@kms_big_fb@y-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-mtlp:         NOTRUN -> [SKIP][176] +2 other tests skip
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-5/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-dg2-9:        NOTRUN -> [SKIP][177] ([i915#4538] / [i915#5190]) +4 other tests skip
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-dg2:          NOTRUN -> [SKIP][178] ([i915#4538] / [i915#5190]) +7 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-rkl:          NOTRUN -> [SKIP][179] +5 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
    - shard-dg1:          NOTRUN -> [SKIP][180] ([i915#4538]) +1 other test skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-18/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][181] ([i915#6095]) +135 other tests skip
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-14/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-4.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [SKIP][182] ([i915#6095]) +44 other tests skip
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc:
    - shard-rkl:          NOTRUN -> [SKIP][183] ([i915#14544]) +2 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][184] ([i915#10307] / [i915#6095]) +151 other tests skip
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][185] ([i915#12313]) +1 other test skip
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html

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

  * igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][187] ([i915#6095]) +4 other tests skip
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-2/igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-d-edp-1.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-tglu-1:       NOTRUN -> [SKIP][188] ([i915#12805]) +1 other test skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][189] ([i915#14098] / [i915#6095]) +53 other tests skip
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][190] ([i915#6095]) +64 other tests skip
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-2/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-1.html

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

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][192] ([i915#6095]) +53 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-2:
    - shard-glk:          NOTRUN -> [INCOMPLETE][193] ([i915#12796])
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-glk6/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][194] ([i915#6095]) +21 other tests skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-3/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-3.html

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

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

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [SKIP][197] +83 other tests skip
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-glk9/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
    - shard-tglu-1:       NOTRUN -> [SKIP][198] ([i915#12313])
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html

  * igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][199] ([i915#13781]) +3 other tests skip
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-2/igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-2.html

  * igt@kms_chamelium_audio@dp-audio-edid:
    - shard-dg2:          NOTRUN -> [SKIP][200] ([i915#11151] / [i915#7828]) +5 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@kms_chamelium_audio@dp-audio-edid.html

  * igt@kms_chamelium_edid@dp-mode-timings:
    - shard-dg2-9:        NOTRUN -> [SKIP][201] ([i915#11151] / [i915#7828])
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_chamelium_edid@dp-mode-timings.html

  * igt@kms_chamelium_hpd@common-hpd-after-suspend:
    - shard-mtlp:         NOTRUN -> [SKIP][202] ([i915#11151] / [i915#7828])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-1/igt@kms_chamelium_hpd@common-hpd-after-suspend.html

  * igt@kms_chamelium_hpd@dp-hpd-storm-disable:
    - shard-dg1:          NOTRUN -> [SKIP][203] ([i915#11151] / [i915#7828]) +1 other test skip
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-13/igt@kms_chamelium_hpd@dp-hpd-storm-disable.html

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

  * igt@kms_chamelium_hpd@vga-hpd-fast:
    - shard-rkl:          NOTRUN -> [SKIP][205] ([i915#11151] / [i915#7828]) +3 other tests skip
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_chamelium_hpd@vga-hpd-fast.html

  * igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode:
    - shard-tglu:         NOTRUN -> [SKIP][206] ([i915#11151] / [i915#7828]) +8 other tests skip
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-4/igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode.html

  * igt@kms_color@deep-color:
    - shard-tglu-1:       NOTRUN -> [SKIP][207] ([i915#3555] / [i915#9979])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_color@deep-color.html

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

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

  * igt@kms_content_protection@mei-interface:
    - shard-dg2:          NOTRUN -> [SKIP][210] ([i915#9424])
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-3/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@type1:
    - shard-dg2:          NOTRUN -> [SKIP][211] ([i915#7118] / [i915#9424])
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@kms_content_protection@type1.html

  * igt@kms_content_protection@uevent:
    - shard-dg2-9:        NOTRUN -> [SKIP][212] ([i915#7118] / [i915#9424])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_content_protection@uevent.html
    - shard-tglu-1:       NOTRUN -> [SKIP][213] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424])
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_content_protection@uevent.html

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

  * igt@kms_cursor_crc@cursor-onscreen-256x85:
    - shard-tglu:         [PASS][215] -> [FAIL][216] ([i915#13566]) +3 other tests fail
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-tglu-2/igt@kms_cursor_crc@cursor-onscreen-256x85.html
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-5/igt@kms_cursor_crc@cursor-onscreen-256x85.html

  * igt@kms_cursor_crc@cursor-onscreen-256x85@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [FAIL][217] ([i915#13566]) +3 other tests fail
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_cursor_crc@cursor-onscreen-256x85@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-dg2-9:        NOTRUN -> [SKIP][218] ([i915#13049])
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_cursor_crc@cursor-onscreen-512x170.html
    - shard-tglu-1:       NOTRUN -> [SKIP][219] ([i915#13049])
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-onscreen-64x21@pipe-a-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [FAIL][220] ([i915#13566]) +1 other test fail
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-64x21@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x10:
    - shard-dg1:          NOTRUN -> [SKIP][221] ([i915#3555]) +1 other test skip
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-12/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html

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

  * igt@kms_cursor_crc@cursor-rapid-movement-512x170:
    - shard-tglu:         NOTRUN -> [SKIP][223] ([i915#13049])
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-4/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
    - shard-mtlp:         NOTRUN -> [SKIP][224] ([i915#13049])
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-4/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
    - shard-dg2:          NOTRUN -> [SKIP][225] ([i915#13049])
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
    - shard-rkl:          NOTRUN -> [SKIP][226] ([i915#13049])
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-tglu-1:       NOTRUN -> [SKIP][227] ([i915#4103])
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - shard-dg2-9:        NOTRUN -> [SKIP][228] ([i915#4103] / [i915#4213])
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-toggle:
    - shard-dg2-9:        NOTRUN -> [SKIP][229] ([i915#13046] / [i915#5354]) +3 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][230] ([i915#13046] / [i915#5354]) +3 other tests skip
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html

  * igt@kms_cursor_legacy@flip-vs-cursor-toggle:
    - shard-rkl:          [PASS][231] -> [FAIL][232] ([i915#2346])
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_cursor_legacy@flip-vs-cursor-toggle.html
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_cursor_legacy@flip-vs-cursor-toggle.html

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

  * igt@kms_display_modes@extended-mode-basic:
    - shard-dg2:          NOTRUN -> [SKIP][234] ([i915#13691])
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@kms_display_modes@extended-mode-basic.html
    - shard-rkl:          NOTRUN -> [SKIP][235] ([i915#13691])
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_display_modes@extended-mode-basic.html
    - shard-tglu-1:       NOTRUN -> [SKIP][236] ([i915#13691])
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dither@fb-8bpc-vs-panel-8bpc:
    - shard-dg2-9:        NOTRUN -> [SKIP][237] ([i915#3555]) +4 other tests skip
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_dither@fb-8bpc-vs-panel-8bpc.html

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

  * igt@kms_dp_link_training@uhbr-mst:
    - shard-dg2:          NOTRUN -> [SKIP][239] ([i915#13748])
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@kms_dp_link_training@uhbr-mst.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-tglu:         NOTRUN -> [SKIP][240] ([i915#3840])
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-6/igt@kms_dsc@dsc-fractional-bpp.html
    - shard-dg2-9:        NOTRUN -> [SKIP][241] ([i915#3840] / [i915#9688])
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_dsc@dsc-fractional-bpp.html

  * igt@kms_dsc@dsc-with-output-formats:
    - shard-dg2-9:        NOTRUN -> [SKIP][242] ([i915#3555] / [i915#3840])
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_dsc@dsc-with-output-formats.html
    - shard-dg1:          NOTRUN -> [SKIP][243] ([i915#3555] / [i915#3840])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-14/igt@kms_dsc@dsc-with-output-formats.html

  * igt@kms_feature_discovery@display-3x:
    - shard-tglu:         NOTRUN -> [SKIP][244] ([i915#1839])
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-7/igt@kms_feature_discovery@display-3x.html

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

  * igt@kms_flip@2x-absolute-wf_vblank:
    - shard-dg2-9:        NOTRUN -> [SKIP][246] ([i915#9934])
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_flip@2x-absolute-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-blocking-wf-vblank:
    - shard-tglu-1:       NOTRUN -> [SKIP][247] ([i915#3637] / [i915#9934]) +3 other tests skip
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_flip@2x-flip-vs-blocking-wf-vblank.html

  * igt@kms_flip@2x-flip-vs-fences:
    - shard-dg1:          NOTRUN -> [SKIP][248] ([i915#8381])
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-15/igt@kms_flip@2x-flip-vs-fences.html

  * igt@kms_flip@2x-flip-vs-fences-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][249] ([i915#8381])
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_flip@2x-flip-vs-fences-interruptible.html

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

  * igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
    - shard-tglu:         NOTRUN -> [SKIP][252] ([i915#3637] / [i915#9934]) +7 other tests skip
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-6/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html

  * igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset:
    - shard-dg2:          NOTRUN -> [SKIP][253] ([i915#9934]) +5 other tests skip
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html
    - shard-rkl:          NOTRUN -> [SKIP][254] ([i915#9934]) +4 other tests skip
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html
    - shard-dg1:          NOTRUN -> [SKIP][255] ([i915#9934])
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-15/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html
    - shard-mtlp:         NOTRUN -> [SKIP][256] ([i915#3637] / [i915#9934])
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-3/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
    - shard-rkl:          [PASS][257] -> [SKIP][258] ([i915#14544] / [i915#3637]) +1 other test skip
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-8/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html

  * igt@kms_flip@flip-vs-panning-vs-hang:
    - shard-dg1:          [PASS][259] -> [DMESG-WARN][260] ([i915#4423])
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg1-17/igt@kms_flip@flip-vs-panning-vs-hang.html
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-16/igt@kms_flip@flip-vs-panning-vs-hang.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling:
    - shard-tglu:         NOTRUN -> [SKIP][261] ([i915#2672] / [i915#3555])
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode:
    - shard-tglu:         NOTRUN -> [SKIP][262] ([i915#2587] / [i915#2672])
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling:
    - shard-mtlp:         NOTRUN -> [SKIP][263] ([i915#3555] / [i915#8810] / [i915#8813]) +1 other test skip
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-3/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][264] ([i915#2672]) +5 other tests skip
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][265] ([i915#2672]) +2 other tests skip
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling:
    - shard-rkl:          [PASS][266] -> [SKIP][267] ([i915#14544] / [i915#3555]) +1 other test skip
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling.html
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling.html

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

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

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
    - shard-dg2:          NOTRUN -> [SKIP][270] ([i915#2672] / [i915#3555] / [i915#5190]) +2 other tests skip
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/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-ytile-upscaling:
    - shard-dg2-9:        NOTRUN -> [SKIP][271] ([i915#2672] / [i915#3555] / [i915#5190])
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling@pipe-a-valid-mode:
    - shard-dg2-9:        NOTRUN -> [SKIP][272] ([i915#2672])
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling:
    - shard-mtlp:         NOTRUN -> [SKIP][273] ([i915#2672] / [i915#3555] / [i915#8813]) +1 other test skip
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html
    - shard-rkl:          NOTRUN -> [SKIP][274] ([i915#14544] / [i915#3555])
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-cpu:
    - shard-rkl:          [PASS][275] -> [SKIP][276] ([i915#14544] / [i915#1849] / [i915#5354]) +3 other tests skip
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-cpu.html
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu:
    - shard-tglu-1:       NOTRUN -> [SKIP][277] +59 other tests skip
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][278] ([i915#1825]) +12 other tests skip
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][279] ([i915#14544] / [i915#1849] / [i915#5354]) +1 other test skip
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][280] ([i915#8708]) +15 other tests skip
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-4:
    - shard-rkl:          NOTRUN -> [SKIP][281] ([i915#5439])
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_frontbuffer_tracking@fbc-tiling-4.html
    - shard-tglu-1:       NOTRUN -> [SKIP][282] ([i915#5439])
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-tiling-4.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-y:
    - shard-mtlp:         NOTRUN -> [SKIP][283] ([i915#10055])
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-3/igt@kms_frontbuffer_tracking@fbc-tiling-y.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc:
    - shard-rkl:          NOTRUN -> [SKIP][284] ([i915#3023]) +8 other tests skip
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc.html
    - shard-dg1:          NOTRUN -> [SKIP][285] ([i915#8708]) +4 other tests skip
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-17/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-pwrite:
    - shard-dg1:          NOTRUN -> [SKIP][286] +6 other tests skip
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-19/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-fullscreen:
    - shard-dg2:          NOTRUN -> [SKIP][287] ([i915#5354]) +22 other tests skip
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-gtt:
    - shard-dg2-9:        NOTRUN -> [SKIP][288] ([i915#8708]) +5 other tests skip
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
    - shard-dg2:          NOTRUN -> [SKIP][289] ([i915#10055]) +1 other test skip
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu:
    - shard-tglu:         NOTRUN -> [SKIP][290] +66 other tests skip
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-9/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite:
    - shard-dg2-9:        NOTRUN -> [SKIP][291] ([i915#3458]) +5 other tests skip
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt:
    - shard-dg1:          NOTRUN -> [SKIP][292] ([i915#3458]) +5 other tests skip
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt.html

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

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

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][295] ([i915#8708]) +1 other test skip
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
    - shard-dg2:          NOTRUN -> [SKIP][296] ([i915#3458]) +12 other tests skip
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html

  * igt@kms_hdr@bpc-switch-suspend:
    - shard-dg2:          [PASS][297] -> [SKIP][298] ([i915#3555] / [i915#8228])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-11/igt@kms_hdr@bpc-switch-suspend.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@kms_hdr@bpc-switch-suspend.html

  * igt@kms_hdr@static-swap:
    - shard-tglu-1:       NOTRUN -> [SKIP][299] ([i915#3555] / [i915#8228]) +2 other tests skip
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_hdr@static-swap.html

  * igt@kms_hdr@static-toggle:
    - shard-rkl:          NOTRUN -> [SKIP][300] ([i915#3555] / [i915#8228]) +1 other test skip
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-3/igt@kms_hdr@static-toggle.html
    - shard-dg1:          NOTRUN -> [SKIP][301] ([i915#3555] / [i915#8228])
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-18/igt@kms_hdr@static-toggle.html
    - shard-tglu:         NOTRUN -> [SKIP][302] ([i915#3555] / [i915#8228]) +1 other test skip
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-2/igt@kms_hdr@static-toggle.html
    - shard-mtlp:         NOTRUN -> [SKIP][303] ([i915#12713] / [i915#3555] / [i915#8228])
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-1/igt@kms_hdr@static-toggle.html

  * igt@kms_invalid_mode@bad-vtotal:
    - shard-rkl:          NOTRUN -> [SKIP][304] ([i915#14544] / [i915#3555] / [i915#8826])
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_invalid_mode@bad-vtotal.html

  * igt@kms_invalid_mode@int-max-clock:
    - shard-rkl:          [PASS][305] -> [SKIP][306] ([i915#14544] / [i915#3555] / [i915#8826])
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-8/igt@kms_invalid_mode@int-max-clock.html
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_invalid_mode@int-max-clock.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-tglu:         NOTRUN -> [SKIP][307] ([i915#13522])
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-5/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_plane_multiple@2x-tiling-x:
    - shard-dg2:          NOTRUN -> [SKIP][308] ([i915#13958]) +2 other tests skip
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_plane_multiple@2x-tiling-x.html
    - shard-rkl:          NOTRUN -> [SKIP][309] ([i915#13958]) +1 other test skip
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_plane_multiple@2x-tiling-x.html
    - shard-dg1:          NOTRUN -> [SKIP][310] ([i915#13958])
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-15/igt@kms_plane_multiple@2x-tiling-x.html
    - shard-tglu:         NOTRUN -> [SKIP][311] ([i915#13958])
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-2/igt@kms_plane_multiple@2x-tiling-x.html
    - shard-mtlp:         NOTRUN -> [SKIP][312] ([i915#13958])
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-8/igt@kms_plane_multiple@2x-tiling-x.html

  * igt@kms_plane_multiple@tiling-4:
    - shard-tglu:         NOTRUN -> [SKIP][313] ([i915#14259])
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-5/igt@kms_plane_multiple@tiling-4.html

  * igt@kms_plane_scaling@invalid-parameters:
    - shard-rkl:          [PASS][314] -> [SKIP][315] ([i915#14544] / [i915#8152])
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-2/igt@kms_plane_scaling@invalid-parameters.html
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_plane_scaling@invalid-parameters.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers:
    - shard-dg2:          NOTRUN -> [SKIP][316] ([i915#12247] / [i915#9423])
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a:
    - shard-dg1:          NOTRUN -> [SKIP][317] ([i915#12247]) +4 other tests skip
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-19/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-b:
    - shard-mtlp:         NOTRUN -> [SKIP][318] ([i915#12247]) +4 other tests skip
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-3/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-b.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-c:
    - shard-tglu:         NOTRUN -> [SKIP][319] ([i915#12247]) +8 other tests skip
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-7/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-c.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25:
    - shard-dg2-9:        NOTRUN -> [SKIP][320] ([i915#12247] / [i915#6953] / [i915#9423])
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25.html
    - shard-rkl:          NOTRUN -> [SKIP][321] ([i915#12247] / [i915#14544] / [i915#6953] / [i915#8152])
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25.html
    - shard-tglu-1:       NOTRUN -> [SKIP][322] ([i915#12247] / [i915#6953])
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-a:
    - shard-dg2-9:        NOTRUN -> [SKIP][323] ([i915#12247]) +3 other tests skip
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-a.html
    - shard-rkl:          NOTRUN -> [SKIP][324] ([i915#12247] / [i915#14544])
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-a.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b:
    - shard-rkl:          NOTRUN -> [SKIP][325] ([i915#12247] / [i915#14544] / [i915#8152])
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-c:
    - shard-tglu-1:       NOTRUN -> [SKIP][326] ([i915#12247]) +8 other tests skip
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-c.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-c:
    - shard-rkl:          NOTRUN -> [SKIP][327] ([i915#12247]) +3 other tests skip
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-c.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25:
    - shard-dg2:          NOTRUN -> [SKIP][328] ([i915#12247] / [i915#6953] / [i915#9423])
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html
    - shard-rkl:          NOTRUN -> [SKIP][329] ([i915#12247] / [i915#6953])
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-c:
    - shard-dg2:          NOTRUN -> [SKIP][330] ([i915#12247]) +7 other tests skip
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-c.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25:
    - shard-tglu:         NOTRUN -> [SKIP][331] ([i915#12247] / [i915#3555])
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-9/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][332] ([i915#5354])
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_pm_backlight@fade-with-dpms.html
    - shard-dg1:          NOTRUN -> [SKIP][333] ([i915#5354])
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-18/igt@kms_pm_backlight@fade-with-dpms.html
    - shard-tglu:         NOTRUN -> [SKIP][334] ([i915#9812])
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-8/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-tglu-1:       NOTRUN -> [SKIP][335] ([i915#9812])
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_pm_backlight@fade-with-suspend.html

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

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-dg2:          NOTRUN -> [SKIP][337] ([i915#9340])
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-5/igt@kms_pm_lpsp@kms-lpsp.html
    - shard-tglu:         NOTRUN -> [SKIP][338] ([i915#3828])
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-9/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_lpsp@screens-disabled:
    - shard-dg2-9:        NOTRUN -> [SKIP][339] ([i915#8430])
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_pm_lpsp@screens-disabled.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-tglu:         NOTRUN -> [SKIP][340] ([i915#9519])
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-9/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_prime@basic-modeset-hybrid:
    - shard-rkl:          NOTRUN -> [SKIP][341] ([i915#6524])
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_prime@basic-modeset-hybrid.html
    - shard-tglu:         NOTRUN -> [SKIP][342] ([i915#6524])
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-5/igt@kms_prime@basic-modeset-hybrid.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-glk:          NOTRUN -> [SKIP][343] ([i915#11520]) +3 other tests skip
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-glk9/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-sf:
    - shard-tglu:         NOTRUN -> [SKIP][344] ([i915#11520]) +8 other tests skip
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-9/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf:
    - shard-dg2-9:        NOTRUN -> [SKIP][345] ([i915#11520]) +2 other tests skip
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html
    - shard-snb:          NOTRUN -> [SKIP][346] ([i915#11520]) +3 other tests skip
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-snb6/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html

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

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

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

  * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area:
    - shard-dg2:          NOTRUN -> [SKIP][350] ([i915#11520]) +5 other tests skip
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-dg2-9:        NOTRUN -> [SKIP][351] ([i915#9683])
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_psr2_su@page_flip-xrgb8888.html
    - shard-tglu-1:       NOTRUN -> [SKIP][352] ([i915#9683]) +1 other test skip
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-pr-dpms:
    - shard-mtlp:         NOTRUN -> [SKIP][353] ([i915#9688]) +1 other test skip
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-5/igt@kms_psr@fbc-pr-dpms.html

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

  * igt@kms_psr@fbc-psr2-sprite-blt:
    - shard-dg2:          NOTRUN -> [SKIP][355] ([i915#1072] / [i915#9732]) +19 other tests skip
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_psr@fbc-psr2-sprite-blt.html

  * igt@kms_psr@fbc-psr2-sprite-render:
    - shard-rkl:          NOTRUN -> [SKIP][356] ([i915#1072] / [i915#9732]) +7 other tests skip
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_psr@fbc-psr2-sprite-render.html

  * igt@kms_psr@pr-sprite-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][357] ([i915#1072] / [i915#9732]) +3 other tests skip
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-17/igt@kms_psr@pr-sprite-mmap-gtt.html

  * igt@kms_psr@pr-suspend:
    - shard-tglu-1:       NOTRUN -> [SKIP][358] ([i915#9732]) +11 other tests skip
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_psr@pr-suspend.html

  * igt@kms_psr@psr2-primary-render:
    - shard-tglu:         NOTRUN -> [SKIP][359] ([i915#9732]) +16 other tests skip
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-2/igt@kms_psr@psr2-primary-render.html

  * igt@kms_rotation_crc@bad-pixel-format:
    - shard-dg2:          NOTRUN -> [SKIP][360] ([i915#12755])
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-5/igt@kms_rotation_crc@bad-pixel-format.html

  * igt@kms_rotation_crc@primary-rotation-90:
    - shard-rkl:          [PASS][361] -> [SKIP][362] ([i915#14544]) +11 other tests skip
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_rotation_crc@primary-rotation-90.html
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_rotation_crc@primary-rotation-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-dg2:          NOTRUN -> [SKIP][363] ([i915#12755] / [i915#5190])
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

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

  * igt@kms_setmode@clone-exclusive-crtc:
    - shard-tglu-1:       NOTRUN -> [SKIP][365] ([i915#3555]) +3 other tests skip
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_setmode@clone-exclusive-crtc.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-tglu:         NOTRUN -> [SKIP][366] ([i915#8623])
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-7/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
    - shard-dg2:          NOTRUN -> [SKIP][367] ([i915#8623])
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_vrr@flip-basic:
    - shard-dg2:          NOTRUN -> [SKIP][368] ([i915#3555]) +3 other tests skip
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@kms_vrr@flip-basic.html

  * igt@kms_vrr@negative-basic:
    - shard-tglu:         NOTRUN -> [SKIP][369] ([i915#3555] / [i915#9906])
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-4/igt@kms_vrr@negative-basic.html

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - shard-rkl:          NOTRUN -> [SKIP][370] ([i915#9906])
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_vrr@seamless-rr-switch-drrs.html
    - shard-tglu:         NOTRUN -> [SKIP][371] ([i915#9906])
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-3/igt@kms_vrr@seamless-rr-switch-drrs.html

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - shard-dg2:          NOTRUN -> [SKIP][372] ([i915#9906])
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@kms_vrr@seamless-rr-switch-vrr.html
    - shard-tglu-1:       NOTRUN -> [SKIP][373] ([i915#9906])
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-1/igt@kms_vrr@seamless-rr-switch-vrr.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-dg2:          NOTRUN -> [SKIP][374] ([i915#2437]) +1 other test skip
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-7/igt@kms_writeback@writeback-fb-id.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-tglu:         NOTRUN -> [SKIP][375] ([i915#2437] / [i915#9412])
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-3/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@kms_writeback@writeback-invalid-parameters:
    - shard-dg1:          NOTRUN -> [SKIP][376] ([i915#2437])
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-15/igt@kms_writeback@writeback-invalid-parameters.html
    - shard-tglu:         NOTRUN -> [SKIP][377] ([i915#2437])
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-2/igt@kms_writeback@writeback-invalid-parameters.html
    - shard-mtlp:         NOTRUN -> [SKIP][378] ([i915#2437])
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-8/igt@kms_writeback@writeback-invalid-parameters.html
    - shard-rkl:          NOTRUN -> [SKIP][379] ([i915#2437])
   [379]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_writeback@writeback-invalid-parameters.html

  * igt@kms_writeback@writeback-pixel-formats:
    - shard-glk:          NOTRUN -> [SKIP][380] ([i915#2437])
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-glk9/igt@kms_writeback@writeback-pixel-formats.html

  * igt@perf@gen8-unprivileged-single-ctx-counters:
    - shard-dg2-9:        NOTRUN -> [SKIP][381] ([i915#2436])
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@perf@gen8-unprivileged-single-ctx-counters.html

  * igt@perf@global-sseu-config:
    - shard-dg2-9:        NOTRUN -> [SKIP][382] ([i915#7387])
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@perf@global-sseu-config.html

  * igt@perf_pmu@busy-double-start@vecs0:
    - shard-mtlp:         [PASS][383] -> [FAIL][384] ([i915#4349]) +2 other tests fail
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-mtlp-3/igt@perf_pmu@busy-double-start@vecs0.html
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-8/igt@perf_pmu@busy-double-start@vecs0.html

  * igt@perf_pmu@busy-idle-check-all@vcs0:
    - shard-dg2:          [PASS][385] -> [FAIL][386] ([i915#4349]) +5 other tests fail
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-11/igt@perf_pmu@busy-idle-check-all@vcs0.html
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@perf_pmu@busy-idle-check-all@vcs0.html

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

  * igt@perf_pmu@rc6-suspend:
    - shard-rkl:          [PASS][389] -> [INCOMPLETE][390] ([i915#12964] / [i915#13520])
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@perf_pmu@rc6-suspend.html
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@perf_pmu@rc6-suspend.html

  * igt@perf_pmu@rc6@other-idle-gt0:
    - shard-tglu:         NOTRUN -> [SKIP][391] ([i915#8516])
   [391]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-4/igt@perf_pmu@rc6@other-idle-gt0.html

  * igt@prime_vgem@basic-fence-flip:
    - shard-dg1:          NOTRUN -> [SKIP][392] ([i915#3708])
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-16/igt@prime_vgem@basic-fence-flip.html
    - shard-dg2:          NOTRUN -> [SKIP][393] ([i915#3708])
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@prime_vgem@basic-fence-flip.html

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

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

  
#### Possible fixes ####

  * igt@fbdev@info:
    - shard-rkl:          [SKIP][396] ([i915#14544] / [i915#1849] / [i915#2582]) -> [PASS][397]
   [396]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@fbdev@info.html
   [397]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@fbdev@info.html

  * igt@fbdev@unaligned-read:
    - shard-rkl:          [SKIP][398] ([i915#14544] / [i915#2582]) -> [PASS][399] +1 other test pass
   [398]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@fbdev@unaligned-read.html
   [399]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@fbdev@unaligned-read.html

  * igt@gem_eio@unwedge-stress:
    - shard-dg1:          [FAIL][400] ([i915#5784]) -> [PASS][401]
   [400]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg1-18/igt@gem_eio@unwedge-stress.html
   [401]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-17/igt@gem_eio@unwedge-stress.html

  * igt@gem_mmap_gtt@close-race:
    - shard-rkl:          [DMESG-WARN][402] ([i915#12964]) -> [PASS][403] +19 other tests pass
   [402]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-2/igt@gem_mmap_gtt@close-race.html
   [403]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@gem_mmap_gtt@close-race.html

  * igt@gem_pxp@create-protected-buffer:
    - shard-rkl:          [TIMEOUT][404] ([i915#12964]) -> [PASS][405] +1 other test pass
   [404]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@gem_pxp@create-protected-buffer.html
   [405]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@gem_pxp@create-protected-buffer.html

  * igt@gem_pxp@verify-pxp-stale-buf-execution:
    - shard-rkl:          [TIMEOUT][406] ([i915#12917] / [i915#12964]) -> [PASS][407] +1 other test pass
   [406]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-7/igt@gem_pxp@verify-pxp-stale-buf-execution.html
   [407]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@gem_pxp@verify-pxp-stale-buf-execution.html

  * igt@gem_workarounds@suspend-resume-context:
    - shard-rkl:          [INCOMPLETE][408] ([i915#13356]) -> [PASS][409]
   [408]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-4/igt@gem_workarounds@suspend-resume-context.html
   [409]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@gem_workarounds@suspend-resume-context.html

  * igt@i915_module_load@reload-no-display:
    - shard-dg1:          [DMESG-WARN][410] ([i915#13029] / [i915#14545]) -> [PASS][411]
   [410]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg1-15/igt@i915_module_load@reload-no-display.html
   [411]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-14/igt@i915_module_load@reload-no-display.html
    - shard-snb:          [DMESG-WARN][412] ([i915#14545]) -> [PASS][413]
   [412]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-snb6/igt@i915_module_load@reload-no-display.html
   [413]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-snb1/igt@i915_module_load@reload-no-display.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-dg2:          [DMESG-WARN][414] ([i915#13447]) -> [PASS][415]
   [414]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-6/igt@i915_module_load@reload-with-fault-injection.html
   [415]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@i915_module_load@reload-with-fault-injection.html

  * igt@kms_async_flips@async-flip-suspend-resume:
    - shard-snb:          [ABORT][416] ([i915#12817]) -> [PASS][417] +2 other tests pass
   [416]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-snb6/igt@kms_async_flips@async-flip-suspend-resume.html
   [417]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-snb6/igt@kms_async_flips@async-flip-suspend-resume.html
    - shard-tglu:         [ABORT][418] ([i915#12817]) -> [PASS][419] +1 other test pass
   [418]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-tglu-3/igt@kms_async_flips@async-flip-suspend-resume.html
   [419]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-4/igt@kms_async_flips@async-flip-suspend-resume.html

  * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1:
    - shard-tglu:         [FAIL][420] ([i915#11808]) -> [PASS][421] +1 other test pass
   [420]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-tglu-3/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html
   [421]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-tglu-9/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html

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

  * igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
    - shard-dg1:          [DMESG-WARN][424] ([i915#4423]) -> [PASS][425]
   [424]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg1-14/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
   [425]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-18/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html

  * igt@kms_busy@basic:
    - shard-rkl:          [SKIP][426] ([i915#11190] / [i915#14544]) -> [PASS][427] +2 other tests pass
   [426]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_busy@basic.html
   [427]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_busy@basic.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1:
    - shard-glk:          [INCOMPLETE][428] ([i915#12796]) -> [PASS][429]
   [428]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-glk1/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1.html
   [429]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-glk6/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_color@ctm-red-to-blue:
    - shard-rkl:          [SKIP][430] ([i915#12655] / [i915#14544]) -> [PASS][431] +2 other tests pass
   [430]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_color@ctm-red-to-blue.html
   [431]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_color@ctm-red-to-blue.html

  * igt@kms_cursor_crc@cursor-offscreen-256x85:
    - shard-rkl:          [SKIP][432] ([i915#14544]) -> [PASS][433] +56 other tests pass
   [432]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_cursor_crc@cursor-offscreen-256x85.html
   [433]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_cursor_crc@cursor-offscreen-256x85.html

  * igt@kms_cursor_crc@cursor-sliding-128x42:
    - shard-rkl:          [FAIL][434] ([i915#13566]) -> [PASS][435]
   [434]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-2/igt@kms_cursor_crc@cursor-sliding-128x42.html
   [435]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_cursor_crc@cursor-sliding-128x42.html

  * igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
    - shard-rkl:          [FAIL][436] ([i915#2346]) -> [PASS][437]
   [436]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-3/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
   [437]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank:
    - shard-rkl:          [FAIL][438] ([i915#10826]) -> [PASS][439]
   [438]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-3/igt@kms_flip@flip-vs-blocking-wf-vblank.html
   [439]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_flip@flip-vs-blocking-wf-vblank.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-rkl:          [SKIP][440] ([i915#14544] / [i915#3637]) -> [PASS][441] +9 other tests pass
   [440]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [441]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling:
    - shard-rkl:          [SKIP][442] ([i915#14544] / [i915#3555]) -> [PASS][443] +3 other tests pass
   [442]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling.html
   [443]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render:
    - shard-dg2-9:        [FAIL][444] ([i915#6880]) -> [PASS][445]
   [444]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-9/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html
   [445]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-9/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
    - shard-rkl:          [DMESG-WARN][446] ([i915#12917] / [i915#12964]) -> [PASS][447]
   [446]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu.html
   [447]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-linear:
    - shard-rkl:          [SKIP][448] ([i915#14544] / [i915#1849] / [i915#5354]) -> [PASS][449] +7 other tests pass
   [448]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-tiling-linear.html
   [449]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-tiling-linear.html

  * igt@kms_invalid_mode@bad-htotal:
    - shard-rkl:          [SKIP][450] ([i915#14544] / [i915#3555] / [i915#8826]) -> [PASS][451] +2 other tests pass
   [450]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_invalid_mode@bad-htotal.html
   [451]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_invalid_mode@bad-htotal.html

  * igt@kms_plane_alpha_blend@constant-alpha-min:
    - shard-rkl:          [SKIP][452] ([i915#14544] / [i915#7294]) -> [PASS][453]
   [452]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_plane_alpha_blend@constant-alpha-min.html
   [453]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_plane_alpha_blend@constant-alpha-min.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-dg2:          [SKIP][454] ([i915#6953] / [i915#9423]) -> [PASS][455]
   [454]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-6/igt@kms_plane_scaling@intel-max-src-size.html
   [455]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@plane-upscale-20x20-with-pixel-format:
    - shard-rkl:          [SKIP][456] ([i915#14544] / [i915#8152]) -> [PASS][457] +2 other tests pass
   [456]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_plane_scaling@plane-upscale-20x20-with-pixel-format.html
   [457]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_plane_scaling@plane-upscale-20x20-with-pixel-format.html

  * igt@kms_plane_scaling@plane-upscale-20x20-with-pixel-format@pipe-a:
    - shard-rkl:          [SKIP][458] ([i915#12247] / [i915#14544]) -> [PASS][459] +5 other tests pass
   [458]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_plane_scaling@plane-upscale-20x20-with-pixel-format@pipe-a.html
   [459]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_plane_scaling@plane-upscale-20x20-with-pixel-format@pipe-a.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75:
    - shard-rkl:          [SKIP][460] ([i915#14544] / [i915#3555] / [i915#6953] / [i915#8152]) -> [PASS][461]
   [460]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75.html
   [461]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-b:
    - shard-rkl:          [SKIP][462] ([i915#12247] / [i915#14544] / [i915#8152]) -> [PASS][463] +6 other tests pass
   [462]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-b.html
   [463]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-b.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5:
    - shard-rkl:          [SKIP][464] ([i915#12247] / [i915#14544] / [i915#3555] / [i915#6953] / [i915#8152]) -> [PASS][465]
   [464]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5.html
   [465]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-rkl:          [SKIP][466] ([i915#14544] / [i915#9519]) -> [PASS][467]
   [466]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [467]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_pm_rpm@modeset-non-lpsp:
    - shard-dg2:          [SKIP][468] ([i915#9519]) -> [PASS][469]
   [468]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-4/igt@kms_pm_rpm@modeset-non-lpsp.html
   [469]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-11/igt@kms_pm_rpm@modeset-non-lpsp.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1:
    - shard-mtlp:         [FAIL][470] ([i915#9196]) -> [PASS][471] +1 other test pass
   [470]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-mtlp-5/igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1.html
   [471]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-mtlp-5/igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1.html

  * igt@perf@gen12-group-concurrent-oa-buffer-read:
    - shard-rkl:          [FAIL][472] ([i915#10538]) -> [PASS][473]
   [472]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@perf@gen12-group-concurrent-oa-buffer-read.html
   [473]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@perf@gen12-group-concurrent-oa-buffer-read.html

  * igt@perf_pmu@busy-double-start@vecs1:
    - shard-dg2:          [FAIL][474] ([i915#4349]) -> [PASS][475] +1 other test pass
   [474]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-7/igt@perf_pmu@busy-double-start@vecs1.html
   [475]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-6/igt@perf_pmu@busy-double-start@vecs1.html

  
#### Warnings ####

  * igt@gem_ccs@block-multicopy-compressed:
    - shard-rkl:          [SKIP][476] ([i915#14544] / [i915#9323]) -> [SKIP][477] ([i915#9323])
   [476]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_ccs@block-multicopy-compressed.html
   [477]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@gem_ccs@block-multicopy-compressed.html

  * igt@gem_ctx_sseu@mmap-args:
    - shard-rkl:          [SKIP][478] ([i915#14544] / [i915#280]) -> [SKIP][479] ([i915#280])
   [478]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_ctx_sseu@mmap-args.html
   [479]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@gem_ctx_sseu@mmap-args.html

  * igt@gem_eio@kms:
    - shard-rkl:          [SKIP][480] ([i915#14544]) -> [DMESG-WARN][481] ([i915#13363])
   [480]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_eio@kms.html
   [481]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@gem_eio@kms.html

  * igt@gem_exec_balancer@parallel-balancer:
    - shard-rkl:          [SKIP][482] ([i915#14544] / [i915#4525]) -> [SKIP][483] ([i915#4525]) +2 other tests skip
   [482]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_exec_balancer@parallel-balancer.html
   [483]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-3/igt@gem_exec_balancer@parallel-balancer.html

  * igt@gem_exec_capture@capture-invisible:
    - shard-rkl:          [SKIP][484] ([i915#14544] / [i915#6334]) -> [SKIP][485] ([i915#6334]) +1 other test skip
   [484]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_exec_capture@capture-invisible.html
   [485]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@gem_exec_capture@capture-invisible.html

  * igt@gem_exec_reloc@basic-gtt-cpu:
    - shard-rkl:          [SKIP][486] ([i915#14544] / [i915#3281]) -> [SKIP][487] ([i915#3281]) +7 other tests skip
   [486]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-cpu.html
   [487]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@gem_exec_reloc@basic-gtt-cpu.html

  * igt@gem_exec_reloc@basic-gtt-wc-noreloc:
    - shard-rkl:          [SKIP][488] ([i915#3281]) -> [SKIP][489] ([i915#14544] / [i915#3281]) +1 other test skip
   [488]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-2/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html
   [489]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html

  * igt@gem_lmem_swapping@parallel-multi:
    - shard-rkl:          [SKIP][490] ([i915#4613]) -> [SKIP][491] ([i915#14544] / [i915#4613])
   [490]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-8/igt@gem_lmem_swapping@parallel-multi.html
   [491]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@gem_lmem_swapping@parallel-multi.html

  * igt@gem_lmem_swapping@parallel-random:
    - shard-rkl:          [SKIP][492] ([i915#14544] / [i915#4613]) -> [SKIP][493] ([i915#4613]) +4 other tests skip
   [492]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_lmem_swapping@parallel-random.html
   [493]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@gem_lmem_swapping@parallel-random.html

  * igt@gem_partial_pwrite_pread@reads-uncached:
    - shard-rkl:          [SKIP][494] ([i915#3282]) -> [SKIP][495] ([i915#14544] / [i915#3282]) +1 other test skip
   [494]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-7/igt@gem_partial_pwrite_pread@reads-uncached.html
   [495]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@gem_partial_pwrite_pread@reads-uncached.html

  * igt@gem_pread@self:
    - shard-rkl:          [SKIP][496] ([i915#14544] / [i915#3282]) -> [SKIP][497] ([i915#3282]) +3 other tests skip
   [496]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_pread@self.html
   [497]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@gem_pread@self.html

  * igt@gem_pxp@reject-modify-context-protection-off-1:
    - shard-rkl:          [SKIP][498] ([i915#14544] / [i915#4270]) -> [TIMEOUT][499] ([i915#12917] / [i915#12964])
   [498]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_pxp@reject-modify-context-protection-off-1.html
   [499]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@gem_pxp@reject-modify-context-protection-off-1.html

  * igt@gem_pxp@verify-pxp-execution-after-suspend-resume:
    - shard-rkl:          [SKIP][500] ([i915#4270]) -> [TIMEOUT][501] ([i915#12917] / [i915#12964])
   [500]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-3/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html
   [501]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html

  * igt@gem_set_tiling_vs_blt@tiled-to-tiled:
    - shard-rkl:          [SKIP][502] ([i915#14544] / [i915#8411]) -> [SKIP][503] ([i915#8411])
   [502]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html
   [503]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html

  * igt@gem_userptr_blits@unsync-unmap:
    - shard-rkl:          [SKIP][504] ([i915#14544] / [i915#3297]) -> [SKIP][505] ([i915#3297])
   [504]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gem_userptr_blits@unsync-unmap.html
   [505]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@gem_userptr_blits@unsync-unmap.html

  * igt@gen7_exec_parse@batch-without-end:
    - shard-rkl:          [SKIP][506] -> [SKIP][507] ([i915#14544]) +6 other tests skip
   [506]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-3/igt@gen7_exec_parse@batch-without-end.html
   [507]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@gen7_exec_parse@batch-without-end.html

  * igt@gen9_exec_parse@bb-chained:
    - shard-rkl:          [SKIP][508] ([i915#14544] / [i915#2527]) -> [SKIP][509] ([i915#2527]) +3 other tests skip
   [508]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@gen9_exec_parse@bb-chained.html
   [509]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@gen9_exec_parse@bb-chained.html

  * igt@i915_pm_rc6_residency@media-rc6-accuracy:
    - shard-rkl:          [SKIP][510] ([i915#14544]) -> [SKIP][511] +15 other tests skip
   [510]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@i915_pm_rc6_residency@media-rc6-accuracy.html
   [511]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@i915_pm_rc6_residency@media-rc6-accuracy.html

  * igt@i915_pm_sseu@full-enable:
    - shard-rkl:          [SKIP][512] ([i915#14544] / [i915#4387]) -> [SKIP][513] ([i915#4387])
   [512]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@i915_pm_sseu@full-enable.html
   [513]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@i915_pm_sseu@full-enable.html

  * igt@kms_big_fb@4-tiled-16bpp-rotate-0:
    - shard-rkl:          [SKIP][514] ([i915#5286]) -> [SKIP][515] ([i915#14544])
   [514]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-2/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html
   [515]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html

  * igt@kms_big_fb@4-tiled-addfb:
    - shard-rkl:          [SKIP][516] ([i915#14544]) -> [SKIP][517] ([i915#5286]) +7 other tests skip
   [516]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_big_fb@4-tiled-addfb.html
   [517]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_big_fb@4-tiled-addfb.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-270:
    - shard-rkl:          [SKIP][518] ([i915#14544]) -> [SKIP][519] ([i915#3638]) +1 other test skip
   [518]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
   [519]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset:
    - shard-rkl:          [SKIP][520] ([i915#14544]) -> [DMESG-WARN][521] ([i915#12964])
   [520]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_busy@extended-modeset-hang-newfb-with-reset.html
   [521]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-3/igt@kms_busy@extended-modeset-hang-newfb-with-reset.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][522] ([i915#6095]) -> [SKIP][523] ([i915#14098] / [i915#6095]) +2 other tests skip
   [522]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-8/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-2.html
   [523]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs:
    - shard-rkl:          [SKIP][524] ([i915#14544]) -> [SKIP][525] ([i915#14098] / [i915#6095]) +13 other tests skip
   [524]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs.html
   [525]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
    - shard-dg1:          [SKIP][526] ([i915#4423] / [i915#6095]) -> [SKIP][527] ([i915#6095])
   [526]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg1-14/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html
   [527]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-13/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs:
    - shard-rkl:          [SKIP][528] ([i915#14098] / [i915#6095]) -> [SKIP][529] ([i915#14544]) +2 other tests skip
   [528]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-4/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs.html
   [529]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][530] ([i915#14098] / [i915#6095]) -> [SKIP][531] ([i915#6095]) +2 other tests skip
   [530]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-b-hdmi-a-2.html
   [531]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
    - shard-rkl:          [SKIP][532] ([i915#14544]) -> [SKIP][533] ([i915#12313]) +2 other tests skip
   [532]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html
   [533]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html

  * igt@kms_chamelium_edid@dp-mode-timings:
    - shard-rkl:          [SKIP][534] ([i915#11151] / [i915#7828]) -> [SKIP][535] ([i915#11151] / [i915#14544] / [i915#7828])
   [534]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_chamelium_edid@dp-mode-timings.html
   [535]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_chamelium_edid@dp-mode-timings.html

  * igt@kms_chamelium_edid@hdmi-edid-change-during-suspend:
    - shard-rkl:          [SKIP][536] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][537] ([i915#11151] / [i915#7828]) +9 other tests skip
   [536]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html
   [537]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html

  * igt@kms_content_protection@atomic:
    - shard-dg2:          [FAIL][538] ([i915#7173]) -> [SKIP][539] ([i915#7118] / [i915#9424])
   [538]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-11/igt@kms_content_protection@atomic.html
   [539]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-8/igt@kms_content_protection@atomic.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-rkl:          [SKIP][540] ([i915#14544]) -> [SKIP][541] ([i915#3116]) +1 other test skip
   [540]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_content_protection@dp-mst-type-0.html
   [541]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-3/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@mei-interface:
    - shard-dg1:          [SKIP][542] ([i915#9424]) -> [SKIP][543] ([i915#9433])
   [542]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg1-14/igt@kms_content_protection@mei-interface.html
   [543]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-13/igt@kms_content_protection@mei-interface.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-rkl:          [SKIP][544] ([i915#13049]) -> [SKIP][545] ([i915#14544])
   [544]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-8/igt@kms_cursor_crc@cursor-onscreen-512x170.html
   [545]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-onscreen-64x21:
    - shard-rkl:          [SKIP][546] ([i915#14544]) -> [FAIL][547] ([i915#13566])
   [546]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-64x21.html
   [547]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_cursor_crc@cursor-onscreen-64x21.html

  * igt@kms_cursor_crc@cursor-random-max-size:
    - shard-rkl:          [SKIP][548] ([i915#3555]) -> [SKIP][549] ([i915#14544]) +1 other test skip
   [548]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-7/igt@kms_cursor_crc@cursor-random-max-size.html
   [549]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_cursor_crc@cursor-random-max-size.html

  * igt@kms_cursor_crc@cursor-sliding-512x512:
    - shard-rkl:          [SKIP][550] ([i915#14544]) -> [SKIP][551] ([i915#13049]) +1 other test skip
   [550]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_cursor_crc@cursor-sliding-512x512.html
   [551]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_cursor_crc@cursor-sliding-512x512.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-rkl:          [SKIP][552] ([i915#4103]) -> [SKIP][553] ([i915#11190] / [i915#14544])
   [552]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [553]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
    - shard-rkl:          [SKIP][554] ([i915#14544]) -> [SKIP][555] ([i915#4103])
   [554]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
   [555]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html

  * igt@kms_dp_aux_dev:
    - shard-rkl:          [SKIP][556] ([i915#1257] / [i915#14544]) -> [SKIP][557] ([i915#1257])
   [556]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_dp_aux_dev.html
   [557]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_dp_aux_dev.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-rkl:          [SKIP][558] ([i915#14544]) -> [SKIP][559] ([i915#3840])
   [558]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
   [559]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-rkl:          [SKIP][560] ([i915#14544]) -> [SKIP][561] ([i915#3555] / [i915#3840])
   [560]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_dsc@dsc-with-bpc-formats.html
   [561]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_fbcon_fbt@psr:
    - shard-rkl:          [SKIP][562] ([i915#14544] / [i915#3955]) -> [SKIP][563] ([i915#3955])
   [562]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_fbcon_fbt@psr.html
   [563]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_fbcon_fbt@psr.html

  * igt@kms_feature_discovery@display-2x:
    - shard-rkl:          [SKIP][564] ([i915#14544] / [i915#1839]) -> [SKIP][565] ([i915#1839])
   [564]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_feature_discovery@display-2x.html
   [565]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-3/igt@kms_feature_discovery@display-2x.html

  * igt@kms_feature_discovery@psr1:
    - shard-rkl:          [SKIP][566] ([i915#658]) -> [SKIP][567] ([i915#14544] / [i915#658])
   [566]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-8/igt@kms_feature_discovery@psr1.html
   [567]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@2x-absolute-wf_vblank:
    - shard-rkl:          [SKIP][568] ([i915#9934]) -> [SKIP][569] ([i915#14544] / [i915#9934])
   [568]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-3/igt@kms_flip@2x-absolute-wf_vblank.html
   [569]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_flip@2x-absolute-wf_vblank.html

  * igt@kms_flip@2x-plain-flip-interruptible:
    - shard-rkl:          [SKIP][570] ([i915#14544] / [i915#9934]) -> [SKIP][571] ([i915#9934]) +3 other tests skip
   [570]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_flip@2x-plain-flip-interruptible.html
   [571]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_flip@2x-plain-flip-interruptible.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling:
    - shard-rkl:          [SKIP][572] ([i915#14544] / [i915#3555]) -> [SKIP][573] ([i915#2672] / [i915#3555]) +5 other tests skip
   [572]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html
   [573]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-dg1:          [SKIP][574] ([i915#2672] / [i915#3555]) -> [SKIP][575] ([i915#2672] / [i915#3555] / [i915#4423])
   [574]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg1-15/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
   [575]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-15/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-dg1:          [SKIP][576] ([i915#2587] / [i915#2672]) -> [SKIP][577] ([i915#2587] / [i915#2672] / [i915#4423])
   [576]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg1-15/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode.html
   [577]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-15/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-rkl:          [SKIP][578] ([i915#14544] / [i915#1849] / [i915#5354]) -> [DMESG-WARN][579] ([i915#12964])
   [578]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html
   [579]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-rte:
    - shard-dg1:          [SKIP][580] ([i915#3458] / [i915#4423]) -> [SKIP][581] ([i915#3458])
   [580]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg1-12/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html
   [581]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg1-14/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-rkl:          [SKIP][582] ([i915#1825]) -> [SKIP][583] ([i915#14544] / [i915#1849] / [i915#5354]) +2 other tests skip
   [582]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt.html
   [583]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu:
    - shard-dg2:          [SKIP][584] ([i915#10433] / [i915#3458]) -> [SKIP][585] ([i915#3458]) +1 other test skip
   [584]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu.html
   [585]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-5/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt:
    - shard-rkl:          [SKIP][586] ([i915#3023]) -> [SKIP][587] ([i915#14544] / [i915#1849] / [i915#5354]) +2 other tests skip
   [586]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt.html
   [587]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
    - shard-rkl:          [SKIP][588] ([i915#14544] / [i915#1849] / [i915#5354]) -> [SKIP][589] ([i915#1825]) +39 other tests skip
   [588]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
   [589]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-modesetfrombusy:
    - shard-rkl:          [SKIP][590] ([i915#14544] / [i915#1849] / [i915#5354]) -> [SKIP][591] ([i915#3023]) +20 other tests skip
   [590]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html
   [591]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-dg2:          [SKIP][592] ([i915#13331]) -> [SKIP][593] ([i915#12713])
   [592]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-dg2-11/igt@kms_hdr@brightness-with-hdr.html
   [593]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-dg2-1/igt@kms_hdr@brightness-with-hdr.html
    - shard-rkl:          [SKIP][594] ([i915#12713]) -> [SKIP][595] ([i915#14544])
   [594]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-8/igt@kms_hdr@brightness-with-hdr.html
   [595]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-rkl:          [SKIP][596] ([i915#14544]) -> [SKIP][597] ([i915#3555] / [i915#8228])
   [596]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_hdr@static-toggle-dpms.html
   [597]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_plane_multiple@2x-tiling-none:
    - shard-rkl:          [SKIP][598] ([i915#13958]) -> [SKIP][599] ([i915#14544])
   [598]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_plane_multiple@2x-tiling-none.html
   [599]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_plane_multiple@2x-tiling-none.html

  * igt@kms_plane_multiple@tiling-4:
    - shard-rkl:          [SKIP][600] ([i915#14544]) -> [SKIP][601] ([i915#14259])
   [600]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_plane_multiple@tiling-4.html
   [601]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_plane_multiple@tiling-4.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-rkl:          [SKIP][602] ([i915#14544] / [i915#6953] / [i915#8152]) -> [SKIP][603] ([i915#6953])
   [602]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_plane_scaling@intel-max-src-size.html
   [603]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-3/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a:
    - shard-rkl:          [SKIP][604] ([i915#12247] / [i915#14544]) -> [SKIP][605] ([i915#12247])
   [604]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html
   [605]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-b:
    - shard-rkl:          [SKIP][606] ([i915#12247] / [i915#14544] / [i915#8152]) -> [SKIP][607] ([i915#12247]) +1 other test skip
   [606]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-b.html
   [607]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-b.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-rkl:          [SKIP][608] ([i915#5354]) -> [SKIP][609] ([i915#14544] / [i915#5354])
   [608]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_pm_backlight@fade-with-suspend.html
   [609]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-rkl:          [FAIL][610] ([i915#9295]) -> [SKIP][611] ([i915#3361])
   [610]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_pm_dc@dc6-dpms.html
   [611]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_lpsp@screens-disabled:
    - shard-rkl:          [SKIP][612] ([i915#14544] / [i915#8430]) -> [SKIP][613] ([i915#8430])
   [612]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_pm_lpsp@screens-disabled.html
   [613]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_pm_lpsp@screens-disabled.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-rkl:          [SKIP][614] ([i915#14544] / [i915#9519]) -> [SKIP][615] ([i915#9519])
   [614]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [615]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-rkl:          [SKIP][616] ([i915#14544] / [i915#9519]) -> [DMESG-WARN][617] ([i915#12964])
   [616]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
   [617]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-2/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf:
    - shard-rkl:          [SKIP][618] ([i915#11520]) -> [SKIP][619] ([i915#11520] / [i915#14544]) +1 other test skip
   [618]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-4/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf.html
   [619]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area:
    - shard-rkl:          [SKIP][620] ([i915#11520] / [i915#14544]) -> [SKIP][621] ([i915#11520]) +6 other tests skip
   [620]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area.html
   [621]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-5/igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-rkl:          [SKIP][622] ([i915#9683]) -> [SKIP][623] ([i915#14544] / [i915#9683])
   [622]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_psr2_su@page_flip-xrgb8888.html
   [623]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-psr2-cursor-mmap-gtt:
    - shard-rkl:          [SKIP][624] ([i915#1072] / [i915#9732]) -> [SKIP][625] ([i915#1072] / [i915#14544] / [i915#9732])
   [624]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-7/igt@kms_psr@fbc-psr2-cursor-mmap-gtt.html
   [625]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_psr@fbc-psr2-cursor-mmap-gtt.html

  * igt@kms_psr@psr2-cursor-mmap-gtt:
    - shard-rkl:          [SKIP][626] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][627] ([i915#1072] / [i915#9732]) +20 other tests skip
   [626]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_psr@psr2-cursor-mmap-gtt.html
   [627]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_psr@psr2-cursor-mmap-gtt.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-rkl:          [SKIP][628] ([i915#9685]) -> [SKIP][629] ([i915#14544] / [i915#9685])
   [628]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-5/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [629]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_setmode@clone-exclusive-crtc:
    - shard-rkl:          [SKIP][630] ([i915#3555]) -> [SKIP][631] ([i915#14544] / [i915#3555])
   [630]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-2/igt@kms_setmode@clone-exclusive-crtc.html
   [631]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-6/igt@kms_setmode@clone-exclusive-crtc.html

  * igt@kms_setmode@invalid-clone-exclusive-crtc:
    - shard-rkl:          [SKIP][632] ([i915#14544] / [i915#3555]) -> [SKIP][633] ([i915#3555])
   [632]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_setmode@invalid-clone-exclusive-crtc.html
   [633]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_setmode@invalid-clone-exclusive-crtc.html

  * igt@kms_vrr@flip-basic:
    - shard-rkl:          [SKIP][634] ([i915#14544]) -> [SKIP][635] ([i915#3555]) +3 other tests skip
   [634]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_vrr@flip-basic.html
   [635]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-4/igt@kms_vrr@flip-basic.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-rkl:          [SKIP][636] ([i915#14544] / [i915#2437]) -> [SKIP][637] ([i915#2437])
   [636]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@kms_writeback@writeback-fb-id.html
   [637]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-7/igt@kms_writeback@writeback-fb-id.html

  * igt@perf@per-context-mode-unprivileged:
    - shard-rkl:          [SKIP][638] ([i915#14544] / [i915#2435]) -> [SKIP][639] ([i915#2435])
   [638]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8463/shard-rkl-6/igt@perf@per-context-mode-unprivileged.html
   [639]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13490/shard-rkl-8/igt@perf@per-context-mode-unprivileged.html

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

  [i915#10055]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10055
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10538
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10826
  [i915#1099]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1099
  [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
  [i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
  [i915#11190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11190
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#11808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11808
  [i915#11965]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11965
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12454]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12454
  [i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
  [i915#12655]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12655
  [i915#12712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12712
  [i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
  [i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
  [i915#12796]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12796
  [i915#12797]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12797
  [i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
  [i915#12817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12817
  [i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
  [i915#12917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12917
  [i915#12964]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12964
  [i915#13029]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13029
  [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#13304]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13304
  [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#13427]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13427
  [i915#13447]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13447
  [i915#13520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13520
  [i915#13522]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13522
  [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
  [i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
  [i915#13748]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13748
  [i915#13781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13781
  [i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
  [i915#14033]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14033
  [i915#14073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14073
  [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
  [i915#14259]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14259
  [i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
  [i915#14545]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14545
  [i915#14559]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14559
  [i915#14602]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14602
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
  [i915#2435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2435
  [i915#2436]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2436
  [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
  [i915#3361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#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#3955]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3955
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4885]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4885
  [i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
  [i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
  [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
  [i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
  [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#7294]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7294
  [i915#7387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7387
  [i915#7443]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7443
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984
  [i915#8152]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8152
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8810]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8810
  [i915#8813]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8813
  [i915#8826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8826
  [i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
  [i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
  [i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
  [i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9433
  [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
  [i915#9531]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9531
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
  [i915#9979]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9979


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

  * CI: CI-20190529 -> None
  * IGT: IGT_8463 -> IGTPW_13490

  CI-20190529: 20190529
  CI_DRM_16882: 32c3655fcecb4e7e7dd624bf7b201ae69eb5bb5f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_13490: 805d41a0659c90488f137596c82b92b8b4336882 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8463: 348dbef0314ccb588cbe83492444afc215965982 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* ✗ Xe.CI.Full: failure for Validate VF accesses to VRAM via BAR
  2025-07-17  9:08 [PATCH i-g-t 0/4] Validate VF accesses to VRAM via BAR Lukasz Laguna
                   ` (6 preceding siblings ...)
  2025-07-18  1:23 ` ✗ i915.CI.Full: failure " Patchwork
@ 2025-07-18 19:07 ` Patchwork
  7 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-07-18 19:07 UTC (permalink / raw)
  To: Lukasz Laguna; +Cc: igt-dev

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

== Series Details ==

Series: Validate VF accesses to VRAM via BAR
URL   : https://patchwork.freedesktop.org/series/151749/
State : failure

== Summary ==

ERROR: The runconfig 'XEIGT_8463_FULL' does not exist in the database

== Logs ==

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

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

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

* Re: [PATCH i-g-t 1/4] lib/igt_sriov_device: Add helper to iterate over enabled VFs
  2025-07-17  9:08 ` [PATCH i-g-t 1/4] lib/igt_sriov_device: Add helper to iterate over enabled VFs Lukasz Laguna
@ 2025-07-21 10:05   ` Piotr Piórkowski
  0 siblings, 0 replies; 16+ messages in thread
From: Piotr Piórkowski @ 2025-07-21 10:05 UTC (permalink / raw)
  To: Lukasz Laguna
  Cc: igt-dev, marcin.bernatowicz, michal.wajdeczko, michal.winiarski,
	satyanarayana.k.v.p, adam.miszczak, jakub1.kolakowski

Lukasz Laguna <lukasz.laguna@intel.com> wrote on czw [2025-lip-17 11:08:09 +0200]:
> Helper allows to iterate over enabled VFs.
> 
> Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
> ---
>  lib/igt_sriov_device.h | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/lib/igt_sriov_device.h b/lib/igt_sriov_device.h
> index 912449086..930e97982 100644
> --- a/lib/igt_sriov_device.h
> +++ b/lib/igt_sriov_device.h
> @@ -87,6 +87,18 @@ igt_sriov_random_vf_in_range(int pf_fd, unsigned int start, unsigned int end)
>  	     ++__vf_num)
>  #define for_each_sriov_num_vfs for_each_sriov_vf
>  
> +/**
> + * for_each_sriov_enabled_vf - Helper for running code on each enabled VF
> + * @__pf_fd: PF device file descriptor
> + * @__vf_num: VFs iterator
> + *
> + * For loop that iterates over all enabled VFs associated with given PF @__pf_fd.
> + */
> +#define for_each_sriov_enabled_vf(__pf_fd, __vf_num) \
> +	for (unsigned int __vf_num = 1, __enabled_vfs = igt_sriov_get_enabled_vfs(__pf_fd); \
> +	     __vf_num <= __enabled_vfs; \
> +	     ++__vf_num)
> +
>  /**
>   * for_each_sriov_vf_in_range - Iterate over VFs in a specified range
>   * @__pf_fd: PF device file descriptor


LGTM:
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
> -- 
> 2.40.0
> 

-- 

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

* Re: [PATCH i-g-t 4/4] tests/intel/xe_sriov_vram: Add test checking VF access to VRAM
  2025-07-17  9:08 ` [PATCH i-g-t 4/4] tests/intel/xe_sriov_vram: Add test checking VF access to VRAM Lukasz Laguna
@ 2025-07-31  8:29   ` Piotr Piórkowski
  2025-08-01 12:43     ` Laguna, Lukasz
  2025-08-21 16:53   ` Bernatowicz, Marcin
  1 sibling, 1 reply; 16+ messages in thread
From: Piotr Piórkowski @ 2025-07-31  8:29 UTC (permalink / raw)
  To: Lukasz Laguna
  Cc: igt-dev, marcin.bernatowicz, michal.wajdeczko, michal.winiarski,
	satyanarayana.k.v.p, adam.miszczak, jakub1.kolakowski

Lukasz Laguna <lukasz.laguna@intel.com> wrote on czw [2025-lip-17 11:08:12 +0200]:
> Add a test to validate VF access to VRAM via BAR. The following
> scenarios are covered:
> - VF can access all provisioned memory via the VRAM BAR,
> - VF cannot access memory beyond what's provisioned via the VRAM BAR,
> - VF can access memory via the VRAM BAR after reprovisioning.
> 
> Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
> ---
>  tests/intel/xe_sriov_vram.c | 310 ++++++++++++++++++++++++++++++++++++
>  tests/meson.build           |   1 +
>  2 files changed, 311 insertions(+)
>  create mode 100644 tests/intel/xe_sriov_vram.c
> 
> diff --git a/tests/intel/xe_sriov_vram.c b/tests/intel/xe_sriov_vram.c
> new file mode 100644
> index 000000000..82f0a2f09
> --- /dev/null
> +++ b/tests/intel/xe_sriov_vram.c
> @@ -0,0 +1,310 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright(c) 2025 Intel Corporation. All rights reserved.
> + */
> +
> +#include "drmtest.h"
> +#include "igt_core.h"
> +#include "igt_sriov_device.h"
> +#include "intel_vram.h"
> +#include "xe/xe_sriov_provisioning.h"
> +#include "xe/xe_query.h"
> +
> +/**
> + * TEST: xe_sriov_vram
> + * Category: Core
> + * Mega feature: SR-IOV
> + * Sub-category: LMTT

LMTT != VF VRAM

Either assume that this test tests LMTT  and name the test xe_sriov_lmtt,
or else you cannot use the LMTT subcategory here.

In my opinion, this test  tests VRAM access via LMEM BAR on VF (and indirectly LMTT),
but these are not direct LMTT tests.

But what if the platform used some other mechanism instead of LMTT?
The xe_sriov_vram test should still be valid.

> + * Functionality: VRAM access
> + * Description: Validate VF access to VRAM
> + *
> + * SUBTEST: vf-access-basic
> + * Description: Verify that VF can access all the provisioned memory via VRAM BAR
> + *
> + * SUBTEST: vf-access-beyond
> + * Description: Verify that VF cannot access memory beyond what's provisioned via VRAM BAR
> + *
> + * SUBTEST: vf-access-after-resize-down
> + * Description: Verify that VF can access the reprovisioned memory (reduced size) via VRAM BAR
> + *
> + * SUBTEST: vf-access-after-resize-up
> + * Description: Verify that VF can access the reprovisioned memory (increased size) via VRAM BAR
> + */
> +
> +IGT_TEST_DESCRIPTION("Xe tests for VRAM in SR-IOV context");
> +
> +const size_t STEP = SZ_1M;
> +
> +static uint64_t get_provisioned_vram(unsigned int pf_fd, unsigned int vf_id)
> +{
> +	uint64_t size = 0;
> +
> +	/* TODO: adjust for multitile platforms */
Why not make a multi-tile version in this patch?
It will be necessary anyway.
> +	size = xe_sriov_pf_get_provisioned_quota(pf_fd, XE_SRIOV_SHARED_RES_LMEM, vf_id, 0);
> +
> +	return size;
> +}
> +
> +static bool validate_access_basic(struct vram_mapping *vram, unsigned int vf_id,
> +				  uint64_t provisioned_lmem)
NIT: s/provisioned_lmem/size

hmm, If you later use size_t for offset, then I think you can use it here also.
> +{
> +	uint8_t read, orig;
> +	bool passed = true;
> +
> +	for (size_t offset = 0; offset < provisioned_lmem; offset += STEP) {
> +		orig = intel_vram_read8(vram, offset);
> +
> +		read = intel_vram_write_readback8(vram, offset, vf_id);
> +		if (read != vf_id) {
> +			igt_debug("VRAM write/read check failed on VF%u (offset: %#lx, write: %u, read: %u)\n",
> +				  vf_id, offset, vf_id, read);
> +			passed = false;
> +		}
> +
> +		read = intel_vram_write_readback8(vram, offset, orig);
> +		if (read != orig) {
> +			igt_debug("Failed to restore original value on VF%u (offset: %#lx, orig: %u, read: %u)\n",
In the log, we should probably use full names instead of variable names.
> +				  vf_id, offset, orig, read);
> +			passed = false;
> +		}
> +	}
> +
> +	return passed;
> +}
> +
> +static void access_basic(unsigned int pf_fd, unsigned int num_vfs)
> +{
> +	uint64_t provisioned_lmem;
> +	struct vram_mapping vram;
> +	size_t vram_bar_size;
> +	bool passed = true;
> +
> +	igt_sriov_disable_driver_autoprobe(pf_fd);
> +	igt_sriov_enable_vfs(pf_fd, num_vfs);
> +
> +	for_each_sriov_enabled_vf(pf_fd, vf_id) {
> +		provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
> +		igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n",
> +			  vf_id, provisioned_lmem);
> +
> +		vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
> +		igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
> +
> +		if (vram_bar_size < provisioned_lmem) {
> +			igt_sriov_disable_vfs(pf_fd);
> +			igt_skip("VRAM BAR size is smaller than provisioned VRAM\n");
I think this is a valid scenario.
In that case, I think we need to limit the test to the size of BAR.
> +		}
> +
> +		vram = intel_vram_mmap(pf_fd, vf_id, provisioned_lmem, PROT_READ | PROT_WRITE, 0);
> +		igt_assert(vram.addr);
> +
> +		passed &= validate_access_basic(&vram, vf_id, provisioned_lmem);
> +
> +		intel_vram_munmap(&vram);
> +	}
> +
> +	igt_sriov_disable_vfs(pf_fd);
> +
> +	igt_assert(passed);
> +}
> +
> +static bool validate_access_beyond(struct vram_mapping *vram, unsigned int vf_id,
> +				   uint64_t provisioned_lmem, size_t vram_bar_size)
> +{
> +	uint8_t read, orig;
> +	bool passed = true;
> +
> +	for (size_t offset = provisioned_lmem; offset < vram_bar_size; offset += STEP) {
> +		orig = intel_vram_read8(vram, offset);
> +
> +		read = intel_vram_write_readback8(vram, offset, vf_id);
> +		if (read == vf_id) {
> +			igt_debug("Successful VRAM write above provisioned size on VF%u (offset: %#lx)\n",

I don't like the word “successful” in this context: we just failed at something and the test
returns “successfull something”.

> +				  vf_id, offset);
> +			passed = false;
> +
> +			read = intel_vram_write_readback8(vram, offset, orig);
> +			if (read != orig)
> +				igt_debug("Failed to restore original value on VF%u (offset: %#lx, orig: %u, read: %u)\n",
> +					  vf_id, offset, orig, read);
> +		}
> +	}
> +
> +	return passed;
> +}
> +
> +static void access_beyond(unsigned int pf_fd, unsigned int num_vfs)
> +{
> +	uint64_t provisioned_lmem;
> +	struct vram_mapping vram;
> +	size_t vram_bar_size;
> +	bool passed = true;
> +
> +	igt_sriov_disable_driver_autoprobe(pf_fd);
> +	igt_sriov_enable_vfs(pf_fd, num_vfs);
> +
> +	for_each_sriov_enabled_vf(pf_fd, vf_id) {
> +		provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
> +		igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n",
> +			  vf_id, provisioned_lmem);
> +
> +		vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
> +		igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
> +
> +		if (vram_bar_size <= provisioned_lmem) {
> +			igt_sriov_disable_vfs(pf_fd);
> +			igt_skip("VRAM BAR size is smaller or equal to provisioned VRAM\n");
> +		}
> +
> +		vram = intel_vram_mmap(pf_fd, vf_id, vram_bar_size, PROT_READ | PROT_WRITE, 0);
> +		igt_assert(vram.addr);
> +
> +		passed &= validate_access_beyond(&vram, vf_id, provisioned_lmem, vram_bar_size);
> +
> +		intel_vram_munmap(&vram);
> +	}
> +
> +	igt_sriov_disable_vfs(pf_fd);
> +
> +	igt_assert(passed);
> +}
> +
> +static void resize_and_access(unsigned int pf_fd, bool resize_up)
> +{
> +	const unsigned int vf_id = 1;
> +	uint64_t provisioned_lmem;
> +	struct vram_mapping vram;
> +	unsigned int total_vfs;
> +	size_t vram_bar_size;
> +	bool passed;
> +
> +	total_vfs = igt_sriov_get_total_vfs(pf_fd);
> +
> +	igt_sriov_disable_driver_autoprobe(pf_fd);
> +	igt_sriov_enable_vfs(pf_fd, resize_up ? total_vfs : 1);
> +
> +	provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
> +	igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n", vf_id, provisioned_lmem);
> +
> +	igt_sriov_disable_vfs(pf_fd);
> +	igt_sriov_enable_vfs(pf_fd, resize_up ? 1 : total_vfs);
> +
> +	provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
> +	igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n", vf_id, provisioned_lmem);
> +
> +	vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
> +	igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
> +
> +	if (vram_bar_size <= provisioned_lmem) {
> +		igt_sriov_disable_vfs(pf_fd);
> +		igt_skip("VRAM BAR size is smaller or equal to provisioned VRAM\n");

> +	}
> +
> +	vram = intel_vram_mmap(pf_fd, vf_id, vram_bar_size, PROT_READ | PROT_WRITE, 0);
> +	igt_assert(vram.addr);
> +
> +	passed = validate_access_basic(&vram, vf_id, provisioned_lmem);
> +	passed &= validate_access_beyond(&vram, vf_id, provisioned_lmem, vram_bar_size);
> +
> +	intel_vram_munmap(&vram);
> +
> +	igt_sriov_disable_vfs(pf_fd);
> +
> +	igt_assert(passed);
> +}
> +
> +static bool extended_scope;
> +
> +static int opts_handler(int opt, int opt_index, void *data)
> +{
> +	switch (opt) {
> +	case 'e':
> +		extended_scope = true;
> +		break;
> +	default:
> +		return IGT_OPT_HANDLER_ERROR;
> +	}
> +
> +	return IGT_OPT_HANDLER_SUCCESS;
> +}
> +
> +static const struct option long_opts[] = {
> +	{ .name = "extended", .has_arg = false, .val = 'e', },
> +	{}
> +};
> +
> +static const char help_str[] =
> +	"  --extended\tRun the extended test scope\n";
> +
> +igt_main_args("", long_opts, help_str, opts_handler, NULL)
> +{
> +	bool autoprobe;
> +	int pf_fd;
> +	static struct subtest_resize_variants {
> +		const char *name;
> +		bool resize_up;
> +	} resize_variant[] = {
> +		{ "up", true },
> +		{ "down", false },
NIT: Maybe instead of up/down, we could use expand/reduce.
> +		{ NULL },
> +	};
> +
> +	igt_fixture {
> +		pf_fd = drm_open_driver(DRIVER_XE);
> +		igt_require(igt_sriov_is_pf(pf_fd));
> +		igt_require(igt_sriov_get_enabled_vfs(pf_fd) == 0);
> +		autoprobe = igt_sriov_is_driver_autoprobe_enabled(pf_fd);
> +	}
> +
> +	igt_describe("Verify that VF can access all the provisioned memory via VRAM BAR");
> +	igt_subtest_with_dynamic_f("vf-access-basic") {
> +		if (extended_scope)
> +			for_each_sriov_num_vfs(pf_fd, num_vfs)
> +				igt_dynamic_f("numvfs-%d", num_vfs)
> +					access_basic(pf_fd, num_vfs);
> +
> +		for_random_sriov_num_vfs(pf_fd, num_vfs) {
> +			igt_dynamic_f("numvfs-random") {
> +				igt_debug("numvfs=%u\n", num_vfs);
> +				access_basic(pf_fd, num_vfs);
> +			}
> +		}
Am I correct in understanding that the basic scenario is with a random number of VFs
and the extended one with total VFs?
If I run the extended version, do we still want to do random?

Thanks,
Piotr
> +	}
> +
> +	igt_describe("Verify that VF cannot access memory beyond what's provisioned via VRAM BAR");
> +	igt_subtest_with_dynamic_f("vf-access-beyond") {
> +		if (extended_scope)
> +			for_each_sriov_num_vfs(pf_fd, num_vfs)
> +				igt_dynamic_f("numvfs-%d", num_vfs)
> +					access_beyond(pf_fd, num_vfs);
> +
> +		for_random_sriov_num_vfs(pf_fd, num_vfs) {
> +			igt_dynamic_f("numvfs-random") {
> +				igt_debug("numvfs=%u\n", num_vfs);
> +				access_beyond(pf_fd, num_vfs);
> +			}
> +		}
> +	}
> +
> +	for (const struct subtest_resize_variants *s = resize_variant; s->name; s++) {
> +		igt_describe("Verify that VF can access the reprovisioned memory via VRAM BAR");
> +		igt_subtest_f("vf-access-after-resize-%s", s->name) {
> +			unsigned int total_vfs = igt_sriov_get_total_vfs(pf_fd);
> +
> +			igt_require(total_vfs > 1);
> +
> +			resize_and_access(pf_fd, s->resize_up);
> +		}
> +	}
> +
> +	igt_fixture {
> +		igt_sriov_disable_vfs(pf_fd);
> +		/* abort to avoid execution of next tests with enabled VFs */
> +		igt_abort_on_f(igt_sriov_get_enabled_vfs(pf_fd) > 0, "Failed to disable VF(s)");
> +		autoprobe ? igt_sriov_enable_driver_autoprobe(pf_fd) :
> +			    igt_sriov_disable_driver_autoprobe(pf_fd);
> +		igt_abort_on_f(autoprobe != igt_sriov_is_driver_autoprobe_enabled(pf_fd),
> +			       "Failed to restore sriov_drivers_autoprobe value\n");
> +		close(pf_fd);
> +	}
> +}
> diff --git a/tests/meson.build b/tests/meson.build
> index 5c01c64e9..6054a2c34 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -329,6 +329,7 @@ intel_xe_progs = [
>  	'xe_sriov_auto_provisioning',
>  	'xe_sriov_flr',
>  	'xe_sriov_scheduling',
> +	'xe_sriov_vram',
>  	'xe_sysfs_defaults',
>  	'xe_sysfs_preempt_timeout',
>  	'xe_sysfs_scheduler',
> -- 
> 2.40.0
> 

-- 

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

* Re: [PATCH i-g-t 4/4] tests/intel/xe_sriov_vram: Add test checking VF access to VRAM
  2025-07-31  8:29   ` Piotr Piórkowski
@ 2025-08-01 12:43     ` Laguna, Lukasz
  0 siblings, 0 replies; 16+ messages in thread
From: Laguna, Lukasz @ 2025-08-01 12:43 UTC (permalink / raw)
  To: Piotr Piórkowski
  Cc: igt-dev, marcin.bernatowicz, michal.wajdeczko, michal.winiarski,
	satyanarayana.k.v.p, adam.miszczak, jakub1.kolakowski

On 7/31/2025 10:29, Piotr Piórkowski wrote:
> Lukasz Laguna <lukasz.laguna@intel.com> wrote on czw [2025-lip-17 11:08:12 +0200]:
>> Add a test to validate VF access to VRAM via BAR. The following
>> scenarios are covered:
>> - VF can access all provisioned memory via the VRAM BAR,
>> - VF cannot access memory beyond what's provisioned via the VRAM BAR,
>> - VF can access memory via the VRAM BAR after reprovisioning.
>>
>> Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
>> ---
>>   tests/intel/xe_sriov_vram.c | 310 ++++++++++++++++++++++++++++++++++++
>>   tests/meson.build           |   1 +
>>   2 files changed, 311 insertions(+)
>>   create mode 100644 tests/intel/xe_sriov_vram.c
>>
>> diff --git a/tests/intel/xe_sriov_vram.c b/tests/intel/xe_sriov_vram.c
>> new file mode 100644
>> index 000000000..82f0a2f09
>> --- /dev/null
>> +++ b/tests/intel/xe_sriov_vram.c
>> @@ -0,0 +1,310 @@
>> +// SPDX-License-Identifier: MIT
>> +/*
>> + * Copyright(c) 2025 Intel Corporation. All rights reserved.
>> + */
>> +
>> +#include "drmtest.h"
>> +#include "igt_core.h"
>> +#include "igt_sriov_device.h"
>> +#include "intel_vram.h"
>> +#include "xe/xe_sriov_provisioning.h"
>> +#include "xe/xe_query.h"
>> +
>> +/**
>> + * TEST: xe_sriov_vram
>> + * Category: Core
>> + * Mega feature: SR-IOV
>> + * Sub-category: LMTT
> LMTT != VF VRAM
>
> Either assume that this test tests LMTT  and name the test xe_sriov_lmtt,
> or else you cannot use the LMTT subcategory here.
>
> In my opinion, this test  tests VRAM access via LMEM BAR on VF (and indirectly LMTT),
> but these are not direct LMTT tests.
>
> But what if the platform used some other mechanism instead of LMTT?
> The xe_sriov_vram test should still be valid.

OK, I'll change it.

>> + * Functionality: VRAM access
>> + * Description: Validate VF access to VRAM
>> + *
>> + * SUBTEST: vf-access-basic
>> + * Description: Verify that VF can access all the provisioned memory via VRAM BAR
>> + *
>> + * SUBTEST: vf-access-beyond
>> + * Description: Verify that VF cannot access memory beyond what's provisioned via VRAM BAR
>> + *
>> + * SUBTEST: vf-access-after-resize-down
>> + * Description: Verify that VF can access the reprovisioned memory (reduced size) via VRAM BAR
>> + *
>> + * SUBTEST: vf-access-after-resize-up
>> + * Description: Verify that VF can access the reprovisioned memory (increased size) via VRAM BAR
>> + */
>> +
>> +IGT_TEST_DESCRIPTION("Xe tests for VRAM in SR-IOV context");
>> +
>> +const size_t STEP = SZ_1M;
>> +
>> +static uint64_t get_provisioned_vram(unsigned int pf_fd, unsigned int vf_id)
>> +{
>> +	uint64_t size = 0;
>> +
>> +	/* TODO: adjust for multitile platforms */
> Why not make a multi-tile version in this patch?
> It will be necessary anyway.

IGT helpers currently support GTs only - and it's because the driver 
exposes provisioning data for GTs only:

  *      /sys/kernel/debug/dri/0/
  *      ├── gt0
  *      │   ├── pf
  *      │   │   ├── lmem_provisioned

AFAIK, it needs to be refactored to include tiles as well 
(/sys/kernel/debug/dri/0/tileX/gtY), so support for multitile in IGT can 
be added after it's properly implemented on the driver side.

>> +	size = xe_sriov_pf_get_provisioned_quota(pf_fd, XE_SRIOV_SHARED_RES_LMEM, vf_id, 0);
>> +
>> +	return size;
>> +}
>> +
>> +static bool validate_access_basic(struct vram_mapping *vram, unsigned int vf_id,
>> +				  uint64_t provisioned_lmem)
> NIT: s/provisioned_lmem/size

Ah, definitely not "lmem", as everywhere else I used vram.
I would prefer to use "vram_size", as "size" is not descriptive enough 
for me in this case - especially that we also use vram_bar_size in the test.

> hmm, If you later use size_t for offset, then I think you can use it here also.

That's right, I'll change it.

>> +{
>> +	uint8_t read, orig;
>> +	bool passed = true;
>> +
>> +	for (size_t offset = 0; offset < provisioned_lmem; offset += STEP) {
>> +		orig = intel_vram_read8(vram, offset);
>> +
>> +		read = intel_vram_write_readback8(vram, offset, vf_id);
>> +		if (read != vf_id) {
>> +			igt_debug("VRAM write/read check failed on VF%u (offset: %#lx, write: %u, read: %u)\n",
>> +				  vf_id, offset, vf_id, read);
>> +			passed = false;
>> +		}
>> +
>> +		read = intel_vram_write_readback8(vram, offset, orig);
>> +		if (read != orig) {
>> +			igt_debug("Failed to restore original value on VF%u (offset: %#lx, orig: %u, read: %u)\n",
> In the log, we should probably use full names instead of variable names.

OK

>> +				  vf_id, offset, orig, read);
>> +			passed = false;
>> +		}
>> +	}
>> +
>> +	return passed;
>> +}
>> +
>> +static void access_basic(unsigned int pf_fd, unsigned int num_vfs)
>> +{
>> +	uint64_t provisioned_lmem;
>> +	struct vram_mapping vram;
>> +	size_t vram_bar_size;
>> +	bool passed = true;
>> +
>> +	igt_sriov_disable_driver_autoprobe(pf_fd);
>> +	igt_sriov_enable_vfs(pf_fd, num_vfs);
>> +
>> +	for_each_sriov_enabled_vf(pf_fd, vf_id) {
>> +		provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
>> +		igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n",
>> +			  vf_id, provisioned_lmem);
>> +
>> +		vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
>> +		igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
>> +
>> +		if (vram_bar_size < provisioned_lmem) {
>> +			igt_sriov_disable_vfs(pf_fd);
>> +			igt_skip("VRAM BAR size is smaller than provisioned VRAM\n");
> I think this is a valid scenario.
> In that case, I think we need to limit the test to the size of BAR.

I have mixed feelings about this. On one hand, I agree, but on the 
other, in such case we might incorrectly assume that everything is fine 
and passing, while there could be an issue that would only appear when 
testing the entire region. I considered adding a warning in this 
scenario, but a warning would result in a failure in CI.

LMEM accesses can still be validated in the dynamic subtests that enable 
a large number of VFs (in such case even on small BAR systems 
provisioned_lmem < bar_size). Talking all of this into account I think 
it's better to skip the test.

>> +		}
>> +
>> +		vram = intel_vram_mmap(pf_fd, vf_id, provisioned_lmem, PROT_READ | PROT_WRITE, 0);
>> +		igt_assert(vram.addr);
>> +
>> +		passed &= validate_access_basic(&vram, vf_id, provisioned_lmem);
>> +
>> +		intel_vram_munmap(&vram);
>> +	}
>> +
>> +	igt_sriov_disable_vfs(pf_fd);
>> +
>> +	igt_assert(passed);
>> +}
>> +
>> +static bool validate_access_beyond(struct vram_mapping *vram, unsigned int vf_id,
>> +				   uint64_t provisioned_lmem, size_t vram_bar_size)
>> +{
>> +	uint8_t read, orig;
>> +	bool passed = true;
>> +
>> +	for (size_t offset = provisioned_lmem; offset < vram_bar_size; offset += STEP) {
>> +		orig = intel_vram_read8(vram, offset);
>> +
>> +		read = intel_vram_write_readback8(vram, offset, vf_id);
>> +		if (read == vf_id) {
>> +			igt_debug("Successful VRAM write above provisioned size on VF%u (offset: %#lx)\n",
> I don't like the word “successful” in this context: we just failed at something and the test
> returns “successfull something”.

Good point.

>
>> +				  vf_id, offset);
>> +			passed = false;
>> +
>> +			read = intel_vram_write_readback8(vram, offset, orig);
>> +			if (read != orig)
>> +				igt_debug("Failed to restore original value on VF%u (offset: %#lx, orig: %u, read: %u)\n",
>> +					  vf_id, offset, orig, read);
>> +		}
>> +	}
>> +
>> +	return passed;
>> +}
>> +
>> +static void access_beyond(unsigned int pf_fd, unsigned int num_vfs)
>> +{
>> +	uint64_t provisioned_lmem;
>> +	struct vram_mapping vram;
>> +	size_t vram_bar_size;
>> +	bool passed = true;
>> +
>> +	igt_sriov_disable_driver_autoprobe(pf_fd);
>> +	igt_sriov_enable_vfs(pf_fd, num_vfs);
>> +
>> +	for_each_sriov_enabled_vf(pf_fd, vf_id) {
>> +		provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
>> +		igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n",
>> +			  vf_id, provisioned_lmem);
>> +
>> +		vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
>> +		igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
>> +
>> +		if (vram_bar_size <= provisioned_lmem) {
>> +			igt_sriov_disable_vfs(pf_fd);
>> +			igt_skip("VRAM BAR size is smaller or equal to provisioned VRAM\n");
>> +		}
>> +
>> +		vram = intel_vram_mmap(pf_fd, vf_id, vram_bar_size, PROT_READ | PROT_WRITE, 0);
>> +		igt_assert(vram.addr);
>> +
>> +		passed &= validate_access_beyond(&vram, vf_id, provisioned_lmem, vram_bar_size);
>> +
>> +		intel_vram_munmap(&vram);
>> +	}
>> +
>> +	igt_sriov_disable_vfs(pf_fd);
>> +
>> +	igt_assert(passed);
>> +}
>> +
>> +static void resize_and_access(unsigned int pf_fd, bool resize_up)
>> +{
>> +	const unsigned int vf_id = 1;
>> +	uint64_t provisioned_lmem;
>> +	struct vram_mapping vram;
>> +	unsigned int total_vfs;
>> +	size_t vram_bar_size;
>> +	bool passed;
>> +
>> +	total_vfs = igt_sriov_get_total_vfs(pf_fd);
>> +
>> +	igt_sriov_disable_driver_autoprobe(pf_fd);
>> +	igt_sriov_enable_vfs(pf_fd, resize_up ? total_vfs : 1);
>> +
>> +	provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
>> +	igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n", vf_id, provisioned_lmem);
>> +
>> +	igt_sriov_disable_vfs(pf_fd);
>> +	igt_sriov_enable_vfs(pf_fd, resize_up ? 1 : total_vfs);
>> +
>> +	provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
>> +	igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n", vf_id, provisioned_lmem);
>> +
>> +	vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
>> +	igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
>> +
>> +	if (vram_bar_size <= provisioned_lmem) {
>> +		igt_sriov_disable_vfs(pf_fd);
>> +		igt_skip("VRAM BAR size is smaller or equal to provisioned VRAM\n");
>> +	}
>> +
>> +	vram = intel_vram_mmap(pf_fd, vf_id, vram_bar_size, PROT_READ | PROT_WRITE, 0);
>> +	igt_assert(vram.addr);
>> +
>> +	passed = validate_access_basic(&vram, vf_id, provisioned_lmem);
>> +	passed &= validate_access_beyond(&vram, vf_id, provisioned_lmem, vram_bar_size);
>> +
>> +	intel_vram_munmap(&vram);
>> +
>> +	igt_sriov_disable_vfs(pf_fd);
>> +
>> +	igt_assert(passed);
>> +}
>> +
>> +static bool extended_scope;
>> +
>> +static int opts_handler(int opt, int opt_index, void *data)
>> +{
>> +	switch (opt) {
>> +	case 'e':
>> +		extended_scope = true;
>> +		break;
>> +	default:
>> +		return IGT_OPT_HANDLER_ERROR;
>> +	}
>> +
>> +	return IGT_OPT_HANDLER_SUCCESS;
>> +}
>> +
>> +static const struct option long_opts[] = {
>> +	{ .name = "extended", .has_arg = false, .val = 'e', },
>> +	{}
>> +};
>> +
>> +static const char help_str[] =
>> +	"  --extended\tRun the extended test scope\n";
>> +
>> +igt_main_args("", long_opts, help_str, opts_handler, NULL)
>> +{
>> +	bool autoprobe;
>> +	int pf_fd;
>> +	static struct subtest_resize_variants {
>> +		const char *name;
>> +		bool resize_up;
>> +	} resize_variant[] = {
>> +		{ "up", true },
>> +		{ "down", false },
> NIT: Maybe instead of up/down, we could use expand/reduce.

In current form subtest name is vf-access-after-resize-(up|down). What's 
your suggestion exactly?

>> +		{ NULL },
>> +	};
>> +
>> +	igt_fixture {
>> +		pf_fd = drm_open_driver(DRIVER_XE);
>> +		igt_require(igt_sriov_is_pf(pf_fd));
>> +		igt_require(igt_sriov_get_enabled_vfs(pf_fd) == 0);
>> +		autoprobe = igt_sriov_is_driver_autoprobe_enabled(pf_fd);
>> +	}
>> +
>> +	igt_describe("Verify that VF can access all the provisioned memory via VRAM BAR");
>> +	igt_subtest_with_dynamic_f("vf-access-basic") {
>> +		if (extended_scope)
>> +			for_each_sriov_num_vfs(pf_fd, num_vfs)
>> +				igt_dynamic_f("numvfs-%d", num_vfs)
>> +					access_basic(pf_fd, num_vfs);
>> +
>> +		for_random_sriov_num_vfs(pf_fd, num_vfs) {
>> +			igt_dynamic_f("numvfs-random") {
>> +				igt_debug("numvfs=%u\n", num_vfs);
>> +				access_basic(pf_fd, num_vfs);
>> +			}
>> +		}
> Am I correct in understanding that the basic scenario is with a random number of VFs
> and the extended one with total VFs?
> If I run the extended version, do we still want to do random?

In 'extended' version it's tested in every possible variant (1, 2, ... 
totalvfs), but you're right - we shouldn't run random in this case.

Thanks for review!

> Thanks,
> Piotr
>> +	}
>> +
>> +	igt_describe("Verify that VF cannot access memory beyond what's provisioned via VRAM BAR");
>> +	igt_subtest_with_dynamic_f("vf-access-beyond") {
>> +		if (extended_scope)
>> +			for_each_sriov_num_vfs(pf_fd, num_vfs)
>> +				igt_dynamic_f("numvfs-%d", num_vfs)
>> +					access_beyond(pf_fd, num_vfs);
>> +
>> +		for_random_sriov_num_vfs(pf_fd, num_vfs) {
>> +			igt_dynamic_f("numvfs-random") {
>> +				igt_debug("numvfs=%u\n", num_vfs);
>> +				access_beyond(pf_fd, num_vfs);
>> +			}
>> +		}
>> +	}
>> +
>> +	for (const struct subtest_resize_variants *s = resize_variant; s->name; s++) {
>> +		igt_describe("Verify that VF can access the reprovisioned memory via VRAM BAR");
>> +		igt_subtest_f("vf-access-after-resize-%s", s->name) {
>> +			unsigned int total_vfs = igt_sriov_get_total_vfs(pf_fd);
>> +
>> +			igt_require(total_vfs > 1);
>> +
>> +			resize_and_access(pf_fd, s->resize_up);
>> +		}
>> +	}
>> +
>> +	igt_fixture {
>> +		igt_sriov_disable_vfs(pf_fd);
>> +		/* abort to avoid execution of next tests with enabled VFs */
>> +		igt_abort_on_f(igt_sriov_get_enabled_vfs(pf_fd) > 0, "Failed to disable VF(s)");
>> +		autoprobe ? igt_sriov_enable_driver_autoprobe(pf_fd) :
>> +			    igt_sriov_disable_driver_autoprobe(pf_fd);
>> +		igt_abort_on_f(autoprobe != igt_sriov_is_driver_autoprobe_enabled(pf_fd),
>> +			       "Failed to restore sriov_drivers_autoprobe value\n");
>> +		close(pf_fd);
>> +	}
>> +}
>> diff --git a/tests/meson.build b/tests/meson.build
>> index 5c01c64e9..6054a2c34 100644
>> --- a/tests/meson.build
>> +++ b/tests/meson.build
>> @@ -329,6 +329,7 @@ intel_xe_progs = [
>>   	'xe_sriov_auto_provisioning',
>>   	'xe_sriov_flr',
>>   	'xe_sriov_scheduling',
>> +	'xe_sriov_vram',
>>   	'xe_sysfs_defaults',
>>   	'xe_sysfs_preempt_timeout',
>>   	'xe_sysfs_scheduler',
>> -- 
>> 2.40.0
>>

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

* Re: [PATCH i-g-t 4/4] tests/intel/xe_sriov_vram: Add test checking VF access to VRAM
  2025-07-17  9:08 ` [PATCH i-g-t 4/4] tests/intel/xe_sriov_vram: Add test checking VF access to VRAM Lukasz Laguna
  2025-07-31  8:29   ` Piotr Piórkowski
@ 2025-08-21 16:53   ` Bernatowicz, Marcin
  2025-08-27 13:16     ` Laguna, Lukasz
  1 sibling, 1 reply; 16+ messages in thread
From: Bernatowicz, Marcin @ 2025-08-21 16:53 UTC (permalink / raw)
  To: Lukasz Laguna, igt-dev
  Cc: michal.wajdeczko, michal.winiarski, satyanarayana.k.v.p,
	adam.miszczak, jakub1.kolakowski



On 7/17/2025 11:08 AM, Lukasz Laguna wrote:
> Add a test to validate VF access to VRAM via BAR. The following
> scenarios are covered:
> - VF can access all provisioned memory via the VRAM BAR,
> - VF cannot access memory beyond what's provisioned via the VRAM BAR,
> - VF can access memory via the VRAM BAR after reprovisioning.
> 
> Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
> ---
>   tests/intel/xe_sriov_vram.c | 310 ++++++++++++++++++++++++++++++++++++
>   tests/meson.build           |   1 +
>   2 files changed, 311 insertions(+)
>   create mode 100644 tests/intel/xe_sriov_vram.c
> 
> diff --git a/tests/intel/xe_sriov_vram.c b/tests/intel/xe_sriov_vram.c
> new file mode 100644
> index 000000000..82f0a2f09
> --- /dev/null
> +++ b/tests/intel/xe_sriov_vram.c
> @@ -0,0 +1,310 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright(c) 2025 Intel Corporation. All rights reserved.
> + */
> +
> +#include "drmtest.h"
> +#include "igt_core.h"
> +#include "igt_sriov_device.h"
> +#include "intel_vram.h"
> +#include "xe/xe_sriov_provisioning.h"
> +#include "xe/xe_query.h"
> +
> +/**
> + * TEST: xe_sriov_vram
> + * Category: Core
> + * Mega feature: SR-IOV
> + * Sub-category: LMTT
> + * Functionality: VRAM access
> + * Description: Validate VF access to VRAM
> + *
> + * SUBTEST: vf-access-basic
> + * Description: Verify that VF can access all the provisioned memory via VRAM BAR
> + *
> + * SUBTEST: vf-access-beyond
> + * Description: Verify that VF cannot access memory beyond what's provisioned via VRAM BAR
> + *
> + * SUBTEST: vf-access-after-resize-down
> + * Description: Verify that VF can access the reprovisioned memory (reduced size) via VRAM BAR
> + *
> + * SUBTEST: vf-access-after-resize-up
> + * Description: Verify that VF can access the reprovisioned memory (increased size) via VRAM BAR
> + */
> +
> +IGT_TEST_DESCRIPTION("Xe tests for VRAM in SR-IOV context");
> +
> +const size_t STEP = SZ_1M;
> +
> +static uint64_t get_provisioned_vram(unsigned int pf_fd, unsigned int vf_id)
> +{
> +	uint64_t size = 0;
> +
> +	/* TODO: adjust for multitile platforms */
> +	size = xe_sriov_pf_get_provisioned_quota(pf_fd, XE_SRIOV_SHARED_RES_LMEM, vf_id, 0);
> +
> +	return size;
> +}
> +
> +static bool validate_access_basic(struct vram_mapping *vram, unsigned int vf_id,
> +				  uint64_t provisioned_lmem)
> +{
> +	uint8_t read, orig;
> +	bool passed = true;
> +
> +	for (size_t offset = 0; offset < provisioned_lmem; offset += STEP) {
> +		orig = intel_vram_read8(vram, offset);
> +
> +		read = intel_vram_write_readback8(vram, offset, vf_id);
> +		if (read != vf_id) {
> +			igt_debug("VRAM write/read check failed on VF%u (offset: %#lx, write: %u, read: %u)\n",
> +				  vf_id, offset, vf_id, read);
> +			passed = false;

Do we want to continue after first fail (isn't it too noisy) ?

> +		}
> +
> +		read = intel_vram_write_readback8(vram, offset, orig);
> +		if (read != orig) {
> +			igt_debug("Failed to restore original value on VF%u (offset: %#lx, orig: %u, read: %u)\n",
> +				  vf_id, offset, orig, read);
> +			passed = false;
> +		}
> +	}
> +
> +	return passed;
> +}
> +
> +static void access_basic(unsigned int pf_fd, unsigned int num_vfs)
> +{
> +	uint64_t provisioned_lmem;
> +	struct vram_mapping vram;
> +	size_t vram_bar_size;
> +	bool passed = true;
> +
> +	igt_sriov_disable_driver_autoprobe(pf_fd);
> +	igt_sriov_enable_vfs(pf_fd, num_vfs);
> +
> +	for_each_sriov_enabled_vf(pf_fd, vf_id) {
> +		provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
> +		igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n",
> +			  vf_id, provisioned_lmem);
> +
> +		vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
> +		igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
> +
> +		if (vram_bar_size < provisioned_lmem) {
> +			igt_sriov_disable_vfs(pf_fd);
> +			igt_skip("VRAM BAR size is smaller than provisioned VRAM\n");
> +		}
> +
> +		vram = intel_vram_mmap(pf_fd, vf_id, provisioned_lmem, PROT_READ | PROT_WRITE, 0);
> +		igt_assert(vram.addr);
> +
> +		passed &= validate_access_basic(&vram, vf_id, provisioned_lmem);
> +
> +		intel_vram_munmap(&vram);
> +	}
> +
> +	igt_sriov_disable_vfs(pf_fd);
> +
> +	igt_assert(passed);
> +}
> +
> +static bool validate_access_beyond(struct vram_mapping *vram, unsigned int vf_id,
> +				   uint64_t provisioned_lmem, size_t vram_bar_size)
> +{
> +	uint8_t read, orig;
> +	bool passed = true;
> +
> +	for (size_t offset = provisioned_lmem; offset < vram_bar_size; offset += STEP) {
> +		orig = intel_vram_read8(vram, offset);
> +
> +		read = intel_vram_write_readback8(vram, offset, vf_id);
> +		if (read == vf_id) {
> +			igt_debug("Successful VRAM write above provisioned size on VF%u (offset: %#lx)\n",
> +				  vf_id, offset);

Current wording sounds as if the test succeeded, maybe: "Unexpected VRAM 
write beyond provisioned size ..." or "ERROR: VF%u was able to write 
beyond provisioned VRAM ..."

> +			passed = false;

Do we want to continue after first fail ?

> +
> +			read = intel_vram_write_readback8(vram, offset, orig);
> +			if (read != orig)
> +				igt_debug("Failed to restore original value on VF%u (offset: %#lx, orig: %u, read: %u)\n",
> +					  vf_id, offset, orig, read);
> +		}
> +	}
> +
> +	return passed;
> +}
> +
> +static void access_beyond(unsigned int pf_fd, unsigned int num_vfs)
> +{
> +	uint64_t provisioned_lmem;
> +	struct vram_mapping vram;
> +	size_t vram_bar_size;
> +	bool passed = true;
> +
> +	igt_sriov_disable_driver_autoprobe(pf_fd);
> +	igt_sriov_enable_vfs(pf_fd, num_vfs);
> +
> +	for_each_sriov_enabled_vf(pf_fd, vf_id) {
> +		provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
> +		igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n",
> +			  vf_id, provisioned_lmem);
> +
> +		vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
> +		igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
> +
> +		if (vram_bar_size <= provisioned_lmem) {
> +			igt_sriov_disable_vfs(pf_fd);
> +			igt_skip("VRAM BAR size is smaller or equal to provisioned VRAM\n");
> +		}
> +
> +		vram = intel_vram_mmap(pf_fd, vf_id, vram_bar_size, PROT_READ | PROT_WRITE, 0);
> +		igt_assert(vram.addr);
> +
> +		passed &= validate_access_beyond(&vram, vf_id, provisioned_lmem, vram_bar_size);
> +
> +		intel_vram_munmap(&vram);
> +	}
> +
> +	igt_sriov_disable_vfs(pf_fd);
> +
> +	igt_assert(passed);
> +}
> +
> +static void resize_and_access(unsigned int pf_fd, bool resize_up)
> +{
> +	const unsigned int vf_id = 1;
> +	uint64_t provisioned_lmem;
> +	struct vram_mapping vram;
> +	unsigned int total_vfs;
> +	size_t vram_bar_size;
> +	bool passed;
> +
> +	total_vfs = igt_sriov_get_total_vfs(pf_fd);
> +
> +	igt_sriov_disable_driver_autoprobe(pf_fd);
> +	igt_sriov_enable_vfs(pf_fd, resize_up ? total_vfs : 1);
> +
> +	provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
> +	igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n", vf_id, provisioned_lmem);
> +
> +	igt_sriov_disable_vfs(pf_fd);
> +	igt_sriov_enable_vfs(pf_fd, resize_up ? 1 : total_vfs);
> +
> +	provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
> +	igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n", vf_id, provisioned_lmem);
> +
> +	vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
> +	igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, vram_bar_size);
> +
> +	if (vram_bar_size <= provisioned_lmem) {
> +		igt_sriov_disable_vfs(pf_fd);
> +		igt_skip("VRAM BAR size is smaller or equal to provisioned VRAM\n");
> +	}
> +
> +	vram = intel_vram_mmap(pf_fd, vf_id, vram_bar_size, PROT_READ | PROT_WRITE, 0);
> +	igt_assert(vram.addr);
> +
> +	passed = validate_access_basic(&vram, vf_id, provisioned_lmem);
> +	passed &= validate_access_beyond(&vram, vf_id, provisioned_lmem, vram_bar_size);
> +
> +	intel_vram_munmap(&vram);
> +
> +	igt_sriov_disable_vfs(pf_fd);
> +
> +	igt_assert(passed);
> +}
> +
> +static bool extended_scope;
> +
> +static int opts_handler(int opt, int opt_index, void *data)
> +{
> +	switch (opt) {
> +	case 'e':
> +		extended_scope = true;
> +		break;
> +	default:
> +		return IGT_OPT_HANDLER_ERROR;
> +	}
> +
> +	return IGT_OPT_HANDLER_SUCCESS;
> +}
> +
> +static const struct option long_opts[] = {
> +	{ .name = "extended", .has_arg = false, .val = 'e', },
> +	{}
> +};
> +
> +static const char help_str[] =
> +	"  --extended\tRun the extended test scope\n";
> +
> +igt_main_args("", long_opts, help_str, opts_handler, NULL)
> +{
> +	bool autoprobe;
> +	int pf_fd;
> +	static struct subtest_resize_variants {
> +		const char *name;
> +		bool resize_up;
> +	} resize_variant[] = {
> +		{ "up", true },
> +		{ "down", false },
> +		{ NULL },
> +	};
> +
> +	igt_fixture {
> +		pf_fd = drm_open_driver(DRIVER_XE);
> +		igt_require(igt_sriov_is_pf(pf_fd));
> +		igt_require(igt_sriov_get_enabled_vfs(pf_fd) == 0);
> +		autoprobe = igt_sriov_is_driver_autoprobe_enabled(pf_fd);
> +	}
> +
> +	igt_describe("Verify that VF can access all the provisioned memory via VRAM BAR");
> +	igt_subtest_with_dynamic_f("vf-access-basic") {
> +		if (extended_scope)
> +			for_each_sriov_num_vfs(pf_fd, num_vfs)
> +				igt_dynamic_f("numvfs-%d", num_vfs)
> +					access_basic(pf_fd, num_vfs);
> +
> +		for_random_sriov_num_vfs(pf_fd, num_vfs) {
> +			igt_dynamic_f("numvfs-random") {
> +				igt_debug("numvfs=%u\n", num_vfs);
> +				access_basic(pf_fd, num_vfs);
> +			}
> +		}
> +	}
> +
> +	igt_describe("Verify that VF cannot access memory beyond what's provisioned via VRAM BAR");
> +	igt_subtest_with_dynamic_f("vf-access-beyond") {
> +		if (extended_scope)
> +			for_each_sriov_num_vfs(pf_fd, num_vfs)
> +				igt_dynamic_f("numvfs-%d", num_vfs)
> +					access_beyond(pf_fd, num_vfs);
> +
> +		for_random_sriov_num_vfs(pf_fd, num_vfs) {
> +			igt_dynamic_f("numvfs-random") {
> +				igt_debug("numvfs=%u\n", num_vfs);
> +				access_beyond(pf_fd, num_vfs);
> +			}
> +		}
> +	}
> +
> +	for (const struct subtest_resize_variants *s = resize_variant; s->name; s++) {
> +		igt_describe("Verify that VF can access the reprovisioned memory via VRAM BAR");
> +		igt_subtest_f("vf-access-after-resize-%s", s->name) {
> +			unsigned int total_vfs = igt_sriov_get_total_vfs(pf_fd);
> +
> +			igt_require(total_vfs > 1);
> +
> +			resize_and_access(pf_fd, s->resize_up);
> +		}
> +	}
> +
> +	igt_fixture {
> +		igt_sriov_disable_vfs(pf_fd);
> +		/* abort to avoid execution of next tests with enabled VFs */
> +		igt_abort_on_f(igt_sriov_get_enabled_vfs(pf_fd) > 0, "Failed to disable VF(s)");
> +		autoprobe ? igt_sriov_enable_driver_autoprobe(pf_fd) :
> +			    igt_sriov_disable_driver_autoprobe(pf_fd);
> +		igt_abort_on_f(autoprobe != igt_sriov_is_driver_autoprobe_enabled(pf_fd),
> +			       "Failed to restore sriov_drivers_autoprobe value\n");
> +		close(pf_fd);
> +	}
> +}
> diff --git a/tests/meson.build b/tests/meson.build
> index 5c01c64e9..6054a2c34 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -329,6 +329,7 @@ intel_xe_progs = [
>   	'xe_sriov_auto_provisioning',
>   	'xe_sriov_flr',
>   	'xe_sriov_scheduling',
> +	'xe_sriov_vram',
>   	'xe_sysfs_defaults',
>   	'xe_sysfs_preempt_timeout',
>   	'xe_sysfs_scheduler',


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

* Re: [PATCH i-g-t 2/4] lib/intel_vram: Add library for VRAM accesses
  2025-07-17  9:08 ` [PATCH i-g-t 2/4] lib/intel_vram: Add library for VRAM accesses Lukasz Laguna
@ 2025-08-21 20:26   ` Bernatowicz, Marcin
  0 siblings, 0 replies; 16+ messages in thread
From: Bernatowicz, Marcin @ 2025-08-21 20:26 UTC (permalink / raw)
  To: Lukasz Laguna, igt-dev
  Cc: michal.wajdeczko, michal.winiarski, satyanarayana.k.v.p,
	adam.miszczak, jakub1.kolakowski



On 7/17/2025 11:08 AM, Lukasz Laguna wrote:

Hi Łukasz,

Thanks for the patch. I feel guilty as a co-author of the original code,
but since we are moving it into a library maybe we can do a few small
API tweaks to make it safer on 32-bit and easier to extend.

> Prepare a library with helpers to map and unmap VRAM BAR region and
> perform read/write operations.
> 
> Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
> ---
>   lib/intel_vram.c | 183 +++++++++++++++++++++++++++++++++++++++++++++++
>   lib/intel_vram.h |  22 ++++++
>   lib/meson.build  |   1 +
>   3 files changed, 206 insertions(+)
>   create mode 100644 lib/intel_vram.c
>   create mode 100644 lib/intel_vram.h
> 
> diff --git a/lib/intel_vram.c b/lib/intel_vram.c
> new file mode 100644
> index 000000000..38e2ccf36
> --- /dev/null
> +++ b/lib/intel_vram.c
> @@ -0,0 +1,183 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#include <errno.h>
> +#include <fcntl.h>
> +#include <inttypes.h>
> +#include <sys/mman.h>
> +#include <sys/stat.h>
> +
> +#include "igt_core.h"
> +#include "igt_sriov_device.h"
> +#include "intel_vram.h"
> +
> +static int intel_vram_open_bar(int pf_fd, unsigned int vf_num, int mode)
> +{
> +	int sysfs, fd;
> +
> +	sysfs = igt_sriov_device_sysfs_open(pf_fd, vf_num);
> +	if (sysfs < 0) {
> +		igt_debug("Failed to open sysfs for VF%d: %s\n", vf_num, strerror(errno));
> +		return -1;
> +	}
> +
> +	fd = openat(sysfs, "resource2", mode | O_SYNC);

O_SYNC has no effect on mmap, can be dropped.

> +	if (fd < 0)
> +		igt_debug("Failed to open resource2 for VF%d: %s\n", vf_num, strerror(errno));
> +
> +	close(sysfs);
> +
> +	return fd;
> +}
> +
> +/**
> + * intel_vram_bar_size - Get the size of the VRAM BAR
> + * @pf_fd: PF device file descriptor
> + * @vf_num: VF number (1-based), or 0 for the PF
> + *
> + * Opens the VRAM BAR file descriptor for the specified device and retrieves
> + * its size by using fstat().
> + *
> + * Return: The size of the VRAM BAR in bytes on success,
> + *         or negative value on failure.
> + */
> +ssize_t intel_vram_bar_size(int pf_fd, unsigned int vf_num)
> +{
> +	int fd;
> +	struct stat st;
> +
> +	fd = intel_vram_open_bar(pf_fd, vf_num, O_RDONLY);
> +	if (fd < 0)
> +		return fd;
> +
> +	if (fstat(fd, &st)) {
> +		igt_debug("Failed to stat resource2 for VF%u: %s\n", vf_num, strerror(errno));
> +		close(fd);
> +		return -1;
> +	}
> +
> +	close(fd);
> +
> +	return st.st_size;
> +}

Using ssize_t may be problematic: on 32-bit it truncates BARs >2 GiB.
maybe return int and fill a uint64_t *out_size.

int intel_vram_bar_size(int pf_fd, unsigned int vf_num, uint64_t *out_size)
{
	int fd;

	if (!out_size)
		return -EINVAL;
	fd = intel_vram_open_bar(pf_fd, vf_num, O_RDONLY);
	if (fd < 0)
		return fd;

	struct stat st;
	if (fstat(fd, &st)) {
		int saved_err = errno;

		close(fd);
		return -saved_err;
	}
	close(fd);
	if (st.st_size < 0)
		return -EOVERFLOW;
	*out_size = (uint64_t)st.st_size;
	return 0;
}

> +
> +/**
> + * intel_vram_mmap - Map VRAM BAR region
> + * @pf_fd: PF device file descriptor
> + * @vf_num: VF number (1-based), or 0 for the PF
> + * @length: Number of bytes to map
> + * @prot: Memory protection flags
> + * @offset: Offset (in bytes) within the BAR to begin the mapping
> + *
> + * Maps a PF or VF VRAM BAR into user space using mmap().
> + *
> + * Return: A vram_mapping struct with the mapped address and size on success,
> + *         or NULL address and zero size on failure.
> + */
> +struct vram_mapping intel_vram_mmap(int pf_fd, unsigned int vf_num, size_t length, int prot,
> +				    off_t offset)

Returning struct by value hides error codes and may be problematic to 
changes (ex. extending fields). As it's a library maybe better to return 
int (for error codes and let callers branch on cause, assert) and fill a 
pointer to struct. Also, offsets are unsigned and large, maybe use 
uint64_t for offset in the API, and cast down to off_t only at mmap().

> +{
> +	int open_flags = ((prot & PROT_WRITE) != 0) ? O_RDWR : O_RDONLY;
> +	struct vram_mapping m = { .addr = NULL, .size = 0 };
> +	ssize_t vram_bar_size;
> +	int vram_bar_fd;
> +	void *addr;
> +
> +	vram_bar_size = intel_vram_bar_size(pf_fd, vf_num);
> +	if (vram_bar_size < 0) {
> +		igt_debug("Failed to get VRAM BAR size for VF%u: %s\n", vf_num, strerror(errno));
> +		return m;
> +	}
> +
> +	if (vram_bar_size < length) {
> +		igt_debug("Mapping length (%zu) exceeds VRAM BAR size (%" PRIu64 ")\n",
> +			  length, (uint64_t)vram_bar_size);
> +		return m;
> +	}

Needs a proper range check: offset + length <= bar_size

> +
> +	vram_bar_fd = intel_vram_open_bar(pf_fd, vf_num, open_flags);
> +	if (vram_bar_fd < 0) {
> +		igt_debug("Failed to open VRAM BAR file for VF%u: %s\n", vf_num, strerror(errno));
> +		return m;
> +	}
> +
> +	addr = mmap(NULL, length, prot, MAP_SHARED, vram_bar_fd, offset);
> +	close(vram_bar_fd);
> +	if (addr == MAP_FAILED) {
> +		igt_debug("Failed to map VRAM BAR for VF%u: %s\n", vf_num, strerror(errno));
> +		return m;
> +	}
> +
> +	m.addr = addr;
> +	m.size = length;
> +	return m;
> +}

Proposed version:

int intel_vram_mmap(int pf_fd, unsigned int vf_num, uint64_t offset,
		    size_t length, int prot, struct vram_mapping *out)
{
	uint64_t bar_size, end;
	int fd, ret, saved_err;
	void *addr;

	if (!out)
		return -EINVAL;
	out->addr = NULL;
	out->size = 0;
	if (!length)
		return 0;

	ret = intel_vram_bar_size(pf_fd, vf_num, &bar_size);
	if (ret)
		return ret;

	end = offset + (uint64_t)length;
	if (end < offset || end > bar_size)
		return -EINVAL;

	fd = intel_vram_open_bar(pf_fd, vf_num,
							 (prot & PROT_WRITE) ? O_RDWR : O_RDONLY);
	if (fd < 0)
		return fd;

	addr = mmap(NULL, length, prot, MAP_SHARED, fd, (off_t)offset);
	saved_err = errno;
	close(fd);
	if (addr == MAP_FAILED)
		return -saved_err;

	out->addr = addr;
	out->size = length;
	return 0;
}

> +
> +/**
> + * intel_vram_munmap - Unmap previously mapped VRAM region
> + * @m: Pointer to a vram_mapping struct representing the mapped region
> + *
> + * Unmaps the user-space memory region previously mapped by intel_vram_mmap().
> + *
> + * Return: 0 on success, or negative value on failure.
> + */
> +int intel_vram_munmap(struct vram_mapping *m)
> +{
> +	int ret;
> +
> +	ret = munmap(m->addr, m->size);
> +	if (ret < 0)
> +		igt_debug("Failed munmap %p: %s\n", m->addr, strerror(errno));
> +
> +	return ret;
> +}
> +
> +/**
> + * intel_vram_read8 - Read 8-bit value from a mapped VRAM region
> + * @m: Pointer to a vram_mapping struct representing the mapped region
> + * @offset: Offset (in bytes) to read from
> + *
> + * Reads a single 8-bit value from the specified offset in the mapped VRAM.
> + *
> + * Return: The 8-bit value read from the given offset.
> + */
> +uint8_t intel_vram_read8(struct vram_mapping *m, size_t offset)
> +{
> +	igt_assert(offset < m->size);
> +
> +	return READ_ONCE(*((uint8_t *)m->addr + offset));
> +}
> +
> +/**
> + * intel_vram_write8 - Write 8-bit value to a mapped VRAM region
> + * @m: Pointer to a vram_mapping struct representing the mapped region
> + * @offset: Offset (in bytes) to write to
> + * @value: The 8-bit value to write
> + *
> + * Writes a single 8-bit value to the specified offset in the mapped VRAM.
> + */
> +void intel_vram_write8(struct vram_mapping *m, size_t offset, uint8_t value)
> +{
> +	igt_assert(offset < m->size);
> +
> +	WRITE_ONCE(*((uint8_t *)m->addr + offset), value);
> +}
> +
> +/**
> + * intel_vram_write_readback8 - Write and then read back an 8-bit value
> + * @m: Pointer to a vram_mapping struct representing the mapped region
> + * @offset: Offset (in bytes) to write to and read from
> + * @value: The 8-bit value to write
> + *
> + * Writes an 8-bit value to the specified offset in the mapped VRAM and
> + * reads it back to verify if the write was successful.
> + *
> + * Return: The 8-bit value read back from the given offset.
> + */
> +uint8_t intel_vram_write_readback8(struct vram_mapping *m, size_t offset, uint8_t value)
> +{
> +	intel_vram_write8(m, offset, value);
> +	return intel_vram_read8(m, offset);
> +}
> diff --git a/lib/intel_vram.h b/lib/intel_vram.h
> new file mode 100644
> index 000000000..b93f915e9
> --- /dev/null
> +++ b/lib/intel_vram.h
> @@ -0,0 +1,22 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#ifndef __INTEL_VRAM_H__
> +#define __INTEL_VRAM_H__
> +
> +struct vram_mapping {
> +	void *addr; /* Pointer to the mapped VRAM */
> +	size_t size; /* Size of the mapped VRAM region */
> +};
> +
> +ssize_t intel_vram_bar_size(int pf_fd, unsigned int vf_num);
> +struct vram_mapping intel_vram_mmap(int pf_fd, unsigned int vf_num, size_t length, int prot,
> +				    off_t offset);
> +int intel_vram_munmap(struct vram_mapping *m);
> +uint8_t intel_vram_read8(struct vram_mapping *m, size_t offset);
> +void intel_vram_write8(struct vram_mapping *m, size_t offset, uint8_t value);
> +uint8_t intel_vram_write_readback8(struct vram_mapping *m, size_t offset, uint8_t value);
> +

Proposed API

/*
  * Design choices:
  *
  * - Use uint64_t for BAR sizes/offsets (unsigned device semantics, no 
truncation on 32-bit).
  * - Functions return int (0 on success, -errno on failure).
  * - No internal alignment: if offset isn’t page aligned, mmap() will 
fail with EINVAL.
  */

int  intel_vram_bar_size(int pf_fd, unsigned int vf_num, uint64_t 
*out_size);
int  intel_vram_mmap(int pf_fd, unsigned int vf_num,
                      uint64_t offset, size_t length, int prot,
                      struct vram_mapping *out);
...

> +#endif	/* INTEL_VRAM_H */
> diff --git a/lib/meson.build b/lib/meson.build
> index 2eaca42a4..25c68011d 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -70,6 +70,7 @@ lib_sources = [
>   	'intel_mocs.c',
>   	'igt_multigpu.c',
>   	'intel_pat.c',
> +	'intel_vram.c',
>   	'ioctl_wrappers.c',
>   	'media_spin.c',
>   	'media_fill.c',


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

* Re: [PATCH i-g-t 3/4] tests/intel/xe_sriov_flr: Use VRAM access helpers from intel_vram library
  2025-07-17  9:08 ` [PATCH i-g-t 3/4] tests/intel/xe_sriov_flr: Use VRAM access helpers from intel_vram library Lukasz Laguna
@ 2025-08-21 20:30   ` Bernatowicz, Marcin
  0 siblings, 0 replies; 16+ messages in thread
From: Bernatowicz, Marcin @ 2025-08-21 20:30 UTC (permalink / raw)
  To: Lukasz Laguna, igt-dev
  Cc: michal.wajdeczko, michal.winiarski, satyanarayana.k.v.p,
	adam.miszczak, jakub1.kolakowski



On 7/17/2025 11:08 AM, Lukasz Laguna wrote:
> Replace local VRAM access helper functions with the helpers provided by
> the intel_vram library.
> 
> Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
> ---
>   tests/intel/xe_sriov_flr.c | 106 +++++++------------------------------
>   1 file changed, 20 insertions(+), 86 deletions(-)
> 
> diff --git a/tests/intel/xe_sriov_flr.c b/tests/intel/xe_sriov_flr.c
> index 0c6a0c97e..3b7001ec7 100644
> --- a/tests/intel/xe_sriov_flr.c
> +++ b/tests/intel/xe_sriov_flr.c
> @@ -11,6 +11,7 @@
>   #include "igt_device.h"
>   #include "igt_sriov_device.h"
>   #include "intel_chipset.h"
> +#include "intel_vram.h"
>   #include "linux_scaffold.h"
>   #include "xe/xe_mmio.h"
>   #include "xe/xe_query.h"
> @@ -676,94 +677,28 @@ struct lmem_data {
>   	size_t *vf_lmem_size;
>   };
>   
> -struct lmem_info {
> -	/* pointer to the mapped area */
> -	char *addr;
> -	/* size of mapped area */
> -	size_t size;
> -};
> -
>   const size_t STEP = SZ_1M;
>   
> -static void *mmap_vf_lmem(int pf_fd, int vf_num, size_t length, int prot, off_t offset)
> -{
> -	int open_flags = ((prot & PROT_WRITE) != 0) ? O_RDWR : O_RDONLY;
> -	struct stat st;
> -	int sysfs, fd;
> -	void *addr;
> -
> -	sysfs = igt_sriov_device_sysfs_open(pf_fd, vf_num);
> -	if (sysfs < 0) {
> -		igt_debug("Failed to open sysfs for VF%d: %s\n", vf_num, strerror(errno));
> -		return NULL;
> -	}
> -
> -	fd = openat(sysfs, "resource2", open_flags | O_SYNC);
> -	close(sysfs);
> -	if (fd < 0) {
> -		igt_debug("Failed to open resource2 for VF%d: %s\n", vf_num, strerror(errno));
> -		return NULL;
> -	}
> -
> -	if (fstat(fd, &st)) {
> -		igt_debug("Failed to stat resource2 for VF%d: %s\n", vf_num, strerror(errno));
> -		close(fd);
> -		return NULL;
> -	}
> -
> -	if (st.st_size < length) {
> -		igt_debug("Mapping length (%zu) exceeds BAR2 size (%" PRIu64 ")\n", length, (uint64_t)st.st_size);
> -		close(fd);
> -		return NULL;
> -	}
> -
> -	addr = mmap(NULL, length, prot, MAP_SHARED, fd, offset);
> -	close(fd);
> -	if (addr == MAP_FAILED) {
> -		igt_debug("Failed mmap resource2 for VF%d: %s\n", vf_num, strerror(errno));
> -		return NULL;
> -	}
> -
> -	return addr;
> -}
> -
> -static void munmap_vf_lmem(struct lmem_info *lmem)
> -{
> -	igt_debug_on_f(munmap(lmem->addr, lmem->size),
> -		       "Failed munmap %p: %s\n", lmem->addr, strerror(errno));
> -}
> -
> -static char lmem_read(const char *addr, size_t idx)
> -{
> -	return READ_ONCE(*(addr + idx));
> -}
> -
> -static char lmem_write_readback(char *addr, size_t idx, char value)
> -{
> -	WRITE_ONCE(*(addr + idx), value);
> -	return lmem_read(addr, idx);
> -}
> -
> -static bool lmem_write_pattern(struct lmem_info *lmem, char value, size_t start, size_t step)
> +static bool lmem_write_pattern(struct vram_mapping *m, uint8_t value, size_t start, size_t step)
>   {
> -	char read;
> +	uint8_t read;
>   
> -	for (; start < lmem->size; start += step) {
> -		read = lmem_write_readback(lmem->addr, start, value);
> +	for (; start < m->size; start += step) {
> +		read = intel_vram_write_readback8(m, start, value);
>   		if (igt_debug_on_f(read != value, "LMEM[%zu]=%u != %u\n", start, read, value))
>   			return false;
>   	}
>   	return true;
>   }
>   
> -static bool lmem_contains_expected_values_(struct lmem_info *lmem,
> -					   char expected, size_t start,
> +static bool lmem_contains_expected_values_(struct vram_mapping *m,
> +					   uint8_t expected, size_t start,
>   					   size_t step)
>   {
> -	char read;
> +	uint8_t read;
>   
> -	for (; start < lmem->size; start += step) {
> -		read = lmem_read(lmem->addr, start);
> +	for (; start < m->size; start += step) {
> +		read = intel_vram_read8(m, start);
>   		if (igt_debug_on_f(read != expected,
>   				   "LMEM[%zu]=%u != %u\n", start, read, expected))
>   			return false;
> @@ -774,30 +709,29 @@ static bool lmem_contains_expected_values_(struct lmem_info *lmem,
>   static bool lmem_contains_expected_values(int pf_fd, int vf_num, size_t length,
>   					  char expected)
>   {
> -	struct lmem_info lmem = { .size = length };
> +	struct vram_mapping vram;
>   	bool result;
>   
> -	lmem.addr = mmap_vf_lmem(pf_fd, vf_num, length, PROT_READ | PROT_WRITE, 0);
> -	if (igt_debug_on(!lmem.addr))
> +	vram = intel_vram_mmap(pf_fd, vf_num, length, PROT_READ | PROT_WRITE, 0);
> +	if (igt_debug_on(!vram.addr))
>   		return false;
>   
> -	result = lmem_contains_expected_values_(&lmem, expected, 0, STEP);
> -	munmap_vf_lmem(&lmem);
> +	result = lmem_contains_expected_values_(&vram, expected, 0, STEP);
> +	intel_vram_munmap(&vram);
>   
>   	return result;
>   }
>   
>   static bool lmem_mmap_write_munmap(int pf_fd, int vf_num, size_t length, char value)
>   {
> -	struct lmem_info lmem;
> +	struct vram_mapping vram;
>   	bool result;
>   
> -	lmem.size = length;
> -	lmem.addr = mmap_vf_lmem(pf_fd, vf_num, length, PROT_READ | PROT_WRITE, 0);
> -	if (igt_debug_on(!lmem.addr))
> +	vram = intel_vram_mmap(pf_fd, vf_num, length, PROT_READ | PROT_WRITE, 0);
> +	if (igt_debug_on(!vram.addr))
>   		return false;
> -	result = lmem_write_pattern(&lmem, value, 0, STEP);
> -	munmap_vf_lmem(&lmem);
> +	result = lmem_write_pattern(&vram, value, 0, STEP);
> +	intel_vram_munmap(&vram);
>   
>   	return result;
>   }

LGTM. If intel_vram lib is going to be modified, we should also apply 
the same adjustments here.

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

* Re: [PATCH i-g-t 4/4] tests/intel/xe_sriov_vram: Add test checking VF access to VRAM
  2025-08-21 16:53   ` Bernatowicz, Marcin
@ 2025-08-27 13:16     ` Laguna, Lukasz
  0 siblings, 0 replies; 16+ messages in thread
From: Laguna, Lukasz @ 2025-08-27 13:16 UTC (permalink / raw)
  To: Bernatowicz, Marcin, igt-dev
  Cc: michal.wajdeczko, michal.winiarski, satyanarayana.k.v.p,
	adam.miszczak, jakub1.kolakowski


On 8/21/2025 18:53, Bernatowicz, Marcin wrote:
>
>
> On 7/17/2025 11:08 AM, Lukasz Laguna wrote:
>> Add a test to validate VF access to VRAM via BAR. The following
>> scenarios are covered:
>> - VF can access all provisioned memory via the VRAM BAR,
>> - VF cannot access memory beyond what's provisioned via the VRAM BAR,
>> - VF can access memory via the VRAM BAR after reprovisioning.
>>
>> Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
>> ---
>>   tests/intel/xe_sriov_vram.c | 310 ++++++++++++++++++++++++++++++++++++
>>   tests/meson.build           |   1 +
>>   2 files changed, 311 insertions(+)
>>   create mode 100644 tests/intel/xe_sriov_vram.c
>>
>> diff --git a/tests/intel/xe_sriov_vram.c b/tests/intel/xe_sriov_vram.c
>> new file mode 100644
>> index 000000000..82f0a2f09
>> --- /dev/null
>> +++ b/tests/intel/xe_sriov_vram.c
>> @@ -0,0 +1,310 @@
>> +// SPDX-License-Identifier: MIT
>> +/*
>> + * Copyright(c) 2025 Intel Corporation. All rights reserved.
>> + */
>> +
>> +#include "drmtest.h"
>> +#include "igt_core.h"
>> +#include "igt_sriov_device.h"
>> +#include "intel_vram.h"
>> +#include "xe/xe_sriov_provisioning.h"
>> +#include "xe/xe_query.h"
>> +
>> +/**
>> + * TEST: xe_sriov_vram
>> + * Category: Core
>> + * Mega feature: SR-IOV
>> + * Sub-category: LMTT
>> + * Functionality: VRAM access
>> + * Description: Validate VF access to VRAM
>> + *
>> + * SUBTEST: vf-access-basic
>> + * Description: Verify that VF can access all the provisioned memory 
>> via VRAM BAR
>> + *
>> + * SUBTEST: vf-access-beyond
>> + * Description: Verify that VF cannot access memory beyond what's 
>> provisioned via VRAM BAR
>> + *
>> + * SUBTEST: vf-access-after-resize-down
>> + * Description: Verify that VF can access the reprovisioned memory 
>> (reduced size) via VRAM BAR
>> + *
>> + * SUBTEST: vf-access-after-resize-up
>> + * Description: Verify that VF can access the reprovisioned memory 
>> (increased size) via VRAM BAR
>> + */
>> +
>> +IGT_TEST_DESCRIPTION("Xe tests for VRAM in SR-IOV context");
>> +
>> +const size_t STEP = SZ_1M;
>> +
>> +static uint64_t get_provisioned_vram(unsigned int pf_fd, unsigned 
>> int vf_id)
>> +{
>> +    uint64_t size = 0;
>> +
>> +    /* TODO: adjust for multitile platforms */
>> +    size = xe_sriov_pf_get_provisioned_quota(pf_fd, 
>> XE_SRIOV_SHARED_RES_LMEM, vf_id, 0);
>> +
>> +    return size;
>> +}
>> +
>> +static bool validate_access_basic(struct vram_mapping *vram, 
>> unsigned int vf_id,
>> +                  uint64_t provisioned_lmem)
>> +{
>> +    uint8_t read, orig;
>> +    bool passed = true;
>> +
>> +    for (size_t offset = 0; offset < provisioned_lmem; offset += 
>> STEP) {
>> +        orig = intel_vram_read8(vram, offset);
>> +
>> +        read = intel_vram_write_readback8(vram, offset, vf_id);
>> +        if (read != vf_id) {
>> +            igt_debug("VRAM write/read check failed on VF%u (offset: 
>> %#lx, write: %u, read: %u)\n",
>> +                  vf_id, offset, vf_id, read);
>> +            passed = false;
>
> Do we want to continue after first fail (isn't it too noisy) ?

Yes, information about all offsets was already helpful when debugging 
the issue that was fixed by:

commit 3fae6918a3e27cce20ded2551f863fb05d4bef8d
Author: Michal Wajdeczko <michal.wajdeczko@intel.com>
Date:   Wed Jul 2 00:00:52 2025 +0200

     drm/xe/pf: Clear all LMTT pages on alloc

>
>> +        }
>> +
>> +        read = intel_vram_write_readback8(vram, offset, orig);
>> +        if (read != orig) {
>> +            igt_debug("Failed to restore original value on VF%u 
>> (offset: %#lx, orig: %u, read: %u)\n",
>> +                  vf_id, offset, orig, read);
>> +            passed = false;
>> +        }
>> +    }
>> +
>> +    return passed;
>> +}
>> +
>> +static void access_basic(unsigned int pf_fd, unsigned int num_vfs)
>> +{
>> +    uint64_t provisioned_lmem;
>> +    struct vram_mapping vram;
>> +    size_t vram_bar_size;
>> +    bool passed = true;
>> +
>> +    igt_sriov_disable_driver_autoprobe(pf_fd);
>> +    igt_sriov_enable_vfs(pf_fd, num_vfs);
>> +
>> +    for_each_sriov_enabled_vf(pf_fd, vf_id) {
>> +        provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
>> +        igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n",
>> +              vf_id, provisioned_lmem);
>> +
>> +        vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
>> +        igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, 
>> vram_bar_size);
>> +
>> +        if (vram_bar_size < provisioned_lmem) {
>> +            igt_sriov_disable_vfs(pf_fd);
>> +            igt_skip("VRAM BAR size is smaller than provisioned 
>> VRAM\n");
>> +        }
>> +
>> +        vram = intel_vram_mmap(pf_fd, vf_id, provisioned_lmem, 
>> PROT_READ | PROT_WRITE, 0);
>> +        igt_assert(vram.addr);
>> +
>> +        passed &= validate_access_basic(&vram, vf_id, 
>> provisioned_lmem);
>> +
>> +        intel_vram_munmap(&vram);
>> +    }
>> +
>> +    igt_sriov_disable_vfs(pf_fd);
>> +
>> +    igt_assert(passed);
>> +}
>> +
>> +static bool validate_access_beyond(struct vram_mapping *vram, 
>> unsigned int vf_id,
>> +                   uint64_t provisioned_lmem, size_t vram_bar_size)
>> +{
>> +    uint8_t read, orig;
>> +    bool passed = true;
>> +
>> +    for (size_t offset = provisioned_lmem; offset < vram_bar_size; 
>> offset += STEP) {
>> +        orig = intel_vram_read8(vram, offset);
>> +
>> +        read = intel_vram_write_readback8(vram, offset, vf_id);
>> +        if (read == vf_id) {
>> +            igt_debug("Successful VRAM write above provisioned size 
>> on VF%u (offset: %#lx)\n",
>> +                  vf_id, offset);
>
> Current wording sounds as if the test succeeded, maybe: "Unexpected 
> VRAM write beyond provisioned size ..." or "ERROR: VF%u was able to 
> write beyond provisioned VRAM ..."

That's true. Piotr pointed the same, I'll fix it. Thanks for the 
proposed messages :)

>
>> +            passed = false;
>
> Do we want to continue after first fail ?

Yes, the same case as above. I would prefer to continue. Based on the 
information about offsets to which VF is able to write we can e.g. 
deduce that the problem exists only after VF reprovisioning.

>
>> +
>> +            read = intel_vram_write_readback8(vram, offset, orig);
>> +            if (read != orig)
>> +                igt_debug("Failed to restore original value on VF%u 
>> (offset: %#lx, orig: %u, read: %u)\n",
>> +                      vf_id, offset, orig, read);
>> +        }
>> +    }
>> +
>> +    return passed;
>> +}
>> +
>> +static void access_beyond(unsigned int pf_fd, unsigned int num_vfs)
>> +{
>> +    uint64_t provisioned_lmem;
>> +    struct vram_mapping vram;
>> +    size_t vram_bar_size;
>> +    bool passed = true;
>> +
>> +    igt_sriov_disable_driver_autoprobe(pf_fd);
>> +    igt_sriov_enable_vfs(pf_fd, num_vfs);
>> +
>> +    for_each_sriov_enabled_vf(pf_fd, vf_id) {
>> +        provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
>> +        igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n",
>> +              vf_id, provisioned_lmem);
>> +
>> +        vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
>> +        igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, 
>> vram_bar_size);
>> +
>> +        if (vram_bar_size <= provisioned_lmem) {
>> +            igt_sriov_disable_vfs(pf_fd);
>> +            igt_skip("VRAM BAR size is smaller or equal to 
>> provisioned VRAM\n");
>> +        }
>> +
>> +        vram = intel_vram_mmap(pf_fd, vf_id, vram_bar_size, 
>> PROT_READ | PROT_WRITE, 0);
>> +        igt_assert(vram.addr);
>> +
>> +        passed &= validate_access_beyond(&vram, vf_id, 
>> provisioned_lmem, vram_bar_size);
>> +
>> +        intel_vram_munmap(&vram);
>> +    }
>> +
>> +    igt_sriov_disable_vfs(pf_fd);
>> +
>> +    igt_assert(passed);
>> +}
>> +
>> +static void resize_and_access(unsigned int pf_fd, bool resize_up)
>> +{
>> +    const unsigned int vf_id = 1;
>> +    uint64_t provisioned_lmem;
>> +    struct vram_mapping vram;
>> +    unsigned int total_vfs;
>> +    size_t vram_bar_size;
>> +    bool passed;
>> +
>> +    total_vfs = igt_sriov_get_total_vfs(pf_fd);
>> +
>> +    igt_sriov_disable_driver_autoprobe(pf_fd);
>> +    igt_sriov_enable_vfs(pf_fd, resize_up ? total_vfs : 1);
>> +
>> +    provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
>> +    igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n", 
>> vf_id, provisioned_lmem);
>> +
>> +    igt_sriov_disable_vfs(pf_fd);
>> +    igt_sriov_enable_vfs(pf_fd, resize_up ? 1 : total_vfs);
>> +
>> +    provisioned_lmem = get_provisioned_vram(pf_fd, vf_id);
>> +    igt_debug("VF%u provisioned with %" PRIu64 " bytes of VRAM\n", 
>> vf_id, provisioned_lmem);
>> +
>> +    vram_bar_size = intel_vram_bar_size(pf_fd, vf_id);
>> +    igt_debug("VF%u VRAM BAR size: %" PRIu64 "\n", vf_id, 
>> vram_bar_size);
>> +
>> +    if (vram_bar_size <= provisioned_lmem) {
>> +        igt_sriov_disable_vfs(pf_fd);
>> +        igt_skip("VRAM BAR size is smaller or equal to provisioned 
>> VRAM\n");
>> +    }
>> +
>> +    vram = intel_vram_mmap(pf_fd, vf_id, vram_bar_size, PROT_READ | 
>> PROT_WRITE, 0);
>> +    igt_assert(vram.addr);
>> +
>> +    passed = validate_access_basic(&vram, vf_id, provisioned_lmem);
>> +    passed &= validate_access_beyond(&vram, vf_id, provisioned_lmem, 
>> vram_bar_size);
>> +
>> +    intel_vram_munmap(&vram);
>> +
>> +    igt_sriov_disable_vfs(pf_fd);
>> +
>> +    igt_assert(passed);
>> +}
>> +
>> +static bool extended_scope;
>> +
>> +static int opts_handler(int opt, int opt_index, void *data)
>> +{
>> +    switch (opt) {
>> +    case 'e':
>> +        extended_scope = true;
>> +        break;
>> +    default:
>> +        return IGT_OPT_HANDLER_ERROR;
>> +    }
>> +
>> +    return IGT_OPT_HANDLER_SUCCESS;
>> +}
>> +
>> +static const struct option long_opts[] = {
>> +    { .name = "extended", .has_arg = false, .val = 'e', },
>> +    {}
>> +};
>> +
>> +static const char help_str[] =
>> +    "  --extended\tRun the extended test scope\n";
>> +
>> +igt_main_args("", long_opts, help_str, opts_handler, NULL)
>> +{
>> +    bool autoprobe;
>> +    int pf_fd;
>> +    static struct subtest_resize_variants {
>> +        const char *name;
>> +        bool resize_up;
>> +    } resize_variant[] = {
>> +        { "up", true },
>> +        { "down", false },
>> +        { NULL },
>> +    };
>> +
>> +    igt_fixture {
>> +        pf_fd = drm_open_driver(DRIVER_XE);
>> +        igt_require(igt_sriov_is_pf(pf_fd));
>> +        igt_require(igt_sriov_get_enabled_vfs(pf_fd) == 0);
>> +        autoprobe = igt_sriov_is_driver_autoprobe_enabled(pf_fd);
>> +    }
>> +
>> +    igt_describe("Verify that VF can access all the provisioned 
>> memory via VRAM BAR");
>> +    igt_subtest_with_dynamic_f("vf-access-basic") {
>> +        if (extended_scope)
>> +            for_each_sriov_num_vfs(pf_fd, num_vfs)
>> +                igt_dynamic_f("numvfs-%d", num_vfs)
>> +                    access_basic(pf_fd, num_vfs);
>> +
>> +        for_random_sriov_num_vfs(pf_fd, num_vfs) {
>> +            igt_dynamic_f("numvfs-random") {
>> +                igt_debug("numvfs=%u\n", num_vfs);
>> +                access_basic(pf_fd, num_vfs);
>> +            }
>> +        }
>> +    }
>> +
>> +    igt_describe("Verify that VF cannot access memory beyond what's 
>> provisioned via VRAM BAR");
>> +    igt_subtest_with_dynamic_f("vf-access-beyond") {
>> +        if (extended_scope)
>> +            for_each_sriov_num_vfs(pf_fd, num_vfs)
>> +                igt_dynamic_f("numvfs-%d", num_vfs)
>> +                    access_beyond(pf_fd, num_vfs);
>> +
>> +        for_random_sriov_num_vfs(pf_fd, num_vfs) {
>> +            igt_dynamic_f("numvfs-random") {
>> +                igt_debug("numvfs=%u\n", num_vfs);
>> +                access_beyond(pf_fd, num_vfs);
>> +            }
>> +        }
>> +    }
>> +
>> +    for (const struct subtest_resize_variants *s = resize_variant; 
>> s->name; s++) {
>> +        igt_describe("Verify that VF can access the reprovisioned 
>> memory via VRAM BAR");
>> +        igt_subtest_f("vf-access-after-resize-%s", s->name) {
>> +            unsigned int total_vfs = igt_sriov_get_total_vfs(pf_fd);
>> +
>> +            igt_require(total_vfs > 1);
>> +
>> +            resize_and_access(pf_fd, s->resize_up);
>> +        }
>> +    }
>> +
>> +    igt_fixture {
>> +        igt_sriov_disable_vfs(pf_fd);
>> +        /* abort to avoid execution of next tests with enabled VFs */
>> +        igt_abort_on_f(igt_sriov_get_enabled_vfs(pf_fd) > 0, "Failed 
>> to disable VF(s)");
>> +        autoprobe ? igt_sriov_enable_driver_autoprobe(pf_fd) :
>> +                igt_sriov_disable_driver_autoprobe(pf_fd);
>> +        igt_abort_on_f(autoprobe != 
>> igt_sriov_is_driver_autoprobe_enabled(pf_fd),
>> +                   "Failed to restore sriov_drivers_autoprobe 
>> value\n");
>> +        close(pf_fd);
>> +    }
>> +}
>> diff --git a/tests/meson.build b/tests/meson.build
>> index 5c01c64e9..6054a2c34 100644
>> --- a/tests/meson.build
>> +++ b/tests/meson.build
>> @@ -329,6 +329,7 @@ intel_xe_progs = [
>>       'xe_sriov_auto_provisioning',
>>       'xe_sriov_flr',
>>       'xe_sriov_scheduling',
>> +    'xe_sriov_vram',
>>       'xe_sysfs_defaults',
>>       'xe_sysfs_preempt_timeout',
>>       'xe_sysfs_scheduler',
>

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

end of thread, other threads:[~2025-08-27 13:17 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-17  9:08 [PATCH i-g-t 0/4] Validate VF accesses to VRAM via BAR Lukasz Laguna
2025-07-17  9:08 ` [PATCH i-g-t 1/4] lib/igt_sriov_device: Add helper to iterate over enabled VFs Lukasz Laguna
2025-07-21 10:05   ` Piotr Piórkowski
2025-07-17  9:08 ` [PATCH i-g-t 2/4] lib/intel_vram: Add library for VRAM accesses Lukasz Laguna
2025-08-21 20:26   ` Bernatowicz, Marcin
2025-07-17  9:08 ` [PATCH i-g-t 3/4] tests/intel/xe_sriov_flr: Use VRAM access helpers from intel_vram library Lukasz Laguna
2025-08-21 20:30   ` Bernatowicz, Marcin
2025-07-17  9:08 ` [PATCH i-g-t 4/4] tests/intel/xe_sriov_vram: Add test checking VF access to VRAM Lukasz Laguna
2025-07-31  8:29   ` Piotr Piórkowski
2025-08-01 12:43     ` Laguna, Lukasz
2025-08-21 16:53   ` Bernatowicz, Marcin
2025-08-27 13:16     ` Laguna, Lukasz
2025-07-17 12:42 ` ✓ i915.CI.BAT: success for Validate VF accesses to VRAM via BAR Patchwork
2025-07-17 13:56 ` ✓ Xe.CI.BAT: " Patchwork
2025-07-18  1:23 ` ✗ i915.CI.Full: failure " Patchwork
2025-07-18 19:07 ` ✗ Xe.CI.Full: " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.