All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog
@ 2025-08-11 21:05 Michael J. Ruhl
  2025-08-11 21:55 ` ✓ i915.CI.BAT: success for test/intel/xe_pmt: Add testing for BMG crashlog (rev3) Patchwork
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Michael J. Ruhl @ 2025-08-11 21:05 UTC (permalink / raw)
  To: igt-dev, lucas.demarchi, rodrigo.vivi; +Cc: Michael J. Ruhl

The BMG devices has the PMT crashlog feature. If the devices present
is a BMG, test PMT api.

NOTE: the testing order is not flexible and must be done in
the currently specified order.

Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
 tests/intel/xe_pmt.c | 543 +++++++++++++++++++++++++++++++++++++++++++
 tests/meson.build    |   1 +
 2 files changed, 544 insertions(+)
 create mode 100644 tests/intel/xe_pmt.c

diff --git a/tests/intel/xe_pmt.c b/tests/intel/xe_pmt.c
new file mode 100644
index 000000000..c2594730b
--- /dev/null
+++ b/tests/intel/xe_pmt.c
@@ -0,0 +1,543 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+/**
+ * TEST: Verify Platform Monitoring Technology (PMT) files operations
+ * Category: Core
+ * Mega feature: General Core features
+ * Sub-category: uapi
+ * Functionality: sysfs
+ * Description: Verify that the available PMT files (crashlog and telemetry)
+ *   are created, are accessable, and respond as per design.
+ */
+
+#include <unistd.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <string.h>
+
+#include "igt.h"
+#include "igt_sysfs.h"
+#include "linux_scaffold.h"
+#include "xe_drm.h"
+#include "xe/xe_ioctl.h"
+#include "xe/xe_query.h"
+
+/* base directory names */
+#define VSEC_CRASHLOG_DIR "intel_vsec.crashlog."
+#define VSEC_TELEMETRY_DIR "intel_vsec.telemetry."
+#define CRASHLOG_DIR "crashlog"
+#define TELEMETRY_DIR "telem"
+
+/* itemize the available instances for the specific device */
+enum bmg_crashlog_instances {
+	bmg_crashlog_punit = 0,
+	bmg_crashlog_oobmsm,
+	bmg_crashlog_max
+};
+
+enum bmg_telemety_instances {
+	bmg_telemetry_punit = 0,
+	bmg_telemetry_oobmsm,
+	bmg_telemetry_max
+};
+
+static char dev_path[PATH_MAX];
+static char work_path[PATH_MAX * 2];
+
+/*
+ * In most case there should be a single instance of the crashlog and telemetry
+ * directories. If DVSEC entries are not contiguos the structure will be different,
+ * and the code will need to reflect the structure.
+ */
+static char crashlog_vsec_dir[32];
+static char telemetry_vsec_dir[32];
+
+/* This needs to be specific for each supported device */
+static char crashlog_dir[bmg_crashlog_max][32];
+static char telemetry_dir[bmg_telemetry_max][32];
+
+/* telemetry file names */
+static const char *telem = "telem";
+
+/* crashlog filenames and descriptors */
+static const char *clear = "clear";
+static const char *consumed = "consumed";
+static const char *crashlog = "crashlog";
+static const char *enable = "enable";
+static const char *error = "error";
+static const char *dev_guid = "guid";
+static const char *rearm = "rearm";
+static const char *trigger = "trigger";
+
+struct crashlog_v2_info {
+	int clear_fd;
+	int consumed_fd;
+	int crashlog_fd;
+	int enable_fd;
+	int error_fd;
+	int guid_fd;
+	int rearm_fd;
+	int trigger_fd;
+	u_int32_t guid;
+} bmg_info[bmg_crashlog_max];
+
+#define DEV_PATH_LEN 80
+
+/*
+ * device_sysfs_path:
+ * @fd: opened device file descriptor
+ * @path: buffer to store sysfs path to device directory
+ *
+ * Returns:
+ * On successfull path resolution sysfs path to device directory,
+ * NULL otherwise
+ */
+static char *device_sysfs_path(int fd, char *path)
+{
+        char sysfs[DEV_PATH_LEN];
+
+        if (!igt_sysfs_path(fd, sysfs, sizeof(sysfs)))
+                return NULL;
+
+        if (DEV_PATH_LEN <= (strlen(sysfs) + strlen("/device")))
+                return NULL;
+
+        strcat(sysfs, "/device");
+
+        return realpath(sysfs, path);
+}
+
+/*
+ * SUBTEST: pmt-directories
+ * Description: PMT directory structure:
+ * device/intel_vsec.crashlog.x/intel_pmt/crashlog<a,b>
+ * device/intel_vsec.telemetry.x/intel_pmt/telemetry<c,d>
+ * If this is done for a different platform, this could be
+ * different.
+ *
+ */
+static void test_pmt_directories(int dev_fd)
+{
+	struct dirent *ent;
+	int index;
+	DIR *dir;
+
+        igt_assert(device_sysfs_path(dev_fd, dev_path));
+
+	/* verify top level PMT directories */
+	dir = opendir(dev_path);
+	igt_assert_f(dir, "no directories found\n");
+
+	while ((ent = readdir(dir)) != NULL) {
+		if (strncmp(VSEC_CRASHLOG_DIR, ent->d_name, sizeof(VSEC_CRASHLOG_DIR) - 1) == 0)
+			strcpy(crashlog_vsec_dir, ent->d_name);
+		if (strncmp(VSEC_TELEMETRY_DIR, ent->d_name, sizeof(VSEC_TELEMETRY_DIR) - 1) == 0)
+			strcpy(telemetry_vsec_dir, ent->d_name);
+	}
+
+	closedir(dir);
+
+	igt_assert_f(strlen(crashlog_vsec_dir), "missing crashlog directory\n");
+	igt_assert_f(strlen(telemetry_vsec_dir), "missing telemetry directory\n");
+
+	/* verify crashlog directory structure */
+	sprintf(work_path, "%s/%s/%s", dev_path, crashlog_vsec_dir, "intel_pmt");
+
+	dir = opendir(work_path);
+	igt_assert_f(dir, "no intel_pmt directories found\n");
+
+	index = 0;
+	/* find the crashlog<x> directory instances */
+	while ((ent = readdir(dir)) != NULL) {
+		if (strncmp(CRASHLOG_DIR, ent->d_name, sizeof(CRASHLOG_DIR) - 1) == 0) {
+			if (index < bmg_crashlog_max)
+				strcpy(crashlog_dir[index], ent->d_name);
+			index++;
+		}
+	}
+
+	closedir(dir);
+
+	igt_assert_f(index == bmg_crashlog_max, "too many crashlog entries %d\n", index);
+	for (int i = 0; i < ARRAY_SIZE(crashlog_dir); i++)
+		igt_assert_f(strlen(crashlog_dir[i]), "missing crashlog[%d] directory\n", i);
+
+	/* verify telemetry directory structure */
+	sprintf(work_path, "%s/%s/%s", dev_path, telemetry_vsec_dir, "intel_pmt");
+
+	dir = opendir(work_path);
+	igt_assert_f(dir, "no telemetry intel_pmt directories found\n");
+
+	index = 0;
+	while ((ent = readdir(dir)) != NULL) {
+		if (strncmp(TELEMETRY_DIR, ent->d_name, sizeof(TELEMETRY_DIR) - 1) == 0) {
+			if (index < bmg_telemetry_max)
+				strcpy(telemetry_dir[index], ent->d_name);
+			index++;
+		}
+	}
+
+	closedir(dir);
+
+	igt_assert_f(index == bmg_telemetry_max, "too many telemetry entries %d\n", index);
+	for (int i = 0; i < ARRAY_SIZE(telemetry_dir); i++)
+		igt_assert_f(strlen(telemetry_dir[i]), "missing telemetry[%d] directory\n", i);
+
+}
+
+static void find_pmt_file(const char *path, const char *file)
+{
+	struct dirent *ent;
+	bool found;
+	DIR *dir;
+
+	dir = opendir(path);
+	igt_assert_f(dir, "no intel_pmt directories found\n");
+
+	found = false;
+	while ((ent = readdir(dir)) != NULL)
+		if (strcmp(file, ent->d_name) == 0)
+			found = true;
+	closedir(dir);
+
+	igt_assert_f(found, "missing %s from %s\n", file, path);
+}
+
+static void open_pmt_file(const char *path, const char *file, int *fd, int flags)
+{
+	char file_path[PATH_MAX];
+
+	sprintf(file_path, "%s/%s", path, file);
+
+	*fd = open(file_path, flags);
+	igt_assert_f(*fd > -1, "failed to open %s\n", file_path);
+
+	/* TODO: match flags to file attributes */
+}
+
+/*
+ * SUBTEST: pmt-telemetry-files
+ * Description: validate the expected telemetry file(s)
+ * Test category: functionality test
+ *
+ */
+static void test_pmt_telemetry_files(int dev_fd)
+{
+	int i;
+
+	for (i = 0; i < bmg_telemetry_max; i++) {
+		sprintf(work_path, "%s/%s/%s/%s", dev_path, telemetry_vsec_dir,
+			"intel_pmt", telemetry_dir[i]);
+		find_pmt_file(work_path, telem);
+	}
+}
+
+/*
+ * SUBTEST: pmt-crashlog-files
+ * Description: validate the expected crashlog files
+ * Test category: functionality test
+ *
+ */
+static void test_pmt_crashlog_files(int dev_fd)
+{
+	char buf[64] = {};
+	int ret;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
+		sprintf(work_path, "%s/%s/%s/%s", dev_path, crashlog_vsec_dir, "intel_pmt",
+			crashlog_dir[i]);
+
+		open_pmt_file(work_path, clear, &bmg_info[i].clear_fd, O_RDONLY);
+		open_pmt_file(work_path, consumed, &bmg_info[i].consumed_fd, O_RDWR);
+		open_pmt_file(work_path, crashlog, &bmg_info[i].crashlog_fd, O_RDONLY);
+		open_pmt_file(work_path, enable, &bmg_info[i].enable_fd, O_RDWR);
+		open_pmt_file(work_path, error, &bmg_info[i].error_fd, O_RDONLY);
+		open_pmt_file(work_path, dev_guid, &bmg_info[i].guid_fd, O_RDONLY);
+		open_pmt_file(work_path, rearm, &bmg_info[i].rearm_fd, O_RDWR);
+		open_pmt_file(work_path, trigger, &bmg_info[i].trigger_fd, O_RDWR);
+
+		ret = pread(bmg_info[i].guid_fd, buf, sizeof(buf), 0);
+		igt_assert_f(ret > 0, "failed to read guid for device %d\n", i);
+		bmg_info[i].guid = strtol(buf, NULL, 16);
+		igt_assert_f(bmg_info[i].guid > 0, "failed to set guid for device %d\n", i);
+	}
+}
+
+#define ENABLE_MSG "1\n"
+#define DISABLE_MSG "0\n"
+
+static bool send_msg(int fd, const char *msg, const char *file) {
+	size_t len = strlen(msg);
+	int ret;
+
+	errno = 0;
+	ret = pwrite(fd, msg, len, 0);
+	if (ret != len)
+		igt_info("%s failed: len: %ld vs %d  errno: %d\n", file, len, ret,
+			 errno);
+
+	return ret == len;
+}
+
+static bool verify_msg(int fd, const char *msg, const char *file) {
+	size_t len = strlen(msg);
+	char buf[32] = {};
+	int ret;
+
+	errno = 0;
+	ret = pread(fd, buf, sizeof(buf), 0);
+	if (ret != len)
+		igt_info("%s failed: len: %ld vs %d  errno: %d\n", file, len, ret, errno);
+
+	return ret == len && strcmp(buf, msg) == 0;
+}
+
+/*
+ * SUBTEST: pmt-crashlog-enable
+ * Description: Set enable enable/disable bit and verify usage
+ * Test category: functionality test
+ *
+ */
+static void test_pmt_crashlog_enable(int dev_fd)
+{
+	u_int32_t guid;
+	int fd;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
+		fd = bmg_info[i].enable_fd;
+		guid = bmg_info[i].guid;
+
+		/* force enable so we are in a known state */
+		igt_assert_f(send_msg(fd, ENABLE_MSG, enable), "0x%x: send enable\n", guid);
+		igt_assert_f(verify_msg(fd, ENABLE_MSG, enable), "0x%x: verify enable\n", guid);
+
+		/* disable */
+		igt_assert_f(send_msg(fd, DISABLE_MSG, enable), "0x%x: send disable\n", guid);
+		igt_assert_f(verify_msg(fd, DISABLE_MSG, enable), "0x%x: verify disable\n", guid);
+
+		/* re-enable so we can do more testing */
+		igt_assert_f(send_msg(fd, ENABLE_MSG, enable), "0x%x: re-enable\n", guid);
+		igt_assert_f(verify_msg(fd, ENABLE_MSG, enable), "0x%x: verify re-enable\n", guid);
+	}
+
+}
+
+/*
+ * SUBTEST: pmt-crashlog-clear
+ * Description:
+ *   Test the clear crashlog bit. After setting the crashlog data buffer should be
+ *   set to 0xdeadbeef.
+ *   "0" (DISABLE_MSG) is written to the trigger file to set the clear bit.  BMG does
+ *   writing to the clear file, but once the bit is set it cannot be cleared with a
+ *   reboot.  "0" to trigger is the "standard" usage, so test it.
+ *
+ * Test category: functionality test
+ *
+ */
+static void test_pmt_crashlog_clear(int dev_fd)
+{
+	char buf[64] = {};
+	u_int32_t guid;
+	int crashlog_fd;
+	int trigger_fd;
+	int clear_fd;
+	int *val;
+	int len;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
+		clear_fd = bmg_info[i].clear_fd;
+		crashlog_fd = bmg_info[i].crashlog_fd;
+		trigger_fd = bmg_info[i].trigger_fd;
+		guid = bmg_info[i].guid;
+
+		/* make sure the bit is clear */
+		igt_assert_f(verify_msg(clear_fd, DISABLE_MSG, clear), "0x%x: verify clear\n", guid);
+
+		/* set the clear bit (0 -> trigger)*/
+		igt_assert_f(send_msg(trigger_fd, DISABLE_MSG, trigger), "0x%x: send enable\n", guid);
+
+		/* make sure the bit is set.  sleep() to allow HW to set the bit */
+		sleep(1);
+		igt_assert_f(verify_msg(clear_fd, ENABLE_MSG, clear), "0x%x: clear set\n", guid);
+
+		len = read(crashlog_fd, buf, sizeof(buf));
+		igt_assert_f(len == sizeof(buf), "0x%x: failed to read crashlog data\n", guid);
+
+		/* wa punit issue for first crashlog (NOTE: this is fixed)*/
+		if (i == 0)
+			val = (int *) &buf[32];
+		else
+			val = (int *)buf;
+
+		igt_assert_f(*val == 0xdeadbeef, "0x%x: invalid clear data value: : 0x%x", guid, *val);
+	}
+
+}
+
+/*
+ * SUBTEST: pmt-crashlog-consumed
+ * Description:
+ *   After a crashlog has been "consumed" (read), setting this bit can be done.
+ *   Verify that it is set correctly.
+ * Test category: functionality test
+ *
+ */
+static void test_pmt_crashlog_consumed(int dev_fd)
+{
+	uint32_t guid;
+	int fd;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
+		fd = bmg_info[i].consumed_fd;
+		guid = bmg_info[i].guid;
+
+		/* check, set, verify */
+		igt_assert_f(verify_msg(fd, DISABLE_MSG, consumed), "0x%x: consumed clear\n", guid);
+		igt_assert_f(send_msg(fd, ENABLE_MSG, consumed), "0x%x: set consumed\n", guid);
+		/* sleep(1) to allow HW to set the bit */
+		sleep(1);
+		igt_assert_f(verify_msg(fd, ENABLE_MSG, consumed), "0x%x: verify consumed\n", guid);
+	}
+}
+
+/*
+ * SUBTEST: pmt-crashlog-error
+ * Description:
+ *    The error bit is set when a crashlog fails in HW.  It is read only so only
+ *    need to verify that it is "0".
+ * Test category: functionality test
+ *
+ */
+static void test_pmt_crashlog_error(int dev_fd)
+{
+	uint32_t guid;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
+		guid = bmg_info[i].guid;
+		igt_assert_f(verify_msg(bmg_info[i].error_fd, DISABLE_MSG, error), "0x%x: error clear\n", guid);
+	}
+}
+
+/*
+ * SUBTEST: pmt-crashlog-rearm
+ * Description:
+ *    The rearm bit is set at cold boot.  It cannot be reset unless are real crashlog
+ *    occurs (i.e. setting trigger will not change its value).  Verify that it is "1".
+ * Test category: functionality test
+ *
+ */
+static void test_pmt_crashlog_rearm(int dev_fd)
+{
+	uint32_t guid;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
+		guid = bmg_info[i].guid;
+		igt_assert_f(verify_msg(bmg_info[i].rearm_fd, ENABLE_MSG, rearm), "0x%x: rearm set\n", guid);
+	}
+}
+
+/*
+ * SUBTEST: pmt-crashlog-trigger
+ * Description:
+ *    Set the manual trigger bit and make sure the data is not 0xdeadbeef
+ * Test category: functionality test
+ *
+ */
+static void test_pmt_crashlog_trigger(int dev_fd)
+{
+	char buf[64] = {};
+	u_int32_t *val;
+	int crashlog_fd;
+	int trigger_fd;
+	u_int32_t guid;
+	int len;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
+		crashlog_fd = bmg_info[i].crashlog_fd;
+		trigger_fd = bmg_info[i].trigger_fd;
+		guid = bmg_info[i].guid;
+
+		/* make sure the bit is clear */
+		igt_assert_f(verify_msg(trigger_fd, DISABLE_MSG, trigger), "0x%x: trigger clear\n",
+			     guid);
+		/* set the trigger bit (1 -> trigger)*/
+		igt_assert_f(send_msg(trigger_fd, ENABLE_MSG, trigger), "0x%x: set trigger\n", guid);
+
+		/* sleep to let the HW do its thing */
+		sleep(1);
+
+		/* make sure the bit is set */
+		igt_assert_f(verify_msg(trigger_fd, ENABLE_MSG, trigger), "0x%x: trigger not set\n",
+			     guid);
+
+		len = read(crashlog_fd, buf, sizeof(buf));
+		igt_assert_f(len == sizeof(buf), "0x%x: failed to read crashlog data\n", guid);
+
+		val = (u_int32_t *)buf;
+
+		igt_assert_f(*val != 0xdeadbeef, "0x%x: invalid trigger value: : 0x%x", guid, *val);
+	}
+}
+
+/**
+ * SUBTEST: pmt-bmg-tests
+ * Description:
+ *   Because of how the Crashlog Instances behave, these tests are ordered. Do not use them
+ *   individually unless you understand the underlying HW behavior.  Because of this behavior,
+ *   all of the test will be done in order in one step.
+ *   NOTE
+ *     o Testing MUST be done after a cold reset
+ *     o Once crashlog is triggered the device behavior is undefined and requires a cold reset.
+ *  Test category: functionality test
+ */
+static void test_pmt_bmg(int fd)
+{
+	test_pmt_directories(fd);
+	test_pmt_telemetry_files(fd);
+	test_pmt_crashlog_files(fd);
+	test_pmt_crashlog_error(fd);
+	test_pmt_crashlog_enable(fd);
+	test_pmt_crashlog_rearm(fd);
+	test_pmt_crashlog_trigger(fd);
+	test_pmt_crashlog_consumed(fd);
+	test_pmt_crashlog_clear(fd);
+}
+
+igt_main
+{
+	const struct {
+		const char *name;
+		void (*func)(int);
+	} funcs[] = {
+		{ "pmt-bmg-tests", test_pmt_bmg },
+		{ }
+	}, *f;
+	int dev_fd;
+
+	igt_fixture {
+		uint16_t dev_id;
+
+		dev_fd = drm_open_driver(DRIVER_XE);
+		dev_id = intel_get_drm_devid(dev_fd);
+		igt_require_f(IS_BATTLEMAGE(dev_id), "PMT currently suppot only for BMG GPU\n");
+	}
+
+	for (f = funcs; f->name; f++) {
+		igt_subtest_f("%s", f->name)
+			f->func(dev_fd);
+	}
+
+	igt_fixture
+		drm_close_driver(dev_fd);
+}
diff --git a/tests/meson.build b/tests/meson.build
index 5c01c64e9..46d36962e 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -318,6 +318,7 @@ intel_xe_progs = [
 	'xe_peer2peer',
 	'xe_pm',
 	'xe_pm_residency',
+	'xe_pmt',
 	'xe_pmu',
 	'xe_prime_self_import',
 	'xe_pxp',
-- 
2.50.1


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

* ✓ i915.CI.BAT: success for test/intel/xe_pmt: Add testing for BMG crashlog (rev3)
  2025-08-11 21:05 [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog Michael J. Ruhl
@ 2025-08-11 21:55 ` Patchwork
  2025-08-11 23:37 ` ✗ i915.CI.Full: failure " Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2025-08-11 21:55 UTC (permalink / raw)
  To: Michael J. Ruhl; +Cc: igt-dev

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

== Series Details ==

Series: test/intel/xe_pmt: Add testing for BMG crashlog (rev3)
URL   : https://patchwork.freedesktop.org/series/150903/
State : success

== Summary ==

CI Bug Log - changes from IGT_8492 -> IGTPW_13573
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_lmem_swapping@parallel-random-engines:
    - bat-mtlp-9:         NOTRUN -> [SKIP][1] ([i915#4613]) +3 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-mtlp-9/igt@gem_lmem_swapping@parallel-random-engines.html
    - bat-twl-1:          NOTRUN -> [SKIP][2] ([i915#10213] / [i915#11671]) +3 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-twl-1/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_mmap@basic:
    - bat-mtlp-9:         NOTRUN -> [SKIP][3] ([i915#4083])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-mtlp-9/igt@gem_mmap@basic.html

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

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

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

  * igt@i915_selftest@live:
    - bat-mtlp-8:         [PASS][7] -> [DMESG-FAIL][8] ([i915#12061]) +1 other test dmesg-fail
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/bat-mtlp-8/igt@i915_selftest@live.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-mtlp-8/igt@i915_selftest@live.html

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

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

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-mtlp-9:         NOTRUN -> [SKIP][11] ([i915#4212]) +8 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-mtlp-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-mtlp-9:         NOTRUN -> [SKIP][12] ([i915#4213]) +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-mtlp-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-mtlp-9:         NOTRUN -> [SKIP][13] ([i915#3555] / [i915#3840] / [i915#9159])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-mtlp-9/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-mtlp-9:         NOTRUN -> [SKIP][14]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-mtlp-9/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_psr@psr-primary-mmap-gtt:
    - bat-mtlp-9:         NOTRUN -> [SKIP][15] ([i915#4077] / [i915#9688]) +1 other test skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-mtlp-9/igt@kms_psr@psr-primary-mmap-gtt.html

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

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

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

  * igt@prime_vgem@basic-write:
    - bat-mtlp-9:         NOTRUN -> [SKIP][19] ([i915#10216] / [i915#3708])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-mtlp-9/igt@prime_vgem@basic-write.html

  
#### Possible fixes ####

  * igt@core_hotunplug@unbind-rebind:
    - bat-twl-1:          [ABORT][20] -> [PASS][21]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/bat-twl-1/igt@core_hotunplug@unbind-rebind.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-twl-1/igt@core_hotunplug@unbind-rebind.html

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

  * igt@dmabuf@all-tests@dma_fence_chain:
    - fi-bsw-nick:        [ABORT][24] ([i915#12904]) -> [PASS][25] +1 other test pass
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/fi-bsw-nick/igt@dmabuf@all-tests@dma_fence_chain.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/fi-bsw-nick/igt@dmabuf@all-tests@dma_fence_chain.html

  * igt@i915_module_load@load:
    - bat-mtlp-9:         [ABORT][26] ([i915#13494] / [i915#14804]) -> [PASS][27]
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/bat-mtlp-9/igt@i915_module_load@load.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-mtlp-9/igt@i915_module_load@load.html

  * igt@i915_pm_rpm@module-reload:
    - fi-hsw-4770:        [ABORT][28] -> [PASS][29]
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/fi-hsw-4770/igt@i915_pm_rpm@module-reload.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/fi-hsw-4770/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live:
    - bat-jsl-1:          [DMESG-WARN][30] ([i915#13827]) -> [PASS][31] +1 other test pass
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/bat-jsl-1/igt@i915_selftest@live.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-jsl-1/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-arls-6:         [DMESG-FAIL][32] ([i915#12061]) -> [PASS][33] +1 other test pass
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/bat-arls-6/igt@i915_selftest@live@workarounds.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-arls-6/igt@i915_selftest@live@workarounds.html

  
#### Warnings ####

  * igt@i915_selftest@live:
    - bat-atsm-1:         [DMESG-FAIL][34] ([i915#12061] / [i915#13929]) -> [DMESG-FAIL][35] ([i915#12061] / [i915#14204])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/bat-atsm-1/igt@i915_selftest@live.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-atsm-1/igt@i915_selftest@live.html

  * igt@i915_selftest@live@mman:
    - bat-atsm-1:         [DMESG-FAIL][36] ([i915#13929]) -> [DMESG-FAIL][37] ([i915#14204])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/bat-atsm-1/igt@i915_selftest@live@mman.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/bat-atsm-1/igt@i915_selftest@live@mman.html

  
  [i915#10213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10213
  [i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216
  [i915#11671]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11671
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12904]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12904
  [i915#13494]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13494
  [i915#13827]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13827
  [i915#13929]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13929
  [i915#14204]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14204
  [i915#14804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14804
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
  [i915#9159]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9159
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688


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

  * CI: CI-20190529 -> None
  * IGT: IGT_8492 -> IGTPW_13573

  CI-20190529: 20190529
  CI_DRM_16980: 0aae2a6e4e71b046d167b9ad79e0ddd2d5d23e7d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_13573: 6ff070b516c6f320fbe5edae272f57f52eaab5cb @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8492: 1e6c0d07b83cde9f2300b193f441c37d9dde5981 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* ✗ i915.CI.Full: failure for test/intel/xe_pmt: Add testing for BMG crashlog (rev3)
  2025-08-11 21:05 [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog Michael J. Ruhl
  2025-08-11 21:55 ` ✓ i915.CI.BAT: success for test/intel/xe_pmt: Add testing for BMG crashlog (rev3) Patchwork
@ 2025-08-11 23:37 ` Patchwork
  2025-08-27 13:52 ` [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog Rodrigo Vivi
  2025-08-28  9:13 ` Kamil Konieczny
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2025-08-11 23:37 UTC (permalink / raw)
  To: Michael J. Ruhl; +Cc: igt-dev

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

== Series Details ==

Series: test/intel/xe_pmt: Add testing for BMG crashlog (rev3)
URL   : https://patchwork.freedesktop.org/series/150903/
State : failure

== Summary ==

CI Bug Log - changes from IGT_8492_full -> IGTPW_13573_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_13573_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_13573_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_13573/index.html

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-factor-0-25:
    - shard-mtlp:         [PASS][1] -> [ABORT][2] +3 other tests abort
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-mtlp-4/igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-factor-0-25.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-8/igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-factor-0-25.html

  
New tests
---------

  New tests have been introduced between IGT_8492_full and IGTPW_13573_full:

### New IGT tests (7) ###

  * igt@i915_pm_rps@basic-big-joiner:
    - Statuses :
    - Exec time: [None] s

  * igt@i915_pm_rps@basic-busy-flip-before-cursor-atomic:
    - Statuses :
    - Exec time: [None] s

  * igt@i915_pm_rps@etime-multi-wait-all-submitted:
    - Statuses :
    - Exec time: [None] s

  * igt@i915_pm_rps@memset-crc:
    - Statuses :
    - Exec time: [None] s

  * igt@i915_pm_rps@psr-1p-primscrn-indfb-msflip-blt:
    - Statuses :
    - Exec time: [None] s

  * igt@i915_pm_rps@y-tiled-mc-ccs-to-vebox-y-tiled:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_async_flips@invalid-async-flip@pipe-d-hdmi-a-2:
    - Statuses : 1 pass(s)
    - Exec time: [0.10] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@blit-reloc-keep-cache:
    - shard-dg2-9:        NOTRUN -> [SKIP][3] ([i915#8411])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@api_intel_bb@blit-reloc-keep-cache.html

  * igt@api_intel_bb@crc32:
    - shard-tglu:         NOTRUN -> [SKIP][4] ([i915#6230])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-10/igt@api_intel_bb@crc32.html

  * igt@api_intel_bb@object-noreloc-keep-cache-simple:
    - shard-snb:          NOTRUN -> [SKIP][5] +193 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-snb7/igt@api_intel_bb@object-noreloc-keep-cache-simple.html

  * igt@api_intel_bb@object-reloc-keep-cache:
    - shard-dg2:          NOTRUN -> [SKIP][6] ([i915#8411])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@api_intel_bb@object-reloc-keep-cache.html

  * igt@drm_read@empty-block:
    - shard-dg1:          NOTRUN -> [DMESG-WARN][7] ([i915#4423])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-14/igt@drm_read@empty-block.html

  * igt@fbdev@nullptr:
    - shard-rkl:          [PASS][8] -> [SKIP][9] ([i915#14544] / [i915#2582]) +1 other test skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@fbdev@nullptr.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@fbdev@nullptr.html

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-tglu:         NOTRUN -> [SKIP][10] ([i915#3555] / [i915#9323])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-4/igt@gem_ccs@ctrl-surf-copy.html
    - shard-mtlp:         NOTRUN -> [SKIP][11] ([i915#3555] / [i915#9323])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-3/igt@gem_ccs@ctrl-surf-copy.html
    - shard-dg1:          NOTRUN -> [SKIP][12] ([i915#3555] / [i915#9323])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@gem_ccs@ctrl-surf-copy.html

  * igt@gem_ccs@large-ctrl-surf-copy:
    - shard-tglu:         NOTRUN -> [SKIP][13] ([i915#13008])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-5/igt@gem_ccs@large-ctrl-surf-copy.html

  * igt@gem_ccs@suspend-resume:
    - shard-dg1:          NOTRUN -> [SKIP][14] ([i915#9323]) +1 other test skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-13/igt@gem_ccs@suspend-resume.html

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

  * igt@gem_close_race@multigpu-basic-threads:
    - shard-tglu-1:       NOTRUN -> [SKIP][16] ([i915#7697])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@gem_close_race@multigpu-basic-threads.html
    - shard-mtlp:         NOTRUN -> [SKIP][17] ([i915#7697])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-8/igt@gem_close_race@multigpu-basic-threads.html

  * igt@gem_compute@compute-square:
    - shard-dg2-9:        NOTRUN -> [FAIL][18] ([i915#13665])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gem_compute@compute-square.html

  * igt@gem_create@create-ext-cpu-access-big:
    - shard-tglu:         NOTRUN -> [SKIP][19] ([i915#6335])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-6/igt@gem_create@create-ext-cpu-access-big.html

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

  * igt@gem_ctx_persistence@engines-mixed-process:
    - shard-snb:          NOTRUN -> [SKIP][22] ([i915#1099]) +3 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-snb7/igt@gem_ctx_persistence@engines-mixed-process.html

  * igt@gem_ctx_persistence@hang:
    - shard-dg2-9:        NOTRUN -> [SKIP][23] ([i915#8555])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gem_ctx_persistence@hang.html

  * igt@gem_ctx_persistence@heartbeat-close:
    - shard-dg2:          NOTRUN -> [SKIP][24] ([i915#8555])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-5/igt@gem_ctx_persistence@heartbeat-close.html

  * igt@gem_ctx_persistence@heartbeat-stop:
    - shard-mtlp:         NOTRUN -> [SKIP][25] ([i915#8555])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@gem_ctx_persistence@heartbeat-stop.html

  * igt@gem_ctx_sseu@engines:
    - shard-tglu-1:       NOTRUN -> [SKIP][26] ([i915#280])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@gem_ctx_sseu@engines.html

  * igt@gem_ctx_sseu@invalid-args:
    - shard-mtlp:         NOTRUN -> [SKIP][27] ([i915#280])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-4/igt@gem_ctx_sseu@invalid-args.html

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-dg2-9:        NOTRUN -> [SKIP][28] ([i915#280])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gem_ctx_sseu@invalid-sseu.html

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

  * igt@gem_eio@reset-stress:
    - shard-snb:          NOTRUN -> [FAIL][30] ([i915#8898])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-snb4/igt@gem_eio@reset-stress.html
    - shard-dg1:          NOTRUN -> [FAIL][31] ([i915#5784])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-16/igt@gem_eio@reset-stress.html

  * igt@gem_exec_balancer@bonded-false-hang:
    - shard-dg2:          NOTRUN -> [SKIP][32] ([i915#4812]) +3 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-7/igt@gem_exec_balancer@bonded-false-hang.html

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

  * igt@gem_exec_balancer@hog:
    - shard-mtlp:         NOTRUN -> [SKIP][34] ([i915#4812])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-5/igt@gem_exec_balancer@hog.html
    - shard-dg2-9:        NOTRUN -> [SKIP][35] ([i915#4812])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gem_exec_balancer@hog.html

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

  * igt@gem_exec_balancer@parallel-keep-in-fence:
    - shard-rkl:          NOTRUN -> [SKIP][37] ([i915#4525]) +1 other test skip
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@gem_exec_balancer@parallel-keep-in-fence.html

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

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

  * igt@gem_exec_fence@submit3:
    - shard-dg1:          NOTRUN -> [SKIP][40] ([i915#4812])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-18/igt@gem_exec_fence@submit3.html

  * igt@gem_exec_flush@basic-uc-ro-default:
    - shard-dg2-9:        NOTRUN -> [SKIP][41] ([i915#3539] / [i915#4852])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gem_exec_flush@basic-uc-ro-default.html

  * igt@gem_exec_flush@basic-uc-rw-default:
    - shard-dg1:          NOTRUN -> [SKIP][42] ([i915#3539] / [i915#4852]) +2 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-18/igt@gem_exec_flush@basic-uc-rw-default.html

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

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

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

  * igt@gem_exec_reloc@basic-wc-cpu-noreloc:
    - shard-dg1:          NOTRUN -> [SKIP][47] ([i915#3281]) +7 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-18/igt@gem_exec_reloc@basic-wc-cpu-noreloc.html

  * igt@gem_exec_reloc@basic-wc-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][48] ([i915#3281]) +5 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@gem_exec_reloc@basic-wc-gtt.html

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

  * igt@gem_exec_schedule@preempt-queue-chain:
    - shard-dg2-9:        NOTRUN -> [SKIP][50] ([i915#4537] / [i915#4812])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gem_exec_schedule@preempt-queue-chain.html

  * igt@gem_exec_schedule@preempt-queue-contexts:
    - shard-mtlp:         NOTRUN -> [SKIP][51] ([i915#4537] / [i915#4812])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-4/igt@gem_exec_schedule@preempt-queue-contexts.html

  * igt@gem_exec_suspend@basic-s0@smem:
    - shard-snb:          [PASS][52] -> [ABORT][53] ([i915#12817]) +1 other test abort
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-snb6/igt@gem_exec_suspend@basic-s0@smem.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-snb4/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@gem_fence_thrash@bo-write-verify-none:
    - shard-dg1:          NOTRUN -> [SKIP][54] ([i915#4860])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@gem_fence_thrash@bo-write-verify-none.html

  * igt@gem_fence_thrash@bo-write-verify-y:
    - shard-mtlp:         NOTRUN -> [SKIP][55] ([i915#4860])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@gem_fence_thrash@bo-write-verify-y.html

  * igt@gem_fenced_exec_thrash@no-spare-fences-busy-interruptible:
    - shard-dg2-9:        NOTRUN -> [SKIP][56] ([i915#4860]) +1 other test skip
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gem_fenced_exec_thrash@no-spare-fences-busy-interruptible.html

  * igt@gem_lmem_evict@dontneed-evict-race:
    - shard-rkl:          NOTRUN -> [SKIP][57] ([i915#4613] / [i915#7582])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@gem_lmem_evict@dontneed-evict-race.html
    - shard-tglu:         NOTRUN -> [SKIP][58] ([i915#4613] / [i915#7582])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-5/igt@gem_lmem_evict@dontneed-evict-race.html

  * igt@gem_lmem_swapping@heavy-verify-multi:
    - shard-mtlp:         NOTRUN -> [SKIP][59] ([i915#4613]) +3 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-2/igt@gem_lmem_swapping@heavy-verify-multi.html

  * igt@gem_lmem_swapping@heavy-verify-multi-ccs:
    - shard-glk:          NOTRUN -> [SKIP][60] ([i915#4613]) +3 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk8/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html

  * igt@gem_lmem_swapping@massive:
    - shard-rkl:          NOTRUN -> [SKIP][61] ([i915#4613]) +1 other test skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@gem_lmem_swapping@massive.html

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

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

  * igt@gem_media_vme:
    - shard-tglu:         NOTRUN -> [SKIP][64] ([i915#284])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-6/igt@gem_media_vme.html

  * igt@gem_mmap@bad-object:
    - shard-dg1:          NOTRUN -> [SKIP][65] ([i915#4083]) +4 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-17/igt@gem_mmap@bad-object.html

  * igt@gem_mmap@basic:
    - shard-dg2-9:        NOTRUN -> [SKIP][66] ([i915#4083]) +3 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gem_mmap@basic.html

  * igt@gem_mmap@basic-small-bo:
    - shard-mtlp:         NOTRUN -> [SKIP][67] ([i915#4083]) +7 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-8/igt@gem_mmap@basic-small-bo.html

  * igt@gem_mmap_gtt@basic-read-write-distinct:
    - shard-mtlp:         NOTRUN -> [SKIP][68] ([i915#4077]) +4 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-1/igt@gem_mmap_gtt@basic-read-write-distinct.html

  * igt@gem_mmap_gtt@cpuset-basic-small-copy-xy:
    - shard-dg1:          NOTRUN -> [SKIP][69] ([i915#4077]) +5 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-14/igt@gem_mmap_gtt@cpuset-basic-small-copy-xy.html

  * igt@gem_mmap_gtt@cpuset-big-copy:
    - shard-dg2:          NOTRUN -> [SKIP][70] ([i915#4077]) +8 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-4/igt@gem_mmap_gtt@cpuset-big-copy.html

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

  * igt@gem_mmap_offset@open-flood:
    - shard-rkl:          [PASS][72] -> [DMESG-WARN][73] ([i915#12964] / [i915#14602])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@gem_mmap_offset@open-flood.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-7/igt@gem_mmap_offset@open-flood.html

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

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

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

  * igt@gem_pwrite@basic-exhaustion:
    - shard-rkl:          NOTRUN -> [SKIP][77] ([i915#14544] / [i915#3282]) +1 other test skip
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gem_pwrite@basic-exhaustion.html
    - shard-mtlp:         NOTRUN -> [SKIP][78] ([i915#3282]) +1 other test skip
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@gem_pwrite@basic-exhaustion.html

  * igt@gem_pwrite@basic-self:
    - shard-rkl:          NOTRUN -> [SKIP][79] ([i915#3282]) +3 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@gem_pwrite@basic-self.html

  * igt@gem_pwrite_snooped:
    - shard-dg1:          NOTRUN -> [SKIP][80] ([i915#3282]) +1 other test skip
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-14/igt@gem_pwrite_snooped.html

  * igt@gem_pxp@create-protected-buffer:
    - shard-dg2-9:        NOTRUN -> [SKIP][81] ([i915#4270])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gem_pxp@create-protected-buffer.html

  * igt@gem_pxp@create-regular-context-1:
    - shard-rkl:          [PASS][82] -> [TIMEOUT][83] ([i915#12917] / [i915#12964])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@gem_pxp@create-regular-context-1.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@gem_pxp@create-regular-context-1.html

  * igt@gem_pxp@reject-modify-context-protection-on:
    - shard-rkl:          NOTRUN -> [TIMEOUT][84] ([i915#12917] / [i915#12964])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-7/igt@gem_pxp@reject-modify-context-protection-on.html

  * igt@gem_pxp@verify-pxp-key-change-after-suspend-resume:
    - shard-dg1:          NOTRUN -> [SKIP][85] ([i915#4270]) +3 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@gem_pxp@verify-pxp-key-change-after-suspend-resume.html

  * igt@gem_pxp@verify-pxp-stale-buf-execution:
    - shard-dg2:          NOTRUN -> [SKIP][86] ([i915#4270]) +4 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-7/igt@gem_pxp@verify-pxp-stale-buf-execution.html

  * igt@gem_render_copy@linear-to-vebox-yf-tiled:
    - shard-dg2-9:        NOTRUN -> [SKIP][87] ([i915#5190] / [i915#8428]) +5 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gem_render_copy@linear-to-vebox-yf-tiled.html

  * igt@gem_render_copy@y-tiled-mc-ccs-to-vebox-yf-tiled:
    - shard-mtlp:         NOTRUN -> [SKIP][88] ([i915#8428]) +4 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-1/igt@gem_render_copy@y-tiled-mc-ccs-to-vebox-yf-tiled.html

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

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

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

  * igt@gem_tiled_pread_pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][92] ([i915#4079]) +1 other test skip
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-5/igt@gem_tiled_pread_pwrite.html

  * igt@gem_userptr_blits@access-control:
    - shard-dg2:          NOTRUN -> [SKIP][93] ([i915#3297])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-8/igt@gem_userptr_blits@access-control.html

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

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

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-glk:          NOTRUN -> [SKIP][96] ([i915#3323])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk1/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_userptr_blits@invalid-mmap-offset-unsync:
    - shard-tglu:         NOTRUN -> [SKIP][97] ([i915#3297])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-4/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html

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

  * igt@gem_userptr_blits@relocations:
    - shard-dg2:          NOTRUN -> [SKIP][99] ([i915#3281] / [i915#3297])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-6/igt@gem_userptr_blits@relocations.html
    - shard-dg1:          NOTRUN -> [SKIP][100] ([i915#3281] / [i915#3297])
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@gem_userptr_blits@relocations.html

  * igt@gem_userptr_blits@unsync-unmap-after-close:
    - shard-dg1:          NOTRUN -> [SKIP][101] ([i915#3297]) +2 other tests skip
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-13/igt@gem_userptr_blits@unsync-unmap-after-close.html

  * igt@gem_workarounds@suspend-resume-fd:
    - shard-rkl:          [PASS][102] -> [INCOMPLETE][103] ([i915#13356])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@gem_workarounds@suspend-resume-fd.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-7/igt@gem_workarounds@suspend-resume-fd.html
    - shard-glk:          NOTRUN -> [INCOMPLETE][104] ([i915#13356] / [i915#14586])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk8/igt@gem_workarounds@suspend-resume-fd.html

  * igt@gen7_exec_parse@basic-rejected:
    - shard-mtlp:         NOTRUN -> [ABORT][105] ([i915#14804])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-8/igt@gen7_exec_parse@basic-rejected.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-mtlp:         NOTRUN -> [SKIP][106] ([i915#2856]) +3 other tests skip
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-3/igt@gen9_exec_parse@allowed-single.html

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

  * igt@gen9_exec_parse@bb-large:
    - shard-glk11:        NOTRUN -> [FAIL][108] ([i915#14806])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk11/igt@gen9_exec_parse@bb-large.html

  * igt@gen9_exec_parse@bb-oversize:
    - shard-rkl:          NOTRUN -> [SKIP][109] ([i915#2527]) +1 other test skip
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@gen9_exec_parse@bb-oversize.html
    - shard-dg1:          NOTRUN -> [SKIP][110] ([i915#2527])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@gen9_exec_parse@bb-oversize.html

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

  * igt@gen9_exec_parse@unaligned-access:
    - shard-dg2:          NOTRUN -> [SKIP][112] ([i915#2856]) +2 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-5/igt@gen9_exec_parse@unaligned-access.html
    - shard-rkl:          NOTRUN -> [SKIP][113] ([i915#14544] / [i915#2527])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gen9_exec_parse@unaligned-access.html

  * igt@gen9_exec_parse@valid-registers:
    - shard-dg2-9:        NOTRUN -> [SKIP][114] ([i915#2856])
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@gen9_exec_parse@valid-registers.html

  * igt@i915_drm_fdinfo@busy-idle-check-all@ccs0:
    - shard-dg2:          NOTRUN -> [SKIP][115] ([i915#11527]) +7 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-1/igt@i915_drm_fdinfo@busy-idle-check-all@ccs0.html

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

  * igt@i915_drm_fdinfo@busy-idle@vcs0:
    - shard-dg2:          NOTRUN -> [SKIP][117] ([i915#14073]) +7 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-5/igt@i915_drm_fdinfo@busy-idle@vcs0.html

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

  * igt@i915_drm_fdinfo@virtual-busy-idle:
    - shard-dg2:          NOTRUN -> [SKIP][119] ([i915#14118])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@i915_drm_fdinfo@virtual-busy-idle.html

  * igt@i915_drm_fdinfo@virtual-busy-idle-all:
    - shard-dg2-9:        NOTRUN -> [SKIP][120] ([i915#14118])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@i915_drm_fdinfo@virtual-busy-idle-all.html
    - shard-mtlp:         NOTRUN -> [SKIP][121] ([i915#14118])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-3/igt@i915_drm_fdinfo@virtual-busy-idle-all.html

  * igt@i915_fb_tiling@basic-x-tiling:
    - shard-mtlp:         NOTRUN -> [SKIP][122] ([i915#13786])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-3/igt@i915_fb_tiling@basic-x-tiling.html
    - shard-dg2:          NOTRUN -> [SKIP][123] ([i915#13786])
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-7/igt@i915_fb_tiling@basic-x-tiling.html
    - shard-dg1:          NOTRUN -> [SKIP][124] ([i915#13786])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-13/igt@i915_fb_tiling@basic-x-tiling.html

  * igt@i915_hangman@hangcheck-unterminated:
    - shard-rkl:          [PASS][125] -> [DMESG-WARN][126] ([i915#12964]) +21 other tests dmesg-warn
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@i915_hangman@hangcheck-unterminated.html
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@i915_hangman@hangcheck-unterminated.html

  * igt@i915_module_load@reload-no-display:
    - shard-dg1:          [PASS][127] -> [DMESG-WARN][128] ([i915#13029] / [i915#14545])
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-17/igt@i915_module_load@reload-no-display.html
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@i915_module_load@reload-no-display.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][129] ([i915#12964]) +5 other tests dmesg-warn
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_module_load@resize-bar:
    - shard-dg1:          NOTRUN -> [SKIP][130] ([i915#7178])
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@i915_module_load@resize-bar.html

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

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

  * igt@i915_pm_rc6_residency@rc6-fence:
    - shard-tglu:         NOTRUN -> [WARN][133] ([i915#13790] / [i915#2681]) +1 other test warn
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-6/igt@i915_pm_rc6_residency@rc6-fence.html

  * igt@i915_pm_rc6_residency@rc6-idle:
    - shard-tglu-1:       NOTRUN -> [SKIP][134] ([i915#14498])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@i915_pm_rc6_residency@rc6-idle.html

  * igt@i915_pm_rpm@gem-execbuf:
    - shard-rkl:          [PASS][135] -> [SKIP][136] ([i915#13328])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@i915_pm_rpm@gem-execbuf.html
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@i915_pm_rpm@gem-execbuf.html

  * igt@i915_pm_rps@min-max-config-idle:
    - shard-mtlp:         NOTRUN -> [SKIP][137] ([i915#11681] / [i915#6621])
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@i915_pm_rps@min-max-config-idle.html

  * igt@i915_pm_rps@min-max-config-loaded:
    - shard-dg2:          NOTRUN -> [SKIP][138] ([i915#11681] / [i915#6621])
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@i915_pm_rps@min-max-config-loaded.html

  * igt@i915_pm_rps@reset:
    - shard-snb:          [PASS][139] -> [INCOMPLETE][140] ([i915#13729] / [i915#13821])
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-snb5/igt@i915_pm_rps@reset.html
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-snb6/igt@i915_pm_rps@reset.html

  * igt@i915_pm_rps@thresholds:
    - shard-mtlp:         NOTRUN -> [SKIP][141] ([i915#11681])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@i915_pm_rps@thresholds.html
    - shard-dg2:          NOTRUN -> [SKIP][142] ([i915#11681])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-3/igt@i915_pm_rps@thresholds.html
    - shard-dg1:          NOTRUN -> [SKIP][143] ([i915#11681])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@i915_pm_rps@thresholds.html

  * igt@i915_query@query-topology-coherent-slice-mask:
    - shard-dg2:          NOTRUN -> [SKIP][144] ([i915#6188])
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-4/igt@i915_query@query-topology-coherent-slice-mask.html

  * igt@i915_query@test-query-geometry-subslices:
    - shard-tglu-1:       NOTRUN -> [SKIP][145] ([i915#5723])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@i915_query@test-query-geometry-subslices.html

  * igt@i915_selftest@live@workarounds:
    - shard-dg2:          [PASS][146] -> [DMESG-FAIL][147] ([i915#12061]) +1 other test dmesg-fail
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg2-8/igt@i915_selftest@live@workarounds.html
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-8/igt@i915_selftest@live@workarounds.html
    - shard-mtlp:         [PASS][148] -> [DMESG-FAIL][149] ([i915#12061]) +1 other test dmesg-fail
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-mtlp-6/igt@i915_selftest@live@workarounds.html
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-1/igt@i915_selftest@live@workarounds.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-dg2:          [PASS][150] -> [DMESG-WARN][151] ([i915#14545])
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg2-11/igt@i915_suspend@basic-s3-without-i915.html
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-4/igt@i915_suspend@basic-s3-without-i915.html
    - shard-dg1:          [PASS][152] -> [DMESG-WARN][153] ([i915#14545])
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-18/igt@i915_suspend@basic-s3-without-i915.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-19/igt@i915_suspend@basic-s3-without-i915.html

  * igt@i915_suspend@debugfs-reader:
    - shard-glk10:        NOTRUN -> [INCOMPLETE][154] ([i915#4817])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk10/igt@i915_suspend@debugfs-reader.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
    - shard-glk11:        NOTRUN -> [INCOMPLETE][155] ([i915#4817])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk11/igt@i915_suspend@fence-restore-tiled2untiled.html

  * igt@i915_suspend@forcewake:
    - shard-glk:          NOTRUN -> [INCOMPLETE][156] ([i915#4817]) +1 other test incomplete
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk1/igt@i915_suspend@forcewake.html

  * igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling:
    - shard-dg2:          NOTRUN -> [SKIP][157] ([i915#4212])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html

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

  * igt@kms_async_flips@invalid-async-flip-atomic:
    - shard-dg2-9:        NOTRUN -> [SKIP][159] ([i915#12967])
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_async_flips@invalid-async-flip-atomic.html

  * igt@kms_async_flips@test-cursor:
    - shard-mtlp:         NOTRUN -> [SKIP][160] ([i915#10333])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-3/igt@kms_async_flips@test-cursor.html

  * igt@kms_atomic@plane-primary-overlay-mutable-zpos:
    - shard-dg1:          NOTRUN -> [SKIP][161] ([i915#9531])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-tglu-1:       NOTRUN -> [SKIP][162] ([i915#1769] / [i915#3555])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.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_13573/shard-dg2-11/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

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

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

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

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

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

  * igt@kms_big_fb@linear-64bpp-rotate-270:
    - shard-mtlp:         NOTRUN -> [SKIP][169] +20 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@kms_big_fb@linear-64bpp-rotate-270.html
    - shard-rkl:          NOTRUN -> [SKIP][170] ([i915#3638])
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-3/igt@kms_big_fb@linear-64bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-0:
    - shard-dg2-9:        NOTRUN -> [SKIP][171] ([i915#4538] / [i915#5190]) +7 other tests skip
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-270:
    - shard-dg1:          NOTRUN -> [SKIP][172] ([i915#3638]) +4 other tests skip
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html

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

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

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][175] ([i915#10307] / [i915#6095]) +143 other tests skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-8/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-3.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][176] ([i915#12313])
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-4/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html

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

  * igt@kms_ccs@bad-rotation-90-yf-tiled-ccs@pipe-a-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][178] ([i915#6095]) +54 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-6/igt@kms_ccs@bad-rotation-90-yf-tiled-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-basic-y-tiled-ccs@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][179] ([i915#6095]) +39 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-2/igt@kms_ccs@crc-primary-basic-y-tiled-ccs@pipe-d-edp-1.html

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

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

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

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][183] ([i915#6095]) +29 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/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:
    - shard-dg2:          NOTRUN -> [SKIP][184] ([i915#6095]) +18 other tests skip
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-6/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs.html

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

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

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

  * igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs@pipe-b-hdmi-a-2:
    - shard-dg2-9:        NOTRUN -> [SKIP][188] ([i915#10307] / [i915#6095]) +54 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][189] ([i915#14544]) +32 other tests skip
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs.html

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

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

  * igt@kms_cdclk@mode-transition:
    - shard-glk:          NOTRUN -> [SKIP][192] +221 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk9/igt@kms_cdclk@mode-transition.html
    - shard-mtlp:         NOTRUN -> [SKIP][193] ([i915#13781]) +4 other tests skip
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-4/igt@kms_cdclk@mode-transition.html
    - shard-rkl:          NOTRUN -> [SKIP][194] ([i915#3742])
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_cdclk@mode-transition.html
    - shard-dg1:          NOTRUN -> [SKIP][195] ([i915#3742])
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-13/igt@kms_cdclk@mode-transition.html
    - shard-tglu:         NOTRUN -> [SKIP][196] ([i915#3742])
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-3/igt@kms_cdclk@mode-transition.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-dg2:          NOTRUN -> [SKIP][197] ([i915#13784])
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-7/igt@kms_cdclk@mode-transition-all-outputs.html

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

  * igt@kms_cdclk@plane-scaling@pipe-c-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][199] ([i915#13783]) +4 other tests skip
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-2/igt@kms_cdclk@plane-scaling@pipe-c-edp-1.html

  * igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][200] ([i915#13783]) +3 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-2.html

  * igt@kms_chamelium_color@ctm-0-25:
    - shard-dg2-9:        NOTRUN -> [SKIP][201] +3 other tests skip
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_chamelium_color@ctm-0-25.html

  * igt@kms_chamelium_edid@dp-edid-change-during-suspend:
    - shard-mtlp:         NOTRUN -> [SKIP][202] ([i915#11151] / [i915#7828]) +4 other tests skip
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@kms_chamelium_edid@dp-edid-change-during-suspend.html

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

  * igt@kms_chamelium_frames@dp-crc-fast:
    - shard-dg2:          NOTRUN -> [SKIP][204] ([i915#11151] / [i915#7828]) +11 other tests skip
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-5/igt@kms_chamelium_frames@dp-crc-fast.html

  * igt@kms_chamelium_frames@hdmi-frame-dump:
    - shard-rkl:          NOTRUN -> [SKIP][205] ([i915#11151] / [i915#7828]) +3 other tests skip
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-7/igt@kms_chamelium_frames@hdmi-frame-dump.html

  * igt@kms_chamelium_hpd@dp-hpd-after-suspend:
    - shard-dg1:          NOTRUN -> [SKIP][206] ([i915#11151] / [i915#7828]) +5 other tests skip
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-17/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html

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

  * igt@kms_chamelium_hpd@vga-hpd-for-each-pipe:
    - shard-dg2-9:        NOTRUN -> [SKIP][208] ([i915#11151] / [i915#7828]) +4 other tests skip
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html
    - shard-rkl:          NOTRUN -> [SKIP][209] ([i915#11151] / [i915#14544] / [i915#7828]) +2 other tests skip
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html

  * igt@kms_color@ctm-0-25:
    - shard-rkl:          NOTRUN -> [SKIP][210] ([i915#12655] / [i915#14544]) +2 other tests skip
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_color@ctm-0-25.html

  * igt@kms_color@ctm-0-75:
    - shard-rkl:          [PASS][211] -> [SKIP][212] ([i915#12655] / [i915#14544])
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_color@ctm-0-75.html
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_color@ctm-0-75.html

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

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-dg2:          NOTRUN -> [SKIP][215] ([i915#3299])
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-10/igt@kms_content_protection@dp-mst-lic-type-1.html
    - shard-tglu-1:       NOTRUN -> [SKIP][216] ([i915#3116] / [i915#3299])
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_content_protection@dp-mst-lic-type-1.html
    - shard-mtlp:         NOTRUN -> [SKIP][217] ([i915#3299])
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@lic-type-0:
    - shard-tglu:         NOTRUN -> [SKIP][218] ([i915#6944] / [i915#9424]) +1 other test skip
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-8/igt@kms_content_protection@lic-type-0.html

  * igt@kms_content_protection@lic-type-1:
    - shard-dg2:          NOTRUN -> [SKIP][219] ([i915#9424]) +1 other test skip
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-5/igt@kms_content_protection@lic-type-1.html
    - shard-dg1:          NOTRUN -> [SKIP][220] ([i915#9424])
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@kms_content_protection@lic-type-1.html

  * igt@kms_content_protection@mei-interface:
    - shard-rkl:          NOTRUN -> [SKIP][221] ([i915#9424]) +1 other test skip
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_content_protection@mei-interface.html
    - shard-mtlp:         NOTRUN -> [SKIP][222] ([i915#8063] / [i915#9433])
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-4/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@srm:
    - shard-dg2:          NOTRUN -> [SKIP][223] ([i915#7118])
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-4/igt@kms_content_protection@srm.html

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

  * igt@kms_content_protection@uevent:
    - shard-mtlp:         NOTRUN -> [SKIP][225] ([i915#6944] / [i915#9424]) +1 other test skip
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-2/igt@kms_content_protection@uevent.html
    - shard-dg2-9:        NOTRUN -> [SKIP][226] ([i915#7118] / [i915#9424])
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@cursor-offscreen-32x32:
    - shard-tglu:         NOTRUN -> [SKIP][227] ([i915#3555]) +8 other tests skip
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-2/igt@kms_cursor_crc@cursor-offscreen-32x32.html

  * igt@kms_cursor_crc@cursor-onscreen-256x85:
    - shard-glk11:        NOTRUN -> [SKIP][228] +73 other tests skip
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk11/igt@kms_cursor_crc@cursor-onscreen-256x85.html

  * igt@kms_cursor_crc@cursor-onscreen-32x10:
    - shard-mtlp:         NOTRUN -> [SKIP][229] ([i915#3555] / [i915#8814]) +2 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-4/igt@kms_cursor_crc@cursor-onscreen-32x10.html

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

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

  * igt@kms_cursor_crc@cursor-random-128x42:
    - shard-tglu:         NOTRUN -> [FAIL][232] ([i915#13566]) +1 other test fail
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-4/igt@kms_cursor_crc@cursor-random-128x42.html
    - shard-mtlp:         NOTRUN -> [SKIP][233] ([i915#8814])
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@kms_cursor_crc@cursor-random-128x42.html

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

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

  * igt@kms_cursor_crc@cursor-rapid-movement-max-size:
    - shard-dg2:          NOTRUN -> [SKIP][236] ([i915#3555]) +7 other tests skip
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html
    - shard-dg1:          NOTRUN -> [SKIP][237] ([i915#3555]) +4 other tests skip
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-18/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html

  * igt@kms_cursor_crc@cursor-sliding-128x42:
    - shard-tglu:         [PASS][238] -> [FAIL][239] ([i915#13566]) +1 other test fail
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-tglu-5/igt@kms_cursor_crc@cursor-sliding-128x42.html
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-5/igt@kms_cursor_crc@cursor-sliding-128x42.html

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

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-tglu-1:       NOTRUN -> [FAIL][241] ([i915#13566]) +1 other test fail
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_cursor_crc@cursor-sliding-512x512:
    - shard-rkl:          NOTRUN -> [SKIP][242] ([i915#13049]) +1 other test skip
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_cursor_crc@cursor-sliding-512x512.html
    - shard-mtlp:         NOTRUN -> [SKIP][243] ([i915#13049]) +1 other test skip
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-8/igt@kms_cursor_crc@cursor-sliding-512x512.html

  * igt@kms_cursor_crc@cursor-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][244] ([i915#12358] / [i915#14152] / [i915#7882])
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk9/igt@kms_cursor_crc@cursor-suspend.html

  * igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [INCOMPLETE][245] ([i915#12358] / [i915#14152])
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk9/igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_edge_walk@256x256-left-edge:
    - shard-glk:          [PASS][246] -> [ABORT][247] ([i915#14804])
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-glk8/igt@kms_cursor_edge_walk@256x256-left-edge.html
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk9/igt@kms_cursor_edge_walk@256x256-left-edge.html

  * igt@kms_cursor_edge_walk@64x64-left-edge:
    - shard-rkl:          [PASS][248] -> [SKIP][249] ([i915#14544]) +47 other tests skip
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-2/igt@kms_cursor_edge_walk@64x64-left-edge.html
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_cursor_edge_walk@64x64-left-edge.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
    - shard-mtlp:         NOTRUN -> [SKIP][250] ([i915#9809]) +5 other tests skip
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-2/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][251] ([i915#13046] / [i915#5354]) +4 other tests skip
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-1/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

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

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
    - shard-rkl:          NOTRUN -> [SKIP][253] ([i915#4103])
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
    - shard-mtlp:         NOTRUN -> [SKIP][254] ([i915#4213])
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - shard-glk10:        NOTRUN -> [SKIP][255] ([i915#11190]) +1 other test skip
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk10/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-atomic:
    - shard-rkl:          NOTRUN -> [SKIP][256] ([i915#11190] / [i915#14544])
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-legacy:
    - shard-rkl:          NOTRUN -> [SKIP][257] +11 other tests skip
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic:
    - shard-glk:          [PASS][258] -> [SKIP][259] +1 other test skip
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-glk5/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk8/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html

  * igt@kms_cursor_legacy@forked-bo:
    - shard-dg2-9:        NOTRUN -> [ABORT][260] ([i915#14804]) +1 other test abort
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_cursor_legacy@forked-bo.html
    - shard-tglu:         NOTRUN -> [ABORT][261] ([i915#14804]) +1 other test abort
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-8/igt@kms_cursor_legacy@forked-bo.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-dg2:          NOTRUN -> [SKIP][262] ([i915#4103] / [i915#4213])
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
    - shard-tglu-1:       NOTRUN -> [SKIP][263] ([i915#4103])
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-tglu:         NOTRUN -> [SKIP][264] ([i915#4103]) +1 other test skip
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_cursor_legacy@torture-bo@pipe-a:
    - shard-dg2:          NOTRUN -> [ABORT][265] ([i915#14804]) +1 other test abort
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-4/igt@kms_cursor_legacy@torture-bo@pipe-a.html

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-dg2:          NOTRUN -> [SKIP][266] ([i915#13749]) +1 other test skip
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@kms_dp_link_training@non-uhbr-sst.html
    - shard-dg1:          NOTRUN -> [SKIP][267] ([i915#13749])
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-18/igt@kms_dp_link_training@non-uhbr-sst.html

  * igt@kms_dp_link_training@uhbr-sst:
    - shard-tglu:         NOTRUN -> [SKIP][268] ([i915#13748])
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-7/igt@kms_dp_link_training@uhbr-sst.html
    - shard-dg2-9:        NOTRUN -> [SKIP][269] ([i915#13748])
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_dp_link_training@uhbr-sst.html

  * igt@kms_dp_linktrain_fallback@dp-fallback:
    - shard-dg2-9:        NOTRUN -> [SKIP][270] ([i915#13707])
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_dp_linktrain_fallback@dp-fallback.html
    - shard-dg1:          NOTRUN -> [SKIP][271] ([i915#13707])
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-18/igt@kms_dp_linktrain_fallback@dp-fallback.html
    - shard-tglu:         NOTRUN -> [SKIP][272] ([i915#13707])
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-8/igt@kms_dp_linktrain_fallback@dp-fallback.html
    - shard-mtlp:         NOTRUN -> [SKIP][273] ([i915#13707])
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-2/igt@kms_dp_linktrain_fallback@dp-fallback.html

  * igt@kms_draw_crc@draw-method-mmap-wc:
    - shard-dg2:          NOTRUN -> [SKIP][274] ([i915#8812])
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@kms_draw_crc@draw-method-mmap-wc.html
    - shard-dg1:          NOTRUN -> [SKIP][275] ([i915#8812])
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@kms_draw_crc@draw-method-mmap-wc.html

  * igt@kms_dsc@dsc-basic:
    - shard-dg2:          NOTRUN -> [SKIP][276] ([i915#3555] / [i915#3840]) +1 other test skip
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-8/igt@kms_dsc@dsc-basic.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc:
    - shard-mtlp:         NOTRUN -> [SKIP][277] ([i915#3555] / [i915#3840] / [i915#9053])
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-1/igt@kms_dsc@dsc-with-output-formats-with-bpc.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][278] ([i915#9878])
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk6/igt@kms_fbcon_fbt@fbc-suspend.html
    - shard-rkl:          [PASS][279] -> [INCOMPLETE][280] ([i915#9878])
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_fbcon_fbt@fbc-suspend.html
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-3/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_feature_discovery@chamelium:
    - shard-dg1:          NOTRUN -> [SKIP][281] ([i915#4854])
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-17/igt@kms_feature_discovery@chamelium.html

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

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

  * igt@kms_feature_discovery@display-4x:
    - shard-rkl:          NOTRUN -> [SKIP][284] ([i915#1839])
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_feature_discovery@display-4x.html
    - shard-mtlp:         NOTRUN -> [SKIP][285] ([i915#1839])
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-4/igt@kms_feature_discovery@display-4x.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-tglu-1:       NOTRUN -> [SKIP][286] ([i915#9337])
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_feature_discovery@dp-mst.html

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

  * igt@kms_fence_pin_leak:
    - shard-dg1:          NOTRUN -> [SKIP][288] ([i915#4881])
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@kms_fence_pin_leak.html
    - shard-mtlp:         NOTRUN -> [SKIP][289] ([i915#4881])
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-3/igt@kms_fence_pin_leak.html
    - shard-dg2:          NOTRUN -> [SKIP][290] ([i915#4881])
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-6/igt@kms_fence_pin_leak.html

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

  * igt@kms_flip@2x-flip-vs-dpms-on-nop:
    - shard-dg1:          NOTRUN -> [SKIP][292] ([i915#9934]) +6 other tests skip
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@kms_flip@2x-flip-vs-dpms-on-nop.html
    - shard-tglu:         NOTRUN -> [SKIP][293] ([i915#9934])
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-10/igt@kms_flip@2x-flip-vs-dpms-on-nop.html
    - shard-mtlp:         NOTRUN -> [SKIP][294] ([i915#9934])
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@kms_flip@2x-flip-vs-dpms-on-nop.html

  * igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible:
    - shard-tglu-1:       NOTRUN -> [SKIP][295] ([i915#9934])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible.html

  * igt@kms_flip@2x-flip-vs-fences:
    - shard-dg1:          NOTRUN -> [SKIP][296] ([i915#8381])
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@kms_flip@2x-flip-vs-fences.html
    - shard-mtlp:         NOTRUN -> [SKIP][297] ([i915#8381])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@kms_flip@2x-flip-vs-fences.html

  * igt@kms_flip@2x-flip-vs-modeset-vs-hang:
    - shard-dg2:          NOTRUN -> [SKIP][298] ([i915#9934]) +7 other tests skip
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-5/igt@kms_flip@2x-flip-vs-modeset-vs-hang.html
    - shard-rkl:          NOTRUN -> [SKIP][299] ([i915#9934]) +5 other tests skip
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_flip@2x-flip-vs-modeset-vs-hang.html

  * igt@kms_flip@2x-flip-vs-panning-vs-hang:
    - shard-dg2-9:        NOTRUN -> [SKIP][300] ([i915#9934]) +5 other tests skip
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_flip@2x-flip-vs-panning-vs-hang.html

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

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

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

  * igt@kms_flip@flip-vs-blocking-wf-vblank:
    - shard-rkl:          [PASS][304] -> [SKIP][305] ([i915#14544] / [i915#3637]) +3 other tests skip
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_flip@flip-vs-blocking-wf-vblank.html
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_flip@flip-vs-blocking-wf-vblank.html

  * igt@kms_flip@flip-vs-fences-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][306] ([i915#8381]) +1 other test skip
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@kms_flip@flip-vs-fences-interruptible.html

  * igt@kms_flip@plain-flip-ts-check:
    - shard-rkl:          [PASS][307] -> [FAIL][308] ([i915#10826])
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_flip@plain-flip-ts-check.html
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_flip@plain-flip-ts-check.html

  * igt@kms_flip@plain-flip-ts-check@a-hdmi-a1:
    - shard-rkl:          NOTRUN -> [FAIL][309] ([i915#10826])
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_flip@plain-flip-ts-check@a-hdmi-a1.html

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

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

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

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][313] ([i915#2672] / [i915#8813])
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][314] ([i915#2672]) +4 other tests skip
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-1/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling:
    - shard-tglu-1:       NOTRUN -> [SKIP][315] ([i915#2672] / [i915#3555])
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][316] ([i915#2672]) +5 other tests skip
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/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-ytileccs-downscaling:
    - shard-tglu-1:       NOTRUN -> [SKIP][317] ([i915#2587] / [i915#2672] / [i915#3555])
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling@pipe-a-valid-mode:
    - shard-tglu-1:       NOTRUN -> [SKIP][318] ([i915#2587] / [i915#2672]) +1 other test skip
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling:
    - shard-dg2-9:        NOTRUN -> [SKIP][319] ([i915#2672] / [i915#3555] / [i915#5190]) +2 other tests skip
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling.html

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

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling:
    - shard-rkl:          [PASS][321] -> [SKIP][322] ([i915#14544] / [i915#3555]) +4 other tests skip
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling.html
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling:
    - shard-rkl:          NOTRUN -> [SKIP][323] ([i915#2672] / [i915#3555]) +1 other test skip
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html
    - shard-dg1:          NOTRUN -> [SKIP][324] ([i915#2672] / [i915#3555]) +4 other tests skip
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-13/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-dg1:          NOTRUN -> [SKIP][325] ([i915#2587] / [i915#2672]) +4 other tests skip
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-13/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode.html
    - shard-tglu:         NOTRUN -> [SKIP][326] ([i915#2587] / [i915#2672]) +2 other tests skip
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling:
    - shard-dg2-9:        NOTRUN -> [SKIP][327] ([i915#2672] / [i915#3555])
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling:
    - shard-rkl:          NOTRUN -> [SKIP][328] ([i915#14544] / [i915#3555])
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
    - shard-mtlp:         NOTRUN -> [SKIP][329] ([i915#2672] / [i915#3555] / [i915#8813]) +2 other tests skip
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
    - shard-dg2:          NOTRUN -> [SKIP][330] ([i915#2672] / [i915#3555] / [i915#5190]) +1 other test skip
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
    - shard-dg2:          NOTRUN -> [SKIP][331] ([i915#2672] / [i915#3555]) +4 other tests skip
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-7/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

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

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-rkl:          [PASS][333] -> [SKIP][334] ([i915#14544] / [i915#1849] / [i915#5354]) +7 other tests skip
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html
    - shard-dg1:          NOTRUN -> [SKIP][335] ([i915#8708]) +9 other tests skip
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-dg2-9:        NOTRUN -> [SKIP][336] ([i915#8708]) +8 other tests skip
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html

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

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-dg2:          [PASS][338] -> [ABORT][339] ([i915#8213])
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg2-2/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-10/igt@kms_frontbuffer_tracking@fbc-suspend.html
    - shard-rkl:          [PASS][340] -> [INCOMPLETE][341] ([i915#10056])
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-suspend.html

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

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-render:
    - shard-rkl:          NOTRUN -> [SKIP][343] ([i915#14544] / [i915#1849] / [i915#5354]) +16 other tests skip
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen:
    - shard-dg2-9:        NOTRUN -> [SKIP][344] ([i915#3458]) +8 other tests skip
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-plflip-blt:
    - shard-dg1:          NOTRUN -> [SKIP][345] +35 other tests skip
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-16/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render:
    - shard-dg2-9:        NOTRUN -> [SKIP][346] ([i915#5354]) +16 other tests skip
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu:
    - shard-rkl:          NOTRUN -> [SKIP][347] ([i915#1825]) +14 other tests skip
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt:
    - shard-rkl:          NOTRUN -> [SKIP][348] ([i915#3023]) +16 other tests skip
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt:
    - shard-mtlp:         NOTRUN -> [SKIP][349] ([i915#1825]) +23 other tests skip
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt.html

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

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

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

  * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu:
    - shard-dg1:          NOTRUN -> [SKIP][353] ([i915#3458]) +15 other tests skip
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-17/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu.html

  * igt@kms_hdr@bpc-switch-suspend:
    - shard-tglu:         NOTRUN -> [SKIP][354] ([i915#3555] / [i915#8228]) +2 other tests skip
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-6/igt@kms_hdr@bpc-switch-suspend.html

  * igt@kms_hdr@invalid-hdr:
    - shard-tglu-1:       NOTRUN -> [SKIP][355] ([i915#3555] / [i915#8228])
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_hdr@invalid-hdr.html

  * igt@kms_hdr@static-swap:
    - shard-dg2:          NOTRUN -> [SKIP][356] ([i915#3555] / [i915#8228]) +1 other test skip
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-6/igt@kms_hdr@static-swap.html

  * igt@kms_invalid_mode@bad-hsync-start:
    - shard-rkl:          NOTRUN -> [SKIP][357] ([i915#14544] / [i915#3555] / [i915#8826]) +1 other test skip
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_invalid_mode@bad-hsync-start.html

  * igt@kms_invalid_mode@bad-vsync-end:
    - shard-rkl:          [PASS][358] -> [SKIP][359] ([i915#14544] / [i915#3555] / [i915#8826])
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_invalid_mode@bad-vsync-end.html
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_invalid_mode@bad-vsync-end.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-dg2-9:        NOTRUN -> [SKIP][360] ([i915#10656]) +1 other test skip
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-dg2:          [PASS][361] -> [SKIP][362] ([i915#12388])
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg2-11/igt@kms_joiner@basic-force-big-joiner.html
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-6/igt@kms_joiner@basic-force-big-joiner.html
    - shard-tglu-1:       NOTRUN -> [SKIP][363] ([i915#12388])
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_joiner@basic-force-ultra-joiner:
    - shard-mtlp:         NOTRUN -> [SKIP][364] ([i915#10656]) +1 other test skip
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-1/igt@kms_joiner@basic-force-ultra-joiner.html
    - shard-rkl:          NOTRUN -> [SKIP][365] ([i915#12394])
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_joiner@basic-force-ultra-joiner.html

  * igt@kms_joiner@basic-ultra-joiner:
    - shard-tglu:         NOTRUN -> [SKIP][366] ([i915#12339])
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-2/igt@kms_joiner@basic-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-ultra-joiner:
    - shard-mtlp:         NOTRUN -> [SKIP][367] ([i915#12339])
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@kms_joiner@invalid-modeset-ultra-joiner.html
    - shard-dg2:          NOTRUN -> [SKIP][368] ([i915#12339])
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-10/igt@kms_joiner@invalid-modeset-ultra-joiner.html
    - shard-tglu-1:       NOTRUN -> [SKIP][369] ([i915#12339])
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_joiner@invalid-modeset-ultra-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-tglu:         NOTRUN -> [SKIP][370] ([i915#1839])
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-6/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_panel_fitting@atomic-fastset:
    - shard-tglu-1:       NOTRUN -> [SKIP][371] ([i915#6301])
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_panel_fitting@atomic-fastset.html

  * igt@kms_panel_fitting@legacy:
    - shard-dg2:          NOTRUN -> [SKIP][372] ([i915#6301])
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-4/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_b_c_ivb@disable-pipe-b-enable-pipe-c:
    - shard-dg2:          NOTRUN -> [SKIP][373] +19 other tests skip
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-4/igt@kms_pipe_b_c_ivb@disable-pipe-b-enable-pipe-c.html

  * igt@kms_pipe_b_c_ivb@enable-pipe-c-while-b-has-3-lanes:
    - shard-tglu-1:       NOTRUN -> [SKIP][374] +42 other tests skip
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_pipe_b_c_ivb@enable-pipe-c-while-b-has-3-lanes.html

  * igt@kms_plane@planar-pixel-format-settings:
    - shard-rkl:          [PASS][375] -> [SKIP][376] ([i915#14544] / [i915#9581])
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_plane@planar-pixel-format-settings.html
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_plane@planar-pixel-format-settings.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a:
    - shard-rkl:          [PASS][377] -> [INCOMPLETE][378] ([i915#14412]) +1 other test incomplete
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a.html
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a.html

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

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

  * igt@kms_plane_alpha_blend@coverage-vs-premult-vs-constant:
    - shard-rkl:          [PASS][381] -> [SKIP][382] ([i915#14544] / [i915#7294])
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_plane_alpha_blend@coverage-vs-premult-vs-constant.html
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_plane_alpha_blend@coverage-vs-premult-vs-constant.html

  * igt@kms_plane_lowres@tiling-4:
    - shard-mtlp:         NOTRUN -> [SKIP][383] ([i915#10226] / [i915#11614] / [i915#3555] / [i915#8821])
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@kms_plane_lowres@tiling-4.html

  * igt@kms_plane_lowres@tiling-4@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][384] ([i915#11614] / [i915#3582]) +3 other tests skip
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@kms_plane_lowres@tiling-4@pipe-b-edp-1.html

  * igt@kms_plane_multiple@2x-tiling-none:
    - shard-mtlp:         NOTRUN -> [SKIP][385] ([i915#13958])
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-3/igt@kms_plane_multiple@2x-tiling-none.html
    - shard-dg2:          NOTRUN -> [SKIP][386] ([i915#13958])
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-6/igt@kms_plane_multiple@2x-tiling-none.html
    - shard-rkl:          NOTRUN -> [SKIP][387] ([i915#13958])
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_plane_multiple@2x-tiling-none.html
    - shard-tglu-1:       NOTRUN -> [SKIP][388] ([i915#13958])
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_plane_multiple@2x-tiling-none.html
    - shard-dg1:          NOTRUN -> [SKIP][389] ([i915#13958])
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@kms_plane_multiple@2x-tiling-none.html

  * igt@kms_plane_multiple@tiling-none@pipe-b-hdmi-a-2:
    - shard-glk:          NOTRUN -> [ABORT][390] ([i915#14804]) +5 other tests abort
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk8/igt@kms_plane_multiple@tiling-none@pipe-b-hdmi-a-2.html

  * igt@kms_plane_scaling@2x-scaler-multi-pipe:
    - shard-dg2:          NOTRUN -> [SKIP][391] ([i915#13046] / [i915#5354] / [i915#9423])
   [391]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-1/igt@kms_plane_scaling@2x-scaler-multi-pipe.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5:
    - shard-rkl:          [PASS][392] -> [SKIP][393] ([i915#12247] / [i915#14544] / [i915#6953] / [i915#8152])
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_plane_scaling@planes-downscale-factor-0-5.html
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-5.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a:
    - shard-rkl:          [PASS][394] -> [SKIP][395] ([i915#12247] / [i915#14544]) +2 other tests skip
   [394]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a.html
   [395]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75:
    - shard-rkl:          [PASS][396] -> [SKIP][397] ([i915#14544] / [i915#3555] / [i915#6953] / [i915#8152])
   [396]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75.html
   [397]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/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:          [PASS][398] -> [SKIP][399] ([i915#12247] / [i915#14544] / [i915#8152]) +3 other tests skip
   [398]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-b.html
   [399]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-b.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5:
    - shard-mtlp:         NOTRUN -> [SKIP][400] ([i915#12247] / [i915#6953])
   [400]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5.html

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

  * igt@kms_pm_backlight@bad-brightness:
    - shard-rkl:          NOTRUN -> [SKIP][402] ([i915#14544] / [i915#5354])
   [402]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_pm_backlight@bad-brightness.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-dg2:          NOTRUN -> [SKIP][403] ([i915#9685]) +2 other tests skip
   [403]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-3/igt@kms_pm_dc@dc3co-vpb-simulation.html
    - shard-tglu:         NOTRUN -> [SKIP][404] ([i915#9685])
   [404]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-10/igt@kms_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][405] ([i915#14104])
   [405]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-10/igt@kms_pm_dc@dc6-dpms.html
    - shard-rkl:          NOTRUN -> [SKIP][406] ([i915#3361])
   [406]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_pm_dc@dc6-dpms.html
    - shard-tglu:         NOTRUN -> [FAIL][407] ([i915#9295])
   [407]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-4/igt@kms_pm_dc@dc6-dpms.html

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

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

  * igt@kms_pm_rpm@cursor-dpms:
    - shard-rkl:          [PASS][411] -> [SKIP][412] ([i915#14544] / [i915#1849])
   [411]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_pm_rpm@cursor-dpms.html
   [412]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_pm_rpm@cursor-dpms.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-rkl:          [PASS][413] -> [SKIP][414] ([i915#14544] / [i915#9519])
   [413]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [414]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-dg2:          NOTRUN -> [SKIP][415] ([i915#9519])
   [415]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-11/igt@kms_pm_rpm@modeset-lpsp.html

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

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-rkl:          [PASS][417] -> [SKIP][418] ([i915#9519]) +2 other tests skip
   [417]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [418]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
    - shard-mtlp:         NOTRUN -> [SKIP][419] ([i915#9519]) +1 other test skip
   [419]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-2/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

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

  * igt@kms_prime@basic-crc-vgem:
    - shard-dg2:          NOTRUN -> [SKIP][421] ([i915#6524] / [i915#6805])
   [421]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-11/igt@kms_prime@basic-crc-vgem.html

  * igt@kms_prime@basic-modeset-hybrid:
    - shard-dg2-9:        NOTRUN -> [SKIP][422] ([i915#6524] / [i915#6805])
   [422]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_prime@basic-modeset-hybrid.html

  * igt@kms_properties@plane-properties-legacy:
    - shard-rkl:          [PASS][423] -> [SKIP][424] ([i915#11521] / [i915#14544])
   [423]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_properties@plane-properties-legacy.html
   [424]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_properties@plane-properties-legacy.html

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

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

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

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

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

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf:
    - shard-tglu-1:       NOTRUN -> [SKIP][430] ([i915#11520]) +3 other tests skip
   [430]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-1/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf.html
    - shard-mtlp:         NOTRUN -> [SKIP][431] ([i915#12316]) +6 other tests skip
   [431]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][432] ([i915#9808]) +2 other tests skip
   [432]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf@pipe-a-edp-1.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf:
    - shard-rkl:          NOTRUN -> [SKIP][433] ([i915#11520] / [i915#14544])
   [433]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area:
    - shard-rkl:          NOTRUN -> [SKIP][434] ([i915#11520]) +3 other tests skip
   [434]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area.html
    - shard-snb:          NOTRUN -> [SKIP][435] ([i915#11520]) +4 other tests skip
   [435]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-snb6/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area.html
    - shard-dg1:          NOTRUN -> [SKIP][436] ([i915#11520]) +5 other tests skip
   [436]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-19/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area.html

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

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

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

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

  * igt@kms_psr@fbc-psr2-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][441] ([i915#1072] / [i915#14544] / [i915#9732]) +6 other tests skip
   [441]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_psr@fbc-psr2-suspend.html

  * igt@kms_psr@pr-basic:
    - shard-tglu:         NOTRUN -> [SKIP][442] ([i915#9732]) +25 other tests skip
   [442]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-4/igt@kms_psr@pr-basic.html
    - shard-mtlp:         NOTRUN -> [SKIP][443] ([i915#9688]) +10 other tests skip
   [443]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@kms_psr@pr-basic.html

  * igt@kms_psr@pr-suspend:
    - shard-dg1:          NOTRUN -> [SKIP][444] ([i915#1072] / [i915#9732]) +15 other tests skip
   [444]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@kms_psr@pr-suspend.html

  * igt@kms_psr@psr2-cursor-blt:
    - shard-dg2-9:        NOTRUN -> [SKIP][445] ([i915#1072] / [i915#9732]) +10 other tests skip
   [445]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_psr@psr2-cursor-blt.html

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

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-0:
    - shard-dg1:          NOTRUN -> [SKIP][447] ([i915#5289])
   [447]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-13/igt@kms_rotation_crc@primary-4-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-0:
    - shard-dg2:          NOTRUN -> [SKIP][448] ([i915#5190]) +2 other tests skip
   [448]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-8/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html

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

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-tglu:         NOTRUN -> [SKIP][450] ([i915#5289]) +2 other tests skip
   [450]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-dg2:          NOTRUN -> [SKIP][451] ([i915#12755] / [i915#5190])
   [451]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html
    - shard-rkl:          NOTRUN -> [SKIP][452] ([i915#5289]) +1 other test skip
   [452]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

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

  * igt@kms_rotation_crc@sprite-rotation-90:
    - shard-dg2:          NOTRUN -> [SKIP][454] ([i915#12755]) +1 other test skip
   [454]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-8/igt@kms_rotation_crc@sprite-rotation-90.html

  * igt@kms_scaling_modes@scaling-mode-none:
    - shard-mtlp:         NOTRUN -> [SKIP][455] ([i915#3555] / [i915#5030] / [i915#9041])
   [455]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@kms_scaling_modes@scaling-mode-none.html

  * igt@kms_scaling_modes@scaling-mode-none@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][456] ([i915#5030]) +2 other tests skip
   [456]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@kms_scaling_modes@scaling-mode-none@pipe-a-edp-1.html

  * igt@kms_scaling_modes@scaling-mode-none@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][457] ([i915#5030] / [i915#9041])
   [457]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-6/igt@kms_scaling_modes@scaling-mode-none@pipe-d-edp-1.html

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

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

  * igt@kms_setmode@basic:
    - shard-snb:          NOTRUN -> [FAIL][460] ([i915#5465]) +2 other tests fail
   [460]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-snb7/igt@kms_setmode@basic.html

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

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-dg1:          NOTRUN -> [SKIP][462] ([i915#8623])
   [462]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-19/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
    - shard-tglu:         NOTRUN -> [SKIP][463] ([i915#8623])
   [463]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
    - shard-mtlp:         NOTRUN -> [SKIP][464] ([i915#8623])
   [464]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
    - shard-dg2-9:        NOTRUN -> [SKIP][465] ([i915#8623])
   [465]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_vblank@ts-continuation-modeset:
    - shard-glk10:        NOTRUN -> [SKIP][466] +274 other tests skip
   [466]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk10/igt@kms_vblank@ts-continuation-modeset.html

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

  * igt@kms_vrr@flip-suspend:
    - shard-mtlp:         NOTRUN -> [SKIP][468] ([i915#3555] / [i915#8808])
   [468]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@kms_vrr@flip-suspend.html

  * igt@kms_vrr@lobf:
    - shard-tglu:         NOTRUN -> [SKIP][469] ([i915#11920])
   [469]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-9/igt@kms_vrr@lobf.html

  * igt@kms_vrr@max-min:
    - shard-tglu:         NOTRUN -> [SKIP][470] ([i915#9906])
   [470]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-7/igt@kms_vrr@max-min.html
    - shard-dg2:          NOTRUN -> [SKIP][471] ([i915#9906])
   [471]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@kms_vrr@max-min.html

  * igt@kms_writeback@writeback-check-output:
    - shard-dg1:          NOTRUN -> [SKIP][472] ([i915#2437])
   [472]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-18/igt@kms_writeback@writeback-check-output.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-dg2:          NOTRUN -> [SKIP][473] ([i915#2437] / [i915#9412])
   [473]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-1/igt@kms_writeback@writeback-check-output-xrgb2101010.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-glk:          NOTRUN -> [SKIP][474] ([i915#2437])
   [474]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk8/igt@kms_writeback@writeback-fb-id.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-dg2-9:        NOTRUN -> [SKIP][475] ([i915#2437] / [i915#9412])
   [475]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
    - shard-tglu:         NOTRUN -> [SKIP][476] ([i915#2437] / [i915#9412])
   [476]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-8/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@kms_writeback@writeback-pixel-formats:
    - shard-rkl:          NOTRUN -> [SKIP][477] ([i915#2437] / [i915#9412])
   [477]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_writeback@writeback-pixel-formats.html

  * igt@perf@per-context-mode-unprivileged:
    - shard-rkl:          NOTRUN -> [SKIP][478] ([i915#2435])
   [478]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@perf@per-context-mode-unprivileged.html
    - shard-dg1:          NOTRUN -> [SKIP][479] ([i915#2433])
   [479]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@perf@per-context-mode-unprivileged.html

  * igt@perf_pmu@busy-double-start@bcs0:
    - shard-mtlp:         [PASS][480] -> [FAIL][481] ([i915#4349])
   [480]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-mtlp-2/igt@perf_pmu@busy-double-start@bcs0.html
   [481]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@perf_pmu@busy-double-start@bcs0.html

  * igt@perf_pmu@most-busy-check-all:
    - shard-rkl:          [PASS][482] -> [FAIL][483] ([i915#4349]) +1 other test fail
   [482]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@perf_pmu@most-busy-check-all.html
   [483]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@perf_pmu@most-busy-check-all.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-tglu:         NOTRUN -> [SKIP][484] ([i915#8516])
   [484]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-4/igt@perf_pmu@rc6-all-gts.html
    - shard-dg2:          NOTRUN -> [SKIP][485] ([i915#8516])
   [485]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-8/igt@perf_pmu@rc6-all-gts.html

  * igt@perf_pmu@rc6-suspend:
    - shard-glk11:        NOTRUN -> [INCOMPLETE][486] ([i915#13356])
   [486]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk11/igt@perf_pmu@rc6-suspend.html

  * igt@prime_busy@hang:
    - shard-rkl:          [PASS][487] -> [DMESG-WARN][488] ([i915#12917] / [i915#12964]) +1 other test dmesg-warn
   [487]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@prime_busy@hang.html
   [488]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@prime_busy@hang.html

  * igt@prime_vgem@basic-fence-mmap:
    - shard-dg1:          NOTRUN -> [SKIP][489] ([i915#3708] / [i915#4077])
   [489]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-16/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-write:
    - shard-mtlp:         NOTRUN -> [SKIP][490] ([i915#10216] / [i915#3708])
   [490]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-7/igt@prime_vgem@basic-write.html

  * igt@prime_vgem@coherency-gtt:
    - shard-dg2-9:        NOTRUN -> [SKIP][491] ([i915#3708] / [i915#4077])
   [491]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-9/igt@prime_vgem@coherency-gtt.html
    - shard-mtlp:         NOTRUN -> [SKIP][492] ([i915#3708] / [i915#4077])
   [492]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-5/igt@prime_vgem@coherency-gtt.html

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

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

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

  
#### Possible fixes ####

  * igt@fbdev@read:
    - shard-rkl:          [SKIP][496] ([i915#14544] / [i915#2582]) -> [PASS][497]
   [496]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@fbdev@read.html
   [497]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@fbdev@read.html

  * igt@gem_eio@in-flight-suspend:
    - shard-rkl:          [DMESG-WARN][498] ([i915#12964]) -> [PASS][499] +27 other tests pass
   [498]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@gem_eio@in-flight-suspend.html
   [499]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gem_eio@in-flight-suspend.html

  * igt@gem_eio@unwedge-stress:
    - shard-dg1:          [FAIL][500] ([i915#5784]) -> [PASS][501]
   [500]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-19/igt@gem_eio@unwedge-stress.html
   [501]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-16/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_whisper@basic-queues-priority:
    - shard-rkl:          [DMESG-WARN][502] ([i915#12917] / [i915#12964]) -> [PASS][503] +2 other tests pass
   [502]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@gem_exec_whisper@basic-queues-priority.html
   [503]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@gem_exec_whisper@basic-queues-priority.html

  * igt@gem_pxp@protected-encrypted-src-copy-not-readible:
    - shard-rkl:          [SKIP][504] ([i915#14544] / [i915#4270]) -> [PASS][505]
   [504]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html
   [505]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html

  * igt@i915_suspend@basic-s2idle-without-i915:
    - shard-mtlp:         [ABORT][506] ([i915#14804]) -> [PASS][507] +1 other test pass
   [506]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-mtlp-5/igt@i915_suspend@basic-s2idle-without-i915.html
   [507]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-1/igt@i915_suspend@basic-s2idle-without-i915.html

  * igt@kms_atomic_transition@modeset-transition-fencing:
    - shard-glk:          [ABORT][508] ([i915#14804]) -> [PASS][509] +3 other tests pass
   [508]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-glk5/igt@kms_atomic_transition@modeset-transition-fencing.html
   [509]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-glk8/igt@kms_atomic_transition@modeset-transition-fencing.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-mtlp:         [FAIL][510] ([i915#5138]) -> [PASS][511]
   [510]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-mtlp-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [511]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - shard-dg1:          [DMESG-WARN][512] ([i915#4423]) -> [PASS][513]
   [512]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-14/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html
   [513]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html

  * igt@kms_color@ctm-green-to-red:
    - shard-rkl:          [SKIP][514] ([i915#12655] / [i915#14544]) -> [PASS][515] +1 other test pass
   [514]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_color@ctm-green-to-red.html
   [515]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_color@ctm-green-to-red.html

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

  * igt@kms_concurrent@multi-plane-atomic-lowres:
    - shard-snb:          [ABORT][518] ([i915#14804]) -> [PASS][519] +1 other test pass
   [518]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-snb4/igt@kms_concurrent@multi-plane-atomic-lowres.html
   [519]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-snb7/igt@kms_concurrent@multi-plane-atomic-lowres.html

  * igt@kms_cursor_crc@cursor-onscreen-256x85:
    - shard-tglu:         [FAIL][520] ([i915#13566]) -> [PASS][521] +1 other test pass
   [520]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-tglu-6/igt@kms_cursor_crc@cursor-onscreen-256x85.html
   [521]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-6/igt@kms_cursor_crc@cursor-onscreen-256x85.html

  * igt@kms_cursor_crc@cursor-onscreen-256x85@pipe-a-hdmi-a-2:
    - shard-rkl:          [FAIL][522] ([i915#13566]) -> [PASS][523] +1 other test pass
   [522]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_cursor_crc@cursor-onscreen-256x85@pipe-a-hdmi-a-2.html
   [523]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_cursor_crc@cursor-onscreen-256x85@pipe-a-hdmi-a-2.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size:
    - shard-rkl:          [SKIP][524] ([i915#11190] / [i915#14544]) -> [PASS][525] +2 other tests pass
   [524]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size.html
   [525]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
    - shard-snb:          [SKIP][526] -> [PASS][527]
   [526]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-snb4/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html
   [527]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-snb7/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html

  * igt@kms_flip@bo-too-big:
    - shard-rkl:          [SKIP][528] ([i915#14544] / [i915#3637]) -> [PASS][529] +4 other tests pass
   [528]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_flip@bo-too-big.html
   [529]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-7/igt@kms_flip@bo-too-big.html

  * igt@kms_flip@flip-vs-dpms-on-nop:
    - shard-rkl:          [SKIP][530] ([i915#14544] / [i915#14553]) -> [PASS][531]
   [530]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_flip@flip-vs-dpms-on-nop.html
   [531]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_flip@flip-vs-dpms-on-nop.html

  * igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a3:
    - shard-dg2:          [FAIL][532] ([i915#13027]) -> [PASS][533] +1 other test pass
   [532]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg2-6/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a3.html
   [533]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-1/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a3.html

  * igt@kms_flip@plain-flip-fb-recreate-interruptible:
    - shard-tglu:         [FAIL][534] ([i915#14600]) -> [PASS][535] +3 other tests pass
   [534]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-tglu-8/igt@kms_flip@plain-flip-fb-recreate-interruptible.html
   [535]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-7/igt@kms_flip@plain-flip-fb-recreate-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling:
    - shard-rkl:          [SKIP][536] ([i915#14544] / [i915#3555]) -> [PASS][537] +3 other tests pass
   [536]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling.html
   [537]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc:
    - shard-rkl:          [SKIP][538] ([i915#14544] / [i915#1849] / [i915#5354]) -> [PASS][539] +5 other tests pass
   [538]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc.html
   [539]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc.html

  * igt@kms_invalid_mode@clock-too-high:
    - shard-rkl:          [SKIP][540] ([i915#14544] / [i915#3555] / [i915#8826]) -> [PASS][541] +1 other test pass
   [540]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_invalid_mode@clock-too-high.html
   [541]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-7/igt@kms_invalid_mode@clock-too-high.html

  * igt@kms_lease@lease-invalid-plane:
    - shard-rkl:          [SKIP][542] ([i915#14544]) -> [PASS][543] +33 other tests pass
   [542]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_lease@lease-invalid-plane.html
   [543]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_lease@lease-invalid-plane.html

  * igt@kms_plane_cursor@primary:
    - shard-dg1:          [ABORT][544] ([i915#14804]) -> [PASS][545]
   [544]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-14/igt@kms_plane_cursor@primary.html
   [545]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-12/igt@kms_plane_cursor@primary.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers:
    - shard-rkl:          [SKIP][546] ([i915#14544] / [i915#8152]) -> [PASS][547]
   [546]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers.html
   [547]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling:
    - shard-rkl:          [SKIP][548] ([i915#12247] / [i915#14544] / [i915#8152]) -> [PASS][549] +5 other tests pass
   [548]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling.html
   [549]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-factor-0-25:
    - shard-rkl:          [SKIP][550] ([i915#14544] / [i915#6953] / [i915#8152]) -> [PASS][551]
   [550]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-factor-0-25.html
   [551]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-factor-0-25@pipe-a:
    - shard-rkl:          [SKIP][552] ([i915#12247] / [i915#14544]) -> [PASS][553] +3 other tests pass
   [552]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-factor-0-25@pipe-a.html
   [553]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-factor-0-25@pipe-a.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-rkl:          [SKIP][554] ([i915#9519]) -> [PASS][555]
   [554]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_pm_rpm@modeset-lpsp.html
   [555]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-7/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-rkl:          [SKIP][556] ([i915#14544] / [i915#9519]) -> [PASS][557]
   [556]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [557]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_pm_rpm@system-suspend-modeset:
    - shard-rkl:          [INCOMPLETE][558] ([i915#14419]) -> [PASS][559]
   [558]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-3/igt@kms_pm_rpm@system-suspend-modeset.html
   [559]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_pm_rpm@system-suspend-modeset.html

  * igt@kms_properties@plane-properties-atomic:
    - shard-rkl:          [SKIP][560] ([i915#11521] / [i915#14544]) -> [PASS][561]
   [560]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_properties@plane-properties-atomic.html
   [561]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@kms_properties@plane-properties-atomic.html

  * igt@kms_setmode@basic@pipe-b-edp-1:
    - shard-mtlp:         [FAIL][562] ([i915#5465]) -> [PASS][563] +2 other tests pass
   [562]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-mtlp-8/igt@kms_setmode@basic@pipe-b-edp-1.html
   [563]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-3/igt@kms_setmode@basic@pipe-b-edp-1.html

  
#### Warnings ####

  * igt@gem_basic@multigpu-create-close:
    - shard-rkl:          [SKIP][564] ([i915#7697]) -> [SKIP][565] ([i915#14544] / [i915#7697]) +1 other test skip
   [564]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@gem_basic@multigpu-create-close.html
   [565]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gem_basic@multigpu-create-close.html

  * igt@gem_ccs@large-ctrl-surf-copy:
    - shard-rkl:          [SKIP][566] ([i915#13008] / [i915#14544]) -> [SKIP][567] ([i915#13008])
   [566]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@gem_ccs@large-ctrl-surf-copy.html
   [567]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@gem_ccs@large-ctrl-surf-copy.html

  * igt@gem_ctx_sseu@engines:
    - shard-rkl:          [SKIP][568] ([i915#14544] / [i915#280]) -> [SKIP][569] ([i915#280])
   [568]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@gem_ctx_sseu@engines.html
   [569]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@gem_ctx_sseu@engines.html

  * igt@gem_exec_balancer@parallel-balancer:
    - shard-rkl:          [SKIP][570] ([i915#4525]) -> [SKIP][571] ([i915#14544] / [i915#4525]) +1 other test skip
   [570]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@gem_exec_balancer@parallel-balancer.html
   [571]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gem_exec_balancer@parallel-balancer.html

  * igt@gem_exec_reloc@basic-gtt-read:
    - shard-rkl:          [SKIP][572] ([i915#14544] / [i915#3281]) -> [SKIP][573] ([i915#3281]) +5 other tests skip
   [572]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-read.html
   [573]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@gem_exec_reloc@basic-gtt-read.html

  * igt@gem_exec_reloc@basic-gtt-wc-noreloc:
    - shard-rkl:          [SKIP][574] ([i915#3281]) -> [SKIP][575] ([i915#14544] / [i915#3281]) +9 other tests skip
   [574]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html
   [575]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html

  * igt@gem_lmem_swapping@basic:
    - shard-rkl:          [SKIP][576] ([i915#14544] / [i915#4613]) -> [SKIP][577] ([i915#4613]) +1 other test skip
   [576]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@gem_lmem_swapping@basic.html
   [577]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@heavy-verify-random-ccs:
    - shard-rkl:          [SKIP][578] ([i915#4613]) -> [SKIP][579] ([i915#14544] / [i915#4613]) +4 other tests skip
   [578]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-2/igt@gem_lmem_swapping@heavy-verify-random-ccs.html
   [579]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gem_lmem_swapping@heavy-verify-random-ccs.html

  * igt@gem_lmem_swapping@verify-ccs:
    - shard-dg1:          [ABORT][580] ([i915#14804]) -> [SKIP][581] ([i915#12193])
   [580]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-12/igt@gem_lmem_swapping@verify-ccs.html
   [581]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-17/igt@gem_lmem_swapping@verify-ccs.html

  * igt@gem_lmem_swapping@verify-ccs@lmem0:
    - shard-dg1:          [ABORT][582] ([i915#14804]) -> [SKIP][583] ([i915#4565])
   [582]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-12/igt@gem_lmem_swapping@verify-ccs@lmem0.html
   [583]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-17/igt@gem_lmem_swapping@verify-ccs@lmem0.html

  * igt@gem_partial_pwrite_pread@reads-uncached:
    - shard-rkl:          [SKIP][584] ([i915#3282]) -> [SKIP][585] ([i915#14544] / [i915#3282]) +6 other tests skip
   [584]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-2/igt@gem_partial_pwrite_pread@reads-uncached.html
   [585]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gem_partial_pwrite_pread@reads-uncached.html

  * igt@gem_pread@snoop:
    - shard-rkl:          [SKIP][586] ([i915#14544] / [i915#3282]) -> [SKIP][587] ([i915#3282]) +1 other test skip
   [586]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@gem_pread@snoop.html
   [587]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@gem_pread@snoop.html

  * igt@gem_pxp@create-valid-protected-context:
    - shard-rkl:          [SKIP][588] ([i915#14544] / [i915#4270]) -> [TIMEOUT][589] ([i915#12964])
   [588]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@gem_pxp@create-valid-protected-context.html
   [589]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@gem_pxp@create-valid-protected-context.html

  * igt@gem_set_tiling_vs_blt@tiled-to-untiled:
    - shard-rkl:          [SKIP][590] ([i915#8411]) -> [SKIP][591] ([i915#14544] / [i915#8411]) +2 other tests skip
   [590]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
   [591]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html

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

  * igt@gem_userptr_blits@unsync-unmap-cycles:
    - shard-rkl:          [SKIP][594] ([i915#3297]) -> [SKIP][595] ([i915#14544] / [i915#3297]) +4 other tests skip
   [594]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@gem_userptr_blits@unsync-unmap-cycles.html
   [595]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gem_userptr_blits@unsync-unmap-cycles.html

  * igt@gen9_exec_parse@bb-chained:
    - shard-rkl:          [SKIP][596] ([i915#14544] / [i915#2527]) -> [SKIP][597] ([i915#2527]) +2 other tests skip
   [596]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@gen9_exec_parse@bb-chained.html
   [597]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@gen9_exec_parse@bb-chained.html

  * igt@gen9_exec_parse@bb-start-out:
    - shard-rkl:          [SKIP][598] ([i915#2527]) -> [SKIP][599] ([i915#14544] / [i915#2527]) +2 other tests skip
   [598]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-2/igt@gen9_exec_parse@bb-start-out.html
   [599]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@gen9_exec_parse@bb-start-out.html

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

  * igt@i915_pm_rpm@gem-evict-pwrite:
    - shard-dg1:          [SKIP][602] ([i915#4077]) -> [SKIP][603] ([i915#4077] / [i915#4423])
   [602]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-16/igt@i915_pm_rpm@gem-evict-pwrite.html
   [603]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-16/igt@i915_pm_rpm@gem-evict-pwrite.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-mtlp:         [SKIP][604] ([i915#6645]) -> [ABORT][605] ([i915#14804])
   [604]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-mtlp-8/igt@i915_suspend@basic-s3-without-i915.html
   [605]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-1/igt@i915_suspend@basic-s3-without-i915.html

  * igt@intel_hwmon@hwmon-write:
    - shard-rkl:          [SKIP][606] ([i915#7707]) -> [SKIP][607] ([i915#14544] / [i915#7707])
   [606]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-3/igt@intel_hwmon@hwmon-write.html
   [607]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@intel_hwmon@hwmon-write.html

  * igt@kms_big_fb@4-tiled-16bpp-rotate-90:
    - shard-rkl:          [SKIP][608] ([i915#5286]) -> [SKIP][609] ([i915#14544]) +3 other tests skip
   [608]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_big_fb@4-tiled-16bpp-rotate-90.html
   [609]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_big_fb@4-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-270:
    - shard-rkl:          [SKIP][610] ([i915#14544]) -> [SKIP][611] ([i915#5286]) +1 other test skip
   [610]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
   [611]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@linear-16bpp-rotate-270:
    - shard-rkl:          [SKIP][612] ([i915#14544]) -> [SKIP][613] ([i915#3638]) +1 other test skip
   [612]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_big_fb@linear-16bpp-rotate-270.html
   [613]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_big_fb@linear-16bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-90:
    - shard-rkl:          [SKIP][614] ([i915#3638]) -> [SKIP][615] ([i915#14544]) +1 other test skip
   [614]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html
   [615]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-rkl:          [DMESG-WARN][616] ([i915#12964]) -> [SKIP][617] ([i915#14544]) +1 other test skip
   [616]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
   [617]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs:
    - shard-rkl:          [SKIP][618] ([i915#14098] / [i915#6095]) -> [SKIP][619] ([i915#14544]) +11 other tests skip
   [618]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs.html
   [619]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@bad-rotation-90-yf-tiled-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][620] ([i915#14098] / [i915#6095]) -> [SKIP][621] ([i915#6095]) +4 other tests skip
   [620]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_ccs@bad-rotation-90-yf-tiled-ccs@pipe-b-hdmi-a-2.html
   [621]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_ccs@bad-rotation-90-yf-tiled-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs:
    - shard-rkl:          [SKIP][622] ([i915#12313]) -> [SKIP][623] ([i915#14544]) +2 other tests skip
   [622]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html
   [623]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
    - shard-rkl:          [SKIP][624] ([i915#14544]) -> [SKIP][625] ([i915#12313])
   [624]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
   [625]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs:
    - shard-rkl:          [SKIP][626] ([i915#14544]) -> [SKIP][627] ([i915#14098] / [i915#6095]) +5 other tests skip
   [626]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs.html
   [627]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][628] ([i915#6095]) -> [SKIP][629] ([i915#14098] / [i915#6095])
   [628]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2.html
   [629]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-rkl:          [SKIP][630] ([i915#14544] / [i915#3742]) -> [SKIP][631] ([i915#3742])
   [630]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_cdclk@mode-transition-all-outputs.html
   [631]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode:
    - shard-rkl:          [SKIP][632] ([i915#11151] / [i915#7828]) -> [SKIP][633] ([i915#11151] / [i915#14544] / [i915#7828]) +4 other tests skip
   [632]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode.html
   [633]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode.html

  * igt@kms_chamelium_hpd@vga-hpd-after-suspend:
    - shard-rkl:          [SKIP][634] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][635] ([i915#11151] / [i915#7828]) +1 other test skip
   [634]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_chamelium_hpd@vga-hpd-after-suspend.html
   [635]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_chamelium_hpd@vga-hpd-after-suspend.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-rkl:          [SKIP][636] ([i915#7118] / [i915#9424]) -> [SKIP][637] ([i915#14544])
   [636]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_content_protection@atomic-dpms.html
   [637]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@content-type-change:
    - shard-rkl:          [SKIP][638] ([i915#9424]) -> [SKIP][639] ([i915#14544])
   [638]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_content_protection@content-type-change.html
   [639]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_content_protection@content-type-change.html

  * igt@kms_content_protection@lic-type-0:
    - shard-rkl:          [SKIP][640] ([i915#14544]) -> [SKIP][641] ([i915#9424])
   [640]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_content_protection@lic-type-0.html
   [641]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_content_protection@lic-type-0.html

  * igt@kms_content_protection@srm:
    - shard-rkl:          [SKIP][642] ([i915#14544]) -> [SKIP][643] ([i915#7118])
   [642]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_content_protection@srm.html
   [643]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_content_protection@srm.html
    - shard-tglu:         [SKIP][644] ([i915#6944] / [i915#7116] / [i915#7118]) -> [ABORT][645] ([i915#14804])
   [644]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-tglu-6/igt@kms_content_protection@srm.html
   [645]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-5/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-dg1:          [SKIP][646] ([i915#13049] / [i915#4423]) -> [SKIP][647] ([i915#13049])
   [646]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-15/igt@kms_cursor_crc@cursor-onscreen-512x170.html
   [647]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-19/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-random-512x512:
    - shard-rkl:          [SKIP][648] ([i915#13049]) -> [SKIP][649] ([i915#14544]) +2 other tests skip
   [648]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_cursor_crc@cursor-random-512x512.html
   [649]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_cursor_crc@cursor-random-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x10:
    - shard-rkl:          [SKIP][650] ([i915#3555]) -> [SKIP][651] ([i915#14544]) +3 other tests skip
   [650]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
   [651]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-rkl:          [SKIP][652] ([i915#14544]) -> [SKIP][653] ([i915#13049])
   [652]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html
   [653]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_crc@cursor-sliding-128x42:
    - shard-rkl:          [SKIP][654] ([i915#14544]) -> [FAIL][655] ([i915#13566])
   [654]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_cursor_crc@cursor-sliding-128x42.html
   [655]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_cursor_crc@cursor-sliding-128x42.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-rkl:          [DMESG-WARN][656] ([i915#12917] / [i915#12964]) -> [DMESG-FAIL][657] ([i915#12964])
   [656]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_cursor_crc@cursor-sliding-256x85.html
   [657]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_cursor_crc@cursor-sliding-256x85@pipe-a-hdmi-a-1:
    - shard-rkl:          [DMESG-WARN][658] ([i915#12917] / [i915#12964]) -> [FAIL][659] ([i915#13566])
   [658]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_cursor_crc@cursor-sliding-256x85@pipe-a-hdmi-a-1.html
   [659]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_cursor_crc@cursor-sliding-256x85@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - shard-rkl:          [SKIP][660] ([i915#14544]) -> [SKIP][661] +11 other tests skip
   [660]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
   [661]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - shard-rkl:          [SKIP][662] ([i915#4103]) -> [SKIP][663] ([i915#11190] / [i915#14544])
   [662]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [663]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size:
    - shard-rkl:          [SKIP][664] -> [SKIP][665] ([i915#14544]) +12 other tests skip
   [664]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
   [665]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic:
    - shard-rkl:          [FAIL][666] ([i915#2346]) -> [SKIP][667] ([i915#14544])
   [666]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
   [667]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-rkl:          [SKIP][668] ([i915#14544]) -> [SKIP][669] ([i915#4103])
   [668]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
   [669]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
    - shard-rkl:          [SKIP][670] ([i915#14544]) -> [SKIP][671] ([i915#9723])
   [670]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
   [671]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-rkl:          [SKIP][672] ([i915#14544]) -> [SKIP][673] ([i915#13691])
   [672]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_display_modes@extended-mode-basic.html
   [673]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dsc@dsc-basic:
    - shard-rkl:          [SKIP][674] ([i915#3555] / [i915#3840]) -> [SKIP][675] ([i915#11190] / [i915#14544])
   [674]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_dsc@dsc-basic.html
   [675]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_dsc@dsc-basic.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-rkl:          [SKIP][676] ([i915#3840]) -> [SKIP][677] ([i915#14544])
   [676]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_dsc@dsc-fractional-bpp.html
   [677]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp.html

  * igt@kms_dsc@dsc-with-bpc:
    - shard-rkl:          [SKIP][678] ([i915#3555] / [i915#3840]) -> [SKIP][679] ([i915#14544])
   [678]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_dsc@dsc-with-bpc.html
   [679]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_dsc@dsc-with-bpc.html

  * igt@kms_feature_discovery@chamelium:
    - shard-rkl:          [SKIP][680] ([i915#4854]) -> [SKIP][681] ([i915#14544] / [i915#4854])
   [680]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_feature_discovery@chamelium.html
   [681]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_feature_discovery@chamelium.html

  * igt@kms_flip@2x-flip-vs-fences-interruptible:
    - shard-rkl:          [SKIP][682] ([i915#14544] / [i915#9934]) -> [SKIP][683] ([i915#9934]) +7 other tests skip
   [682]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_flip@2x-flip-vs-fences-interruptible.html
   [683]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_flip@2x-flip-vs-fences-interruptible.html

  * igt@kms_flip@2x-plain-flip:
    - shard-rkl:          [SKIP][684] ([i915#9934]) -> [SKIP][685] ([i915#14544] / [i915#9934]) +8 other tests skip
   [684]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_flip@2x-plain-flip.html
   [685]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_flip@2x-plain-flip.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
    - shard-rkl:          [SKIP][686] ([i915#2672] / [i915#3555]) -> [SKIP][687] ([i915#14544] / [i915#3555]) +3 other tests skip
   [686]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
   [687]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
    - shard-rkl:          [SKIP][688] ([i915#14544] / [i915#3555]) -> [SKIP][689] ([i915#2672] / [i915#3555]) +3 other tests skip
   [688]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html
   [689]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-7/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt:
    - shard-rkl:          [DMESG-WARN][690] ([i915#12964]) -> [SKIP][691] ([i915#14544] / [i915#1849] / [i915#5354])
   [690]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt.html
   [691]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-rkl:          [SKIP][692] ([i915#14544] / [i915#1849] / [i915#5354]) -> [SKIP][693] ([i915#3023]) +15 other tests skip
   [692]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt.html
   [693]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
    - shard-rkl:          [SKIP][694] ([i915#1825]) -> [SKIP][695] ([i915#14544] / [i915#1849] / [i915#5354]) +42 other tests skip
   [694]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html
   [695]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html

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

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-cpu:
    - shard-dg1:          [SKIP][698] ([i915#4423]) -> [SKIP][699]
   [698]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-cpu.html
   [699]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-modesetfrombusy:
    - shard-rkl:          [SKIP][700] ([i915#3023]) -> [SKIP][701] ([i915#14544] / [i915#1849] / [i915#5354]) +17 other tests skip
   [700]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html
   [701]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu:
    - shard-dg2:          [SKIP][702] ([i915#10433] / [i915#3458]) -> [SKIP][703] ([i915#3458]) +3 other tests skip
   [702]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu.html
   [703]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu.html

  * igt@kms_hdr@bpc-switch-suspend:
    - shard-rkl:          [SKIP][704] ([i915#14544]) -> [SKIP][705] ([i915#3555] / [i915#8228])
   [704]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_hdr@bpc-switch-suspend.html
   [705]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_hdr@bpc-switch-suspend.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-mtlp:         [SKIP][706] ([i915#12713]) -> [SKIP][707] ([i915#1187] / [i915#12713])
   [706]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-mtlp-3/igt@kms_hdr@brightness-with-hdr.html
   [707]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-mtlp-1/igt@kms_hdr@brightness-with-hdr.html
    - shard-dg1:          [SKIP][708] ([i915#12713]) -> [SKIP][709] ([i915#1187] / [i915#12713])
   [708]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-14/igt@kms_hdr@brightness-with-hdr.html
   [709]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-13/igt@kms_hdr@brightness-with-hdr.html
    - shard-tglu:         [SKIP][710] ([i915#12713]) -> [SKIP][711] ([i915#1187] / [i915#12713])
   [710]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-tglu-3/igt@kms_hdr@brightness-with-hdr.html
   [711]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-tglu-2/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-rkl:          [SKIP][712] ([i915#3555] / [i915#8228]) -> [SKIP][713] ([i915#14544]) +1 other test skip
   [712]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-2/igt@kms_hdr@static-toggle-suspend.html
   [713]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-rkl:          [SKIP][714] ([i915#10656]) -> [SKIP][715] ([i915#10656] / [i915#14544]) +1 other test skip
   [714]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_joiner@basic-big-joiner.html
   [715]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-rkl:          [SKIP][716] ([i915#13522] / [i915#14544]) -> [SKIP][717] ([i915#13522])
   [716]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
   [717]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-rkl:          [SKIP][718] ([i915#4070] / [i915#4816]) -> [SKIP][719] ([i915#1839] / [i915#4816])
   [718]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [719]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_plane_multiple@2x-tiling-y:
    - shard-rkl:          [SKIP][720] ([i915#13958]) -> [SKIP][721] ([i915#14544]) +1 other test skip
   [720]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_plane_multiple@2x-tiling-y.html
   [721]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_plane_multiple@2x-tiling-y.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-rkl:          [SKIP][722] ([i915#6953]) -> [SKIP][723] ([i915#14544] / [i915#6953] / [i915#8152])
   [722]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_plane_scaling@intel-max-src-size.html
   [723]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/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][724] ([i915#12247]) -> [SKIP][725] ([i915#12247] / [i915#14544]) +2 other tests skip
   [724]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html
   [725]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
    - shard-rkl:          [SKIP][726] ([i915#3555]) -> [SKIP][727] ([i915#14544] / [i915#3555] / [i915#8152])
   [726]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html
   [727]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b:
    - shard-rkl:          [SKIP][728] ([i915#12247]) -> [SKIP][729] ([i915#12247] / [i915#14544] / [i915#8152]) +4 other tests skip
   [728]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html
   [729]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-rkl:          [SKIP][730] ([i915#5354]) -> [SKIP][731] ([i915#14544] / [i915#5354])
   [730]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_pm_backlight@fade-with-dpms.html
   [731]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-rkl:          [SKIP][732] ([i915#9685]) -> [SKIP][733] ([i915#14544] / [i915#9685])
   [732]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-3/igt@kms_pm_dc@dc6-psr.html
   [733]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-rkl:          [SKIP][734] ([i915#14544] / [i915#9340]) -> [SKIP][735] ([i915#9340])
   [734]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_pm_lpsp@kms-lpsp.html
   [735]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_prime@basic-crc-hybrid:
    - shard-rkl:          [SKIP][736] ([i915#14544] / [i915#6524]) -> [SKIP][737] ([i915#6524])
   [736]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_prime@basic-crc-hybrid.html
   [737]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_prime@basic-crc-hybrid.html

  * igt@kms_prime@basic-modeset-hybrid:
    - shard-rkl:          [SKIP][738] ([i915#6524]) -> [SKIP][739] ([i915#14544] / [i915#6524])
   [738]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-2/igt@kms_prime@basic-modeset-hybrid.html
   [739]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_prime@basic-modeset-hybrid.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area:
    - shard-rkl:          [SKIP][740] ([i915#11520] / [i915#14544]) -> [SKIP][741] ([i915#11520]) +1 other test skip
   [740]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area.html
   [741]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-5/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area:
    - shard-rkl:          [SKIP][742] ([i915#11520]) -> [SKIP][743] ([i915#11520] / [i915#14544]) +8 other tests skip
   [742]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html
   [743]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf:
    - shard-dg1:          [SKIP][744] ([i915#11520]) -> [SKIP][745] ([i915#11520] / [i915#4423])
   [744]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-14/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html
   [745]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-17/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html

  * igt@kms_psr@fbc-psr2-sprite-plane-move:
    - shard-dg1:          [SKIP][746] ([i915#1072] / [i915#4423] / [i915#9732]) -> [SKIP][747] ([i915#1072] / [i915#9732])
   [746]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-14/igt@kms_psr@fbc-psr2-sprite-plane-move.html
   [747]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-15/igt@kms_psr@fbc-psr2-sprite-plane-move.html

  * igt@kms_psr@pr-sprite-mmap-gtt:
    - shard-rkl:          [SKIP][748] ([i915#1072] / [i915#9732]) -> [SKIP][749] ([i915#1072] / [i915#14544] / [i915#9732]) +15 other tests skip
   [748]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_psr@pr-sprite-mmap-gtt.html
   [749]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_psr@pr-sprite-mmap-gtt.html

  * igt@kms_psr@psr-primary-blt:
    - shard-dg1:          [SKIP][750] ([i915#1072] / [i915#9732]) -> [SKIP][751] ([i915#1072] / [i915#4423] / [i915#9732])
   [750]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-dg1-13/igt@kms_psr@psr-primary-blt.html
   [751]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-dg1-14/igt@kms_psr@psr-primary-blt.html

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

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-rkl:          [SKIP][754] ([i915#14544] / [i915#9685]) -> [SKIP][755] ([i915#9685])
   [754]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [755]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-4/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
    - shard-rkl:          [SKIP][756] ([i915#5289]) -> [SKIP][757] ([i915#14544])
   [756]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-2/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html
   [757]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-rkl:          [SKIP][758] ([i915#14544]) -> [SKIP][759] ([i915#5289])
   [758]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
   [759]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_setmode@invalid-clone-exclusive-crtc:
    - shard-rkl:          [SKIP][760] ([i915#3555]) -> [SKIP][761] ([i915#14544] / [i915#3555]) +1 other test skip
   [760]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-4/igt@kms_setmode@invalid-clone-exclusive-crtc.html
   [761]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_setmode@invalid-clone-exclusive-crtc.html

  * igt@kms_vrr@flip-basic-fastset:
    - shard-rkl:          [SKIP][762] ([i915#14544]) -> [SKIP][763] ([i915#9906])
   [762]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_vrr@flip-basic-fastset.html
   [763]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@kms_vrr@flip-basic-fastset.html

  * igt@kms_vrr@flipline:
    - shard-rkl:          [SKIP][764] ([i915#14544]) -> [SKIP][765] ([i915#3555]) +2 other tests skip
   [764]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_vrr@flipline.html
   [765]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-8/igt@kms_vrr@flipline.html

  * igt@kms_vrr@lobf:
    - shard-rkl:          [SKIP][766] ([i915#14544]) -> [SKIP][767] ([i915#11920])
   [766]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@kms_vrr@lobf.html
   [767]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-7/igt@kms_vrr@lobf.html

  * igt@kms_vrr@negative-basic:
    - shard-rkl:          [SKIP][768] ([i915#3555] / [i915#9906]) -> [SKIP][769] ([i915#14544])
   [768]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@kms_vrr@negative-basic.html
   [769]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_vrr@negative-basic.html

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - shard-rkl:          [SKIP][770] ([i915#9906]) -> [SKIP][771] ([i915#14544]) +2 other tests skip
   [770]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@kms_vrr@seamless-rr-switch-drrs.html
   [771]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_vrr@seamless-rr-switch-drrs.html

  * igt@kms_writeback@writeback-invalid-parameters:
    - shard-rkl:          [SKIP][772] ([i915#2437]) -> [SKIP][773] ([i915#14544] / [i915#2437])
   [772]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-2/igt@kms_writeback@writeback-invalid-parameters.html
   [773]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@kms_writeback@writeback-invalid-parameters.html

  * igt@perf@gen8-unprivileged-single-ctx-counters:
    - shard-rkl:          [SKIP][774] ([i915#2436]) -> [SKIP][775] ([i915#14544] / [i915#2436])
   [774]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@perf@gen8-unprivileged-single-ctx-counters.html
   [775]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@perf@gen8-unprivileged-single-ctx-counters.html

  * igt@perf@mi-rpc:
    - shard-rkl:          [SKIP][776] ([i915#2434]) -> [SKIP][777] ([i915#14544] / [i915#2434])
   [776]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-7/igt@perf@mi-rpc.html
   [777]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@perf@mi-rpc.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-rkl:          [SKIP][778] ([i915#8516]) -> [SKIP][779] ([i915#14544] / [i915#8516])
   [778]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@perf_pmu@rc6-all-gts.html
   [779]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@perf_pmu@rc6-all-gts.html

  * igt@prime_vgem@coherency-gtt:
    - shard-rkl:          [SKIP][780] ([i915#3708]) -> [SKIP][781] ([i915#14544] / [i915#3708])
   [780]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-5/igt@prime_vgem@coherency-gtt.html
   [781]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@prime_vgem@coherency-gtt.html

  * igt@prime_vgem@fence-read-hang:
    - shard-rkl:          [SKIP][782] ([i915#14544] / [i915#3708]) -> [SKIP][783] ([i915#3708])
   [782]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-6/igt@prime_vgem@fence-read-hang.html
   [783]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-2/igt@prime_vgem@fence-read-hang.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-rkl:          [SKIP][784] ([i915#9917]) -> [SKIP][785] ([i915#14544] / [i915#9917])
   [784]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8492/shard-rkl-8/igt@sriov_basic@enable-vfs-autoprobe-off.html
   [785]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13573/shard-rkl-6/igt@sriov_basic@enable-vfs-autoprobe-off.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#10056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10056
  [i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216
  [i915#10226]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10226
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10333]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10333
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647
  [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
  [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#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#11521]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11521
  [i915#11527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11527
  [i915#11614]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11614
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#1187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1187
  [i915#11920]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11920
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12169]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12169
  [i915#12193]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12193
  [i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12316]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12316
  [i915#12339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12339
  [i915#12358]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12358
  [i915#12388]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12388
  [i915#12394]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12394
  [i915#12655]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12655
  [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#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#12967]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12967
  [i915#13008]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13008
  [i915#13027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13027
  [i915#13029]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13029
  [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#13179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13179
  [i915#13328]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13328
  [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
  [i915#13522]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13522
  [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
  [i915#13665]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13665
  [i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
  [i915#13707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13707
  [i915#13729]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13729
  [i915#13748]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13748
  [i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
  [i915#13781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13781
  [i915#13783]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13783
  [i915#13784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13784
  [i915#13786]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13786
  [i915#13790]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13790
  [i915#13821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13821
  [i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
  [i915#14073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14073
  [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
  [i915#14104]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14104
  [i915#14118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14118
  [i915#14152]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14152
  [i915#14412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14412
  [i915#14419]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14419
  [i915#14498]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14498
  [i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
  [i915#14545]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14545
  [i915#14553]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14553
  [i915#14586]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14586
  [i915#14600]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14600
  [i915#14602]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14602
  [i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
  [i915#14804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14804
  [i915#14806]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14806
  [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#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
  [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#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681
  [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#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323
  [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#3582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3582
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
  [i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#4070]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4565]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
  [i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881
  [i915#5030]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5030
  [i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5465]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5465
  [i915#5723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5723
  [i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6188]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6188
  [i915#6230]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6230
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6645]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6645
  [i915#6805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6805
  [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#7178]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7178
  [i915#7294]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7294
  [i915#7582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7582
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7882]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7882
  [i915#8063]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8063
  [i915#8152]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8152
  [i915#8213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8213
  [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#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
  [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8808
  [i915#8810]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8810
  [i915#8812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8812
  [i915#8813]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8813
  [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
  [i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821
  [i915#8826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8826
  [i915#8898]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8898
  [i915#9041]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9041
  [i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
  [i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
  [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#9581]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9581
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808
  [i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
  [i915#9878]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9878
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934


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

  * CI: CI-20190529 -> None
  * IGT: IGT_8492 -> IGTPW_13573

  CI-20190529: 20190529
  CI_DRM_16980: 0aae2a6e4e71b046d167b9ad79e0ddd2d5d23e7d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_13573: 6ff070b516c6f320fbe5edae272f57f52eaab5cb @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8492: 1e6c0d07b83cde9f2300b193f441c37d9dde5981 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* Re: [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog
  2025-08-11 21:05 [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog Michael J. Ruhl
  2025-08-11 21:55 ` ✓ i915.CI.BAT: success for test/intel/xe_pmt: Add testing for BMG crashlog (rev3) Patchwork
  2025-08-11 23:37 ` ✗ i915.CI.Full: failure " Patchwork
@ 2025-08-27 13:52 ` Rodrigo Vivi
  2025-09-04 13:59   ` Ruhl, Michael J
  2025-08-28  9:13 ` Kamil Konieczny
  3 siblings, 1 reply; 7+ messages in thread
From: Rodrigo Vivi @ 2025-08-27 13:52 UTC (permalink / raw)
  To: Michael J. Ruhl; +Cc: igt-dev, lucas.demarchi

On Mon, Aug 11, 2025 at 05:05:29PM -0400, Michael J. Ruhl wrote:
> The BMG devices has the PMT crashlog feature. If the devices present
> is a BMG, test PMT api.
> 
> NOTE: the testing order is not flexible and must be done in
> the currently specified order.

I believe this should be a comment inside the bmg function instead of
a note in the commit message.

> 
> Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
> ---
>  tests/intel/xe_pmt.c | 543 +++++++++++++++++++++++++++++++++++++++++++
>  tests/meson.build    |   1 +
>  2 files changed, 544 insertions(+)
>  create mode 100644 tests/intel/xe_pmt.c
> 
> diff --git a/tests/intel/xe_pmt.c b/tests/intel/xe_pmt.c
> new file mode 100644
> index 000000000..c2594730b
> --- /dev/null
> +++ b/tests/intel/xe_pmt.c
> @@ -0,0 +1,543 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +/**
> + * TEST: Verify Platform Monitoring Technology (PMT) files operations
> + * Category: Core
> + * Mega feature: General Core features
> + * Sub-category: uapi
> + * Functionality: sysfs
> + * Description: Verify that the available PMT files (crashlog and telemetry)
> + *   are created, are accessable, and respond as per design.
> + */
> +
> +#include <unistd.h>
> +#include <dirent.h>
> +#include <fcntl.h>
> +#include <limits.h>
> +#include <string.h>
> +
> +#include "igt.h"
> +#include "igt_sysfs.h"
> +#include "linux_scaffold.h"
> +#include "xe_drm.h"
> +#include "xe/xe_ioctl.h"
> +#include "xe/xe_query.h"
> +
> +/* base directory names */
> +#define VSEC_CRASHLOG_DIR "intel_vsec.crashlog."
> +#define VSEC_TELEMETRY_DIR "intel_vsec.telemetry."
> +#define CRASHLOG_DIR "crashlog"
> +#define TELEMETRY_DIR "telem"
> +
> +/* itemize the available instances for the specific device */
> +enum bmg_crashlog_instances {
> +	bmg_crashlog_punit = 0,
> +	bmg_crashlog_oobmsm,
> +	bmg_crashlog_max
> +};
> +
> +enum bmg_telemety_instances {
> +	bmg_telemetry_punit = 0,
> +	bmg_telemetry_oobmsm,
> +	bmg_telemetry_max
> +};
> +
> +static char dev_path[PATH_MAX];
> +static char work_path[PATH_MAX * 2];
> +
> +/*
> + * In most case there should be a single instance of the crashlog and telemetry
> + * directories. If DVSEC entries are not contiguos the structure will be different,
> + * and the code will need to reflect the structure.
> + */
> +static char crashlog_vsec_dir[32];
> +static char telemetry_vsec_dir[32];
> +
> +/* This needs to be specific for each supported device */
> +static char crashlog_dir[bmg_crashlog_max][32];
> +static char telemetry_dir[bmg_telemetry_max][32];
> +
> +/* telemetry file names */
> +static const char *telem = "telem";
> +
> +/* crashlog filenames and descriptors */
> +static const char *clear = "clear";
> +static const char *consumed = "consumed";
> +static const char *crashlog = "crashlog";
> +static const char *enable = "enable";
> +static const char *error = "error";
> +static const char *dev_guid = "guid";
> +static const char *rearm = "rearm";
> +static const char *trigger = "trigger";
> +
> +struct crashlog_v2_info {
> +	int clear_fd;
> +	int consumed_fd;
> +	int crashlog_fd;
> +	int enable_fd;
> +	int error_fd;
> +	int guid_fd;
> +	int rearm_fd;
> +	int trigger_fd;
> +	u_int32_t guid;
> +} bmg_info[bmg_crashlog_max];
> +
> +#define DEV_PATH_LEN 80
> +
> +/*
> + * device_sysfs_path:
> + * @fd: opened device file descriptor
> + * @path: buffer to store sysfs path to device directory
> + *
> + * Returns:
> + * On successfull path resolution sysfs path to device directory,
> + * NULL otherwise
> + */
> +static char *device_sysfs_path(int fd, char *path)
> +{
> +        char sysfs[DEV_PATH_LEN];
> +
> +        if (!igt_sysfs_path(fd, sysfs, sizeof(sysfs)))
> +                return NULL;
> +
> +        if (DEV_PATH_LEN <= (strlen(sysfs) + strlen("/device")))
> +                return NULL;
> +
> +        strcat(sysfs, "/device");
> +
> +        return realpath(sysfs, path);
> +}
> +
> +/*
> + * SUBTEST: pmt-directories
> + * Description: PMT directory structure:
> + * device/intel_vsec.crashlog.x/intel_pmt/crashlog<a,b>
> + * device/intel_vsec.telemetry.x/intel_pmt/telemetry<c,d>
> + * If this is done for a different platform, this could be
> + * different.
> + *
> + */
> +static void test_pmt_directories(int dev_fd)
> +{
> +	struct dirent *ent;
> +	int index;
> +	DIR *dir;
> +
> +        igt_assert(device_sysfs_path(dev_fd, dev_path));
> +
> +	/* verify top level PMT directories */
> +	dir = opendir(dev_path);
> +	igt_assert_f(dir, "no directories found\n");
> +
> +	while ((ent = readdir(dir)) != NULL) {
> +		if (strncmp(VSEC_CRASHLOG_DIR, ent->d_name, sizeof(VSEC_CRASHLOG_DIR) - 1) == 0)
> +			strcpy(crashlog_vsec_dir, ent->d_name);
> +		if (strncmp(VSEC_TELEMETRY_DIR, ent->d_name, sizeof(VSEC_TELEMETRY_DIR) - 1) == 0)
> +			strcpy(telemetry_vsec_dir, ent->d_name);
> +	}
> +
> +	closedir(dir);
> +
> +	igt_assert_f(strlen(crashlog_vsec_dir), "missing crashlog directory\n");
> +	igt_assert_f(strlen(telemetry_vsec_dir), "missing telemetry directory\n");
> +
> +	/* verify crashlog directory structure */
> +	sprintf(work_path, "%s/%s/%s", dev_path, crashlog_vsec_dir, "intel_pmt");
> +
> +	dir = opendir(work_path);
> +	igt_assert_f(dir, "no intel_pmt directories found\n");
> +
> +	index = 0;
> +	/* find the crashlog<x> directory instances */
> +	while ((ent = readdir(dir)) != NULL) {
> +		if (strncmp(CRASHLOG_DIR, ent->d_name, sizeof(CRASHLOG_DIR) - 1) == 0) {
> +			if (index < bmg_crashlog_max)
> +				strcpy(crashlog_dir[index], ent->d_name);
> +			index++;
> +		}
> +	}
> +
> +	closedir(dir);
> +
> +	igt_assert_f(index == bmg_crashlog_max, "too many crashlog entries %d\n", index);
> +	for (int i = 0; i < ARRAY_SIZE(crashlog_dir); i++)
> +		igt_assert_f(strlen(crashlog_dir[i]), "missing crashlog[%d] directory\n", i);
> +
> +	/* verify telemetry directory structure */
> +	sprintf(work_path, "%s/%s/%s", dev_path, telemetry_vsec_dir, "intel_pmt");
> +
> +	dir = opendir(work_path);
> +	igt_assert_f(dir, "no telemetry intel_pmt directories found\n");
> +
> +	index = 0;
> +	while ((ent = readdir(dir)) != NULL) {
> +		if (strncmp(TELEMETRY_DIR, ent->d_name, sizeof(TELEMETRY_DIR) - 1) == 0) {
> +			if (index < bmg_telemetry_max)
> +				strcpy(telemetry_dir[index], ent->d_name);
> +			index++;
> +		}
> +	}
> +
> +	closedir(dir);
> +
> +	igt_assert_f(index == bmg_telemetry_max, "too many telemetry entries %d\n", index);
> +	for (int i = 0; i < ARRAY_SIZE(telemetry_dir); i++)
> +		igt_assert_f(strlen(telemetry_dir[i]), "missing telemetry[%d] directory\n", i);
> +
> +}
> +
> +static void find_pmt_file(const char *path, const char *file)
> +{
> +	struct dirent *ent;
> +	bool found;
> +	DIR *dir;
> +
> +	dir = opendir(path);
> +	igt_assert_f(dir, "no intel_pmt directories found\n");
> +
> +	found = false;
> +	while ((ent = readdir(dir)) != NULL)
> +		if (strcmp(file, ent->d_name) == 0)
> +			found = true;
> +	closedir(dir);
> +
> +	igt_assert_f(found, "missing %s from %s\n", file, path);
> +}
> +
> +static void open_pmt_file(const char *path, const char *file, int *fd, int flags)
> +{
> +	char file_path[PATH_MAX];
> +
> +	sprintf(file_path, "%s/%s", path, file);
> +
> +	*fd = open(file_path, flags);
> +	igt_assert_f(*fd > -1, "failed to open %s\n", file_path);
> +
> +	/* TODO: match flags to file attributes */

are we really doing this or should we remove this todo?

> +}
> +
> +/*
> + * SUBTEST: pmt-telemetry-files
> + * Description: validate the expected telemetry file(s)
> + * Test category: functionality test

We shouldn't use the SUBTEST documentation for the cases
that are not actual igt test case.
You can put some comment here on what this is aiming to
validate, but without the subtest documentation imho.

> + *
> + */
> +static void test_pmt_telemetry_files(int dev_fd)
> +{
> +	int i;
> +
> +	for (i = 0; i < bmg_telemetry_max; i++) {
> +		sprintf(work_path, "%s/%s/%s/%s", dev_path, telemetry_vsec_dir,
> +			"intel_pmt", telemetry_dir[i]);
> +		find_pmt_file(work_path, telem);
> +	}
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-files
> + * Description: validate the expected crashlog files
> + * Test category: functionality test

same

> + *
> + */
> +static void test_pmt_crashlog_files(int dev_fd)
> +{
> +	char buf[64] = {};
> +	int ret;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		sprintf(work_path, "%s/%s/%s/%s", dev_path, crashlog_vsec_dir, "intel_pmt",
> +			crashlog_dir[i]);
> +
> +		open_pmt_file(work_path, clear, &bmg_info[i].clear_fd, O_RDONLY);
> +		open_pmt_file(work_path, consumed, &bmg_info[i].consumed_fd, O_RDWR);
> +		open_pmt_file(work_path, crashlog, &bmg_info[i].crashlog_fd, O_RDONLY);
> +		open_pmt_file(work_path, enable, &bmg_info[i].enable_fd, O_RDWR);
> +		open_pmt_file(work_path, error, &bmg_info[i].error_fd, O_RDONLY);
> +		open_pmt_file(work_path, dev_guid, &bmg_info[i].guid_fd, O_RDONLY);
> +		open_pmt_file(work_path, rearm, &bmg_info[i].rearm_fd, O_RDWR);
> +		open_pmt_file(work_path, trigger, &bmg_info[i].trigger_fd, O_RDWR);
> +
> +		ret = pread(bmg_info[i].guid_fd, buf, sizeof(buf), 0);
> +		igt_assert_f(ret > 0, "failed to read guid for device %d\n", i);
> +		bmg_info[i].guid = strtol(buf, NULL, 16);
> +		igt_assert_f(bmg_info[i].guid > 0, "failed to set guid for device %d\n", i);
> +	}
> +}
> +
> +#define ENABLE_MSG "1\n"
> +#define DISABLE_MSG "0\n"
> +
> +static bool send_msg(int fd, const char *msg, const char *file) {
> +	size_t len = strlen(msg);
> +	int ret;
> +
> +	errno = 0;
> +	ret = pwrite(fd, msg, len, 0);
> +	if (ret != len)
> +		igt_info("%s failed: len: %ld vs %d  errno: %d\n", file, len, ret,
> +			 errno);
> +
> +	return ret == len;
> +}
> +
> +static bool verify_msg(int fd, const char *msg, const char *file) {
> +	size_t len = strlen(msg);
> +	char buf[32] = {};
> +	int ret;
> +
> +	errno = 0;
> +	ret = pread(fd, buf, sizeof(buf), 0);
> +	if (ret != len)
> +		igt_info("%s failed: len: %ld vs %d  errno: %d\n", file, len, ret, errno);
> +
> +	return ret == len && strcmp(buf, msg) == 0;
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-enable
> + * Description: Set enable enable/disable bit and verify usage
> + * Test category: functionality test
> + *

same 

> + */
> +static void test_pmt_crashlog_enable(int dev_fd)
> +{
> +	u_int32_t guid;
> +	int fd;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		fd = bmg_info[i].enable_fd;
> +		guid = bmg_info[i].guid;
> +
> +		/* force enable so we are in a known state */
> +		igt_assert_f(send_msg(fd, ENABLE_MSG, enable), "0x%x: send enable\n", guid);
> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, enable), "0x%x: verify enable\n", guid);
> +
> +		/* disable */
> +		igt_assert_f(send_msg(fd, DISABLE_MSG, enable), "0x%x: send disable\n", guid);
> +		igt_assert_f(verify_msg(fd, DISABLE_MSG, enable), "0x%x: verify disable\n", guid);
> +
> +		/* re-enable so we can do more testing */
> +		igt_assert_f(send_msg(fd, ENABLE_MSG, enable), "0x%x: re-enable\n", guid);
> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, enable), "0x%x: verify re-enable\n", guid);
> +	}
> +
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-clear
> + * Description:
> + *   Test the clear crashlog bit. After setting the crashlog data buffer should be
> + *   set to 0xdeadbeef.
> + *   "0" (DISABLE_MSG) is written to the trigger file to set the clear bit.  BMG does
> + *   writing to the clear file, but once the bit is set it cannot be cleared with a
> + *   reboot.  "0" to trigger is the "standard" usage, so test it.
> + *
> + * Test category: functionality test
> + *
> + */

same

> +static void test_pmt_crashlog_clear(int dev_fd)
> +{
> +	char buf[64] = {};
> +	u_int32_t guid;
> +	int crashlog_fd;
> +	int trigger_fd;
> +	int clear_fd;
> +	int *val;
> +	int len;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		clear_fd = bmg_info[i].clear_fd;
> +		crashlog_fd = bmg_info[i].crashlog_fd;
> +		trigger_fd = bmg_info[i].trigger_fd;
> +		guid = bmg_info[i].guid;
> +
> +		/* make sure the bit is clear */
> +		igt_assert_f(verify_msg(clear_fd, DISABLE_MSG, clear), "0x%x: verify clear\n", guid);
> +
> +		/* set the clear bit (0 -> trigger)*/
> +		igt_assert_f(send_msg(trigger_fd, DISABLE_MSG, trigger), "0x%x: send enable\n", guid);
> +
> +		/* make sure the bit is set.  sleep() to allow HW to set the bit */
> +		sleep(1);
> +		igt_assert_f(verify_msg(clear_fd, ENABLE_MSG, clear), "0x%x: clear set\n", guid);
> +
> +		len = read(crashlog_fd, buf, sizeof(buf));
> +		igt_assert_f(len == sizeof(buf), "0x%x: failed to read crashlog data\n", guid);
> +
> +		/* wa punit issue for first crashlog (NOTE: this is fixed)*/
> +		if (i == 0)
> +			val = (int *) &buf[32];
> +		else
> +			val = (int *)buf;
> +
> +		igt_assert_f(*val == 0xdeadbeef, "0x%x: invalid clear data value: : 0x%x", guid, *val);
> +	}
> +
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-consumed
> + * Description:
> + *   After a crashlog has been "consumed" (read), setting this bit can be done.
> + *   Verify that it is set correctly.
> + * Test category: functionality test
> + *
> + */

same

> +static void test_pmt_crashlog_consumed(int dev_fd)
> +{
> +	uint32_t guid;
> +	int fd;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		fd = bmg_info[i].consumed_fd;
> +		guid = bmg_info[i].guid;
> +
> +		/* check, set, verify */
> +		igt_assert_f(verify_msg(fd, DISABLE_MSG, consumed), "0x%x: consumed clear\n", guid);
> +		igt_assert_f(send_msg(fd, ENABLE_MSG, consumed), "0x%x: set consumed\n", guid);
> +		/* sleep(1) to allow HW to set the bit */
> +		sleep(1);
> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, consumed), "0x%x: verify consumed\n", guid);
> +	}
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-error
> + * Description:
> + *    The error bit is set when a crashlog fails in HW.  It is read only so only
> + *    need to verify that it is "0".
> + * Test category: functionality test
> + *
> + */

same

> +static void test_pmt_crashlog_error(int dev_fd)
> +{
> +	uint32_t guid;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		guid = bmg_info[i].guid;
> +		igt_assert_f(verify_msg(bmg_info[i].error_fd, DISABLE_MSG, error), "0x%x: error clear\n", guid);
> +	}
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-rearm
> + * Description:
> + *    The rearm bit is set at cold boot.  It cannot be reset unless are real crashlog
> + *    occurs (i.e. setting trigger will not change its value).  Verify that it is "1".
> + * Test category: functionality test
> + *
> + */

same

> +static void test_pmt_crashlog_rearm(int dev_fd)
> +{
> +	uint32_t guid;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		guid = bmg_info[i].guid;
> +		igt_assert_f(verify_msg(bmg_info[i].rearm_fd, ENABLE_MSG, rearm), "0x%x: rearm set\n", guid);
> +	}
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-trigger
> + * Description:
> + *    Set the manual trigger bit and make sure the data is not 0xdeadbeef
> + * Test category: functionality test
> + *
> + */

same

> +static void test_pmt_crashlog_trigger(int dev_fd)
> +{
> +	char buf[64] = {};
> +	u_int32_t *val;
> +	int crashlog_fd;
> +	int trigger_fd;
> +	u_int32_t guid;
> +	int len;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		crashlog_fd = bmg_info[i].crashlog_fd;
> +		trigger_fd = bmg_info[i].trigger_fd;
> +		guid = bmg_info[i].guid;
> +
> +		/* make sure the bit is clear */
> +		igt_assert_f(verify_msg(trigger_fd, DISABLE_MSG, trigger), "0x%x: trigger clear\n",
> +			     guid);
> +		/* set the trigger bit (1 -> trigger)*/
> +		igt_assert_f(send_msg(trigger_fd, ENABLE_MSG, trigger), "0x%x: set trigger\n", guid);
> +
> +		/* sleep to let the HW do its thing */
> +		sleep(1);
> +
> +		/* make sure the bit is set */
> +		igt_assert_f(verify_msg(trigger_fd, ENABLE_MSG, trigger), "0x%x: trigger not set\n",
> +			     guid);
> +
> +		len = read(crashlog_fd, buf, sizeof(buf));
> +		igt_assert_f(len == sizeof(buf), "0x%x: failed to read crashlog data\n", guid);
> +
> +		val = (u_int32_t *)buf;
> +
> +		igt_assert_f(*val != 0xdeadbeef, "0x%x: invalid trigger value: : 0x%x", guid, *val);
> +	}
> +}
> +
> +/**
> + * SUBTEST: pmt-bmg-tests
> + * Description:
> + *   Because of how the Crashlog Instances behave, these tests are ordered. Do not use them
> + *   individually unless you understand the underlying HW behavior.  Because of this behavior,
> + *   all of the test will be done in order in one step.
> + *   NOTE
> + *     o Testing MUST be done after a cold reset
> + *     o Once crashlog is triggered the device behavior is undefined and requires a cold reset.
> + *  Test category: functionality test
> + */

Then you just keep this one that is the actual sub-test.


> +static void test_pmt_bmg(int fd)
> +{
> +	test_pmt_directories(fd);
> +	test_pmt_telemetry_files(fd);
> +	test_pmt_crashlog_files(fd);
> +	test_pmt_crashlog_error(fd);
> +	test_pmt_crashlog_enable(fd);
> +	test_pmt_crashlog_rearm(fd);
> +	test_pmt_crashlog_trigger(fd);
> +	test_pmt_crashlog_consumed(fd);
> +	test_pmt_crashlog_clear(fd);
> +}
> +
> +igt_main
> +{
> +	const struct {
> +		const char *name;
> +		void (*func)(int);
> +	} funcs[] = {
> +		{ "pmt-bmg-tests", test_pmt_bmg },
> +		{ }
> +	}, *f;
> +	int dev_fd;
> +
> +	igt_fixture {
> +		uint16_t dev_id;
> +
> +		dev_fd = drm_open_driver(DRIVER_XE);
> +		dev_id = intel_get_drm_devid(dev_fd);
> +		igt_require_f(IS_BATTLEMAGE(dev_id), "PMT currently suppot only for BMG GPU\n");
> +	}
> +
> +	for (f = funcs; f->name; f++) {
> +		igt_subtest_f("%s", f->name)
> +			f->func(dev_fd);
> +	}
> +
> +	igt_fixture
> +		drm_close_driver(dev_fd);
> +}
> diff --git a/tests/meson.build b/tests/meson.build
> index 5c01c64e9..46d36962e 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -318,6 +318,7 @@ intel_xe_progs = [
>  	'xe_peer2peer',
>  	'xe_pm',
>  	'xe_pm_residency',
> +	'xe_pmt',
>  	'xe_pmu',
>  	'xe_prime_self_import',
>  	'xe_pxp',
> -- 
> 2.50.1
> 

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

* Re: [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog
  2025-08-11 21:05 [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog Michael J. Ruhl
                   ` (2 preceding siblings ...)
  2025-08-27 13:52 ` [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog Rodrigo Vivi
@ 2025-08-28  9:13 ` Kamil Konieczny
  2025-09-04 16:14   ` Ruhl, Michael J
  3 siblings, 1 reply; 7+ messages in thread
From: Kamil Konieczny @ 2025-08-28  9:13 UTC (permalink / raw)
  To: Michael J. Ruhl; +Cc: igt-dev, lucas.demarchi, rodrigo.vivi

Hi Michael,
On 2025-08-11 at 17:05:29 -0400, Michael J. Ruhl wrote:
> The BMG devices has the PMT crashlog feature. If the devices present

Add also full name for PMT in commit description here, like:

The BMG devices has the Platform Monitoring Technology (PMT), it
provides crashlog and telemetry features.

Please ajust above to what it really is.

> is a BMG, test PMT api.
> 
> NOTE: the testing order is not flexible and must be done in
> the currently specified order.
> 
> Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
> ---
>  tests/intel/xe_pmt.c | 543 +++++++++++++++++++++++++++++++++++++++++++
>  tests/meson.build    |   1 +
>  2 files changed, 544 insertions(+)
>  create mode 100644 tests/intel/xe_pmt.c
> 
> diff --git a/tests/intel/xe_pmt.c b/tests/intel/xe_pmt.c
> new file mode 100644
> index 000000000..c2594730b
> --- /dev/null
> +++ b/tests/intel/xe_pmt.c
> @@ -0,0 +1,543 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +/**
> + * TEST: Verify Platform Monitoring Technology (PMT) files operations
> + * Category: Core
> + * Mega feature: General Core features
> + * Sub-category: uapi
> + * Functionality: sysfs
> + * Description: Verify that the available PMT files (crashlog and telemetry)
> + *   are created, are accessable, and respond as per design.
> + */
> +
> +#include <unistd.h>
> +#include <dirent.h>
> +#include <fcntl.h>
> +#include <limits.h>
> +#include <string.h>
> +
> +#include "igt.h"
> +#include "igt_sysfs.h"
> +#include "linux_scaffold.h"
> +#include "xe_drm.h"
> +#include "xe/xe_ioctl.h"
> +#include "xe/xe_query.h"
> +
> +/* base directory names */
> +#define VSEC_CRASHLOG_DIR "intel_vsec.crashlog."
> +#define VSEC_TELEMETRY_DIR "intel_vsec.telemetry."
> +#define CRASHLOG_DIR "crashlog"
> +#define TELEMETRY_DIR "telem"
> +
> +/* itemize the available instances for the specific device */
> +enum bmg_crashlog_instances {
> +	bmg_crashlog_punit = 0,
> +	bmg_crashlog_oobmsm,
> +	bmg_crashlog_max
> +};
> +
> +enum bmg_telemety_instances {
> +	bmg_telemetry_punit = 0,
> +	bmg_telemetry_oobmsm,
> +	bmg_telemetry_max
> +};
> +
> +static char dev_path[PATH_MAX];
> +static char work_path[PATH_MAX * 2];
> +
> +/*
> + * In most case there should be a single instance of the crashlog and telemetry
> + * directories. If DVSEC entries are not contiguos the structure will be different,
> + * and the code will need to reflect the structure.
> + */
> +static char crashlog_vsec_dir[32];
> +static char telemetry_vsec_dir[32];
> +
> +/* This needs to be specific for each supported device */
> +static char crashlog_dir[bmg_crashlog_max][32];
> +static char telemetry_dir[bmg_telemetry_max][32];
> +
> +/* telemetry file names */
> +static const char *telem = "telem";
> +
> +/* crashlog filenames and descriptors */
> +static const char *clear = "clear";
> +static const char *consumed = "consumed";
> +static const char *crashlog = "crashlog";
> +static const char *enable = "enable";
> +static const char *error = "error";
> +static const char *dev_guid = "guid";
> +static const char *rearm = "rearm";
> +static const char *trigger = "trigger";
> +
> +struct crashlog_v2_info {
> +	int clear_fd;
> +	int consumed_fd;
> +	int crashlog_fd;
> +	int enable_fd;
> +	int error_fd;
> +	int guid_fd;
> +	int rearm_fd;
> +	int trigger_fd;
> +	u_int32_t guid;
> +} bmg_info[bmg_crashlog_max];
> +
> +#define DEV_PATH_LEN 80
> +
> +/*
> + * device_sysfs_path:
> + * @fd: opened device file descriptor
> + * @path: buffer to store sysfs path to device directory
> + *
> + * Returns:
> + * On successfull path resolution sysfs path to device directory,
> + * NULL otherwise
> + */
> +static char *device_sysfs_path(int fd, char *path)
> +{
> +        char sysfs[DEV_PATH_LEN];
> +
> +        if (!igt_sysfs_path(fd, sysfs, sizeof(sysfs)))
> +                return NULL;
> +
> +        if (DEV_PATH_LEN <= (strlen(sysfs) + strlen("/device")))
> +                return NULL;
> +
> +        strcat(sysfs, "/device");
> +
> +        return realpath(sysfs, path);
> +}
> +
> +/*
> + * SUBTEST: pmt-directories
> + * Description: PMT directory structure:
> + * device/intel_vsec.crashlog.x/intel_pmt/crashlog<a,b>
> + * device/intel_vsec.telemetry.x/intel_pmt/telemetry<c,d>
> + * If this is done for a different platform, this could be
> + * different.

Add more spaces in description like you do below, so:
 * Description: PMT directory structure:
 *   device/intel_vsec.crashlog.x/intel_pmt/crashlog<a,b>
 *   device/intel_vsec.telemetry.x/intel_pmt/telemetry<c,d>
 *   If this is done for a different platform, this could be
 *   different.

> + *
> + */
> +static void test_pmt_directories(int dev_fd)
> +{
> +	struct dirent *ent;
> +	int index;
> +	DIR *dir;
> +
> +        igt_assert(device_sysfs_path(dev_fd, dev_path));
> +
> +	/* verify top level PMT directories */
> +	dir = opendir(dev_path);
> +	igt_assert_f(dir, "no directories found\n");
> +
> +	while ((ent = readdir(dir)) != NULL) {
> +		if (strncmp(VSEC_CRASHLOG_DIR, ent->d_name, sizeof(VSEC_CRASHLOG_DIR) - 1) == 0)
> +			strcpy(crashlog_vsec_dir, ent->d_name);
> +		if (strncmp(VSEC_TELEMETRY_DIR, ent->d_name, sizeof(VSEC_TELEMETRY_DIR) - 1) == 0)
> +			strcpy(telemetry_vsec_dir, ent->d_name);
> +	}
> +
> +	closedir(dir);
> +
> +	igt_assert_f(strlen(crashlog_vsec_dir), "missing crashlog directory\n");
> +	igt_assert_f(strlen(telemetry_vsec_dir), "missing telemetry directory\n");
> +
> +	/* verify crashlog directory structure */
> +	sprintf(work_path, "%s/%s/%s", dev_path, crashlog_vsec_dir, "intel_pmt");
> +
> +	dir = opendir(work_path);
> +	igt_assert_f(dir, "no intel_pmt directories found\n");
> +
> +	index = 0;
> +	/* find the crashlog<x> directory instances */
> +	while ((ent = readdir(dir)) != NULL) {
> +		if (strncmp(CRASHLOG_DIR, ent->d_name, sizeof(CRASHLOG_DIR) - 1) == 0) {
> +			if (index < bmg_crashlog_max)
> +				strcpy(crashlog_dir[index], ent->d_name);
> +			index++;
> +		}
> +	}
> +
> +	closedir(dir);
> +
> +	igt_assert_f(index == bmg_crashlog_max, "too many crashlog entries %d\n", index);
> +	for (int i = 0; i < ARRAY_SIZE(crashlog_dir); i++)
> +		igt_assert_f(strlen(crashlog_dir[i]), "missing crashlog[%d] directory\n", i);
> +
> +	/* verify telemetry directory structure */
> +	sprintf(work_path, "%s/%s/%s", dev_path, telemetry_vsec_dir, "intel_pmt");
> +
> +	dir = opendir(work_path);
> +	igt_assert_f(dir, "no telemetry intel_pmt directories found\n");
> +
> +	index = 0;
> +	while ((ent = readdir(dir)) != NULL) {
> +		if (strncmp(TELEMETRY_DIR, ent->d_name, sizeof(TELEMETRY_DIR) - 1) == 0) {
> +			if (index < bmg_telemetry_max)
> +				strcpy(telemetry_dir[index], ent->d_name);
> +			index++;
> +		}
> +	}
> +
> +	closedir(dir);
> +
> +	igt_assert_f(index == bmg_telemetry_max, "too many telemetry entries %d\n", index);
> +	for (int i = 0; i < ARRAY_SIZE(telemetry_dir); i++)
> +		igt_assert_f(strlen(telemetry_dir[i]), "missing telemetry[%d] directory\n", i);
> +
> +}
> +
> +static void find_pmt_file(const char *path, const char *file)
> +{
> +	struct dirent *ent;
> +	bool found;
> +	DIR *dir;
> +
> +	dir = opendir(path);
> +	igt_assert_f(dir, "no intel_pmt directories found\n");
> +
> +	found = false;
> +	while ((ent = readdir(dir)) != NULL)
> +		if (strcmp(file, ent->d_name) == 0)
> +			found = true;
> +	closedir(dir);
> +
> +	igt_assert_f(found, "missing %s from %s\n", file, path);
> +}
> +
> +static void open_pmt_file(const char *path, const char *file, int *fd, int flags)
> +{
> +	char file_path[PATH_MAX];
> +
> +	sprintf(file_path, "%s/%s", path, file);
> +
> +	*fd = open(file_path, flags);
> +	igt_assert_f(*fd > -1, "failed to open %s\n", file_path);
> +
> +	/* TODO: match flags to file attributes */
> +}
> +
> +/*
> + * SUBTEST: pmt-telemetry-files
> + * Description: validate the expected telemetry file(s)
> + * Test category: functionality test
> + *
> + */
> +static void test_pmt_telemetry_files(int dev_fd)
> +{
> +	int i;
> +
> +	for (i = 0; i < bmg_telemetry_max; i++) {
> +		sprintf(work_path, "%s/%s/%s/%s", dev_path, telemetry_vsec_dir,
> +			"intel_pmt", telemetry_dir[i]);
> +		find_pmt_file(work_path, telem);
> +	}
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-files
> + * Description: validate the expected crashlog files
> + * Test category: functionality test
> + *
> + */
> +static void test_pmt_crashlog_files(int dev_fd)
> +{
> +	char buf[64] = {};
> +	int ret;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		sprintf(work_path, "%s/%s/%s/%s", dev_path, crashlog_vsec_dir, "intel_pmt",
> +			crashlog_dir[i]);
> +
> +		open_pmt_file(work_path, clear, &bmg_info[i].clear_fd, O_RDONLY);
> +		open_pmt_file(work_path, consumed, &bmg_info[i].consumed_fd, O_RDWR);
> +		open_pmt_file(work_path, crashlog, &bmg_info[i].crashlog_fd, O_RDONLY);
> +		open_pmt_file(work_path, enable, &bmg_info[i].enable_fd, O_RDWR);
> +		open_pmt_file(work_path, error, &bmg_info[i].error_fd, O_RDONLY);
> +		open_pmt_file(work_path, dev_guid, &bmg_info[i].guid_fd, O_RDONLY);
> +		open_pmt_file(work_path, rearm, &bmg_info[i].rearm_fd, O_RDWR);
> +		open_pmt_file(work_path, trigger, &bmg_info[i].trigger_fd, O_RDWR);
> +
> +		ret = pread(bmg_info[i].guid_fd, buf, sizeof(buf), 0);
> +		igt_assert_f(ret > 0, "failed to read guid for device %d\n", i);
> +		bmg_info[i].guid = strtol(buf, NULL, 16);
> +		igt_assert_f(bmg_info[i].guid > 0, "failed to set guid for device %d\n", i);
> +	}
> +}
> +
> +#define ENABLE_MSG "1\n"
> +#define DISABLE_MSG "0\n"
> +
> +static bool send_msg(int fd, const char *msg, const char *file) {
> +	size_t len = strlen(msg);
> +	int ret;
> +
> +	errno = 0;
> +	ret = pwrite(fd, msg, len, 0);
> +	if (ret != len)
> +		igt_info("%s failed: len: %ld vs %d  errno: %d\n", file, len, ret,
> +			 errno);
> +
> +	return ret == len;
> +}
> +
> +static bool verify_msg(int fd, const char *msg, const char *file) {
> +	size_t len = strlen(msg);
> +	char buf[32] = {};
> +	int ret;
> +
> +	errno = 0;
> +	ret = pread(fd, buf, sizeof(buf), 0);
> +	if (ret != len)
> +		igt_info("%s failed: len: %ld vs %d  errno: %d\n", file, len, ret, errno);
> +
> +	return ret == len && strcmp(buf, msg) == 0;
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-enable
> + * Description: Set enable enable/disable bit and verify usage
> + * Test category: functionality test
> + *
> + */
> +static void test_pmt_crashlog_enable(int dev_fd)
> +{
> +	u_int32_t guid;
> +	int fd;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		fd = bmg_info[i].enable_fd;
> +		guid = bmg_info[i].guid;
> +
> +		/* force enable so we are in a known state */
> +		igt_assert_f(send_msg(fd, ENABLE_MSG, enable), "0x%x: send enable\n", guid);
> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, enable), "0x%x: verify enable\n", guid);
> +
> +		/* disable */
> +		igt_assert_f(send_msg(fd, DISABLE_MSG, enable), "0x%x: send disable\n", guid);
> +		igt_assert_f(verify_msg(fd, DISABLE_MSG, enable), "0x%x: verify disable\n", guid);
> +
> +		/* re-enable so we can do more testing */
> +		igt_assert_f(send_msg(fd, ENABLE_MSG, enable), "0x%x: re-enable\n", guid);
> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, enable), "0x%x: verify re-enable\n", guid);
> +	}
> +
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-clear
> + * Description:
> + *   Test the clear crashlog bit. After setting the crashlog data buffer should be
> + *   set to 0xdeadbeef.
> + *   "0" (DISABLE_MSG) is written to the trigger file to set the clear bit.  BMG does
> + *   writing to the clear file, but once the bit is set it cannot be cleared with a
> + *   reboot.  "0" to trigger is the "standard" usage, so test it.

Is this correct? imho:

 *   writing to the clear file, but once the bit is set it cannot be cleared
 *   without a reboot.  "0" to trigger is the "standard" usage, so test it.

Btw could BMG be cold-rebooted by a PCIe bus
operations without a need for cold reboot a system?
Can user power-cycle only BMG card?
If not you need to block it from running on a current CI and
have a special testing arranged for it.

Or did I miss something?

> + *

Remove empty line here.

> + * Test category: functionality test

> + *
> + */
> +static void test_pmt_crashlog_clear(int dev_fd)
> +{
> +	char buf[64] = {};
> +	u_int32_t guid;
> +	int crashlog_fd;
> +	int trigger_fd;
> +	int clear_fd;
> +	int *val;
> +	int len;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		clear_fd = bmg_info[i].clear_fd;
> +		crashlog_fd = bmg_info[i].crashlog_fd;
> +		trigger_fd = bmg_info[i].trigger_fd;
> +		guid = bmg_info[i].guid;
> +
> +		/* make sure the bit is clear */
> +		igt_assert_f(verify_msg(clear_fd, DISABLE_MSG, clear), "0x%x: verify clear\n", guid);
> +
> +		/* set the clear bit (0 -> trigger)*/
> +		igt_assert_f(send_msg(trigger_fd, DISABLE_MSG, trigger), "0x%x: send enable\n", guid);
> +
> +		/* make sure the bit is set.  sleep() to allow HW to set the bit */
> +		sleep(1);
> +		igt_assert_f(verify_msg(clear_fd, ENABLE_MSG, clear), "0x%x: clear set\n", guid);
> +
> +		len = read(crashlog_fd, buf, sizeof(buf));
> +		igt_assert_f(len == sizeof(buf), "0x%x: failed to read crashlog data\n", guid);
> +
> +		/* wa punit issue for first crashlog (NOTE: this is fixed)*/
> +		if (i == 0)
> +			val = (int *) &buf[32];
> +		else
> +			val = (int *)buf;
> +
> +		igt_assert_f(*val == 0xdeadbeef, "0x%x: invalid clear data value: : 0x%x", guid, *val);
> +	}
> +
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-consumed
> + * Description:
> + *   After a crashlog has been "consumed" (read), setting this bit can be done.
> + *   Verify that it is set correctly.
> + * Test category: functionality test
> + *
> + */
> +static void test_pmt_crashlog_consumed(int dev_fd)
> +{
> +	uint32_t guid;
> +	int fd;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		fd = bmg_info[i].consumed_fd;
> +		guid = bmg_info[i].guid;
> +
> +		/* check, set, verify */
> +		igt_assert_f(verify_msg(fd, DISABLE_MSG, consumed), "0x%x: consumed clear\n", guid);
> +		igt_assert_f(send_msg(fd, ENABLE_MSG, consumed), "0x%x: set consumed\n", guid);
> +		/* sleep(1) to allow HW to set the bit */
> +		sleep(1);
> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, consumed), "0x%x: verify consumed\n", guid);
> +	}
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-error
> + * Description:
> + *    The error bit is set when a crashlog fails in HW.  It is read only so only
> + *    need to verify that it is "0".
> + * Test category: functionality test
> + *
> + */
> +static void test_pmt_crashlog_error(int dev_fd)
> +{
> +	uint32_t guid;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		guid = bmg_info[i].guid;
> +		igt_assert_f(verify_msg(bmg_info[i].error_fd, DISABLE_MSG, error), "0x%x: error clear\n", guid);
> +	}
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-rearm
> + * Description:
> + *    The rearm bit is set at cold boot.  It cannot be reset unless are real crashlog
> + *    occurs (i.e. setting trigger will not change its value).  Verify that it is "1".
> + * Test category: functionality test
> + *
> + */
> +static void test_pmt_crashlog_rearm(int dev_fd)
> +{
> +	uint32_t guid;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		guid = bmg_info[i].guid;
> +		igt_assert_f(verify_msg(bmg_info[i].rearm_fd, ENABLE_MSG, rearm), "0x%x: rearm set\n", guid);
> +	}
> +}
> +
> +/*
> + * SUBTEST: pmt-crashlog-trigger
> + * Description:
> + *    Set the manual trigger bit and make sure the data is not 0xdeadbeef
> + * Test category: functionality test
> + *
> + */
> +static void test_pmt_crashlog_trigger(int dev_fd)
> +{
> +	char buf[64] = {};
> +	u_int32_t *val;
> +	int crashlog_fd;
> +	int trigger_fd;
> +	u_int32_t guid;
> +	int len;
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
> +		crashlog_fd = bmg_info[i].crashlog_fd;
> +		trigger_fd = bmg_info[i].trigger_fd;
> +		guid = bmg_info[i].guid;
> +
> +		/* make sure the bit is clear */
> +		igt_assert_f(verify_msg(trigger_fd, DISABLE_MSG, trigger), "0x%x: trigger clear\n",
> +			     guid);
> +		/* set the trigger bit (1 -> trigger)*/
> +		igt_assert_f(send_msg(trigger_fd, ENABLE_MSG, trigger), "0x%x: set trigger\n", guid);
> +
> +		/* sleep to let the HW do its thing */
> +		sleep(1);
> +
> +		/* make sure the bit is set */
> +		igt_assert_f(verify_msg(trigger_fd, ENABLE_MSG, trigger), "0x%x: trigger not set\n",
> +			     guid);
> +
> +		len = read(crashlog_fd, buf, sizeof(buf));
> +		igt_assert_f(len == sizeof(buf), "0x%x: failed to read crashlog data\n", guid);
> +
> +		val = (u_int32_t *)buf;
> +
> +		igt_assert_f(*val != 0xdeadbeef, "0x%x: invalid trigger value: : 0x%x", guid, *val);
> +	}
> +}
> +
> +/**
> + * SUBTEST: pmt-bmg-tests
> + * Description:
> + *   Because of how the Crashlog Instances behave, these tests are ordered. Do not use them
> + *   individually unless you understand the underlying HW behavior.  Because of this behavior,
> + *   all of the test will be done in order in one step.
> + *   NOTE
> + *     o Testing MUST be done after a cold reset
> + *     o Once crashlog is triggered the device behavior is undefined and requires a cold reset.

Same concerns as above.

> + *  Test category: functionality test
> + */
> +static void test_pmt_bmg(int fd)
> +{
> +	test_pmt_directories(fd);
> +	test_pmt_telemetry_files(fd);
> +	test_pmt_crashlog_files(fd);
> +	test_pmt_crashlog_error(fd);
> +	test_pmt_crashlog_enable(fd);
> +	test_pmt_crashlog_rearm(fd);
> +	test_pmt_crashlog_trigger(fd);
> +	test_pmt_crashlog_consumed(fd);
> +	test_pmt_crashlog_clear(fd);
> +}
> +
> +igt_main
> +{
> +	const struct {
> +		const char *name;
> +		void (*func)(int);
> +	} funcs[] = {
> +		{ "pmt-bmg-tests", test_pmt_bmg },

imho better: pmt-bmg-all

> +		{ }
> +	}, *f;
> +	int dev_fd;
> +
> +	igt_fixture {
> +		uint16_t dev_id;
> +
> +		dev_fd = drm_open_driver(DRIVER_XE);
> +		dev_id = intel_get_drm_devid(dev_fd);
> +		igt_require_f(IS_BATTLEMAGE(dev_id), "PMT currently suppot only for BMG GPU\n");

s/suppot/support/

> +	}
> +
> +	for (f = funcs; f->name; f++) {
> +		igt_subtest_f("%s", f->name)

Number of subtests here do not match those with 'SUBTEST:'
above. Also you have several igt asserts there which will
break a flow so it could happen that it will not reach
test_pmt_crashlog_clear()

imho you could have dir and files checks without a need
for a cold reboot.

Regards,
Kamil

> +			f->func(dev_fd);
> +	}
> +
> +	igt_fixture
> +		drm_close_driver(dev_fd);
> +}
> diff --git a/tests/meson.build b/tests/meson.build
> index 5c01c64e9..46d36962e 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -318,6 +318,7 @@ intel_xe_progs = [
>  	'xe_peer2peer',
>  	'xe_pm',
>  	'xe_pm_residency',
> +	'xe_pmt',
>  	'xe_pmu',
>  	'xe_prime_self_import',
>  	'xe_pxp',
> -- 
> 2.50.1
> 

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

* RE: [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog
  2025-08-27 13:52 ` [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog Rodrigo Vivi
@ 2025-09-04 13:59   ` Ruhl, Michael J
  0 siblings, 0 replies; 7+ messages in thread
From: Ruhl, Michael J @ 2025-09-04 13:59 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: igt-dev@lists.freedesktop.org, De Marchi, Lucas

>-----Original Message-----
>From: Vivi, Rodrigo <rodrigo.vivi@intel.com>
>Sent: Wednesday, August 27, 2025 9:52 AM
>To: Ruhl, Michael J <michael.j.ruhl@intel.com>
>Cc: igt-dev@lists.freedesktop.org; De Marchi, Lucas
><lucas.demarchi@intel.com>
>Subject: Re: [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog
>
>On Mon, Aug 11, 2025 at 05:05:29PM -0400, Michael J. Ruhl wrote:
>> The BMG devices has the PMT crashlog feature. If the devices present
>> is a BMG, test PMT api.
>>
>> NOTE: the testing order is not flexible and must be done in
>> the currently specified order.
>
>I believe this should be a comment inside the bmg function instead of
>a note in the commit message.

Ok, the test_pmt_bmg says this.  Will remove this comment.

>>
>> Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
>> ---
>>  tests/intel/xe_pmt.c | 543
>+++++++++++++++++++++++++++++++++++++++++++
>>  tests/meson.build    |   1 +
>>  2 files changed, 544 insertions(+)
>>  create mode 100644 tests/intel/xe_pmt.c
>>
>> diff --git a/tests/intel/xe_pmt.c b/tests/intel/xe_pmt.c
>> new file mode 100644
>> index 000000000..c2594730b
>> --- /dev/null
>> +++ b/tests/intel/xe_pmt.c
>> @@ -0,0 +1,543 @@
>> +// SPDX-License-Identifier: MIT
>> +/*
>> + * Copyright (c) 2025 Intel Corporation
>> + */
>> +
>> +/**
>> + * TEST: Verify Platform Monitoring Technology (PMT) files operations
>> + * Category: Core
>> + * Mega feature: General Core features
>> + * Sub-category: uapi
>> + * Functionality: sysfs
>> + * Description: Verify that the available PMT files (crashlog and telemetry)
>> + *   are created, are accessable, and respond as per design.
>> + */
>> +
>> +#include <unistd.h>
>> +#include <dirent.h>
>> +#include <fcntl.h>
>> +#include <limits.h>
>> +#include <string.h>
>> +
>> +#include "igt.h"
>> +#include "igt_sysfs.h"
>> +#include "linux_scaffold.h"
>> +#include "xe_drm.h"
>> +#include "xe/xe_ioctl.h"
>> +#include "xe/xe_query.h"
>> +
>> +/* base directory names */
>> +#define VSEC_CRASHLOG_DIR "intel_vsec.crashlog."
>> +#define VSEC_TELEMETRY_DIR "intel_vsec.telemetry."
>> +#define CRASHLOG_DIR "crashlog"
>> +#define TELEMETRY_DIR "telem"
>> +
>> +/* itemize the available instances for the specific device */
>> +enum bmg_crashlog_instances {
>> +	bmg_crashlog_punit = 0,
>> +	bmg_crashlog_oobmsm,
>> +	bmg_crashlog_max
>> +};
>> +
>> +enum bmg_telemety_instances {
>> +	bmg_telemetry_punit = 0,
>> +	bmg_telemetry_oobmsm,
>> +	bmg_telemetry_max
>> +};
>> +
>> +static char dev_path[PATH_MAX];
>> +static char work_path[PATH_MAX * 2];
>> +
>> +/*
>> + * In most case there should be a single instance of the crashlog and
>telemetry
>> + * directories. If DVSEC entries are not contiguos the structure will be
>different,
>> + * and the code will need to reflect the structure.
>> + */
>> +static char crashlog_vsec_dir[32];
>> +static char telemetry_vsec_dir[32];
>> +
>> +/* This needs to be specific for each supported device */
>> +static char crashlog_dir[bmg_crashlog_max][32];
>> +static char telemetry_dir[bmg_telemetry_max][32];
>> +
>> +/* telemetry file names */
>> +static const char *telem = "telem";
>> +
>> +/* crashlog filenames and descriptors */
>> +static const char *clear = "clear";
>> +static const char *consumed = "consumed";
>> +static const char *crashlog = "crashlog";
>> +static const char *enable = "enable";
>> +static const char *error = "error";
>> +static const char *dev_guid = "guid";
>> +static const char *rearm = "rearm";
>> +static const char *trigger = "trigger";
>> +
>> +struct crashlog_v2_info {
>> +	int clear_fd;
>> +	int consumed_fd;
>> +	int crashlog_fd;
>> +	int enable_fd;
>> +	int error_fd;
>> +	int guid_fd;
>> +	int rearm_fd;
>> +	int trigger_fd;
>> +	u_int32_t guid;
>> +} bmg_info[bmg_crashlog_max];
>> +
>> +#define DEV_PATH_LEN 80
>> +
>> +/*
>> + * device_sysfs_path:
>> + * @fd: opened device file descriptor
>> + * @path: buffer to store sysfs path to device directory
>> + *
>> + * Returns:
>> + * On successfull path resolution sysfs path to device directory,
>> + * NULL otherwise
>> + */
>> +static char *device_sysfs_path(int fd, char *path)
>> +{
>> +        char sysfs[DEV_PATH_LEN];
>> +
>> +        if (!igt_sysfs_path(fd, sysfs, sizeof(sysfs)))
>> +                return NULL;
>> +
>> +        if (DEV_PATH_LEN <= (strlen(sysfs) + strlen("/device")))
>> +                return NULL;
>> +
>> +        strcat(sysfs, "/device");
>> +
>> +        return realpath(sysfs, path);
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-directories
>> + * Description: PMT directory structure:
>> + * device/intel_vsec.crashlog.x/intel_pmt/crashlog<a,b>
>> + * device/intel_vsec.telemetry.x/intel_pmt/telemetry<c,d>
>> + * If this is done for a different platform, this could be
>> + * different.
>> + *
>> + */
>> +static void test_pmt_directories(int dev_fd)
>> +{
>> +	struct dirent *ent;
>> +	int index;
>> +	DIR *dir;
>> +
>> +        igt_assert(device_sysfs_path(dev_fd, dev_path));
>> +
>> +	/* verify top level PMT directories */
>> +	dir = opendir(dev_path);
>> +	igt_assert_f(dir, "no directories found\n");
>> +
>> +	while ((ent = readdir(dir)) != NULL) {
>> +		if (strncmp(VSEC_CRASHLOG_DIR, ent->d_name,
>sizeof(VSEC_CRASHLOG_DIR) - 1) == 0)
>> +			strcpy(crashlog_vsec_dir, ent->d_name);
>> +		if (strncmp(VSEC_TELEMETRY_DIR, ent->d_name,
>sizeof(VSEC_TELEMETRY_DIR) - 1) == 0)
>> +			strcpy(telemetry_vsec_dir, ent->d_name);
>> +	}
>> +
>> +	closedir(dir);
>> +
>> +	igt_assert_f(strlen(crashlog_vsec_dir), "missing crashlog directory\n");
>> +	igt_assert_f(strlen(telemetry_vsec_dir), "missing telemetry
>directory\n");
>> +
>> +	/* verify crashlog directory structure */
>> +	sprintf(work_path, "%s/%s/%s", dev_path, crashlog_vsec_dir,
>"intel_pmt");
>> +
>> +	dir = opendir(work_path);
>> +	igt_assert_f(dir, "no intel_pmt directories found\n");
>> +
>> +	index = 0;
>> +	/* find the crashlog<x> directory instances */
>> +	while ((ent = readdir(dir)) != NULL) {
>> +		if (strncmp(CRASHLOG_DIR, ent->d_name,
>sizeof(CRASHLOG_DIR) - 1) == 0) {
>> +			if (index < bmg_crashlog_max)
>> +				strcpy(crashlog_dir[index], ent->d_name);
>> +			index++;
>> +		}
>> +	}
>> +
>> +	closedir(dir);
>> +
>> +	igt_assert_f(index == bmg_crashlog_max, "too many crashlog entries
>%d\n", index);
>> +	for (int i = 0; i < ARRAY_SIZE(crashlog_dir); i++)
>> +		igt_assert_f(strlen(crashlog_dir[i]), "missing crashlog[%d]
>directory\n", i);
>> +
>> +	/* verify telemetry directory structure */
>> +	sprintf(work_path, "%s/%s/%s", dev_path, telemetry_vsec_dir,
>"intel_pmt");
>> +
>> +	dir = opendir(work_path);
>> +	igt_assert_f(dir, "no telemetry intel_pmt directories found\n");
>> +
>> +	index = 0;
>> +	while ((ent = readdir(dir)) != NULL) {
>> +		if (strncmp(TELEMETRY_DIR, ent->d_name,
>sizeof(TELEMETRY_DIR) - 1) == 0) {
>> +			if (index < bmg_telemetry_max)
>> +				strcpy(telemetry_dir[index], ent->d_name);
>> +			index++;
>> +		}
>> +	}
>> +
>> +	closedir(dir);
>> +
>> +	igt_assert_f(index == bmg_telemetry_max, "too many telemetry entries
>%d\n", index);
>> +	for (int i = 0; i < ARRAY_SIZE(telemetry_dir); i++)
>> +		igt_assert_f(strlen(telemetry_dir[i]), "missing telemetry[%d]
>directory\n", i);
>> +
>> +}
>> +
>> +static void find_pmt_file(const char *path, const char *file)
>> +{
>> +	struct dirent *ent;
>> +	bool found;
>> +	DIR *dir;
>> +
>> +	dir = opendir(path);
>> +	igt_assert_f(dir, "no intel_pmt directories found\n");
>> +
>> +	found = false;
>> +	while ((ent = readdir(dir)) != NULL)
>> +		if (strcmp(file, ent->d_name) == 0)
>> +			found = true;
>> +	closedir(dir);
>> +
>> +	igt_assert_f(found, "missing %s from %s\n", file, path);
>> +}
>> +
>> +static void open_pmt_file(const char *path, const char *file, int *fd, int flags)
>> +{
>> +	char file_path[PATH_MAX];
>> +
>> +	sprintf(file_path, "%s/%s", path, file);
>> +
>> +	*fd = open(file_path, flags);
>> +	igt_assert_f(*fd > -1, "failed to open %s\n", file_path);
>> +
>> +	/* TODO: match flags to file attributes */
>
>are we really doing this or should we remove this todo?

We should verify the permission bits...I just didn't have time when I was doing this part.

I will remove the todo and put it on my personal list.  When I get "free time", I will see if I can
update.

>
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-telemetry-files
>> + * Description: validate the expected telemetry file(s)
>> + * Test category: functionality test
>
>We shouldn't use the SUBTEST documentation for the cases
>that are not actual igt test case.
>You can put some comment here on what this is aiming to
>validate, but without the subtest documentation imho.

I removed all of the igt test case tags...left just the description text.  I have done that for all
but the "real" subtest.

Thank you for your comments!

M

>> + *
>> + */
>> +static void test_pmt_telemetry_files(int dev_fd)
>> +{
>> +	int i;
>> +
>> +	for (i = 0; i < bmg_telemetry_max; i++) {
>> +		sprintf(work_path, "%s/%s/%s/%s", dev_path,
>telemetry_vsec_dir,
>> +			"intel_pmt", telemetry_dir[i]);
>> +		find_pmt_file(work_path, telem);
>> +	}
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-files
>> + * Description: validate the expected crashlog files
>> + * Test category: functionality test
>
>same
>
>> + *
>> + */
>> +static void test_pmt_crashlog_files(int dev_fd)
>> +{
>> +	char buf[64] = {};
>> +	int ret;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		sprintf(work_path, "%s/%s/%s/%s", dev_path,
>crashlog_vsec_dir, "intel_pmt",
>> +			crashlog_dir[i]);
>> +
>> +		open_pmt_file(work_path, clear, &bmg_info[i].clear_fd,
>O_RDONLY);
>> +		open_pmt_file(work_path, consumed,
>&bmg_info[i].consumed_fd, O_RDWR);
>> +		open_pmt_file(work_path, crashlog, &bmg_info[i].crashlog_fd,
>O_RDONLY);
>> +		open_pmt_file(work_path, enable, &bmg_info[i].enable_fd,
>O_RDWR);
>> +		open_pmt_file(work_path, error, &bmg_info[i].error_fd,
>O_RDONLY);
>> +		open_pmt_file(work_path, dev_guid, &bmg_info[i].guid_fd,
>O_RDONLY);
>> +		open_pmt_file(work_path, rearm, &bmg_info[i].rearm_fd,
>O_RDWR);
>> +		open_pmt_file(work_path, trigger, &bmg_info[i].trigger_fd,
>O_RDWR);
>> +
>> +		ret = pread(bmg_info[i].guid_fd, buf, sizeof(buf), 0);
>> +		igt_assert_f(ret > 0, "failed to read guid for device %d\n", i);
>> +		bmg_info[i].guid = strtol(buf, NULL, 16);
>> +		igt_assert_f(bmg_info[i].guid > 0, "failed to set guid for device
>%d\n", i);
>> +	}
>> +}
>> +
>> +#define ENABLE_MSG "1\n"
>> +#define DISABLE_MSG "0\n"
>> +
>> +static bool send_msg(int fd, const char *msg, const char *file) {
>> +	size_t len = strlen(msg);
>> +	int ret;
>> +
>> +	errno = 0;
>> +	ret = pwrite(fd, msg, len, 0);
>> +	if (ret != len)
>> +		igt_info("%s failed: len: %ld vs %d  errno: %d\n", file, len, ret,
>> +			 errno);
>> +
>> +	return ret == len;
>> +}
>> +
>> +static bool verify_msg(int fd, const char *msg, const char *file) {
>> +	size_t len = strlen(msg);
>> +	char buf[32] = {};
>> +	int ret;
>> +
>> +	errno = 0;
>> +	ret = pread(fd, buf, sizeof(buf), 0);
>> +	if (ret != len)
>> +		igt_info("%s failed: len: %ld vs %d  errno: %d\n", file, len, ret,
>errno);
>> +
>> +	return ret == len && strcmp(buf, msg) == 0;
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-enable
>> + * Description: Set enable enable/disable bit and verify usage
>> + * Test category: functionality test
>> + *
>
>same
>
>> + */
>> +static void test_pmt_crashlog_enable(int dev_fd)
>> +{
>> +	u_int32_t guid;
>> +	int fd;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		fd = bmg_info[i].enable_fd;
>> +		guid = bmg_info[i].guid;
>> +
>> +		/* force enable so we are in a known state */
>> +		igt_assert_f(send_msg(fd, ENABLE_MSG, enable), "0x%x: send
>enable\n", guid);
>> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, enable), "0x%x:
>verify enable\n", guid);
>> +
>> +		/* disable */
>> +		igt_assert_f(send_msg(fd, DISABLE_MSG, enable), "0x%x: send
>disable\n", guid);
>> +		igt_assert_f(verify_msg(fd, DISABLE_MSG, enable), "0x%x:
>verify disable\n", guid);
>> +
>> +		/* re-enable so we can do more testing */
>> +		igt_assert_f(send_msg(fd, ENABLE_MSG, enable), "0x%x: re-
>enable\n", guid);
>> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, enable), "0x%x:
>verify re-enable\n", guid);
>> +	}
>> +
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-clear
>> + * Description:
>> + *   Test the clear crashlog bit. After setting the crashlog data buffer should be
>> + *   set to 0xdeadbeef.
>> + *   "0" (DISABLE_MSG) is written to the trigger file to set the clear bit.  BMG
>does
>> + *   writing to the clear file, but once the bit is set it cannot be cleared with a
>> + *   reboot.  "0" to trigger is the "standard" usage, so test it.
>> + *
>> + * Test category: functionality test
>> + *
>> + */
>
>same
>
>> +static void test_pmt_crashlog_clear(int dev_fd)
>> +{
>> +	char buf[64] = {};
>> +	u_int32_t guid;
>> +	int crashlog_fd;
>> +	int trigger_fd;
>> +	int clear_fd;
>> +	int *val;
>> +	int len;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		clear_fd = bmg_info[i].clear_fd;
>> +		crashlog_fd = bmg_info[i].crashlog_fd;
>> +		trigger_fd = bmg_info[i].trigger_fd;
>> +		guid = bmg_info[i].guid;
>> +
>> +		/* make sure the bit is clear */
>> +		igt_assert_f(verify_msg(clear_fd, DISABLE_MSG, clear), "0x%x:
>verify clear\n", guid);
>> +
>> +		/* set the clear bit (0 -> trigger)*/
>> +		igt_assert_f(send_msg(trigger_fd, DISABLE_MSG, trigger),
>"0x%x: send enable\n", guid);
>> +
>> +		/* make sure the bit is set.  sleep() to allow HW to set the bit */
>> +		sleep(1);
>> +		igt_assert_f(verify_msg(clear_fd, ENABLE_MSG, clear), "0x%x:
>clear set\n", guid);
>> +
>> +		len = read(crashlog_fd, buf, sizeof(buf));
>> +		igt_assert_f(len == sizeof(buf), "0x%x: failed to read crashlog
>data\n", guid);
>> +
>> +		/* wa punit issue for first crashlog (NOTE: this is fixed)*/
>> +		if (i == 0)
>> +			val = (int *) &buf[32];
>> +		else
>> +			val = (int *)buf;
>> +
>> +		igt_assert_f(*val == 0xdeadbeef, "0x%x: invalid clear data value:
>: 0x%x", guid, *val);
>> +	}
>> +
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-consumed
>> + * Description:
>> + *   After a crashlog has been "consumed" (read), setting this bit can be done.
>> + *   Verify that it is set correctly.
>> + * Test category: functionality test
>> + *
>> + */
>
>same
>
>> +static void test_pmt_crashlog_consumed(int dev_fd)
>> +{
>> +	uint32_t guid;
>> +	int fd;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		fd = bmg_info[i].consumed_fd;
>> +		guid = bmg_info[i].guid;
>> +
>> +		/* check, set, verify */
>> +		igt_assert_f(verify_msg(fd, DISABLE_MSG, consumed), "0x%x:
>consumed clear\n", guid);
>> +		igt_assert_f(send_msg(fd, ENABLE_MSG, consumed), "0x%x:
>set consumed\n", guid);
>> +		/* sleep(1) to allow HW to set the bit */
>> +		sleep(1);
>> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, consumed), "0x%x:
>verify consumed\n", guid);
>> +	}
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-error
>> + * Description:
>> + *    The error bit is set when a crashlog fails in HW.  It is read only so only
>> + *    need to verify that it is "0".
>> + * Test category: functionality test
>> + *
>> + */
>
>same
>
>> +static void test_pmt_crashlog_error(int dev_fd)
>> +{
>> +	uint32_t guid;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		guid = bmg_info[i].guid;
>> +		igt_assert_f(verify_msg(bmg_info[i].error_fd, DISABLE_MSG,
>error), "0x%x: error clear\n", guid);
>> +	}
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-rearm
>> + * Description:
>> + *    The rearm bit is set at cold boot.  It cannot be reset unless are real
>crashlog
>> + *    occurs (i.e. setting trigger will not change its value).  Verify that it is "1".
>> + * Test category: functionality test
>> + *
>> + */
>
>same
>
>> +static void test_pmt_crashlog_rearm(int dev_fd)
>> +{
>> +	uint32_t guid;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		guid = bmg_info[i].guid;
>> +		igt_assert_f(verify_msg(bmg_info[i].rearm_fd, ENABLE_MSG,
>rearm), "0x%x: rearm set\n", guid);
>> +	}
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-trigger
>> + * Description:
>> + *    Set the manual trigger bit and make sure the data is not 0xdeadbeef
>> + * Test category: functionality test
>> + *
>> + */
>
>same
>
>> +static void test_pmt_crashlog_trigger(int dev_fd)
>> +{
>> +	char buf[64] = {};
>> +	u_int32_t *val;
>> +	int crashlog_fd;
>> +	int trigger_fd;
>> +	u_int32_t guid;
>> +	int len;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		crashlog_fd = bmg_info[i].crashlog_fd;
>> +		trigger_fd = bmg_info[i].trigger_fd;
>> +		guid = bmg_info[i].guid;
>> +
>> +		/* make sure the bit is clear */
>> +		igt_assert_f(verify_msg(trigger_fd, DISABLE_MSG, trigger),
>"0x%x: trigger clear\n",
>> +			     guid);
>> +		/* set the trigger bit (1 -> trigger)*/
>> +		igt_assert_f(send_msg(trigger_fd, ENABLE_MSG, trigger),
>"0x%x: set trigger\n", guid);
>> +
>> +		/* sleep to let the HW do its thing */
>> +		sleep(1);
>> +
>> +		/* make sure the bit is set */
>> +		igt_assert_f(verify_msg(trigger_fd, ENABLE_MSG, trigger),
>"0x%x: trigger not set\n",
>> +			     guid);
>> +
>> +		len = read(crashlog_fd, buf, sizeof(buf));
>> +		igt_assert_f(len == sizeof(buf), "0x%x: failed to read crashlog
>data\n", guid);
>> +
>> +		val = (u_int32_t *)buf;
>> +
>> +		igt_assert_f(*val != 0xdeadbeef, "0x%x: invalid trigger value: :
>0x%x", guid, *val);
>> +	}
>> +}
>> +
>> +/**
>> + * SUBTEST: pmt-bmg-tests
>> + * Description:
>> + *   Because of how the Crashlog Instances behave, these tests are ordered.
>Do not use them
>> + *   individually unless you understand the underlying HW behavior.  Because
>of this behavior,
>> + *   all of the test will be done in order in one step.
>> + *   NOTE
>> + *     o Testing MUST be done after a cold reset
>> + *     o Once crashlog is triggered the device behavior is undefined and
>requires a cold reset.
>> + *  Test category: functionality test
>> + */
>
>Then you just keep this one that is the actual sub-test.
>
>
>> +static void test_pmt_bmg(int fd)
>> +{
>> +	test_pmt_directories(fd);
>> +	test_pmt_telemetry_files(fd);
>> +	test_pmt_crashlog_files(fd);
>> +	test_pmt_crashlog_error(fd);
>> +	test_pmt_crashlog_enable(fd);
>> +	test_pmt_crashlog_rearm(fd);
>> +	test_pmt_crashlog_trigger(fd);
>> +	test_pmt_crashlog_consumed(fd);
>> +	test_pmt_crashlog_clear(fd);
>> +}
>> +
>> +igt_main
>> +{
>> +	const struct {
>> +		const char *name;
>> +		void (*func)(int);
>> +	} funcs[] = {
>> +		{ "pmt-bmg-tests", test_pmt_bmg },
>> +		{ }
>> +	}, *f;
>> +	int dev_fd;
>> +
>> +	igt_fixture {
>> +		uint16_t dev_id;
>> +
>> +		dev_fd = drm_open_driver(DRIVER_XE);
>> +		dev_id = intel_get_drm_devid(dev_fd);
>> +		igt_require_f(IS_BATTLEMAGE(dev_id), "PMT currently suppot
>only for BMG GPU\n");
>> +	}
>> +
>> +	for (f = funcs; f->name; f++) {
>> +		igt_subtest_f("%s", f->name)
>> +			f->func(dev_fd);
>> +	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(dev_fd);
>> +}
>> diff --git a/tests/meson.build b/tests/meson.build
>> index 5c01c64e9..46d36962e 100644
>> --- a/tests/meson.build
>> +++ b/tests/meson.build
>> @@ -318,6 +318,7 @@ intel_xe_progs = [
>>  	'xe_peer2peer',
>>  	'xe_pm',
>>  	'xe_pm_residency',
>> +	'xe_pmt',
>>  	'xe_pmu',
>>  	'xe_prime_self_import',
>>  	'xe_pxp',
>> --
>> 2.50.1
>>

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

* RE: [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog
  2025-08-28  9:13 ` Kamil Konieczny
@ 2025-09-04 16:14   ` Ruhl, Michael J
  0 siblings, 0 replies; 7+ messages in thread
From: Ruhl, Michael J @ 2025-09-04 16:14 UTC (permalink / raw)
  To: Kamil Konieczny
  Cc: igt-dev@lists.freedesktop.org, De Marchi, Lucas, Vivi, Rodrigo



>-----Original Message-----
>From: Kamil Konieczny <kamil.konieczny@linux.intel.com>
>Sent: Thursday, August 28, 2025 5:13 AM
>To: Ruhl, Michael J <michael.j.ruhl@intel.com>>Cc: igt-dev@lists.freedesktop.org; De Marchi, Lucas
><lucas.demarchi@intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>
>Subject: Re: [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog
>
>Hi Michael,
>On 2025-08-11 at 17:05:29 -0400, Michael J. Ruhl wrote:
>> The BMG devices has the PMT crashlog feature. If the devices present
>
>Add also full name for PMT in commit description here, like:
>
>The BMG devices has the Platform Monitoring Technology (PMT), it
>provides crashlog and telemetry features.
>
>Please ajust above to what it really is.

Will do.

>> is a BMG, test PMT api.
>>
>> NOTE: the testing order is not flexible and must be done in
>> the currently specified order.
>>
>> Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
>> ---
>>  tests/intel/xe_pmt.c | 543
>+++++++++++++++++++++++++++++++++++++++++++
>>  tests/meson.build    |   1 +
>>  2 files changed, 544 insertions(+)
>>  create mode 100644 tests/intel/xe_pmt.c
>>
>> diff --git a/tests/intel/xe_pmt.c b/tests/intel/xe_pmt.c
>> new file mode 100644
>> index 000000000..c2594730b
>> --- /dev/null
>> +++ b/tests/intel/xe_pmt.c
>> @@ -0,0 +1,543 @@
>> +// SPDX-License-Identifier: MIT
>> +/*
>> + * Copyright © 2025 Intel Corporation
>> + */
>> +
>> +/**
>> + * TEST: Verify Platform Monitoring Technology (PMT) files operations
>> + * Category: Core
>> + * Mega feature: General Core features
>> + * Sub-category: uapi
>> + * Functionality: sysfs
>> + * Description: Verify that the available PMT files (crashlog and telemetry)
>> + *   are created, are accessable, and respond as per design.
>> + */
>> +
>> +#include <unistd.h>
>> +#include <dirent.h>
>> +#include <fcntl.h>
>> +#include <limits.h>
>> +#include <string.h>
>> +
>> +#include "igt.h"
>> +#include "igt_sysfs.h"
>> +#include "linux_scaffold.h"
>> +#include "xe_drm.h"
>> +#include "xe/xe_ioctl.h"
>> +#include "xe/xe_query.h"
>> +
>> +/* base directory names */
>> +#define VSEC_CRASHLOG_DIR "intel_vsec.crashlog."
>> +#define VSEC_TELEMETRY_DIR "intel_vsec.telemetry."
>> +#define CRASHLOG_DIR "crashlog"
>> +#define TELEMETRY_DIR "telem"
>> +
>> +/* itemize the available instances for the specific device */
>> +enum bmg_crashlog_instances {
>> +	bmg_crashlog_punit = 0,
>> +	bmg_crashlog_oobmsm,
>> +	bmg_crashlog_max
>> +};
>> +
>> +enum bmg_telemety_instances {
>> +	bmg_telemetry_punit = 0,
>> +	bmg_telemetry_oobmsm,
>> +	bmg_telemetry_max
>> +};
>> +
>> +static char dev_path[PATH_MAX];
>> +static char work_path[PATH_MAX * 2];
>> +
>> +/*
>> + * In most case there should be a single instance of the crashlog and
>telemetry
>> + * directories. If DVSEC entries are not contiguos the structure will be
>different,
>> + * and the code will need to reflect the structure.
>> + */
>> +static char crashlog_vsec_dir[32];
>> +static char telemetry_vsec_dir[32];
>> +
>> +/* This needs to be specific for each supported device */
>> +static char crashlog_dir[bmg_crashlog_max][32];
>> +static char telemetry_dir[bmg_telemetry_max][32];
>> +
>> +/* telemetry file names */
>> +static const char *telem = "telem";
>> +
>> +/* crashlog filenames and descriptors */
>> +static const char *clear = "clear";
>> +static const char *consumed = "consumed";
>> +static const char *crashlog = "crashlog";
>> +static const char *enable = "enable";
>> +static const char *error = "error";
>> +static const char *dev_guid = "guid";
>> +static const char *rearm = "rearm";
>> +static const char *trigger = "trigger";
>> +
>> +struct crashlog_v2_info {
>> +	int clear_fd;
>> +	int consumed_fd;
>> +	int crashlog_fd;
>> +	int enable_fd;
>> +	int error_fd;
>> +	int guid_fd;
>> +	int rearm_fd;
>> +	int trigger_fd;
>> +	u_int32_t guid;
>> +} bmg_info[bmg_crashlog_max];
>> +
>> +#define DEV_PATH_LEN 80
>> +
>> +/*
>> + * device_sysfs_path:
>> + * @fd: opened device file descriptor
>> + * @path: buffer to store sysfs path to device directory
>> + *
>> + * Returns:
>> + * On successfull path resolution sysfs path to device directory,
>> + * NULL otherwise
>> + */
>> +static char *device_sysfs_path(int fd, char *path)
>> +{
>> +        char sysfs[DEV_PATH_LEN];
>> +
>> +        if (!igt_sysfs_path(fd, sysfs, sizeof(sysfs)))
>> +                return NULL;
>> +
>> +        if (DEV_PATH_LEN <= (strlen(sysfs) + strlen("/device")))
>> +                return NULL;
>> +
>> +        strcat(sysfs, "/device");
>> +
>> +        return realpath(sysfs, path);
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-directories
>> + * Description: PMT directory structure:
>> + * device/intel_vsec.crashlog.x/intel_pmt/crashlog<a,b>
>> + * device/intel_vsec.telemetry.x/intel_pmt/telemetry<c,d>
>> + * If this is done for a different platform, this could be
>> + * different.
>
>Add more spaces in description like you do below, so:
> * Description: PMT directory structure:
> *   device/intel_vsec.crashlog.x/intel_pmt/crashlog<a,b>
> *   device/intel_vsec.telemetry.x/intel_pmt/telemetry<c,d>
> *   If this is done for a different platform, this could be
> *   different.

I have removed the igt test tags and cleaned these comments a bit...

>> + *
>> + */
>> +static void test_pmt_directories(int dev_fd)
>> +{
>> +	struct dirent *ent;
>> +	int index;
>> +	DIR *dir;
>> +
>> +        igt_assert(device_sysfs_path(dev_fd, dev_path));
>> +
>> +	/* verify top level PMT directories */
>> +	dir = opendir(dev_path);
>> +	igt_assert_f(dir, "no directories found\n");
>> +
>> +	while ((ent = readdir(dir)) != NULL) {
>> +		if (strncmp(VSEC_CRASHLOG_DIR, ent->d_name,
>sizeof(VSEC_CRASHLOG_DIR) - 1) == 0)
>> +			strcpy(crashlog_vsec_dir, ent->d_name);
>> +		if (strncmp(VSEC_TELEMETRY_DIR, ent->d_name,
>sizeof(VSEC_TELEMETRY_DIR) - 1) == 0)
>> +			strcpy(telemetry_vsec_dir, ent->d_name);
>> +	}
>> +
>> +	closedir(dir);
>> +
>> +	igt_assert_f(strlen(crashlog_vsec_dir), "missing crashlog directory\n");
>> +	igt_assert_f(strlen(telemetry_vsec_dir), "missing telemetry
>directory\n");
>> +
>> +	/* verify crashlog directory structure */
>> +	sprintf(work_path, "%s/%s/%s", dev_path, crashlog_vsec_dir,
>"intel_pmt");
>> +
>> +	dir = opendir(work_path);
>> +	igt_assert_f(dir, "no intel_pmt directories found\n");
>> +
>> +	index = 0;
>> +	/* find the crashlog<x> directory instances */
>> +	while ((ent = readdir(dir)) != NULL) {
>> +		if (strncmp(CRASHLOG_DIR, ent->d_name,
>sizeof(CRASHLOG_DIR) - 1) == 0) {
>> +			if (index < bmg_crashlog_max)
>> +				strcpy(crashlog_dir[index], ent->d_name);
>> +			index++;
>> +		}
>> +	}
>> +
>> +	closedir(dir);
>> +
>> +	igt_assert_f(index == bmg_crashlog_max, "too many crashlog entries
>%d\n", index);
>> +	for (int i = 0; i < ARRAY_SIZE(crashlog_dir); i++)
>> +		igt_assert_f(strlen(crashlog_dir[i]), "missing crashlog[%d]
>directory\n", i);
>> +
>> +	/* verify telemetry directory structure */
>> +	sprintf(work_path, "%s/%s/%s", dev_path, telemetry_vsec_dir,
>"intel_pmt");
>> +
>> +	dir = opendir(work_path);
>> +	igt_assert_f(dir, "no telemetry intel_pmt directories found\n");
>> +
>> +	index = 0;
>> +	while ((ent = readdir(dir)) != NULL) {
>> +		if (strncmp(TELEMETRY_DIR, ent->d_name,
>sizeof(TELEMETRY_DIR) - 1) == 0) {
>> +			if (index < bmg_telemetry_max)
>> +				strcpy(telemetry_dir[index], ent->d_name);
>> +			index++;
>> +		}
>> +	}
>> +
>> +	closedir(dir);
>> +
>> +	igt_assert_f(index == bmg_telemetry_max, "too many telemetry entries
>%d\n", index);
>> +	for (int i = 0; i < ARRAY_SIZE(telemetry_dir); i++)
>> +		igt_assert_f(strlen(telemetry_dir[i]), "missing telemetry[%d]
>directory\n", i);
>> +
>> +}
>> +
>> +static void find_pmt_file(const char *path, const char *file)
>> +{
>> +	struct dirent *ent;
>> +	bool found;
>> +	DIR *dir;
>> +
>> +	dir = opendir(path);
>> +	igt_assert_f(dir, "no intel_pmt directories found\n");
>> +
>> +	found = false;
>> +	while ((ent = readdir(dir)) != NULL)
>> +		if (strcmp(file, ent->d_name) == 0)
>> +			found = true;
>> +	closedir(dir);
>> +
>> +	igt_assert_f(found, "missing %s from %s\n", file, path);
>> +}
>> +
>> +static void open_pmt_file(const char *path, const char *file, int *fd, int flags)
>> +{
>> +	char file_path[PATH_MAX];
>> +
>> +	sprintf(file_path, "%s/%s", path, file);
>> +
>> +	*fd = open(file_path, flags);
>> +	igt_assert_f(*fd > -1, "failed to open %s\n", file_path);
>> +
>> +	/* TODO: match flags to file attributes */
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-telemetry-files
>> + * Description: validate the expected telemetry file(s)
>> + * Test category: functionality test
>> + *
>> + */
>> +static void test_pmt_telemetry_files(int dev_fd)
>> +{
>> +	int i;
>> +
>> +	for (i = 0; i < bmg_telemetry_max; i++) {
>> +		sprintf(work_path, "%s/%s/%s/%s", dev_path,
>telemetry_vsec_dir,
>> +			"intel_pmt", telemetry_dir[i]);
>> +		find_pmt_file(work_path, telem);
>> +	}
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-files
>> + * Description: validate the expected crashlog files
>> + * Test category: functionality test
>> + *
>> + */
>> +static void test_pmt_crashlog_files(int dev_fd)
>> +{
>> +	char buf[64] = {};
>> +	int ret;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		sprintf(work_path, "%s/%s/%s/%s", dev_path,
>crashlog_vsec_dir, "intel_pmt",
>> +			crashlog_dir[i]);
>> +
>> +		open_pmt_file(work_path, clear, &bmg_info[i].clear_fd,
>O_RDONLY);
>> +		open_pmt_file(work_path, consumed,
>&bmg_info[i].consumed_fd, O_RDWR);
>> +		open_pmt_file(work_path, crashlog, &bmg_info[i].crashlog_fd,
>O_RDONLY);
>> +		open_pmt_file(work_path, enable, &bmg_info[i].enable_fd,
>O_RDWR);
>> +		open_pmt_file(work_path, error, &bmg_info[i].error_fd,
>O_RDONLY);
>> +		open_pmt_file(work_path, dev_guid, &bmg_info[i].guid_fd,
>O_RDONLY);
>> +		open_pmt_file(work_path, rearm, &bmg_info[i].rearm_fd,
>O_RDWR);
>> +		open_pmt_file(work_path, trigger, &bmg_info[i].trigger_fd,
>O_RDWR);
>> +
>> +		ret = pread(bmg_info[i].guid_fd, buf, sizeof(buf), 0);
>> +		igt_assert_f(ret > 0, "failed to read guid for device %d\n", i);
>> +		bmg_info[i].guid = strtol(buf, NULL, 16);
>> +		igt_assert_f(bmg_info[i].guid > 0, "failed to set guid for device
>%d\n", i);
>> +	}
>> +}
>> +
>> +#define ENABLE_MSG "1\n"
>> +#define DISABLE_MSG "0\n"
>> +
>> +static bool send_msg(int fd, const char *msg, const char *file) {
>> +	size_t len = strlen(msg);
>> +	int ret;
>> +
>> +	errno = 0;
>> +	ret = pwrite(fd, msg, len, 0);
>> +	if (ret != len)
>> +		igt_info("%s failed: len: %ld vs %d  errno: %d\n", file, len, ret,
>> +			 errno);
>> +
>> +	return ret == len;
>> +}
>> +
>> +static bool verify_msg(int fd, const char *msg, const char *file) {
>> +	size_t len = strlen(msg);
>> +	char buf[32] = {};
>> +	int ret;
>> +
>> +	errno = 0;
>> +	ret = pread(fd, buf, sizeof(buf), 0);
>> +	if (ret != len)
>> +		igt_info("%s failed: len: %ld vs %d  errno: %d\n", file, len, ret,
>errno);
>> +
>> +	return ret == len && strcmp(buf, msg) == 0;
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-enable
>> + * Description: Set enable enable/disable bit and verify usage
>> + * Test category: functionality test
>> + *
>> + */
>> +static void test_pmt_crashlog_enable(int dev_fd)
>> +{
>> +	u_int32_t guid;
>> +	int fd;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		fd = bmg_info[i].enable_fd;
>> +		guid = bmg_info[i].guid;
>> +
>> +		/* force enable so we are in a known state */
>> +		igt_assert_f(send_msg(fd, ENABLE_MSG, enable), "0x%x: send
>enable\n", guid);
>> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, enable), "0x%x:
>verify enable\n", guid);
>> +
>> +		/* disable */
>> +		igt_assert_f(send_msg(fd, DISABLE_MSG, enable), "0x%x: send
>disable\n", guid);
>> +		igt_assert_f(verify_msg(fd, DISABLE_MSG, enable), "0x%x:
>verify disable\n", guid);
>> +
>> +		/* re-enable so we can do more testing */
>> +		igt_assert_f(send_msg(fd, ENABLE_MSG, enable), "0x%x: re-
>enable\n", guid);
>> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, enable), "0x%x:
>verify re-enable\n", guid);
>> +	}
>> +
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-clear
>> + * Description:
>> + *   Test the clear crashlog bit. After setting the crashlog data buffer should be
>> + *   set to 0xdeadbeef.
>> + *   "0" (DISABLE_MSG) is written to the trigger file to set the clear bit.  BMG
>does
>> + *   writing to the clear file, but once the bit is set it cannot be cleared with a
>> + *   reboot.  "0" to trigger is the "standard" usage, so test it.
>
>Is this correct? imho:
>
> *   writing to the clear file, but once the bit is set it cannot be cleared
> *   without a reboot.  "0" to trigger is the "standard" usage, so test it.

Yeah, some bad language here.  I have tried to clarify.

>Btw could BMG be cold-rebooted by a PCIe bus
>operations without a need for cold reboot a system?

I tried to apply the cold reset IGT test usage and was told that this device was not supported
for this path.

>Can user power-cycle only BMG card?
>If not you need to block it from running on a current CI and
>have a special testing arranged for it.

OK, how do I do that?  Is there standard procedure for setting something like this up?

Once the crashlog has been triggered, a hard reset is needed.  I think that they are looking into not
having that requirement...but I am not sure what the state of that is...

>Or did I miss something?


>> + *
>
>Remove empty line here.

Done

>> + * Test category: functionality test
>
>> + *
>> + */
>> +static void test_pmt_crashlog_clear(int dev_fd)
>> +{
>> +	char buf[64] = {};
>> +	u_int32_t guid;
>> +	int crashlog_fd;
>> +	int trigger_fd;
>> +	int clear_fd;
>> +	int *val;
>> +	int len;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		clear_fd = bmg_info[i].clear_fd;
>> +		crashlog_fd = bmg_info[i].crashlog_fd;
>> +		trigger_fd = bmg_info[i].trigger_fd;
>> +		guid = bmg_info[i].guid;
>> +
>> +		/* make sure the bit is clear */
>> +		igt_assert_f(verify_msg(clear_fd, DISABLE_MSG, clear), "0x%x:
>verify clear\n", guid);
>> +
>> +		/* set the clear bit (0 -> trigger)*/
>> +		igt_assert_f(send_msg(trigger_fd, DISABLE_MSG, trigger),
>"0x%x: send enable\n", guid);
>> +
>> +		/* make sure the bit is set.  sleep() to allow HW to set the bit */
>> +		sleep(1);
>> +		igt_assert_f(verify_msg(clear_fd, ENABLE_MSG, clear), "0x%x:
>clear set\n", guid);
>> +
>> +		len = read(crashlog_fd, buf, sizeof(buf));
>> +		igt_assert_f(len == sizeof(buf), "0x%x: failed to read crashlog
>data\n", guid);
>> +
>> +		/* wa punit issue for first crashlog (NOTE: this is fixed)*/
>> +		if (i == 0)
>> +			val = (int *) &buf[32];
>> +		else
>> +			val = (int *)buf;
>> +
>> +		igt_assert_f(*val == 0xdeadbeef, "0x%x: invalid clear data value:
>: 0x%x", guid, *val);
>> +	}
>> +
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-consumed
>> + * Description:
>> + *   After a crashlog has been "consumed" (read), setting this bit can be done.
>> + *   Verify that it is set correctly.
>> + * Test category: functionality test
>> + *
>> + */
>> +static void test_pmt_crashlog_consumed(int dev_fd)
>> +{
>> +	uint32_t guid;
>> +	int fd;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		fd = bmg_info[i].consumed_fd;
>> +		guid = bmg_info[i].guid;
>> +
>> +		/* check, set, verify */
>> +		igt_assert_f(verify_msg(fd, DISABLE_MSG, consumed), "0x%x:
>consumed clear\n", guid);
>> +		igt_assert_f(send_msg(fd, ENABLE_MSG, consumed), "0x%x:
>set consumed\n", guid);
>> +		/* sleep(1) to allow HW to set the bit */
>> +		sleep(1);
>> +		igt_assert_f(verify_msg(fd, ENABLE_MSG, consumed), "0x%x:
>verify consumed\n", guid);
>> +	}
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-error
>> + * Description:
>> + *    The error bit is set when a crashlog fails in HW.  It is read only so only
>> + *    need to verify that it is "0".
>> + * Test category: functionality test
>> + *
>> + */
>> +static void test_pmt_crashlog_error(int dev_fd)
>> +{
>> +	uint32_t guid;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		guid = bmg_info[i].guid;
>> +		igt_assert_f(verify_msg(bmg_info[i].error_fd, DISABLE_MSG,
>error), "0x%x: error clear\n", guid);
>> +	}
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-rearm
>> + * Description:
>> + *    The rearm bit is set at cold boot.  It cannot be reset unless are real
>crashlog
>> + *    occurs (i.e. setting trigger will not change its value).  Verify that it is "1".
>> + * Test category: functionality test
>> + *
>> + */
>> +static void test_pmt_crashlog_rearm(int dev_fd)
>> +{
>> +	uint32_t guid;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		guid = bmg_info[i].guid;
>> +		igt_assert_f(verify_msg(bmg_info[i].rearm_fd, ENABLE_MSG,
>rearm), "0x%x: rearm set\n", guid);
>> +	}
>> +}
>> +
>> +/*
>> + * SUBTEST: pmt-crashlog-trigger
>> + * Description:
>> + *    Set the manual trigger bit and make sure the data is not 0xdeadbeef
>> + * Test category: functionality test
>> + *
>> + */
>> +static void test_pmt_crashlog_trigger(int dev_fd)
>> +{
>> +	char buf[64] = {};
>> +	u_int32_t *val;
>> +	int crashlog_fd;
>> +	int trigger_fd;
>> +	u_int32_t guid;
>> +	int len;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(bmg_info); i++) {
>> +		crashlog_fd = bmg_info[i].crashlog_fd;
>> +		trigger_fd = bmg_info[i].trigger_fd;
>> +		guid = bmg_info[i].guid;
>> +
>> +		/* make sure the bit is clear */
>> +		igt_assert_f(verify_msg(trigger_fd, DISABLE_MSG, trigger),
>"0x%x: trigger clear\n",
>> +			     guid);
>> +		/* set the trigger bit (1 -> trigger)*/
>> +		igt_assert_f(send_msg(trigger_fd, ENABLE_MSG, trigger),
>"0x%x: set trigger\n", guid);
>> +
>> +		/* sleep to let the HW do its thing */
>> +		sleep(1);
>> +
>> +		/* make sure the bit is set */
>> +		igt_assert_f(verify_msg(trigger_fd, ENABLE_MSG, trigger),
>"0x%x: trigger not set\n",
>> +			     guid);
>> +
>> +		len = read(crashlog_fd, buf, sizeof(buf));
>> +		igt_assert_f(len == sizeof(buf), "0x%x: failed to read crashlog
>data\n", guid);
>> +
>> +		val = (u_int32_t *)buf;
>> +
>> +		igt_assert_f(*val != 0xdeadbeef, "0x%x: invalid trigger value: :
>0x%x", guid, *val);
>> +	}
>> +}
>> +
>> +/**
>> + * SUBTEST: pmt-bmg-tests
>> + * Description:
>> + *   Because of how the Crashlog Instances behave, these tests are ordered.
>Do not use them
>> + *   individually unless you understand the underlying HW behavior.  Because
>of this behavior,
>> + *   all of the test will be done in order in one step.
>> + *   NOTE
>> + *     o Testing MUST be done after a cold reset
>> + *     o Once crashlog is triggered the device behavior is undefined and
>requires a cold reset.
>
>Same concerns as above.

This comment is accurate.

>> + *  Test category: functionality test
>> + */
>> +static void test_pmt_bmg(int fd)
>> +{
>> +	test_pmt_directories(fd);
>> +	test_pmt_telemetry_files(fd);
>> +	test_pmt_crashlog_files(fd);
>> +	test_pmt_crashlog_error(fd);
>> +	test_pmt_crashlog_enable(fd);
>> +	test_pmt_crashlog_rearm(fd);
>> +	test_pmt_crashlog_trigger(fd);
>> +	test_pmt_crashlog_consumed(fd);
>> +	test_pmt_crashlog_clear(fd);
>> +}
>> +
>> +igt_main
>> +{
>> +	const struct {
>> +		const char *name;
>> +		void (*func)(int);
>> +	} funcs[] = {
>> +		{ "pmt-bmg-tests", test_pmt_bmg },
>
>imho better: pmt-bmg-all

Agreed.  Done.

Thank you for your comments!

Mike

>> +		{ }
>> +	}, *f;
>> +	int dev_fd;
>> +
>> +	igt_fixture {
>> +		uint16_t dev_id;
>> +
>> +		dev_fd = drm_open_driver(DRIVER_XE);
>> +		dev_id = intel_get_drm_devid(dev_fd);
>> +		igt_require_f(IS_BATTLEMAGE(dev_id), "PMT currently suppot
>only for BMG GPU\n");
>
>s/suppot/support/
>
>> +	}
>> +
>> +	for (f = funcs; f->name; f++) {
>> +		igt_subtest_f("%s", f->name)
>
>Number of subtests here do not match those with 'SUBTEST:'
>above. Also you have several igt asserts there which will
>break a flow so it could happen that it will not reach
>test_pmt_crashlog_clear()
>
>imho you could have dir and files checks without a need
>for a cold reboot.
>
>Regards,
>Kamil
>
>> +			f->func(dev_fd);
>> +	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(dev_fd);
>> +}
>> diff --git a/tests/meson.build b/tests/meson.build
>> index 5c01c64e9..46d36962e 100644
>> --- a/tests/meson.build
>> +++ b/tests/meson.build
>> @@ -318,6 +318,7 @@ intel_xe_progs = [
>>  	'xe_peer2peer',
>>  	'xe_pm',
>>  	'xe_pm_residency',
>> +	'xe_pmt',
>>  	'xe_pmu',
>>  	'xe_prime_self_import',
>>  	'xe_pxp',
>> --
>> 2.50.1
>>

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

end of thread, other threads:[~2025-09-04 16:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-11 21:05 [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog Michael J. Ruhl
2025-08-11 21:55 ` ✓ i915.CI.BAT: success for test/intel/xe_pmt: Add testing for BMG crashlog (rev3) Patchwork
2025-08-11 23:37 ` ✗ i915.CI.Full: failure " Patchwork
2025-08-27 13:52 ` [PATCH v3] test/intel/xe_pmt: Add testing for BMG crashlog Rodrigo Vivi
2025-09-04 13:59   ` Ruhl, Michael J
2025-08-28  9:13 ` Kamil Konieczny
2025-09-04 16:14   ` Ruhl, Michael J

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.