Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools
@ 2024-09-16 20:18 Ville Syrjala
  2024-09-16 20:18 ` [PATCH i-g-t 1/5] lib/power: Allow use of rapl by specifying fd=-1 Ville Syrjala
                   ` (8 more replies)
  0 siblings, 9 replies; 21+ messages in thread
From: Ville Syrjala @ 2024-09-16 20:18 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Add a couple of small tools for measuring energy/power consumption
and display memory bandwidth utlization (on Intel hw). Might be
helpful for other people as well, and having them in igt will allow
me to mostly forget aboyt my local copies of these.

Ville Syrjälä (5):
  lib/power: Allow use of rapl by specifying fd=-1
  igt: Use is_intel_dgfx()
  lib/igt_power: Add power_supply/BAT based measurement
  tools/power: Introduce a small power/energy measurement tool
  tools/intel_display_bandwidth: Tool for measuring display memory
    bandwidth utilization

 lib/igt_power.c                 |  66 +++++++++++-
 lib/igt_power.h                 |   5 +-
 lib/intel_reg.h                 |   5 +
 tests/intel/kms_pm_dc.c         |   6 +-
 tests/intel/kms_pm_rpm.c        |   6 +-
 tests/kms_addfb_basic.c         |   9 +-
 tools/intel_display_bandwidth.c | 171 ++++++++++++++++++++++++++++++
 tools/meson.build               |   2 +
 tools/power.c                   | 179 ++++++++++++++++++++++++++++++++
 9 files changed, 431 insertions(+), 18 deletions(-)
 create mode 100644 tools/intel_display_bandwidth.c
 create mode 100644 tools/power.c

-- 
2.44.2


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

* [PATCH i-g-t 1/5] lib/power: Allow use of rapl by specifying fd=-1
  2024-09-16 20:18 [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools Ville Syrjala
@ 2024-09-16 20:18 ` Ville Syrjala
  2024-10-11 17:17   ` Kamil Konieczny
  2024-09-16 20:18 ` [PATCH i-g-t 2/5] igt: Use is_intel_dgfx() Ville Syrjala
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 21+ messages in thread
From: Ville Syrjala @ 2024-09-16 20:18 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

igt_power_open() is currently defunct when you don't have
the GPU driver loaded, or when you explicitly want to measure
via rapl even when using a DGPU. Allow those use cases by
accepting fd<0 to indicate that we explicitly want to use rapl.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 lib/igt_power.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/igt_power.c b/lib/igt_power.c
index 810859b134dc..f4d3efcf0cec 100644
--- a/lib/igt_power.c
+++ b/lib/igt_power.c
@@ -106,7 +106,7 @@ int igt_power_open(int fd, struct igt_power *p, const char *domain)
 	p->hwmon_fd = -1;
 	p->rapl.fd = -1;
 
-	is_dgfx = is_xe_device(fd) ? xe_has_vram(fd) : gem_has_lmem(fd);
+	is_dgfx = fd >= 0 && (is_xe_device(fd) ? xe_has_vram(fd) : gem_has_lmem(fd));
 	if (is_dgfx) {
 		if (strncmp(domain, "gpu", strlen("gpu")) == 0) {
 			p->hwmon_fd = igt_hwmon_open(fd);
-- 
2.44.2


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

* [PATCH i-g-t 2/5] igt: Use is_intel_dgfx()
  2024-09-16 20:18 [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools Ville Syrjala
  2024-09-16 20:18 ` [PATCH i-g-t 1/5] lib/power: Allow use of rapl by specifying fd=-1 Ville Syrjala
@ 2024-09-16 20:18 ` Ville Syrjala
  2024-10-11 17:20   ` Kamil Konieczny
  2024-09-16 20:18 ` [PATCH i-g-t 3/5] lib/igt_power: Add power_supply/BAT based measurement Ville Syrjala
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 21+ messages in thread
From: Ville Syrjala @ 2024-09-16 20:18 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Replace the hand rolled copies of is_intel_dgfx() with
the real thing.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 lib/igt_power.c          | 6 ++----
 tests/intel/kms_pm_dc.c  | 6 ++----
 tests/intel/kms_pm_rpm.c | 6 ++----
 tests/kms_addfb_basic.c  | 9 ++++-----
 4 files changed, 10 insertions(+), 17 deletions(-)

diff --git a/lib/igt_power.c b/lib/igt_power.c
index f4d3efcf0cec..e891da87acf3 100644
--- a/lib/igt_power.c
+++ b/lib/igt_power.c
@@ -12,7 +12,7 @@
 #include "igt_power.h"
 #include "igt_sysfs.h"
 
-#include "xe/xe_query.h"
+#include "intel_common.h"
 
 static const char *rapl_domains[] = { "cpu", "gpu", "pkg", "ram" };
 
@@ -101,13 +101,11 @@ static inline void rapl_close(struct rapl *r)
 int igt_power_open(int fd, struct igt_power *p, const char *domain)
 {
 	int i;
-	bool is_dgfx;
 
 	p->hwmon_fd = -1;
 	p->rapl.fd = -1;
 
-	is_dgfx = fd >= 0 && (is_xe_device(fd) ? xe_has_vram(fd) : gem_has_lmem(fd));
-	if (is_dgfx) {
+	if (fd >= 0 && is_intel_dgfx(fd)) {
 		if (strncmp(domain, "gpu", strlen("gpu")) == 0) {
 			p->hwmon_fd = igt_hwmon_open(fd);
 			if (p->hwmon_fd >= 0)
diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index 07b140ce5b16..362c9b6edb25 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -46,7 +46,7 @@
 #include "limits.h"
 #include "time.h"
 #include "igt_pm.h"
-#include "xe/xe_query.h"
+#include "intel_common.h"
 
 /**
  * SUBTEST: dc3co-vpb-simulation
@@ -711,7 +711,6 @@ static void kms_poll_state_restore(int sig)
 igt_main
 {
 	data_t data = {};
-	bool is_dgfx;
 
 	igt_fixture {
 		data.drm_fd = drm_open_driver_master(DRIVER_INTEL | DRIVER_XE);
@@ -805,8 +804,7 @@ igt_main
 
 	igt_describe("This test validates display engine entry to DC9 state");
 	igt_subtest("dc9-dpms") {
-		is_dgfx = is_xe_device(data.drm_fd) ? xe_has_vram(data.drm_fd) : gem_has_lmem(data.drm_fd);
-		if (!is_dgfx)
+		if (!is_intel_dgfx(data.drm_fd))
 			igt_require_f(igt_pm_pc8_plus_residencies_enabled(data.msr_fd),
 				      "PC8+ residencies not supported\n");
 		test_dc9_dpms(&data);
diff --git a/tests/intel/kms_pm_rpm.c b/tests/intel/kms_pm_rpm.c
index 852e9cb5f84d..990c509156f3 100644
--- a/tests/intel/kms_pm_rpm.c
+++ b/tests/intel/kms_pm_rpm.c
@@ -39,8 +39,8 @@
 #include "igt_kmod.h"
 #include "igt_sysfs.h"
 #include "intel_blt.h"
+#include "intel_common.h"
 #include "xe/xe_ioctl.h"
-#include "xe/xe_query.h"
 
 /**
  * SUBTEST: basic-pci-d3-state
@@ -1116,7 +1116,6 @@ static bool device_in_pci_d3(struct pci_device *pci_dev)
 static void pci_d3_state_subtest(void)
 {
 	struct pci_device *pci_dev, *bridge_pci_dev;
-	bool is_dgfx;
 
 	igt_require(has_runtime_pm);
 
@@ -1126,8 +1125,7 @@ static void pci_d3_state_subtest(void)
 	disable_all_screens_and_wait(&ms_data);
 	igt_assert(igt_wait(device_in_pci_d3(pci_dev), 2000, 100));
 
-	is_dgfx = is_xe_device(drm_fd) ? xe_has_vram(drm_fd) : gem_has_lmem(drm_fd);
-	if (is_dgfx)
+	if (is_intel_dgfx(drm_fd))
 		igt_require_f(pci_device_has_kernel_driver(bridge_pci_dev),
 			      "pci bridge device does not bind with pcieport driver\n");
 
diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index 8fe22ec05166..b22818592e57 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -51,6 +51,7 @@
 #include "igt_rand.h"
 #include "igt_device.h"
 #include "i915/intel_memory_region.h"
+#include "intel_common.h"
 #include "xe/xe_ioctl.h"
 #include "xe/xe_query.h"
 
@@ -303,13 +304,11 @@ static void invalid_tests(int fd)
 			    IGT_COLOR_YCBCR_BT709, IGT_COLOR_YCBCR_LIMITED_RANGE);
 		igt_calc_fb_size(&fb);
 
-		if (is_i915_device(fd)) {
-			igt_require(gem_has_lmem(fd));
+		igt_require(is_intel_dgfx(fd));
+		if (is_i915_device(fd))
 			handle = gem_create_in_memory_regions(fd, fb.size, REGION_SMEM);
-		} else {
-			igt_require(xe_has_vram(fd));
+		else
 			handle = xe_bo_create(fd, 0, fb.size, system_memory(fd), 0);
-		}
 
 		f.handles[0] = handle;
 		do_ioctl_err(fd, DRM_IOCTL_MODE_ADDFB2, &f, EREMOTE);
-- 
2.44.2


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

* [PATCH i-g-t 3/5] lib/igt_power: Add power_supply/BAT based measurement
  2024-09-16 20:18 [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools Ville Syrjala
  2024-09-16 20:18 ` [PATCH i-g-t 1/5] lib/power: Allow use of rapl by specifying fd=-1 Ville Syrjala
  2024-09-16 20:18 ` [PATCH i-g-t 2/5] igt: Use is_intel_dgfx() Ville Syrjala
@ 2024-09-16 20:18 ` Ville Syrjala
  2024-10-11 17:30   ` Kamil Konieczny
  2024-09-16 20:18 ` [PATCH i-g-t 4/5] tools/power: Introduce a small power/energy measurement tool Ville Syrjala
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 21+ messages in thread
From: Ville Syrjala @ 2024-09-16 20:18 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Allow measuring total system power via the power_supply class
stuff in sysfs (typically the information there comes from ACPI).

There are two types of batteries:
- reports remaining capacity in uWh (energy_now)
- reports remaining capacity in uAh (charge_now)

The first type is easier since we just have to convert to
uJ. The second type is less convenient since we also need
the voltage to determine energy. For that we just multiply
with voltage_now (in uV) when sampling charge_now. Obviously
this isn't entirely correct (should integrate instead), but
I think it's close enough to be useful.

Also one should keep in mind that the battery reports remaining
energy, not consumed energy. So we have to flip stuff around when
calculating things. Another alternative would be flip already
when measuring (eg. {charge,energy}_full_design - {charge,energy}_now),
but that seems more of a hassle really.

TODO: maybe confirm that the AC adapter is unplugged and the
battery is actually reporting to discharge before we start?

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 lib/igt_power.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_power.h |  5 ++++-
 2 files changed, 64 insertions(+), 1 deletion(-)

diff --git a/lib/igt_power.c b/lib/igt_power.c
index e891da87acf3..a3e8ee588365 100644
--- a/lib/igt_power.c
+++ b/lib/igt_power.c
@@ -85,6 +85,21 @@ static inline void rapl_close(struct rapl *r)
 	r->fd = -1;
 }
 
+static uint64_t bat_get_energy(int fd)
+{
+	if (igt_sysfs_has_attr(fd, "energy_now")) {
+		/* uWh -> uJ */
+		return 3600 *
+			igt_sysfs_get_u64(fd, "energy_now");
+	} else {
+		/* uAh * uV -> uJ */
+		return 3600 *
+			igt_sysfs_get_u64(fd, "charge_now") *
+			igt_sysfs_get_u64(fd, "voltage_now") /
+			1000000;
+	}
+}
+
 /**
  * igt_power_open:
  * @fd : device fd
@@ -103,6 +118,7 @@ int igt_power_open(int fd, struct igt_power *p, const char *domain)
 	int i;
 
 	p->hwmon_fd = -1;
+	p->bat_fd = -1;
 	p->rapl.fd = -1;
 
 	if (fd >= 0 && is_intel_dgfx(fd)) {
@@ -140,6 +156,8 @@ void igt_power_get_energy(struct igt_power *power, struct power_sample *s)
 	if (power->hwmon_fd >= 0) {
 		if (igt_sysfs_has_attr(power->hwmon_fd, "energy1_input"))
 			s->energy = igt_sysfs_get_u64(power->hwmon_fd, "energy1_input");
+	} else if (power->bat_fd >= 0) {
+		s->energy = bat_get_energy(power->bat_fd);
 	} else if (power->rapl.fd >= 0) {
 		rapl_read(&power->rapl, s);
 	}
@@ -160,6 +178,8 @@ double igt_power_get_mJ(const struct igt_power *power,
 {
 	if (power->hwmon_fd >= 0)
 		return (p1->energy - p0->energy) * 1e-3;
+	else if (power->bat_fd >= 0)
+		return (p0->energy - p1->energy) * 1e-3; /* battery measures remaining energy */
 	else if (power->rapl.fd >= 0)
 		return ((p1->energy - p0->energy) *  power->rapl.scale) * 1e3;
 
@@ -207,7 +227,47 @@ void igt_power_close(struct igt_power *power)
 	if (power->hwmon_fd >= 0) {
 		close(power->hwmon_fd);
 		power->hwmon_fd = -1;
+	} else if (power->bat_fd >= 0) {
+		close(power->bat_fd);
+		power->bat_fd = -1;
 	} else if (power->rapl.fd >= 0) {
 		rapl_close(&power->rapl);
 	}
 }
+
+/**
+ * igt_power_bat_open:
+ * @igt_power : power struct
+ * @index: battery index
+ *
+ * opens the power_supply fd based on battery index
+ *
+ * Returns
+ * 0 on success, errno otherwise
+ */
+int igt_power_bat_open(struct igt_power *p, int index)
+{
+	char path[64];
+	int fd;
+
+	p->hwmon_fd = -1;
+	p->bat_fd = -1;
+	p->rapl.fd = -1;
+
+	snprintf(path, sizeof(path), "/sys/class/power_supply/BAT%d", index);
+
+	fd = open(path, O_RDONLY | O_DIRECTORY);
+	if (fd < 0)
+		return fd;
+
+	if (!igt_sysfs_has_attr(fd, "energy_now") &&
+	    !(igt_sysfs_has_attr(fd, "charge_now") &&
+	      igt_sysfs_has_attr(fd, "voltage_now"))) {
+		close(fd);
+		return -1;
+	}
+
+	p->bat_fd = fd;
+
+	return 0;
+}
diff --git a/lib/igt_power.h b/lib/igt_power.h
index 68a05300eec2..853b0fae815a 100644
--- a/lib/igt_power.h
+++ b/lib/igt_power.h
@@ -42,14 +42,17 @@ struct power_sample {
 struct igt_power {
 	struct rapl rapl;
 	int hwmon_fd;
+	int bat_fd;
 };
 
 int igt_power_open(int i915, struct igt_power *p, const char *domain);
 void igt_power_close(struct igt_power *p);
 
+int igt_power_bat_open(struct igt_power *p, int index);
+
 static inline bool igt_power_valid(struct igt_power *p)
 {
-	return (p->rapl.fd >= 0) || (p->hwmon_fd >= 0);
+	return p->rapl.fd >= 0 || p->hwmon_fd >= 0 || p->bat_fd >= 0;
 }
 
 void igt_power_get_energy(struct igt_power *p, struct power_sample *s);
-- 
2.44.2


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

* [PATCH i-g-t 4/5] tools/power: Introduce a small power/energy measurement tool
  2024-09-16 20:18 [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools Ville Syrjala
                   ` (2 preceding siblings ...)
  2024-09-16 20:18 ` [PATCH i-g-t 3/5] lib/igt_power: Add power_supply/BAT based measurement Ville Syrjala
@ 2024-09-16 20:18 ` Ville Syrjala
  2024-10-11 17:39   ` Kamil Konieczny
  2024-09-16 20:18 ` [PATCH i-g-t 5/5] tools/intel_display_bandwidth: Tool for measuring display memory bandwidth utilization Ville Syrjala
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 21+ messages in thread
From: Ville Syrjala @ 2024-09-16 20:18 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Provide a small tool for general power/energy measurements.

The tool operates as follow:
1. optionally sleep for a while to let the system settle
2. sample from number of rapl/hwmon/battery sources
3. sleep for a know amount of time
4. sample again from the same sources
5. calculate the results and report how much power/energy was used

igt_power provides the actual power/energy measurement stuff.

Sample output:
$ power -S 30 -s 30 -d /dev/dri/card0 -b 0 -r gpu -r pkg
/dev/dri/card0[gpu]: energy 17.944336 mJ, power 0.597746 mW, time 30.020000 s
battery[0]: energy 108000.000000 mJ, power 3597.585325 mW, time 30.020136 s
rapl[gpu]: energy 17.944336 mJ, power 0.597824 mW, time 30.016083 s
rapl[pkg]: energy 24139.099121 mJ, power 804.205461 mW, time 30.016085 s

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tools/meson.build |   1 +
 tools/power.c     | 179 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 180 insertions(+)
 create mode 100644 tools/power.c

diff --git a/tools/meson.build b/tools/meson.build
index df26c4b95e3f..48c9a4b5089e 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -43,6 +43,7 @@ tools_progs = [
 	'intel_gvtg_test',
 	'dpcd_reg',
 	'lsgpu',
+	'power',
 ]
 tool_deps = igt_deps
 tool_deps += zlib
diff --git a/tools/power.c b/tools/power.c
new file mode 100644
index 000000000000..75c62ad39e61
--- /dev/null
+++ b/tools/power.c
@@ -0,0 +1,179 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <fcntl.h>
+#include <getopt.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "drmtest.h"
+#include "igt_power.h"
+
+struct measurement {
+	int battery_index;
+	const char *rapl_domain;
+	const char *drm_device;
+	struct power_sample pre, post;
+	struct igt_power power;
+};
+
+static bool prepare(struct measurement *m)
+{
+	if (m->battery_index >= 0) {
+		if (igt_power_bat_open(&m->power, m->battery_index)) {
+			fprintf(stderr, "Unable to open battery %d\n", m->battery_index);
+			return false;
+		}
+	}
+
+	if (m->rapl_domain) {
+		int fd = -1;
+
+		if (m->drm_device) {
+			fd = open(m->drm_device, O_RDONLY);
+			if (fd < 0) {
+				fprintf(stderr, "Unable to open drm device %s\n", m->drm_device);
+				return false;
+			}
+		}
+
+		if (igt_power_open(fd, &m->power, m->rapl_domain)) {
+			if (m->drm_device)
+				fprintf(stderr, "Unable to open hwmon/rapl for %s\n", m->drm_device);
+			else
+				fprintf(stderr, "Unable to open rapl domain %s\n", m->rapl_domain);
+			close(fd);
+			return false;
+		}
+
+		close(fd);
+	}
+
+	return true;
+}
+
+static void sample_pre(struct measurement *m)
+{
+	igt_power_get_energy(&m->power, &m->pre);
+}
+
+static void sample_post(struct measurement *m)
+{
+	igt_power_get_energy(&m->power, &m->post);
+}
+
+static void report(struct measurement *m)
+{
+	if (m->battery_index >= 0)
+		printf("battery[%d]: energy %f mJ, power %f mW, time %f s\n",
+		       m->battery_index,
+		       igt_power_get_mJ(&m->power, &m->pre, &m->post),
+		       igt_power_get_mW(&m->power, &m->pre, &m->post),
+		       igt_power_get_s(&m->pre, &m->post));
+	else
+		printf("%s[%s]: energy %f mJ, power %f mW, time %f s\n",
+		       m->drm_device ?: "rapl", m->rapl_domain,
+		       igt_power_get_mJ(&m->power, &m->pre, &m->post),
+		       igt_power_get_mW(&m->power, &m->pre, &m->post),
+		       igt_power_get_s(&m->pre, &m->post));
+
+	igt_power_close(&m->power);
+}
+
+static void __attribute__((noreturn)) usage(const char *name)
+{
+	fprintf(stderr,
+		"Usage: %s [[-d <device>][-r <domain>][-b <battery>]...][-S <seconds>][-s <seconds>]\n"
+		"  -d,--drm <device>\tDRM device (eg. /dev/dri/card0)\n"
+		"  -r,--rapl <domain>\trapl domain (cpu,gpu,pkg,ram)\n"
+		"  -b,--battery <battery>\tbattery index\n"
+		"  -S,--settle <seconds>\tsettling duration\n"
+		"  -s,--sleep <seconds>\tmeasurement duration\n",
+		name);
+	exit(1);
+}
+
+int main(int argc, char *argv[])
+{
+	struct measurement measurements[8];
+	int num_measurements = 0;
+	int measurement_duration = 0;
+	int settle_duration = 0;
+
+	for (;;) {
+		static const struct option long_options[] = {
+			{ .name = "drm", .has_arg = required_argument, },
+			{ .name = "rapl", .has_arg = required_argument, },
+			{ .name = "battery", .has_arg = required_argument, },
+			{ .name = "sleep", .has_arg = required_argument, },
+			{ .name = "settle", .has_arg = required_argument, },
+			{}
+		};
+
+		int opt = getopt_long(argc, argv, "d:r:b:S:s:", long_options, NULL);
+		if (opt == -1)
+			break;
+
+		switch (opt) {
+		case 'd':
+			if (num_measurements >= ARRAY_SIZE(measurements))
+				usage(argv[0]);
+			measurements[num_measurements].battery_index = -1;
+			measurements[num_measurements].rapl_domain = "gpu";
+			measurements[num_measurements].drm_device = optarg;
+			num_measurements++;
+			break;
+		case 'r':
+			if (num_measurements >= ARRAY_SIZE(measurements))
+				usage(argv[0]);
+			measurements[num_measurements].battery_index = -1;
+			measurements[num_measurements].rapl_domain = optarg;
+			measurements[num_measurements].drm_device = NULL;
+			num_measurements++;
+			break;
+		case 'b':
+			if (num_measurements >= ARRAY_SIZE(measurements))
+				usage(argv[0]);
+			measurements[num_measurements].battery_index = atoi(optarg);
+			measurements[num_measurements].rapl_domain = NULL;
+			measurements[num_measurements].drm_device = NULL;
+			num_measurements++;
+			break;
+		case 's':
+			measurement_duration = atoi(optarg);
+			break;
+		case 'S':
+			settle_duration = atoi(optarg);
+			break;
+		default:
+			usage(argv[0]);
+			break;
+		}
+	}
+
+	if (num_measurements == 0)
+		usage(argv[0]);
+
+	for (int i = 0; i < num_measurements; i++) {
+		if (!prepare(&measurements[i]))
+			usage(argv[0]);
+	}
+
+	sleep(settle_duration);
+
+	for (int i = 0; i < num_measurements; i++)
+		sample_pre(&measurements[i]);
+
+	sleep(measurement_duration);
+
+	for (int i = 0; i < num_measurements; i++)
+		sample_post(&measurements[i]);
+
+	for (int i = 0; i < num_measurements; i++)
+		report(&measurements[i]);
+
+	return 0;
+}
-- 
2.44.2


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

* [PATCH i-g-t 5/5] tools/intel_display_bandwidth: Tool for measuring display memory bandwidth utilization
  2024-09-16 20:18 [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools Ville Syrjala
                   ` (3 preceding siblings ...)
  2024-09-16 20:18 ` [PATCH i-g-t 4/5] tools/power: Introduce a small power/energy measurement tool Ville Syrjala
@ 2024-09-16 20:18 ` Ville Syrjala
  2024-10-11 17:52   ` Kamil Konieczny
  2024-09-16 21:24 ` ✓ CI.xeBAT: success for Power/energy and display memory bandwidth measurement tools Patchwork
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 21+ messages in thread
From: Ville Syrjala @ 2024-09-16 20:18 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Introduce a small tool for measing the display enging
memory bandwidth utilization. Generally this is available
on SNB+, except on TGL/derivatives where the relevant
registers weren't updated to cope with the new ABOX layout
in the hardware.

Quite handy for confirming that FBC/CCS/etc. are doing their
job.

Not 100% sure about the required scaling factor because
bspec claims it's only needed for MTL, but my ADL definitely
needs it already.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 lib/intel_reg.h                 |   5 +
 tools/intel_display_bandwidth.c | 171 ++++++++++++++++++++++++++++++++
 tools/meson.build               |   1 +
 3 files changed, 177 insertions(+)
 create mode 100644 tools/intel_display_bandwidth.c

diff --git a/lib/intel_reg.h b/lib/intel_reg.h
index 26833c66f8e7..5e049d8b14d6 100644
--- a/lib/intel_reg.h
+++ b/lib/intel_reg.h
@@ -1413,6 +1413,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define PCH_3DRAMCGDIS0		0x46028
 #define SOUTH_DSPCLK_GATE_D	0xc2020
 
+#define DE_POWER1	0x42400
+#define DE_POWER2	0x42404
+#define DE_POWER2_ABOX0	0x42404
+#define DE_POWER2_ABOX1	0x42408
+
 #define CPU_eDP_A		0x64000
 #define PCH_DP_B		0xe4100
 #define PCH_DP_C		0xe4200
diff --git a/tools/intel_display_bandwidth.c b/tools/intel_display_bandwidth.c
new file mode 100644
index 000000000000..c7be3c390d08
--- /dev/null
+++ b/tools/intel_display_bandwidth.c
@@ -0,0 +1,171 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <getopt.h>
+#include <inttypes.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "intel_io.h"
+#include "intel_chipset.h"
+#include "intel_reg.h"
+
+static bool has_de_power2(uint32_t devid)
+{
+	/*
+	 * TGL has DE_POWER2 but it measures the low priority traffic
+	 * on ABOX, not not actual display traffic on ABOX0/ABOX1.
+	 */
+	if (intel_display_ver(devid) == 12)
+		return false;
+
+	return intel_display_ver(devid) >= 6 &&
+		!IS_VALLEYVIEW(devid) && !IS_CHERRYVIEW(devid);
+}
+
+static bool has_de_power2_abox0_abox1(uint32_t devid)
+{
+	/*
+	 * Despite having ABOX0/ABOX1 TGL lacks the
+	 * accompanying DE_POWER2_ABOX* registers.
+	 */
+	return intel_display_ver(devid) >= 13;
+}
+
+static int de_power2_scale(uint32_t devid)
+{
+	/*
+	 * FIXME should perhaps use something like
+	 * is_intel_dgfx() but that one wants to open the device :(
+	 */
+	switch (intel_display_ver(devid)) {
+	case 13:
+		return IS_DG2(devid) ? 1 : 2;
+	case 14:
+		return IS_BATTLEMAGE(devid) ? 1 : 2;
+	default:
+		return 1;
+	}
+}
+
+static int de_power2_unit(uint32_t devid)
+{
+	return 64 * de_power2_scale(devid);
+}
+
+static float bandwidth(uint32_t devid, int duration,
+		       uint32_t pre, uint32_t post)
+{
+	return (float)(post - pre) * de_power2_unit(devid) / (duration << 20);
+}
+
+static void measure_de_power2_abox0_abox1(uint32_t devid, unsigned int sleep_duration)
+{
+	uint32_t pre_abox0, post_abox0;
+	uint32_t pre_abox1, post_abox1;
+
+	pre_abox0 = INREG(DE_POWER2_ABOX0);
+	pre_abox1 = INREG(DE_POWER2_ABOX1);
+
+	if (sleep_duration) {
+		sleep(sleep_duration);
+
+		post_abox0 = INREG(DE_POWER2_ABOX0);
+		post_abox1 = INREG(DE_POWER2_ABOX1);
+
+		printf("DE_POWER2_ABOX0: 0x%08x->0x%08x\n",
+		       pre_abox0, post_abox0);
+		printf("DE_POWER2_ABOX1: 0x%08x->0x%08x\n",
+		       pre_abox1, post_abox1);
+
+		printf("ABOX0 bandwidth: %.2f MiB/s\n",
+		       bandwidth(devid, sleep_duration,
+				 pre_abox0, post_abox0));
+		printf("ABOX1 bandwidth: %.2f MiB/s\n",
+		       bandwidth(devid, sleep_duration,
+				 pre_abox1, post_abox1));
+		printf("Total bandwidth: %.2f MiB/s\n",
+		       bandwidth(devid, sleep_duration,
+				 pre_abox0 + pre_abox1, post_abox0 + post_abox1));
+	} else {
+		printf("DE_POWER2_ABOX0: 0x%08x\n", pre_abox0);
+		printf("DE_POWER2_ABOX1: 0x%08x\n", pre_abox1);
+	}
+}
+
+static void measure_de_power2(uint32_t devid, unsigned int sleep_duration)
+{
+	uint32_t pre, post;
+
+	pre = INREG(DE_POWER2);
+
+	if (sleep_duration) {
+		sleep(sleep_duration);
+
+		post = INREG(DE_POWER2);
+
+		printf("DE_POWER2: 0x%08x->0x%08x\n", pre, post);
+
+		printf("Total bandwidth: %.2f MiB/s\n",
+		       bandwidth(devid, sleep_duration, pre, post));
+	} else {
+		printf("DE_POWER2: 0x%08x\n", pre);
+	}
+}
+
+static void __attribute__((noreturn)) usage(const char *name)
+{
+	fprintf(stderr, "Usage: %s [options]\n"
+		" -s,--sleep <seconds>\n",
+		name);
+	exit(1);
+}
+
+int main(int argc, char *argv[])
+{
+	struct intel_mmio_data mmio_data;
+	unsigned int sleep_duration = 0;
+	uint32_t devid;
+
+	for (;;) {
+		static const struct option long_options[] = {
+			{ .name = "sleep", .has_arg = required_argument, },
+			{}
+		};
+
+		int opt = getopt_long(argc, argv, "s:", long_options, NULL);
+		if (opt == -1)
+			break;
+
+		switch (opt) {
+		case 's':
+			sleep_duration = atoi(optarg);
+			break;
+		default:
+			usage(argv[0]);
+			break;
+		}
+	}
+
+	devid = intel_get_pci_device()->device_id;
+
+	if (!has_de_power2(devid)) {
+		fprintf(stderr, "Display bandwidth counter not available\n");
+		return 2;
+	}
+
+	intel_register_access_init(&mmio_data, intel_get_pci_device(), 0, -1);
+
+	if (has_de_power2_abox0_abox1(devid))
+		measure_de_power2_abox0_abox1(devid, sleep_duration);
+	else
+		measure_de_power2(devid, sleep_duration);
+
+	intel_register_access_fini(&mmio_data);
+
+	return 0;
+}
diff --git a/tools/meson.build b/tools/meson.build
index 48c9a4b5089e..4e9100ddb2b7 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -16,6 +16,7 @@ tools_progs = [
 	'intel_audio_dump',
 	'intel_backlight',
 	'intel_bios_dumper',
+	'intel_display_bandwidth',
 	'intel_display_crc',
 	'intel_display_poller',
 	'intel_dump_decode',
-- 
2.44.2


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

* ✓ CI.xeBAT: success for Power/energy and display memory bandwidth measurement tools
  2024-09-16 20:18 [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools Ville Syrjala
                   ` (4 preceding siblings ...)
  2024-09-16 20:18 ` [PATCH i-g-t 5/5] tools/intel_display_bandwidth: Tool for measuring display memory bandwidth utilization Ville Syrjala
@ 2024-09-16 21:24 ` Patchwork
  2024-09-16 21:40 ` ✓ Fi.CI.BAT: " Patchwork
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2024-09-16 21:24 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: igt-dev

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

== Series Details ==

Series: Power/energy and display memory bandwidth measurement tools
URL   : https://patchwork.freedesktop.org/series/138734/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_8020_BAT -> XEIGTPW_11746_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts


Changes
-------

  No changes found


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

  * IGT: IGT_8020 -> IGTPW_11746
  * Linux: xe-1951-7a8eccb85643c21e82007be3ae31bbca47611079 -> xe-1958-326b4f14959d97e0e786c2f20a8c246573f06fbd

  IGTPW_11746: 11746
  IGT_8020: 7860f9a9394da0a18fc0bf0223a79b533e569f95 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1951-7a8eccb85643c21e82007be3ae31bbca47611079: 7a8eccb85643c21e82007be3ae31bbca47611079
  xe-1958-326b4f14959d97e0e786c2f20a8c246573f06fbd: 326b4f14959d97e0e786c2f20a8c246573f06fbd

== Logs ==

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

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

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

* ✓ Fi.CI.BAT: success for Power/energy and display memory bandwidth measurement tools
  2024-09-16 20:18 [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools Ville Syrjala
                   ` (5 preceding siblings ...)
  2024-09-16 21:24 ` ✓ CI.xeBAT: success for Power/energy and display memory bandwidth measurement tools Patchwork
@ 2024-09-16 21:40 ` Patchwork
  2024-09-17  0:20 ` ✗ CI.xeFULL: failure " Patchwork
  2024-09-17 11:05 ` ✗ Fi.CI.IGT: " Patchwork
  8 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2024-09-16 21:40 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: igt-dev

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

== Series Details ==

Series: Power/energy and display memory bandwidth measurement tools
URL   : https://patchwork.freedesktop.org/series/138734/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_15426 -> IGTPW_11746
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (41 -> 38)
------------------------------

  Missing    (3): bat-dg1-7 fi-snb-2520m fi-kbl-8809g 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live:
    - bat-arls-2:         [PASS][1] -> [DMESG-WARN][2] ([i915#10341] / [i915#12133])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/bat-arls-2/igt@i915_selftest@live.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/bat-arls-2/igt@i915_selftest@live.html

  * igt@i915_selftest@live@gt_heartbeat:
    - bat-arls-5:         NOTRUN -> [DMESG-WARN][3] ([i915#11637] / [i915#12133]) +3 other tests dmesg-warn
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/bat-arls-5/igt@i915_selftest@live@gt_heartbeat.html

  * igt@i915_selftest@live@gt_tlb:
    - bat-arls-5:         NOTRUN -> [DMESG-WARN][4] ([i915#11637]) +26 other tests dmesg-warn
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/bat-arls-5/igt@i915_selftest@live@gt_tlb.html

  * igt@i915_selftest@live@hangcheck:
    - bat-arls-2:         [PASS][5] -> [DMESG-WARN][6] ([i915#11349])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/bat-arls-2/igt@i915_selftest@live@hangcheck.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/bat-arls-2/igt@i915_selftest@live@hangcheck.html

  * igt@i915_selftest@live@objects:
    - bat-arls-5:         NOTRUN -> [DMESG-WARN][7] ([i915#10341] / [i915#11637]) +2 other tests dmesg-warn
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/bat-arls-5/igt@i915_selftest@live@objects.html

  
#### Possible fixes ####

  * igt@kms_pipe_crc_basic@nonblocking-crc:
    - bat-arls-5:         [INCOMPLETE][8] ([i915#11320]) -> [PASS][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/bat-arls-5/igt@kms_pipe_crc_basic@nonblocking-crc.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/bat-arls-5/igt@kms_pipe_crc_basic@nonblocking-crc.html

  
#### Warnings ####

  * igt@i915_selftest@live:
    - bat-arls-5:         [ABORT][10] ([i915#12133] / [i915#12175]) -> [DMESG-WARN][11] ([i915#10341] / [i915#12133])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/bat-arls-5/igt@i915_selftest@live.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/bat-arls-5/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-arls-5:         [ABORT][12] ([i915#12061]) -> [DMESG-WARN][13] ([i915#10341] / [i915#11637])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/bat-arls-5/igt@i915_selftest@live@workarounds.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/bat-arls-5/igt@i915_selftest@live@workarounds.html

  
  [i915#10341]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10341
  [i915#11320]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11320
  [i915#11349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11349
  [i915#11637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11637
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12133]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12133
  [i915#12175]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12175


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

  * CI: CI-20190529 -> None
  * IGT: IGT_8020 -> IGTPW_11746

  CI-20190529: 20190529
  CI_DRM_15426: 326b4f14959d97e0e786c2f20a8c246573f06fbd @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_11746: 11746
  IGT_8020: 7860f9a9394da0a18fc0bf0223a79b533e569f95 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* ✗ CI.xeFULL: failure for Power/energy and display memory bandwidth measurement tools
  2024-09-16 20:18 [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools Ville Syrjala
                   ` (6 preceding siblings ...)
  2024-09-16 21:40 ` ✓ Fi.CI.BAT: " Patchwork
@ 2024-09-17  0:20 ` Patchwork
  2024-09-17 11:05 ` ✗ Fi.CI.IGT: " Patchwork
  8 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2024-09-17  0:20 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: igt-dev

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

== Series Details ==

Series: Power/energy and display memory bandwidth measurement tools
URL   : https://patchwork.freedesktop.org/series/138734/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_8020_full -> XEIGTPW_11746_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_11746_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_11746_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (4 -> 4)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc:
    - shard-dg2-set2:     [PASS][1] -> [DMESG-WARN][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-463/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc.html

  * igt@xe_exec_fault_mode@once-bindexecqueue-userptr:
    - shard-lnl:          [PASS][3] -> [FAIL][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-3/igt@xe_exec_fault_mode@once-bindexecqueue-userptr.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-4/igt@xe_exec_fault_mode@once-bindexecqueue-userptr.html

  
#### Warnings ####

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-lnl:          [SKIP][5] ([Intel XE#660]) -> [SKIP][6]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-3/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-1/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render:
    - {shard-bmg}:        [FAIL][7] ([Intel XE#2333]) -> [INCOMPLETE][8]
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render.html

  * igt@kms_vblank@query-forked@pipe-d-hdmi-a-3:
    - {shard-bmg}:        [PASS][9] -> [INCOMPLETE][10] +1 other test incomplete
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-bmg-1/igt@kms_vblank@query-forked@pipe-d-hdmi-a-3.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-bmg-7/igt@kms_vblank@query-forked@pipe-d-hdmi-a-3.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@test-cursor:
    - shard-lnl:          NOTRUN -> [SKIP][11] ([Intel XE#664])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-4/igt@kms_async_flips@test-cursor.html

  * igt@kms_atomic_transition@modeset-transition-nonblocking:
    - shard-lnl:          [PASS][12] -> [FAIL][13] ([Intel XE#1701]) +1 other test fail
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-5/igt@kms_atomic_transition@modeset-transition-nonblocking.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-4/igt@kms_atomic_transition@modeset-transition-nonblocking.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
    - shard-lnl:          NOTRUN -> [SKIP][14] ([Intel XE#599])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-7/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1:
    - shard-lnl:          [PASS][15] -> [FAIL][16] ([Intel XE#1426]) +3 other tests fail
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-4/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-1/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-lnl:          [PASS][17] -> [FAIL][18] ([Intel XE#1659])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-4/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_chamelium_frames@dp-crc-fast:
    - shard-lnl:          NOTRUN -> [SKIP][19] ([Intel XE#373])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-5/igt@kms_chamelium_frames@dp-crc-fast.html

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

  * igt@kms_flip@2x-blocking-wf_vblank:
    - shard-dg2-set2:     [PASS][21] -> [INCOMPLETE][22] ([Intel XE#1195]) +1 other test incomplete
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-463/igt@kms_flip@2x-blocking-wf_vblank.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-436/igt@kms_flip@2x-blocking-wf_vblank.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
    - shard-lnl:          NOTRUN -> [SKIP][23] ([Intel XE#1401] / [Intel XE#1745])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][24] ([Intel XE#1401])
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-plflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][25] ([Intel XE#656]) +3 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-plflip-blt.html

  * igt@kms_plane@plane-position-hole:
    - shard-lnl:          [PASS][26] -> [DMESG-WARN][27] ([Intel XE#324]) +1 other test dmesg-warn
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-1/igt@kms_plane@plane-position-hole.html
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-4/igt@kms_plane@plane-position-hole.html

  * igt@kms_pm_dc@dc5-dpms:
    - shard-lnl:          [PASS][28] -> [FAIL][29] ([Intel XE#718])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-4/igt@kms_pm_dc@dc5-dpms.html
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-5/igt@kms_pm_dc@dc5-dpms.html

  * igt@kms_psr@fbc-pr-primary-blt:
    - shard-lnl:          NOTRUN -> [SKIP][30] ([Intel XE#1406])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-8/igt@kms_psr@fbc-pr-primary-blt.html

  * igt@kms_psr@fbc-psr2-cursor-plane-onoff:
    - shard-lnl:          [PASS][31] -> [FAIL][32] ([Intel XE#1649]) +3 other tests fail
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-4/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-4/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-180:
    - shard-lnl:          NOTRUN -> [SKIP][33] ([Intel XE#1127])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-5/igt@kms_rotation_crc@primary-y-tiled-reflect-x-180.html

  * igt@kms_vrr@flip-basic:
    - shard-lnl:          [PASS][34] -> [FAIL][35] ([Intel XE#2443]) +3 other tests fail
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-5/igt@kms_vrr@flip-basic.html
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-3/igt@kms_vrr@flip-basic.html

  * igt@kms_vrr@flip-dpms:
    - shard-lnl:          [PASS][36] -> [FAIL][37] ([Intel XE#1522]) +1 other test fail
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-7/igt@kms_vrr@flip-dpms.html
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-1/igt@kms_vrr@flip-dpms.html

  * igt@xe_drm_fdinfo@utilization-single-full-load-destroy-queue:
    - shard-lnl:          [PASS][38] -> [FAIL][39] ([Intel XE#2667])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-1/igt@xe_drm_fdinfo@utilization-single-full-load-destroy-queue.html
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-2/igt@xe_drm_fdinfo@utilization-single-full-load-destroy-queue.html

  * igt@xe_evict@evict-large-cm:
    - shard-lnl:          NOTRUN -> [SKIP][40] ([Intel XE#688])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-4/igt@xe_evict@evict-large-cm.html

  * igt@xe_oa@oa-exponents:
    - shard-lnl:          [PASS][41] -> [FAIL][42] ([Intel XE#2723])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-7/igt@xe_oa@oa-exponents.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-2/igt@xe_oa@oa-exponents.html

  * igt@xe_oa@oa-exponents@ccs-0:
    - shard-lnl:          NOTRUN -> [FAIL][43] ([Intel XE#2723])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-2/igt@xe_oa@oa-exponents@ccs-0.html

  * igt@xe_pm@s2idle-basic-exec:
    - shard-dg2-set2:     [PASS][44] -> [INCOMPLETE][45] ([Intel XE#1195] / [Intel XE#1358])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-434/igt@xe_pm@s2idle-basic-exec.html
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-466/igt@xe_pm@s2idle-basic-exec.html

  * igt@xe_pm@s4-multiple-execs:
    - shard-lnl:          [PASS][46] -> [ABORT][47] ([Intel XE#1358] / [Intel XE#1607] / [Intel XE#1794])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-8/igt@xe_pm@s4-multiple-execs.html
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-2/igt@xe_pm@s4-multiple-execs.html

  
#### Possible fixes ####

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
    - {shard-bmg}:        [FAIL][48] ([Intel XE#1426]) -> [PASS][49] +1 other test pass
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-bmg-4/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-bmg-1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-lnl:          [FAIL][50] ([Intel XE#1659]) -> [PASS][51]
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@c-edp1:
    - shard-lnl:          [FAIL][52] ([Intel XE#886]) -> [PASS][53] +2 other tests pass
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-3/igt@kms_flip@flip-vs-blocking-wf-vblank@c-edp1.html
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-5/igt@kms_flip@flip-vs-blocking-wf-vblank@c-edp1.html

  * igt@kms_force_connector_basic@force-edid:
    - {shard-bmg}:        [DMESG-WARN][54] ([Intel XE#877]) -> [PASS][55] +6 other tests pass
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-bmg-8/igt@kms_force_connector_basic@force-edid.html
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-bmg-7/igt@kms_force_connector_basic@force-edid.html

  * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-dp-4:
    - shard-dg2-set2:     [DMESG-WARN][56] ([Intel XE#1551]) -> [PASS][57] +1 other test pass
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-434/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-dp-4.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-dp-4.html

  * igt@kms_vrr@flipline:
    - shard-lnl:          [FAIL][58] ([Intel XE#2443]) -> [PASS][59] +1 other test pass
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-8/igt@kms_vrr@flipline.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-2/igt@kms_vrr@flipline.html

  * igt@xe_evict@evict-beng-mixed-many-threads-large:
    - shard-dg2-set2:     [TIMEOUT][60] ([Intel XE#1473]) -> [PASS][61] +1 other test pass
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@xe_evict@evict-beng-mixed-many-threads-large.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@xe_evict@evict-beng-mixed-many-threads-large.html

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-dg2-set2:     [TIMEOUT][62] ([Intel XE#1473] / [Intel XE#402]) -> [PASS][63]
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-466/igt@xe_evict@evict-beng-mixed-many-threads-small.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_evict@evict-beng-mixed-threads-large:
    - {shard-bmg}:        [TIMEOUT][64] ([Intel XE#1473]) -> [PASS][65]
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-bmg-5/igt@xe_evict@evict-beng-mixed-threads-large.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-bmg-2/igt@xe_evict@evict-beng-mixed-threads-large.html

  * igt@xe_oa@oa-regs-whitelisted:
    - shard-lnl:          [FAIL][66] ([Intel XE#2514]) -> [PASS][67]
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-1/igt@xe_oa@oa-regs-whitelisted.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-4/igt@xe_oa@oa-regs-whitelisted.html
    - {shard-bmg}:        [FAIL][68] ([Intel XE#2514]) -> [PASS][69]
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-bmg-7/igt@xe_oa@oa-regs-whitelisted.html
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-bmg-5/igt@xe_oa@oa-regs-whitelisted.html

  * igt@xe_pm@s4-exec-after:
    - shard-lnl:          [ABORT][70] ([Intel XE#1358] / [Intel XE#1607]) -> [PASS][71]
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-2/igt@xe_pm@s4-exec-after.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-5/igt@xe_pm@s4-exec-after.html

  
#### Warnings ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-dg2-set2:     [SKIP][72] ([Intel XE#1201] / [Intel XE#623]) -> [SKIP][73] ([Intel XE#623])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-434/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs:
    - shard-dg2-set2:     [SKIP][74] ([Intel XE#1201] / [Intel XE#801]) -> [SKIP][75] ([Intel XE#801]) +23 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-435/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-270:
    - shard-dg2-set2:     [SKIP][76] ([Intel XE#316]) -> [SKIP][77] ([Intel XE#1201] / [Intel XE#316])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-270:
    - shard-dg2-set2:     [SKIP][78] ([Intel XE#1201] / [Intel XE#316]) -> [SKIP][79] ([Intel XE#316]) +3 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-180:
    - shard-dg2-set2:     [SKIP][80] ([Intel XE#1124] / [Intel XE#1201]) -> [SKIP][81] ([Intel XE#1124]) +8 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-463/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - shard-dg2-set2:     [SKIP][82] ([Intel XE#1124]) -> [SKIP][83] ([Intel XE#1124] / [Intel XE#1201]) +8 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-466/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip.html

  * igt@kms_big_joiner@invalid-modeset:
    - shard-dg2-set2:     [SKIP][84] ([Intel XE#1201] / [Intel XE#346]) -> [SKIP][85] ([Intel XE#346])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@kms_big_joiner@invalid-modeset.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_big_joiner@invalid-modeset.html

  * igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p:
    - shard-dg2-set2:     [SKIP][86] ([Intel XE#2191]) -> [SKIP][87] ([Intel XE#1201] / [Intel XE#2191]) +1 other test skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-436/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html

  * igt@kms_bw@linear-tiling-2-displays-2560x1440p:
    - shard-dg2-set2:     [SKIP][88] ([Intel XE#367]) -> [SKIP][89] ([Intel XE#1201] / [Intel XE#367])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_bw@linear-tiling-2-displays-2560x1440p.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-463/igt@kms_bw@linear-tiling-2-displays-2560x1440p.html

  * igt@kms_bw@linear-tiling-4-displays-2560x1440p:
    - shard-dg2-set2:     [SKIP][90] ([Intel XE#1201] / [Intel XE#367]) -> [SKIP][91] ([Intel XE#367]) +2 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-463/igt@kms_bw@linear-tiling-4-displays-2560x1440p.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_bw@linear-tiling-4-displays-2560x1440p.html

  * igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs:
    - shard-dg2-set2:     [SKIP][92] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) -> [SKIP][93] ([Intel XE#455] / [Intel XE#787]) +19 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][94] ([Intel XE#1201] / [Intel XE#787]) -> [SKIP][95] ([Intel XE#787]) +69 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-463/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-6.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-6.html

  * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][96] ([Intel XE#787]) -> [SKIP][97] ([Intel XE#1201] / [Intel XE#787]) +62 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-6.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-435/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-6.html

  * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     [SKIP][98] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][99] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +17 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs@pipe-d-dp-4.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs@pipe-d-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
    - shard-dg2-set2:     [SKIP][100] ([Intel XE#1201] / [Intel XE#1252]) -> [SKIP][101] ([Intel XE#1252]) +1 other test skip
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-434/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html

  * igt@kms_chamelium_color@ctm-0-25:
    - shard-dg2-set2:     [SKIP][102] ([Intel XE#1201] / [Intel XE#306]) -> [SKIP][103] ([Intel XE#306])
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-463/igt@kms_chamelium_color@ctm-0-25.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_chamelium_color@ctm-0-25.html

  * igt@kms_chamelium_color@ctm-blue-to-red:
    - shard-dg2-set2:     [SKIP][104] ([Intel XE#306]) -> [SKIP][105] ([Intel XE#1201] / [Intel XE#306])
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_chamelium_color@ctm-blue-to-red.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@kms_chamelium_color@ctm-blue-to-red.html

  * igt@kms_chamelium_edid@vga-edid-read:
    - shard-dg2-set2:     [SKIP][106] ([Intel XE#1201] / [Intel XE#373]) -> [SKIP][107] ([Intel XE#373]) +5 other tests skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@kms_chamelium_edid@vga-edid-read.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_chamelium_edid@vga-edid-read.html

  * igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats:
    - shard-dg2-set2:     [SKIP][108] ([Intel XE#373]) -> [SKIP][109] ([Intel XE#1201] / [Intel XE#373]) +9 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-463/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-dg2-set2:     [SKIP][110] ([Intel XE#1201] / [Intel XE#307]) -> [SKIP][111] ([Intel XE#307])
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-436/igt@kms_content_protection@dp-mst-lic-type-0.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_content_protection@dp-mst-lic-type-0.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x170:
    - shard-dg2-set2:     [SKIP][112] ([Intel XE#308]) -> [SKIP][113] ([Intel XE#1201] / [Intel XE#308]) +2 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][114] ([Intel XE#1201] / [i915#3804]) -> [SKIP][115] ([i915#3804])
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-466/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6.html
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc:
    - shard-dg2-set2:     [SKIP][116] ([Intel XE#1201] / [Intel XE#455]) -> [SKIP][117] ([Intel XE#455]) +17 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_dsc@dsc-with-output-formats-with-bpc.html

  * igt@kms_feature_discovery@display-3x:
    - shard-dg2-set2:     [SKIP][118] ([Intel XE#1201] / [Intel XE#703]) -> [SKIP][119] ([Intel XE#703])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-463/igt@kms_feature_discovery@display-3x.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_feature_discovery@display-3x.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-dg2-set2:     [SKIP][120] ([Intel XE#1137]) -> [SKIP][121] ([Intel XE#1137] / [Intel XE#1201])
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_feature_discovery@dp-mst.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-463/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg2-set2:     [SKIP][122] ([Intel XE#1135]) -> [SKIP][123] ([Intel XE#1135] / [Intel XE#1201])
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_feature_discovery@psr1.html
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-435/igt@kms_feature_discovery@psr1.html

  * igt@kms_feature_discovery@psr2:
    - shard-dg2-set2:     [SKIP][124] ([Intel XE#1135] / [Intel XE#1201]) -> [SKIP][125] ([Intel XE#1135])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-436/igt@kms_feature_discovery@psr2.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip@bo-too-big-interruptible@a-edp1:
    - shard-lnl:          [INCOMPLETE][126] ([Intel XE#1504]) -> [TIMEOUT][127] ([Intel XE#1504]) +1 other test timeout
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-lnl-8/igt@kms_flip@bo-too-big-interruptible@a-edp1.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-lnl-7/igt@kms_flip@bo-too-big-interruptible@a-edp1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
    - shard-dg2-set2:     [SKIP][128] ([Intel XE#455]) -> [SKIP][129] ([Intel XE#1201] / [Intel XE#455]) +11 other tests skip
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff:
    - shard-dg2-set2:     [SKIP][130] ([Intel XE#651]) -> [SKIP][131] ([Intel XE#1201] / [Intel XE#651]) +22 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-463/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen:
    - shard-dg2-set2:     [SKIP][132] ([Intel XE#1201] / [Intel XE#651]) -> [SKIP][133] ([Intel XE#651]) +22 other tests skip
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-466/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen.html
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-y:
    - shard-dg2-set2:     [SKIP][134] ([Intel XE#658]) -> [SKIP][135] ([Intel XE#1201] / [Intel XE#658])
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_frontbuffer_tracking@fbc-tiling-y.html
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@kms_frontbuffer_tracking@fbc-tiling-y.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-4:
    - shard-dg2-set2:     [SKIP][136] ([Intel XE#1201] / [Intel XE#653]) -> [SKIP][137] ([Intel XE#653]) +25 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-463/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html

  * igt@kms_frontbuffer_tracking@psr-slowdraw:
    - shard-dg2-set2:     [SKIP][138] ([Intel XE#653]) -> [SKIP][139] ([Intel XE#1201] / [Intel XE#653]) +27 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-slowdraw.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-434/igt@kms_frontbuffer_tracking@psr-slowdraw.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b:
    - shard-dg2-set2:     [SKIP][140] ([Intel XE#1201]) -> [SKIP][141] ([Intel XE#1201] / [Intel XE#2763]) +26 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b.html
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-434/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling:
    - shard-dg2-set2:     [SKIP][142] ([Intel XE#1201] / [Intel XE#455]) -> [SKIP][143] ([Intel XE#1201] / [Intel XE#2763] / [Intel XE#455]) +17 other tests skip
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-435/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25:
    - shard-dg2-set2:     [SKIP][144] ([Intel XE#1201] / [Intel XE#455]) -> [SKIP][145] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b:
    - shard-dg2-set2:     [SKIP][146] ([Intel XE#1201]) -> [SKIP][147] ([Intel XE#2763]) +2 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b.html
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b.html

  * igt@kms_pm_backlight@bad-brightness:
    - shard-dg2-set2:     [SKIP][148] ([Intel XE#1201] / [Intel XE#870]) -> [SKIP][149] ([Intel XE#870]) +1 other test skip
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-463/igt@kms_pm_backlight@bad-brightness.html
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_pm_backlight@bad-brightness.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-dg2-set2:     [SKIP][150] ([Intel XE#1122]) -> [SKIP][151] ([Intel XE#1122] / [Intel XE#1201])
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_pm_dc@dc3co-vpb-simulation.html
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-436/igt@kms_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf:
    - shard-dg2-set2:     [SKIP][152] ([Intel XE#1489]) -> [SKIP][153] ([Intel XE#1201] / [Intel XE#1489]) +3 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf.html
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-434/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area:
    - shard-dg2-set2:     [SKIP][154] ([Intel XE#1201] / [Intel XE#1489]) -> [SKIP][155] ([Intel XE#1489]) +2 other tests skip
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-463/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr@fbc-psr2-primary-render:
    - shard-dg2-set2:     [SKIP][156] ([Intel XE#1201] / [Intel XE#929]) -> [SKIP][157] ([Intel XE#929]) +12 other tests skip
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@kms_psr@fbc-psr2-primary-render.html
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_psr@fbc-psr2-primary-render.html

  * igt@kms_psr@fbc-psr2-sprite-plane-move:
    - shard-dg2-set2:     [SKIP][158] ([Intel XE#929]) -> [SKIP][159] ([Intel XE#1201] / [Intel XE#929]) +12 other tests skip
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_psr@fbc-psr2-sprite-plane-move.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@kms_psr@fbc-psr2-sprite-plane-move.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-dg2-set2:     [SKIP][160] ([Intel XE#1149] / [Intel XE#1201]) -> [SKIP][161] ([Intel XE#1149])
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-436/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-dg2-set2:     [SKIP][162] ([Intel XE#327]) -> [SKIP][163] ([Intel XE#1201] / [Intel XE#327])
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@kms_rotation_crc@primary-rotation-270.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-434/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_rotation_crc@primary-rotation-90:
    - shard-dg2-set2:     [SKIP][164] ([Intel XE#1201] / [Intel XE#327]) -> [SKIP][165] ([Intel XE#327]) +1 other test skip
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-434/igt@kms_rotation_crc@primary-rotation-90.html
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_rotation_crc@primary-rotation-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-dg2-set2:     [SKIP][166] ([Intel XE#1127] / [Intel XE#1201]) -> [SKIP][167] ([Intel XE#1127])
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-436/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-dg2-set2:     [SKIP][168] ([Intel XE#1201] / [Intel XE#756]) -> [SKIP][169] ([Intel XE#756])
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-435/igt@kms_writeback@writeback-check-output-xrgb2101010.html
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@kms_writeback@writeback-check-output-xrgb2101010.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-dg2-set2:     [SKIP][170] ([Intel XE#1091]) -> [SKIP][171] ([Intel XE#1091] / [Intel XE#1201])
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@sriov_basic@enable-vfs-autoprobe-off.html
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-466/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@xe_compute_preempt@compute-preempt:
    - shard-dg2-set2:     [SKIP][172] ([Intel XE#1201] / [Intel XE#1280] / [Intel XE#455]) -> [SKIP][173] ([Intel XE#1280] / [Intel XE#455]) +1 other test skip
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-435/igt@xe_compute_preempt@compute-preempt.html
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@xe_compute_preempt@compute-preempt.html

  * igt@xe_copy_basic@mem-copy-linear-0xfd:
    - shard-dg2-set2:     [SKIP][174] ([Intel XE#1123]) -> [SKIP][175] ([Intel XE#1123] / [Intel XE#1201])
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@xe_copy_basic@mem-copy-linear-0xfd.html
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-466/igt@xe_copy_basic@mem-copy-linear-0xfd.html

  * igt@xe_copy_basic@mem-set-linear-0xfffe:
    - shard-dg2-set2:     [SKIP][176] ([Intel XE#1126] / [Intel XE#1201]) -> [SKIP][177] ([Intel XE#1126])
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-436/igt@xe_copy_basic@mem-set-linear-0xfffe.html
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@xe_copy_basic@mem-set-linear-0xfffe.html

  * igt@xe_exec_fault_mode@once-bindexecqueue-rebind-prefetch:
    - shard-dg2-set2:     [SKIP][178] ([Intel XE#1201] / [Intel XE#288]) -> [SKIP][179] ([Intel XE#288]) +20 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-435/igt@xe_exec_fault_mode@once-bindexecqueue-rebind-prefetch.html
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@xe_exec_fault_mode@once-bindexecqueue-rebind-prefetch.html

  * igt@xe_exec_fault_mode@twice-userptr-rebind-imm:
    - shard-dg2-set2:     [SKIP][180] ([Intel XE#288]) -> [SKIP][181] ([Intel XE#1201] / [Intel XE#288]) +18 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-466/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html

  * igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence:
    - shard-dg2-set2:     [SKIP][182] ([Intel XE#1201] / [Intel XE#2360]) -> [SKIP][183] ([Intel XE#2360])
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence.html
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence.html

  * igt@xe_huc_copy@huc_copy:
    - shard-dg2-set2:     [SKIP][184] ([Intel XE#1201] / [Intel XE#255]) -> [SKIP][185] ([Intel XE#255])
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-433/igt@xe_huc_copy@huc_copy.html
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@xe_huc_copy@huc_copy.html

  * igt@xe_module_load@force-load:
    - shard-dg2-set2:     [SKIP][186] ([Intel XE#1201] / [Intel XE#378]) -> [SKIP][187] ([Intel XE#378])
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-435/igt@xe_module_load@force-load.html
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@xe_module_load@force-load.html

  * igt@xe_oa@closed-fd-and-unmapped-access:
    - shard-dg2-set2:     [SKIP][188] ([Intel XE#2541]) -> [SKIP][189] ([Intel XE#1201] / [Intel XE#2541]) +4 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@xe_oa@closed-fd-and-unmapped-access.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@xe_oa@closed-fd-and-unmapped-access.html

  * igt@xe_oa@invalid-oa-format-id:
    - shard-dg2-set2:     [SKIP][190] ([Intel XE#1201] / [Intel XE#2541]) -> [SKIP][191] ([Intel XE#2541]) +3 other tests skip
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-436/igt@xe_oa@invalid-oa-format-id.html
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@xe_oa@invalid-oa-format-id.html

  * igt@xe_pat@display-vs-wb-transient:
    - shard-dg2-set2:     [SKIP][192] ([Intel XE#1201] / [Intel XE#1337]) -> [SKIP][193] ([Intel XE#1337])
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-435/igt@xe_pat@display-vs-wb-transient.html
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@xe_pat@display-vs-wb-transient.html

  * igt@xe_pat@pat-index-xe2:
    - shard-dg2-set2:     [SKIP][194] ([Intel XE#1201] / [Intel XE#977]) -> [SKIP][195] ([Intel XE#977])
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-435/igt@xe_pat@pat-index-xe2.html
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pm@d3cold-mmap-vram:
    - shard-dg2-set2:     [SKIP][196] ([Intel XE#2284] / [Intel XE#366]) -> [SKIP][197] ([Intel XE#1201] / [Intel XE#2284] / [Intel XE#366]) +1 other test skip
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@xe_pm@d3cold-mmap-vram.html
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-463/igt@xe_pm@d3cold-mmap-vram.html

  * igt@xe_pm@vram-d3cold-threshold:
    - shard-dg2-set2:     [SKIP][198] ([Intel XE#579]) -> [SKIP][199] ([Intel XE#1201] / [Intel XE#579])
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@xe_pm@vram-d3cold-threshold.html
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-463/igt@xe_pm@vram-d3cold-threshold.html

  * igt@xe_query@multigpu-query-invalid-cs-cycles:
    - shard-dg2-set2:     [SKIP][200] ([Intel XE#1201] / [Intel XE#944]) -> [SKIP][201] ([Intel XE#944])
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-434/igt@xe_query@multigpu-query-invalid-cs-cycles.html
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-432/igt@xe_query@multigpu-query-invalid-cs-cycles.html

  * igt@xe_query@multigpu-query-invalid-extension:
    - shard-dg2-set2:     [SKIP][202] ([Intel XE#944]) -> [SKIP][203] ([Intel XE#1201] / [Intel XE#944]) +1 other test skip
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8020/shard-dg2-432/igt@xe_query@multigpu-query-invalid-extension.html
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11746/shard-dg2-433/igt@xe_query@multigpu-query-invalid-extension.html

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

  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
  [Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
  [Intel XE#1137]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1137
  [Intel XE#1149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1149
  [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
  [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
  [Intel XE#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1288
  [Intel XE#1337]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1337
  [Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
  [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1426
  [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1504]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1504
  [Intel XE#1522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1522
  [Intel XE#1551]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1551
  [Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607
  [Intel XE#1649]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1649
  [Intel XE#1659]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1659
  [Intel XE#1701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1701
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
  [Intel XE#2055]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2055
  [Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2333]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2333
  [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2443]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2443
  [Intel XE#2472]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2472
  [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
  [Intel XE#2514]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2514
  [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#2667]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2667
  [Intel XE#2723]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2723
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
  [Intel XE#327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/327
  [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
  [Intel XE#402]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/402
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579
  [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
  [Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
  [Intel XE#660]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/660
  [Intel XE#664]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/664
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
  [Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
  [Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#801]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/801
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804


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

  * IGT: IGT_8020 -> IGTPW_11746
  * Linux: xe-1951-7a8eccb85643c21e82007be3ae31bbca47611079 -> xe-1958-326b4f14959d97e0e786c2f20a8c246573f06fbd

  IGTPW_11746: 11746
  IGT_8020: 7860f9a9394da0a18fc0bf0223a79b533e569f95 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1951-7a8eccb85643c21e82007be3ae31bbca47611079: 7a8eccb85643c21e82007be3ae31bbca47611079
  xe-1958-326b4f14959d97e0e786c2f20a8c246573f06fbd: 326b4f14959d97e0e786c2f20a8c246573f06fbd

== Logs ==

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

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

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

* ✗ Fi.CI.IGT: failure for Power/energy and display memory bandwidth measurement tools
  2024-09-16 20:18 [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools Ville Syrjala
                   ` (7 preceding siblings ...)
  2024-09-17  0:20 ` ✗ CI.xeFULL: failure " Patchwork
@ 2024-09-17 11:05 ` Patchwork
  8 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2024-09-17 11:05 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: igt-dev

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

== Series Details ==

Series: Power/energy and display memory bandwidth measurement tools
URL   : https://patchwork.freedesktop.org/series/138734/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_15426_full -> IGTPW_11746_full
====================================================

Summary
-------

  **FAILURE**

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

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

  Additional (1): shard-snb-0 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-rkl:          NOTRUN -> [SKIP][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_vblank@ts-continuation-modeset-hang:
    - shard-dg1:          [PASS][2] -> [INCOMPLETE][3]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg1-13/igt@kms_vblank@ts-continuation-modeset-hang.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-17/igt@kms_vblank@ts-continuation-modeset-hang.html

  * igt@kms_vblank@ts-continuation-modeset-hang@pipe-a-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [INCOMPLETE][4]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-17/igt@kms_vblank@ts-continuation-modeset-hang@pipe-a-hdmi-a-4.html

  
#### Warnings ####

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-mtlp:         [SKIP][5] ([i915#3826]) -> [SKIP][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-mtlp-8/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-3/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling:
    - shard-mtlp:         [SKIP][7] ([i915#3555] / [i915#8813]) -> [ABORT][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling.html

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

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

### IGT changes ###

#### Issues hit ####

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

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

  * igt@api_intel_bb@object-reloc-keep-cache:
    - shard-rkl:          NOTRUN -> [SKIP][11] ([i915#8411]) +2 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-3/igt@api_intel_bb@object-reloc-keep-cache.html

  * igt@debugfs_test@basic-hwmon:
    - shard-rkl:          NOTRUN -> [SKIP][12] ([i915#9318])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@debugfs_test@basic-hwmon.html

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

  * igt@drm_fdinfo@busy-idle-check-all@vcs1:
    - shard-dg1:          NOTRUN -> [SKIP][14] ([i915#8414]) +8 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@drm_fdinfo@busy-idle-check-all@vcs1.html

  * igt@drm_fdinfo@most-busy-check-all@vcs0:
    - shard-mtlp:         NOTRUN -> [SKIP][15] ([i915#8414]) +6 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-4/igt@drm_fdinfo@most-busy-check-all@vcs0.html

  * igt@drm_fdinfo@virtual-busy-idle-all:
    - shard-dg2:          NOTRUN -> [SKIP][16] ([i915#8414]) +9 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-7/igt@drm_fdinfo@virtual-busy-idle-all.html

  * igt@gem_caching@read-writes:
    - shard-mtlp:         NOTRUN -> [SKIP][17] ([i915#4873])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-4/igt@gem_caching@read-writes.html

  * igt@gem_ccs@block-multicopy-compressed:
    - shard-rkl:          NOTRUN -> [SKIP][18] ([i915#9323]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@gem_ccs@block-multicopy-compressed.html
    - shard-tglu:         NOTRUN -> [SKIP][19] ([i915#9323])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-9/igt@gem_ccs@block-multicopy-compressed.html
    - shard-mtlp:         NOTRUN -> [SKIP][20] ([i915#9323])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-2/igt@gem_ccs@block-multicopy-compressed.html

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

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

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

  * igt@gem_create@create-ext-cpu-access-sanity-check:
    - shard-tglu:         NOTRUN -> [SKIP][24] ([i915#6335])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-6/igt@gem_create@create-ext-cpu-access-sanity-check.html
    - shard-mtlp:         NOTRUN -> [SKIP][25] ([i915#6335])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-8/igt@gem_create@create-ext-cpu-access-sanity-check.html
    - shard-rkl:          NOTRUN -> [SKIP][26] ([i915#6335]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-3/igt@gem_create@create-ext-cpu-access-sanity-check.html

  * igt@gem_ctx_engines@invalid-engines:
    - shard-tglu:         [PASS][27] -> [FAIL][28] ([i915#12027])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-tglu-8/igt@gem_ctx_engines@invalid-engines.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-10/igt@gem_ctx_engines@invalid-engines.html

  * igt@gem_ctx_persistence@heartbeat-stop:
    - shard-dg1:          NOTRUN -> [SKIP][29] ([i915#8555]) +1 other test skip
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-17/igt@gem_ctx_persistence@heartbeat-stop.html

  * igt@gem_ctx_persistence@hostile:
    - shard-dg2:          NOTRUN -> [FAIL][30] ([i915#11980])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@gem_ctx_persistence@hostile.html
    - shard-rkl:          NOTRUN -> [FAIL][31] ([i915#11980])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@gem_ctx_persistence@hostile.html

  * igt@gem_ctx_persistence@legacy-engines-hostile:
    - shard-snb:          NOTRUN -> [SKIP][32] ([i915#1099])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-snb1/igt@gem_ctx_persistence@legacy-engines-hostile.html

  * igt@gem_ctx_sseu@engines:
    - shard-dg1:          NOTRUN -> [SKIP][33] ([i915#280]) +1 other test skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@gem_ctx_sseu@engines.html

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

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

  * igt@gem_eio@reset-stress:
    - shard-dg2:          [PASS][36] -> [FAIL][37] ([i915#5784])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-6/igt@gem_eio@reset-stress.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-1/igt@gem_eio@reset-stress.html

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

  * igt@gem_exec_balancer@bonded-semaphore:
    - shard-dg1:          NOTRUN -> [SKIP][39] ([i915#4812]) +1 other test skip
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@gem_exec_balancer@bonded-semaphore.html

  * igt@gem_exec_balancer@bonded-sync:
    - shard-mtlp:         NOTRUN -> [SKIP][40] ([i915#4771])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-2/igt@gem_exec_balancer@bonded-sync.html

  * igt@gem_exec_balancer@hog:
    - shard-mtlp:         NOTRUN -> [SKIP][41] ([i915#4812])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-2/igt@gem_exec_balancer@hog.html

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

  * igt@gem_exec_big@single:
    - shard-tglu:         [PASS][43] -> [ABORT][44] ([i915#11713])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-tglu-6/igt@gem_exec_big@single.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-8/igt@gem_exec_big@single.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-dg1:          NOTRUN -> [SKIP][45] ([i915#3539] / [i915#4852]) +2 other tests skip
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-16/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none:
    - shard-mtlp:         NOTRUN -> [SKIP][46] ([i915#4473] / [i915#4771]) +1 other test skip
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-4/igt@gem_exec_fair@basic-none.html

  * igt@gem_exec_fair@basic-none-rrul@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][47] ([i915#2842]) +1 other test fail
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-glk5/igt@gem_exec_fair@basic-none-rrul@rcs0.html

  * igt@gem_exec_fair@basic-none-share:
    - shard-rkl:          [PASS][48] -> [FAIL][49] ([i915#2842]) +3 other tests fail
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-rkl-3/igt@gem_exec_fair@basic-none-share.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@gem_exec_fair@basic-none-share.html

  * igt@gem_exec_fair@basic-none-solo:
    - shard-rkl:          NOTRUN -> [FAIL][50] ([i915#2842]) +1 other test fail
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@gem_exec_fair@basic-none-solo.html

  * igt@gem_exec_flush@basic-uc-prw-default:
    - shard-dg2:          NOTRUN -> [SKIP][51] ([i915#3539])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-5/igt@gem_exec_flush@basic-uc-prw-default.html

  * igt@gem_exec_flush@basic-wb-pro-default:
    - shard-dg2:          NOTRUN -> [SKIP][52] ([i915#3539] / [i915#4852]) +2 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-7/igt@gem_exec_flush@basic-wb-pro-default.html

  * igt@gem_exec_params@rsvd2-dirt:
    - shard-mtlp:         NOTRUN -> [SKIP][53] ([i915#5107])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-3/igt@gem_exec_params@rsvd2-dirt.html

  * igt@gem_exec_reloc@basic-cpu-gtt-noreloc:
    - shard-dg2:          NOTRUN -> [SKIP][54] ([i915#3281]) +15 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@gem_exec_reloc@basic-cpu-gtt-noreloc.html

  * igt@gem_exec_reloc@basic-write-cpu-active:
    - shard-dg1:          NOTRUN -> [SKIP][55] ([i915#3281]) +12 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@gem_exec_reloc@basic-write-cpu-active.html

  * igt@gem_exec_reloc@basic-write-read-active:
    - shard-rkl:          NOTRUN -> [SKIP][56] ([i915#3281]) +11 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@gem_exec_reloc@basic-write-read-active.html

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

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

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

  * igt@gem_fenced_exec_thrash@no-spare-fences:
    - shard-dg1:          NOTRUN -> [SKIP][60] ([i915#4860]) +2 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-17/igt@gem_fenced_exec_thrash@no-spare-fences.html

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

  * igt@gem_lmem_swapping@heavy-verify-multi:
    - shard-glk:          NOTRUN -> [SKIP][62] ([i915#4613])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-glk5/igt@gem_lmem_swapping@heavy-verify-multi.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - shard-tglu:         NOTRUN -> [SKIP][63] ([i915#4613])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-10/igt@gem_lmem_swapping@parallel-random-engines.html

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

  * igt@gem_lmem_swapping@random-engines:
    - shard-mtlp:         NOTRUN -> [SKIP][65] ([i915#4613]) +2 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-5/igt@gem_lmem_swapping@random-engines.html

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

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

  * igt@gem_mmap_gtt@big-copy-xy:
    - shard-dg2:          NOTRUN -> [SKIP][68] ([i915#4077]) +7 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@gem_mmap_gtt@big-copy-xy.html

  * igt@gem_mmap_gtt@hang-user:
    - shard-mtlp:         NOTRUN -> [SKIP][69] ([i915#4077]) +3 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-6/igt@gem_mmap_gtt@hang-user.html

  * igt@gem_mmap_wc@write-prefaulted:
    - shard-dg2:          NOTRUN -> [SKIP][70] ([i915#4083]) +3 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@gem_mmap_wc@write-prefaulted.html
    - shard-dg1:          NOTRUN -> [SKIP][71] ([i915#4083]) +5 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-14/igt@gem_mmap_wc@write-prefaulted.html

  * igt@gem_partial_pwrite_pread@reads-display:
    - shard-mtlp:         NOTRUN -> [SKIP][72] ([i915#3282])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-7/igt@gem_partial_pwrite_pread@reads-display.html

  * igt@gem_partial_pwrite_pread@writes-after-reads-uncached:
    - shard-dg1:          NOTRUN -> [SKIP][73] ([i915#3282]) +3 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-15/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html

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

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

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

  * igt@gem_pxp@display-protected-crc:
    - shard-dg2:          NOTRUN -> [SKIP][77] ([i915#4270]) +4 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-3/igt@gem_pxp@display-protected-crc.html

  * igt@gem_pxp@protected-encrypted-src-copy-not-readible:
    - shard-tglu:         NOTRUN -> [SKIP][78] ([i915#4270]) +1 other test skip
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-5/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html

  * igt@gem_pxp@reject-modify-context-protection-on:
    - shard-rkl:          NOTRUN -> [SKIP][79] ([i915#4270]) +3 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@gem_pxp@reject-modify-context-protection-on.html

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

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

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

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

  * igt@gem_softpin@evict-snoop-interruptible:
    - shard-mtlp:         NOTRUN -> [SKIP][84] ([i915#4885])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-8/igt@gem_softpin@evict-snoop-interruptible.html

  * igt@gem_tiled_partial_pwrite_pread@writes-after-reads:
    - shard-dg1:          NOTRUN -> [SKIP][85] ([i915#4077]) +11 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-15/igt@gem_tiled_partial_pwrite_pread@writes-after-reads.html

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

  * igt@gem_userptr_blits@forbidden-operations:
    - shard-rkl:          NOTRUN -> [SKIP][87] ([i915#3282] / [i915#3297])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@gem_userptr_blits@forbidden-operations.html

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

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

  * igt@gem_userptr_blits@relocations:
    - shard-dg2:          NOTRUN -> [SKIP][90] ([i915#3281] / [i915#3297])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@gem_userptr_blits@relocations.html

  * igt@gem_userptr_blits@sd-probe:
    - shard-dg2:          NOTRUN -> [SKIP][91] ([i915#3297] / [i915#4958])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@gem_userptr_blits@sd-probe.html
    - shard-dg1:          NOTRUN -> [SKIP][92] ([i915#3297] / [i915#4958])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-16/igt@gem_userptr_blits@sd-probe.html

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

  * igt@gen9_exec_parse@bb-chained:
    - shard-mtlp:         NOTRUN -> [SKIP][94] ([i915#2856]) +1 other test skip
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-7/igt@gen9_exec_parse@bb-chained.html

  * igt@gen9_exec_parse@bb-large:
    - shard-dg1:          NOTRUN -> [SKIP][95] ([i915#2527]) +1 other test skip
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-17/igt@gen9_exec_parse@bb-large.html

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

  * igt@gen9_exec_parse@secure-batches:
    - shard-dg2:          NOTRUN -> [SKIP][97] ([i915#2856]) +2 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-2/igt@gen9_exec_parse@secure-batches.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-dg1:          [PASS][98] -> [ABORT][99] ([i915#9820])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg1-13/igt@i915_module_load@reload-with-fault-injection.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pipe_stress@stress-xrgb8888-ytiled:
    - shard-dg2:          NOTRUN -> [SKIP][100] ([i915#7091])
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-7/igt@i915_pipe_stress@stress-xrgb8888-ytiled.html
    - shard-mtlp:         NOTRUN -> [SKIP][101] ([i915#8436])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-5/igt@i915_pipe_stress@stress-xrgb8888-ytiled.html

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

  * igt@i915_pm_freq_mult@media-freq@gt0:
    - shard-tglu:         NOTRUN -> [SKIP][103] ([i915#6590]) +1 other test skip
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-9/igt@i915_pm_freq_mult@media-freq@gt0.html

  * igt@i915_pm_rps@min-max-config-idle:
    - shard-dg2:          NOTRUN -> [SKIP][104] ([i915#11681] / [i915#6621])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-5/igt@i915_pm_rps@min-max-config-idle.html
    - shard-dg1:          NOTRUN -> [SKIP][105] ([i915#11681] / [i915#6621])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@i915_pm_rps@min-max-config-idle.html
    - shard-mtlp:         NOTRUN -> [SKIP][106] ([i915#11681] / [i915#6621])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-6/igt@i915_pm_rps@min-max-config-idle.html

  * igt@i915_pm_rps@thresholds:
    - shard-dg1:          NOTRUN -> [SKIP][107] ([i915#11681])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-16/igt@i915_pm_rps@thresholds.html

  * igt@i915_pm_sseu@full-enable:
    - shard-tglu:         NOTRUN -> [SKIP][108] ([i915#4387])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-9/igt@i915_pm_sseu@full-enable.html

  * igt@i915_query@hwconfig_table:
    - shard-dg1:          NOTRUN -> [SKIP][109] ([i915#6245])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@i915_query@hwconfig_table.html

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

  * igt@i915_selftest@live@workarounds:
    - shard-mtlp:         [PASS][111] -> [ABORT][112] ([i915#12061]) +1 other test abort
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-mtlp-2/igt@i915_selftest@live@workarounds.html
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-2/igt@i915_selftest@live@workarounds.html

  * igt@i915_selftest@mock@memory_region:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][113] ([i915#9311]) +1 other test dmesg-warn
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@i915_selftest@mock@memory_region.html

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

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - shard-dg1:          NOTRUN -> [SKIP][115] ([i915#4215])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@kms_addfb_basic@basic-y-tiled-legacy.html

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

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-4-y-rc-ccs:
    - shard-dg1:          NOTRUN -> [SKIP][117] ([i915#8709]) +7 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-4-y-rc-ccs.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-hdmi-a-1-4-mc-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][118] ([i915#8709]) +11 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-10/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-hdmi-a-1-4-mc-ccs.html

  * igt@kms_atomic@plane-primary-overlay-mutable-zpos:
    - shard-dg2:          NOTRUN -> [SKIP][119] ([i915#9531])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
    - shard-dg1:          NOTRUN -> [SKIP][120] ([i915#9531])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-16/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html

  * igt@kms_atomic_transition@plane-all-modeset-transition:
    - shard-mtlp:         NOTRUN -> [SKIP][121] ([i915#1769] / [i915#3555])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-5/igt@kms_atomic_transition@plane-all-modeset-transition.html

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

  * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-4:
    - shard-dg1:          [PASS][123] -> [FAIL][124] ([i915#5956]) +1 other test fail
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg1-16/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-4.html
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-4.html

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

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0:
    - shard-tglu:         NOTRUN -> [SKIP][126] ([i915#5286]) +1 other test skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-10/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-async-flip:
    - shard-dg1:          NOTRUN -> [SKIP][127] ([i915#4538] / [i915#5286]) +6 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@linear-16bpp-rotate-90:
    - shard-mtlp:         NOTRUN -> [SKIP][128] +11 other tests skip
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-1/igt@kms_big_fb@linear-16bpp-rotate-90.html

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][129] ([i915#3638]) +5 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@kms_big_fb@linear-64bpp-rotate-90.html
    - shard-dg1:          NOTRUN -> [SKIP][130] ([i915#3638]) +3 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@kms_big_fb@linear-64bpp-rotate-90.html

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

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][132] +31 other tests skip
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-mtlp:         NOTRUN -> [SKIP][133] ([i915#6187]) +2 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-6/igt@kms_big_fb@yf-tiled-addfb.html

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

  * igt@kms_big_joiner@invalid-modeset:
    - shard-mtlp:         NOTRUN -> [SKIP][135] ([i915#10656])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-3/igt@kms_big_joiner@invalid-modeset.html

  * igt@kms_big_joiner@invalid-modeset-force-joiner:
    - shard-rkl:          NOTRUN -> [SKIP][136] ([i915#10656]) +1 other test skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_big_joiner@invalid-modeset-force-joiner.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][137] ([i915#12042]) +2 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-1/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [SKIP][138] ([i915#10307] / [i915#6095]) +180 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs@pipe-a-dp-4.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][139] ([i915#6095]) +19 other tests skip
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-5/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@bad-rotation-90-y-tiled-ccs@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][140] ([i915#6095]) +24 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-1/igt@kms_ccs@bad-rotation-90-y-tiled-ccs@pipe-a-edp-1.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
    - shard-dg1:          NOTRUN -> [SKIP][141] ([i915#12042])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
    - shard-tglu:         NOTRUN -> [SKIP][142] ([i915#12042])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-10/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
    - shard-mtlp:         NOTRUN -> [SKIP][143] ([i915#12042])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-5/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html

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

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
    - shard-snb:          NOTRUN -> [SKIP][145] +39 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-snb1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][146] ([i915#6095]) +100 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][147] ([i915#10307] / [i915#10434] / [i915#6095]) +3 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1.html

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

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

  * igt@kms_cdclk@plane-scaling:
    - shard-rkl:          NOTRUN -> [SKIP][150] ([i915#3742])
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@kms_cdclk@plane-scaling.html

  * igt@kms_cdclk@plane-scaling@pipe-b-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][151] ([i915#4087]) +3 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-1/igt@kms_cdclk@plane-scaling@pipe-b-hdmi-a-3.html

  * igt@kms_chamelium_audio@hdmi-audio-edid:
    - shard-dg1:          NOTRUN -> [SKIP][152] ([i915#7828]) +10 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-15/igt@kms_chamelium_audio@hdmi-audio-edid.html

  * igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k:
    - shard-dg2:          NOTRUN -> [SKIP][153] ([i915#7828]) +9 other tests skip
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-2/igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k.html

  * igt@kms_chamelium_edid@hdmi-edid-change-during-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][154] ([i915#7828]) +10 other tests skip
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html

  * igt@kms_chamelium_hpd@dp-hpd-after-suspend:
    - shard-tglu:         NOTRUN -> [SKIP][155] ([i915#7828]) +3 other tests skip
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-6/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html

  * igt@kms_chamelium_hpd@hdmi-hpd:
    - shard-mtlp:         NOTRUN -> [SKIP][156] ([i915#7828]) +6 other tests skip
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-3/igt@kms_chamelium_hpd@hdmi-hpd.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-rkl:          NOTRUN -> [SKIP][157] ([i915#3116])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@legacy:
    - shard-dg2:          NOTRUN -> [SKIP][158] ([i915#7118] / [i915#9424])
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-10/igt@kms_content_protection@legacy.html

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

  * igt@kms_content_protection@mei-interface:
    - shard-dg2:          NOTRUN -> [SKIP][160] ([i915#9424]) +2 other tests skip
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-3/igt@kms_content_protection@mei-interface.html
    - shard-dg1:          NOTRUN -> [SKIP][161] ([i915#9424])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-15/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@uevent:
    - shard-dg1:          NOTRUN -> [SKIP][162] ([i915#7116] / [i915#9424])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@cursor-offscreen-32x10:
    - shard-mtlp:         NOTRUN -> [SKIP][163] ([i915#3555] / [i915#8814])
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-6/igt@kms_cursor_crc@cursor-offscreen-32x10.html

  * igt@kms_cursor_crc@cursor-offscreen-64x21:
    - shard-mtlp:         NOTRUN -> [SKIP][164] ([i915#8814]) +1 other test skip
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-5/igt@kms_cursor_crc@cursor-offscreen-64x21.html

  * igt@kms_cursor_crc@cursor-offscreen-max-size:
    - shard-dg1:          NOTRUN -> [SKIP][165] ([i915#3555]) +6 other tests skip
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@kms_cursor_crc@cursor-offscreen-max-size.html

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

  * igt@kms_cursor_crc@cursor-random-512x512:
    - shard-rkl:          NOTRUN -> [SKIP][167] ([i915#11453]) +1 other test skip
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_cursor_crc@cursor-random-512x512.html

  * igt@kms_cursor_crc@cursor-sliding-32x10:
    - shard-dg2:          NOTRUN -> [SKIP][168] ([i915#3555]) +4 other tests skip
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@kms_cursor_crc@cursor-sliding-32x10.html

  * igt@kms_cursor_crc@cursor-sliding-512x512:
    - shard-mtlp:         NOTRUN -> [SKIP][169] ([i915#3359])
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-1/igt@kms_cursor_crc@cursor-sliding-512x512.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - shard-mtlp:         NOTRUN -> [SKIP][170] ([i915#9809])
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-4/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-dg2:          NOTRUN -> [SKIP][171] ([i915#5354]) +35 other tests skip
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-5/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-dg1:          NOTRUN -> [SKIP][172] ([i915#4103] / [i915#4213]) +1 other test skip
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-14/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-rkl:          NOTRUN -> [SKIP][173] ([i915#4103])
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_cursor_legacy@torture-bo@pipe-a:
    - shard-glk:          [PASS][174] -> [DMESG-WARN][175] ([i915#10166])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-glk2/igt@kms_cursor_legacy@torture-bo@pipe-a.html
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-glk2/igt@kms_cursor_legacy@torture-bo@pipe-a.html

  * igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
    - shard-rkl:          NOTRUN -> [SKIP][176] ([i915#9723])
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-mtlp:         NOTRUN -> [SKIP][177] ([i915#3555] / [i915#8827])
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-7/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_display_modes@mst-extended-mode-negative:
    - shard-dg2:          NOTRUN -> [SKIP][178] ([i915#8588])
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-3/igt@kms_display_modes@mst-extended-mode-negative.html
    - shard-dg1:          NOTRUN -> [SKIP][179] ([i915#8588])
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-15/igt@kms_display_modes@mst-extended-mode-negative.html

  * igt@kms_draw_crc@draw-method-mmap-wc:
    - shard-dg2:          NOTRUN -> [SKIP][180] ([i915#8812])
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-7/igt@kms_draw_crc@draw-method-mmap-wc.html

  * igt@kms_dsc@dsc-basic:
    - shard-rkl:          NOTRUN -> [SKIP][181] ([i915#3555] / [i915#3840])
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@kms_dsc@dsc-basic.html
    - shard-dg1:          NOTRUN -> [SKIP][182] ([i915#3555] / [i915#3840])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-17/igt@kms_dsc@dsc-basic.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-rkl:          NOTRUN -> [SKIP][183] ([i915#3840])
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_dsc@dsc-fractional-bpp.html

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

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][185] ([i915#3955])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_fbcon_fbt@psr-suspend.html
    - shard-dg1:          NOTRUN -> [SKIP][186] ([i915#3469])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-16/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_feature_discovery@display-2x:
    - shard-mtlp:         NOTRUN -> [SKIP][187] ([i915#1839]) +1 other test skip
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-4/igt@kms_feature_discovery@display-2x.html
    - shard-tglu:         NOTRUN -> [SKIP][188] ([i915#1839])
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-3/igt@kms_feature_discovery@display-2x.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-rkl:          NOTRUN -> [SKIP][189] ([i915#9337])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_feature_discovery@psr1:
    - shard-tglu:         NOTRUN -> [SKIP][190] ([i915#658])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-5/igt@kms_feature_discovery@psr1.html

  * igt@kms_feature_discovery@psr2:
    - shard-dg2:          NOTRUN -> [SKIP][191] ([i915#658])
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-7/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip@2x-absolute-wf_vblank-interruptible:
    - shard-mtlp:         NOTRUN -> [SKIP][192] ([i915#3637]) +2 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-2/igt@kms_flip@2x-absolute-wf_vblank-interruptible.html

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

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

  * igt@kms_flip@plain-flip-ts-check-interruptible:
    - shard-snb:          [PASS][196] -> [FAIL][197] ([i915#2122]) +1 other test fail
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-snb1/igt@kms_flip@plain-flip-ts-check-interruptible.html
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-snb7/igt@kms_flip@plain-flip-ts-check-interruptible.html

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

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
    - shard-dg2:          NOTRUN -> [SKIP][199] ([i915#2672] / [i915#3555] / [i915#5190])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][200] ([i915#2672]) +2 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html
    - shard-rkl:          NOTRUN -> [SKIP][201] ([i915#2672]) +6 other tests skip
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
    - shard-mtlp:         NOTRUN -> [SKIP][202] ([i915#2672] / [i915#3555] / [i915#8813])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][203] ([i915#2672])
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
    - shard-dg1:          NOTRUN -> [SKIP][204] ([i915#2587] / [i915#2672] / [i915#3555])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-16/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling:
    - shard-rkl:          NOTRUN -> [SKIP][205] ([i915#2672] / [i915#3555]) +6 other tests skip
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling.html
    - shard-tglu:         NOTRUN -> [SKIP][206] ([i915#2672] / [i915#3555])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling.html
    - shard-mtlp:         NOTRUN -> [SKIP][207] ([i915#3555] / [i915#8813])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling.html

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

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

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-dg1:          NOTRUN -> [SKIP][210] ([i915#2672] / [i915#3555]) +5 other tests skip
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

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

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
    - shard-dg2:          [PASS][212] -> [FAIL][213] ([i915#6880]) +1 other test fail
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-4/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt.html
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-3/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-rkl:          NOTRUN -> [SKIP][214] ([i915#1825]) +45 other tests skip
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render:
    - shard-dg1:          NOTRUN -> [SKIP][215] +41 other tests skip
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html

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

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt:
    - shard-tglu:         NOTRUN -> [SKIP][217] +31 other tests skip
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt.html

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

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-onoff:
    - shard-mtlp:         NOTRUN -> [SKIP][219] ([i915#1825]) +17 other tests skip
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][220] ([i915#8708]) +18 other tests skip
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt.html

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

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

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][223] ([i915#8708]) +23 other tests skip
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-gtt.html

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

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

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

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][227] ([i915#6118])
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_hdr@bpc-switch-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][228] ([i915#3555] / [i915#8228]) +3 other tests skip
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_hdr@bpc-switch-dpms.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-dg2:          NOTRUN -> [SKIP][229] ([i915#3555] / [i915#8228]) +1 other test skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-3/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_hdr@static-swap:
    - shard-dg2:          [PASS][230] -> [SKIP][231] ([i915#3555] / [i915#8228])
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-11/igt@kms_hdr@static-swap.html
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@kms_hdr@static-swap.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-rkl:          NOTRUN -> [SKIP][232] ([i915#4070] / [i915#4816])
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
    - shard-dg1:          NOTRUN -> [SKIP][233] ([i915#1839])
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-tglu:         [PASS][234] -> [FAIL][235] ([i915#8292]) +1 other test fail
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-tglu-9/igt@kms_plane_scaling@intel-max-src-size.html
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-5/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [FAIL][236] ([i915#8292]) +1 other test fail
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
    - shard-tglu:         NOTRUN -> [SKIP][237] ([i915#3555]) +1 other test skip
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-9/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html

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

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

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-a:
    - shard-rkl:          NOTRUN -> [SKIP][240] ([i915#12247]) +2 other tests skip
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-a.html

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

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-factor-0-25:
    - shard-mtlp:         NOTRUN -> [SKIP][242] ([i915#6953])
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-1/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-factor-0-25.html
    - shard-tglu:         NOTRUN -> [SKIP][243] ([i915#6953])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-7/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-b:
    - shard-tglu:         NOTRUN -> [SKIP][244] ([i915#12247]) +12 other tests skip
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-7/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-factor-0-25@pipe-b.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25:
    - shard-dg2:          NOTRUN -> [SKIP][245] ([i915#3555] / [i915#9423])
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75:
    - shard-mtlp:         NOTRUN -> [SKIP][246] ([i915#3555] / [i915#6953])
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-8/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75@pipe-a:
    - shard-mtlp:         NOTRUN -> [SKIP][247] ([i915#12247]) +12 other tests skip
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-8/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75@pipe-a.html

  * igt@kms_pm_backlight@fade:
    - shard-dg1:          NOTRUN -> [SKIP][248] ([i915#5354])
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-18/igt@kms_pm_backlight@fade.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][249] ([i915#5354])
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-3/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-rkl:          NOTRUN -> [SKIP][250] ([i915#9685]) +1 other test skip
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@kms_pm_dc@dc3co-vpb-simulation.html
    - shard-dg1:          NOTRUN -> [SKIP][251] ([i915#9685])
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-17/igt@kms_pm_dc@dc3co-vpb-simulation.html

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

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-rkl:          [PASS][253] -> [SKIP][254] ([i915#9519]) +2 other tests skip
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-4/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
    - shard-tglu:         NOTRUN -> [SKIP][255] ([i915#9519])
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-9/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@dpms-non-lpsp:
    - shard-rkl:          NOTRUN -> [SKIP][256] ([i915#9519])
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_pm_rpm@dpms-non-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-dg2:          NOTRUN -> [SKIP][257] ([i915#9519])
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-5/igt@kms_pm_rpm@modeset-lpsp-stress.html
    - shard-dg1:          NOTRUN -> [SKIP][258] ([i915#9519])
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@kms_pm_rpm@modeset-lpsp-stress.html

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

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

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

  * igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf:
    - shard-dg2:          NOTRUN -> [SKIP][262] ([i915#11520]) +6 other tests skip
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-3/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf.html

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

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

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

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-mtlp:         NOTRUN -> [SKIP][266] ([i915#4348])
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-6/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr@fbc-pr-no-drrs:
    - shard-rkl:          NOTRUN -> [SKIP][267] ([i915#1072] / [i915#9732]) +27 other tests skip
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@kms_psr@fbc-pr-no-drrs.html

  * igt@kms_psr@fbc-pr-sprite-plane-move:
    - shard-tglu:         NOTRUN -> [SKIP][268] ([i915#9732]) +5 other tests skip
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-5/igt@kms_psr@fbc-pr-sprite-plane-move.html

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

  * igt@kms_psr@fbc-psr-primary-page-flip@edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][270] ([i915#9688]) +8 other tests skip
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-4/igt@kms_psr@fbc-psr-primary-page-flip@edp-1.html

  * igt@kms_psr@psr2-primary-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][271] ([i915#1072] / [i915#9732]) +18 other tests skip
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@kms_psr@psr2-primary-mmap-gtt.html

  * igt@kms_psr@psr2-sprite-blt:
    - shard-dg1:          NOTRUN -> [SKIP][272] ([i915#1072] / [i915#9732]) +21 other tests skip
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-14/igt@kms_psr@psr2-sprite-blt.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-dg2:          NOTRUN -> [SKIP][273] ([i915#11131]) +1 other test skip
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-5/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-180:
    - shard-mtlp:         NOTRUN -> [SKIP][274] ([i915#5289])
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-2/igt@kms_rotation_crc@primary-y-tiled-reflect-x-180.html

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

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
    - shard-mtlp:         NOTRUN -> [SKIP][276] ([i915#4235]) +2 other tests skip
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-7/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html

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

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-dg2:          NOTRUN -> [SKIP][278] ([i915#11131] / [i915#5190])
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

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

  * igt@kms_setmode@invalid-clone-single-crtc-stealing:
    - shard-mtlp:         NOTRUN -> [SKIP][281] ([i915#3555] / [i915#8809])
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-7/igt@kms_setmode@invalid-clone-single-crtc-stealing.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [FAIL][282] ([i915#9196]) +1 other test fail
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1:
    - shard-tglu:         [PASS][283] -> [FAIL][284] ([i915#9196])
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-tglu-7/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-3/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html

  * igt@kms_vrr@lobf:
    - shard-dg2:          NOTRUN -> [SKIP][285] ([i915#11920])
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-3/igt@kms_vrr@lobf.html
    - shard-dg1:          NOTRUN -> [SKIP][286] ([i915#11920])
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-15/igt@kms_vrr@lobf.html

  * igt@kms_vrr@max-min:
    - shard-dg1:          NOTRUN -> [SKIP][287] ([i915#9906])
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-14/igt@kms_vrr@max-min.html
    - shard-dg2:          NOTRUN -> [SKIP][288] ([i915#9906])
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@kms_vrr@max-min.html

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

  * igt@kms_vrr@seamless-rr-switch-virtual:
    - shard-mtlp:         NOTRUN -> [SKIP][290] ([i915#8808] / [i915#9906])
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-4/igt@kms_vrr@seamless-rr-switch-virtual.html

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

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

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-dg2:          NOTRUN -> [SKIP][293] ([i915#2437] / [i915#9412]) +2 other tests skip
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-10/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

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

  * igt@perf@mi-rpc:
    - shard-dg2:          NOTRUN -> [SKIP][295] ([i915#2434])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-5/igt@perf@mi-rpc.html
    - shard-dg1:          NOTRUN -> [SKIP][296] ([i915#2434])
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@perf@mi-rpc.html

  * igt@perf@non-zero-reason:
    - shard-dg2:          NOTRUN -> [FAIL][297] ([i915#7484]) +1 other test fail
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@perf@non-zero-reason.html

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

  * igt@perf_pmu@busy-double-start@rcs0:
    - shard-mtlp:         [PASS][299] -> [FAIL][300] ([i915#4349])
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-mtlp-8/igt@perf_pmu@busy-double-start@rcs0.html
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-4/igt@perf_pmu@busy-double-start@rcs0.html

  * igt@perf_pmu@busy-double-start@vecs1:
    - shard-dg2:          NOTRUN -> [FAIL][301] ([i915#4349]) +4 other tests fail
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@perf_pmu@busy-double-start@vecs1.html

  * igt@perf_pmu@cpu-hotplug:
    - shard-mtlp:         NOTRUN -> [SKIP][302] ([i915#8850])
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-8/igt@perf_pmu@cpu-hotplug.html
    - shard-tglu:         NOTRUN -> [SKIP][303] ([i915#8850])
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-6/igt@perf_pmu@cpu-hotplug.html

  * igt@perf_pmu@module-unload:
    - shard-dg2:          NOTRUN -> [FAIL][304] ([i915#11823])
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@perf_pmu@module-unload.html

  * igt@perf_pmu@rc6@other-idle-gt0:
    - shard-dg2:          NOTRUN -> [SKIP][305] ([i915#8516])
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@perf_pmu@rc6@other-idle-gt0.html
    - shard-dg1:          NOTRUN -> [SKIP][306] ([i915#8516])
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-13/igt@perf_pmu@rc6@other-idle-gt0.html

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

  * igt@prime_vgem@basic-read:
    - shard-dg2:          NOTRUN -> [SKIP][308] ([i915#3291] / [i915#3708])
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@prime_vgem@basic-read.html
    - shard-rkl:          NOTRUN -> [SKIP][309] ([i915#3291] / [i915#3708])
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@prime_vgem@basic-read.html

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

  * igt@prime_vgem@coherency-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][311] ([i915#3708] / [i915#4077])
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-3/igt@prime_vgem@coherency-gtt.html

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

  * igt@sriov_basic@bind-unbind-vf:
    - shard-rkl:          NOTRUN -> [SKIP][313] ([i915#9917]) +1 other test skip
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-3/igt@sriov_basic@bind-unbind-vf.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-dg1:          NOTRUN -> [SKIP][314] ([i915#9917]) +1 other test skip
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-14/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@syncobj_timeline@invalid-wait-zero-handles:
    - shard-glk:          NOTRUN -> [FAIL][315] ([i915#9781])
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-glk1/igt@syncobj_timeline@invalid-wait-zero-handles.html

  
#### Possible fixes ####

  * igt@device_reset@unbind-reset-rebind:
    - shard-dg2:          [ABORT][316] ([i915#5507]) -> [PASS][317]
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-3/igt@device_reset@unbind-reset-rebind.html
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-8/igt@device_reset@unbind-reset-rebind.html

  * igt@drm_fdinfo@idle@rcs0:
    - shard-rkl:          [FAIL][318] ([i915#7742]) -> [PASS][319] +1 other test pass
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-rkl-6/igt@drm_fdinfo@idle@rcs0.html
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@drm_fdinfo@idle@rcs0.html

  * igt@gem_ctx_engines@invalid-engines:
    - shard-rkl:          [FAIL][320] ([i915#12027]) -> [PASS][321]
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-rkl-3/igt@gem_ctx_engines@invalid-engines.html
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-2/igt@gem_ctx_engines@invalid-engines.html

  * igt@gem_eio@kms:
    - shard-dg2:          [FAIL][322] ([i915#5784]) -> [PASS][323]
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-6/igt@gem_eio@kms.html
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-7/igt@gem_eio@kms.html

  * igt@gem_eio@reset-stress:
    - shard-dg1:          [FAIL][324] ([i915#5784]) -> [PASS][325]
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg1-17/igt@gem_eio@reset-stress.html
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-17/igt@gem_eio@reset-stress.html

  * igt@gem_exec_fair@basic-pace@bcs0:
    - shard-rkl:          [FAIL][326] ([i915#2842]) -> [PASS][327] +1 other test pass
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-rkl-4/igt@gem_exec_fair@basic-pace@bcs0.html
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-rkl-5/igt@gem_exec_fair@basic-pace@bcs0.html

  * igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0:
    - shard-dg1:          [FAIL][328] ([i915#3591]) -> [PASS][329] +3 other tests pass
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg1-14/igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0.html
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg1-17/igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0.html

  * igt@kms_async_flips@alternate-sync-async-flip:
    - shard-glk:          [FAIL][330] ([i915#10991]) -> [PASS][331] +1 other test pass
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-glk3/igt@kms_async_flips@alternate-sync-async-flip.html
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-glk3/igt@kms_async_flips@alternate-sync-async-flip.html

  * igt@kms_big_joiner@invalid-modeset-force-joiner:
    - shard-dg2:          [SKIP][332] ([i915#10656]) -> [PASS][333]
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-8/igt@kms_big_joiner@invalid-modeset-force-joiner.html
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@kms_big_joiner@invalid-modeset-force-joiner.html

  * igt@kms_cursor_legacy@torture-bo@pipe-b:
    - shard-glk:          [DMESG-WARN][334] ([i915#10166] / [i915#1982]) -> [PASS][335]
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-glk2/igt@kms_cursor_legacy@torture-bo@pipe-b.html
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-glk2/igt@kms_cursor_legacy@torture-bo@pipe-b.html

  * igt@kms_flip@blocking-wf_vblank:
    - shard-dg2:          [FAIL][336] ([i915#2122]) -> [PASS][337] +2 other tests pass
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-2/igt@kms_flip@blocking-wf_vblank.html
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-2/igt@kms_flip@blocking-wf_vblank.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt:
    - shard-snb:          [SKIP][338] -> [PASS][339]
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-snb4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt.html
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-snb1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt.html

  * igt@kms_plane@pixel-format@pipe-a-plane-3:
    - shard-mtlp:         [ABORT][340] ([i915#10354]) -> [PASS][341] +1 other test pass
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-mtlp-4/igt@kms_plane@pixel-format@pipe-a-plane-3.html
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-2/igt@kms_plane@pixel-format@pipe-a-plane-3.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-tglu:         [FAIL][342] ([i915#9295]) -> [PASS][343]
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-tglu-8/igt@kms_pm_dc@dc6-dpms.html
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-10/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-dg2:          [SKIP][344] ([i915#9340]) -> [PASS][345]
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-6/igt@kms_pm_lpsp@kms-lpsp.html
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-2/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-dg2:          [SKIP][346] ([i915#9519]) -> [PASS][347]
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-8/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-1/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_universal_plane@cursor-fb-leak:
    - shard-mtlp:         [FAIL][348] ([i915#9196]) -> [PASS][349] +1 other test pass
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-mtlp-5/igt@kms_universal_plane@cursor-fb-leak.html
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-4/igt@kms_universal_plane@cursor-fb-leak.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1:
    - shard-tglu:         [FAIL][350] ([i915#9196]) -> [PASS][351]
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-tglu-7/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-tglu-3/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html

  
#### Warnings ####

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-dg2:          [SKIP][352] ([i915#11453]) -> [SKIP][353] ([i915#11453] / [i915#3359])
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-6/igt@kms_cursor_crc@cursor-offscreen-512x512.html
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x170:
    - shard-dg2:          [SKIP][354] ([i915#11453] / [i915#3359]) -> [SKIP][355] ([i915#11453])
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-11/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-7/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html

  * igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling@pipe-a-default-mode:
    - shard-mtlp:         [ABORT][356] ([i915#10354]) -> [SKIP][357] ([i915#3555] / [i915#8810])
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-mtlp-3/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling@pipe-a-default-mode.html
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling:
    - shard-mtlp:         [ABORT][358] -> [SKIP][359] ([i915#3555] / [i915#8813]) +1 other test skip
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-mtlp-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-default-mode:
    - shard-mtlp:         [ABORT][360] -> [SKIP][361] ([i915#8810])
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-mtlp-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-default-mode.html
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode:
    - shard-mtlp:         [SKIP][362] ([i915#3555] / [i915#8810]) -> [ABORT][363] ([i915#10354])
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode.html
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode.html

  * igt@kms_frontbuffer_tracking@fbcpsr-suspend:
    - shard-dg2:          [SKIP][364] ([i915#10433] / [i915#3458]) -> [SKIP][365] ([i915#3458]) +1 other test skip
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html

  * igt@kms_psr@fbc-psr2-primary-mmap-gtt:
    - shard-dg2:          [SKIP][366] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][367] ([i915#1072] / [i915#9732]) +1 other test skip
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-11/igt@kms_psr@fbc-psr2-primary-mmap-gtt.html
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-7/igt@kms_psr@fbc-psr2-primary-mmap-gtt.html

  * igt@kms_psr@psr-cursor-render:
    - shard-dg2:          [SKIP][368] ([i915#1072] / [i915#9732]) -> [SKIP][369] ([i915#1072] / [i915#9673] / [i915#9732]) +11 other tests skip
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-10/igt@kms_psr@psr-cursor-render.html
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@kms_psr@psr-cursor-render.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
    - shard-dg2:          [SKIP][370] ([i915#11131] / [i915#5190]) -> [SKIP][371] ([i915#11131] / [i915#4235] / [i915#5190])
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15426/shard-dg2-10/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11746/shard-dg2-11/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html

  
  [i915#10166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10166
  [i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10354
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#1099]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1099
  [i915#10991]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10991
  [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
  [i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131
  [i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#11713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11713
  [i915#11823]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11823
  [i915#11920]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11920
  [i915#11980]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11980
  [i915#12027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12027
  [i915#12042]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12042
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
  [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#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
  [i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122
  [i915#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
  [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#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591
  [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#3826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3826
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#3955]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3955
  [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#4087]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4087
  [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#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4348]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4348
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387
  [i915#4473]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4473
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#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#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4873]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4873
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [i915#4885]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4885
  [i915#4958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4958
  [i915#5107]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5107
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
  [i915#5465]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5465
  [i915#5507]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5507
  [i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
  [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6118
  [i915#6187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6187
  [i915#6188]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6188
  [i915#6230]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6230
  [i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
  [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#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6805
  [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [i915#7091]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7091
  [i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
  [i915#7443]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7443
  [i915#7484]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7484
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7742
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8292
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
  [i915#8436]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8436
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8588]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8588
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
  [i915#8808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8808
  [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
  [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#8827]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8827
  [i915#8850]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8850
  [i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
  [i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
  [i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
  [i915#9311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9311
  [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
  [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#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
  [i915#9531]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9531
  [i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673
  [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#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
  [i915#9781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9781
  [i915#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808
  [i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
  [i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
  [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_8020 -> IGTPW_11746
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_15426: 326b4f14959d97e0e786c2f20a8c246573f06fbd @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_11746: 11746
  IGT_8020: 7860f9a9394da0a18fc0bf0223a79b533e569f95 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

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

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

* Re: [PATCH i-g-t 1/5] lib/power: Allow use of rapl by specifying fd=-1
  2024-09-16 20:18 ` [PATCH i-g-t 1/5] lib/power: Allow use of rapl by specifying fd=-1 Ville Syrjala
@ 2024-10-11 17:17   ` Kamil Konieczny
  2024-10-14 16:57     ` Ville Syrjälä
  0 siblings, 1 reply; 21+ messages in thread
From: Kamil Konieczny @ 2024-10-11 17:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Ville Syrjala

Hi Ville,
On 2024-09-16 at 23:18:37 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> igt_power_open() is currently defunct when you don't have
> the GPU driver loaded, or when you explicitly want to measure
> via rapl even when using a DGPU. Allow those use cases by
> accepting fd<0 to indicate that we explicitly want to use rapl.


This is ok but imho you should document it in function description.

With that
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>

> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  lib/igt_power.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/igt_power.c b/lib/igt_power.c
> index 810859b134dc..f4d3efcf0cec 100644
> --- a/lib/igt_power.c
> +++ b/lib/igt_power.c
> @@ -106,7 +106,7 @@ int igt_power_open(int fd, struct igt_power *p, const char *domain)
>  	p->hwmon_fd = -1;
>  	p->rapl.fd = -1;
>  
> -	is_dgfx = is_xe_device(fd) ? xe_has_vram(fd) : gem_has_lmem(fd);
> +	is_dgfx = fd >= 0 && (is_xe_device(fd) ? xe_has_vram(fd) : gem_has_lmem(fd));
>  	if (is_dgfx) {
>  		if (strncmp(domain, "gpu", strlen("gpu")) == 0) {
>  			p->hwmon_fd = igt_hwmon_open(fd);
> -- 
> 2.44.2
> 

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

* Re: [PATCH i-g-t 2/5] igt: Use is_intel_dgfx()
  2024-09-16 20:18 ` [PATCH i-g-t 2/5] igt: Use is_intel_dgfx() Ville Syrjala
@ 2024-10-11 17:20   ` Kamil Konieczny
  0 siblings, 0 replies; 21+ messages in thread
From: Kamil Konieczny @ 2024-10-11 17:20 UTC (permalink / raw)
  To: igt-dev; +Cc: Ville Syrjala

Hi Ville,
On 2024-09-16 at 23:18:38 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Replace the hand rolled copies of is_intel_dgfx() with
> the real thing.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>

> ---
>  lib/igt_power.c          | 6 ++----
>  tests/intel/kms_pm_dc.c  | 6 ++----
>  tests/intel/kms_pm_rpm.c | 6 ++----
>  tests/kms_addfb_basic.c  | 9 ++++-----
>  4 files changed, 10 insertions(+), 17 deletions(-)
> 
> diff --git a/lib/igt_power.c b/lib/igt_power.c
> index f4d3efcf0cec..e891da87acf3 100644
> --- a/lib/igt_power.c
> +++ b/lib/igt_power.c
> @@ -12,7 +12,7 @@
>  #include "igt_power.h"
>  #include "igt_sysfs.h"
>  
> -#include "xe/xe_query.h"
> +#include "intel_common.h"
>  
>  static const char *rapl_domains[] = { "cpu", "gpu", "pkg", "ram" };
>  
> @@ -101,13 +101,11 @@ static inline void rapl_close(struct rapl *r)
>  int igt_power_open(int fd, struct igt_power *p, const char *domain)
>  {
>  	int i;
> -	bool is_dgfx;
>  
>  	p->hwmon_fd = -1;
>  	p->rapl.fd = -1;
>  
> -	is_dgfx = fd >= 0 && (is_xe_device(fd) ? xe_has_vram(fd) : gem_has_lmem(fd));
> -	if (is_dgfx) {
> +	if (fd >= 0 && is_intel_dgfx(fd)) {
>  		if (strncmp(domain, "gpu", strlen("gpu")) == 0) {
>  			p->hwmon_fd = igt_hwmon_open(fd);
>  			if (p->hwmon_fd >= 0)
> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> index 07b140ce5b16..362c9b6edb25 100644
> --- a/tests/intel/kms_pm_dc.c
> +++ b/tests/intel/kms_pm_dc.c
> @@ -46,7 +46,7 @@
>  #include "limits.h"
>  #include "time.h"
>  #include "igt_pm.h"
> -#include "xe/xe_query.h"
> +#include "intel_common.h"
>  
>  /**
>   * SUBTEST: dc3co-vpb-simulation
> @@ -711,7 +711,6 @@ static void kms_poll_state_restore(int sig)
>  igt_main
>  {
>  	data_t data = {};
> -	bool is_dgfx;
>  
>  	igt_fixture {
>  		data.drm_fd = drm_open_driver_master(DRIVER_INTEL | DRIVER_XE);
> @@ -805,8 +804,7 @@ igt_main
>  
>  	igt_describe("This test validates display engine entry to DC9 state");
>  	igt_subtest("dc9-dpms") {
> -		is_dgfx = is_xe_device(data.drm_fd) ? xe_has_vram(data.drm_fd) : gem_has_lmem(data.drm_fd);
> -		if (!is_dgfx)
> +		if (!is_intel_dgfx(data.drm_fd))
>  			igt_require_f(igt_pm_pc8_plus_residencies_enabled(data.msr_fd),
>  				      "PC8+ residencies not supported\n");
>  		test_dc9_dpms(&data);
> diff --git a/tests/intel/kms_pm_rpm.c b/tests/intel/kms_pm_rpm.c
> index 852e9cb5f84d..990c509156f3 100644
> --- a/tests/intel/kms_pm_rpm.c
> +++ b/tests/intel/kms_pm_rpm.c
> @@ -39,8 +39,8 @@
>  #include "igt_kmod.h"
>  #include "igt_sysfs.h"
>  #include "intel_blt.h"
> +#include "intel_common.h"
>  #include "xe/xe_ioctl.h"
> -#include "xe/xe_query.h"
>  
>  /**
>   * SUBTEST: basic-pci-d3-state
> @@ -1116,7 +1116,6 @@ static bool device_in_pci_d3(struct pci_device *pci_dev)
>  static void pci_d3_state_subtest(void)
>  {
>  	struct pci_device *pci_dev, *bridge_pci_dev;
> -	bool is_dgfx;
>  
>  	igt_require(has_runtime_pm);
>  
> @@ -1126,8 +1125,7 @@ static void pci_d3_state_subtest(void)
>  	disable_all_screens_and_wait(&ms_data);
>  	igt_assert(igt_wait(device_in_pci_d3(pci_dev), 2000, 100));
>  
> -	is_dgfx = is_xe_device(drm_fd) ? xe_has_vram(drm_fd) : gem_has_lmem(drm_fd);
> -	if (is_dgfx)
> +	if (is_intel_dgfx(drm_fd))
>  		igt_require_f(pci_device_has_kernel_driver(bridge_pci_dev),
>  			      "pci bridge device does not bind with pcieport driver\n");
>  
> diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
> index 8fe22ec05166..b22818592e57 100644
> --- a/tests/kms_addfb_basic.c
> +++ b/tests/kms_addfb_basic.c
> @@ -51,6 +51,7 @@
>  #include "igt_rand.h"
>  #include "igt_device.h"
>  #include "i915/intel_memory_region.h"
> +#include "intel_common.h"
>  #include "xe/xe_ioctl.h"
>  #include "xe/xe_query.h"
>  
> @@ -303,13 +304,11 @@ static void invalid_tests(int fd)
>  			    IGT_COLOR_YCBCR_BT709, IGT_COLOR_YCBCR_LIMITED_RANGE);
>  		igt_calc_fb_size(&fb);
>  
> -		if (is_i915_device(fd)) {
> -			igt_require(gem_has_lmem(fd));
> +		igt_require(is_intel_dgfx(fd));
> +		if (is_i915_device(fd))
>  			handle = gem_create_in_memory_regions(fd, fb.size, REGION_SMEM);
> -		} else {
> -			igt_require(xe_has_vram(fd));
> +		else
>  			handle = xe_bo_create(fd, 0, fb.size, system_memory(fd), 0);
> -		}
>  
>  		f.handles[0] = handle;
>  		do_ioctl_err(fd, DRM_IOCTL_MODE_ADDFB2, &f, EREMOTE);
> -- 
> 2.44.2
> 

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

* Re: [PATCH i-g-t 3/5] lib/igt_power: Add power_supply/BAT based measurement
  2024-09-16 20:18 ` [PATCH i-g-t 3/5] lib/igt_power: Add power_supply/BAT based measurement Ville Syrjala
@ 2024-10-11 17:30   ` Kamil Konieczny
  2024-10-14 17:07     ` Ville Syrjälä
  0 siblings, 1 reply; 21+ messages in thread
From: Kamil Konieczny @ 2024-10-11 17:30 UTC (permalink / raw)
  To: igt-dev; +Cc: Ville Syrjala

Hi Ville,
On 2024-09-16 at 23:18:39 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Allow measuring total system power via the power_supply class
> stuff in sysfs (typically the information there comes from ACPI).
> 
> There are two types of batteries:
> - reports remaining capacity in uWh (energy_now)
> - reports remaining capacity in uAh (charge_now)
> 
> The first type is easier since we just have to convert to
> uJ. The second type is less convenient since we also need
> the voltage to determine energy. For that we just multiply
> with voltage_now (in uV) when sampling charge_now. Obviously
> this isn't entirely correct (should integrate instead), but
> I think it's close enough to be useful.
> 
> Also one should keep in mind that the battery reports remaining
> energy, not consumed energy. So we have to flip stuff around when
> calculating things. Another alternative would be flip already
> when measuring (eg. {charge,energy}_full_design - {charge,energy}_now),
> but that seems more of a hassle really.
> 
> TODO: maybe confirm that the AC adapter is unplugged and the
> battery is actually reporting to discharge before we start?
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  lib/igt_power.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++
>  lib/igt_power.h |  5 ++++-
>  2 files changed, 64 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/igt_power.c b/lib/igt_power.c
> index e891da87acf3..a3e8ee588365 100644
> --- a/lib/igt_power.c
> +++ b/lib/igt_power.c
> @@ -85,6 +85,21 @@ static inline void rapl_close(struct rapl *r)
>  	r->fd = -1;
>  }
>  
> +static uint64_t bat_get_energy(int fd)
> +{
> +	if (igt_sysfs_has_attr(fd, "energy_now")) {
> +		/* uWh -> uJ */
> +		return 3600 *
> +			igt_sysfs_get_u64(fd, "energy_now");
> +	} else {
> +		/* uAh * uV -> uJ */
> +		return 3600 *
> +			igt_sysfs_get_u64(fd, "charge_now") *
> +			igt_sysfs_get_u64(fd, "voltage_now") /
> +			1000000;
> +	}
> +}
> +
>  /**
>   * igt_power_open:
>   * @fd : device fd
> @@ -103,6 +118,7 @@ int igt_power_open(int fd, struct igt_power *p, const char *domain)
>  	int i;
>  
>  	p->hwmon_fd = -1;
> +	p->bat_fd = -1;
>  	p->rapl.fd = -1;
>  
>  	if (fd >= 0 && is_intel_dgfx(fd)) {
> @@ -140,6 +156,8 @@ void igt_power_get_energy(struct igt_power *power, struct power_sample *s)
>  	if (power->hwmon_fd >= 0) {
>  		if (igt_sysfs_has_attr(power->hwmon_fd, "energy1_input"))
>  			s->energy = igt_sysfs_get_u64(power->hwmon_fd, "energy1_input");
> +	} else if (power->bat_fd >= 0) {
> +		s->energy = bat_get_energy(power->bat_fd);
>  	} else if (power->rapl.fd >= 0) {
>  		rapl_read(&power->rapl, s);
>  	}
> @@ -160,6 +178,8 @@ double igt_power_get_mJ(const struct igt_power *power,
>  {
>  	if (power->hwmon_fd >= 0)
>  		return (p1->energy - p0->energy) * 1e-3;
> +	else if (power->bat_fd >= 0)
> +		return (p0->energy - p1->energy) * 1e-3; /* battery measures remaining energy */
>  	else if (power->rapl.fd >= 0)
>  		return ((p1->energy - p0->energy) *  power->rapl.scale) * 1e3;
>  
> @@ -207,7 +227,47 @@ void igt_power_close(struct igt_power *power)
>  	if (power->hwmon_fd >= 0) {
>  		close(power->hwmon_fd);
>  		power->hwmon_fd = -1;
> +	} else if (power->bat_fd >= 0) {
> +		close(power->bat_fd);
> +		power->bat_fd = -1;
>  	} else if (power->rapl.fd >= 0) {
>  		rapl_close(&power->rapl);
>  	}
>  }
> +
> +/**
> + * igt_power_bat_open:
> + * @igt_power : power struct
> + * @index: battery index
> + *
> + * opens the power_supply fd based on battery index
> + *
> + * Returns
> + * 0 on success, errno otherwise

imho -1 in case of error?

> + */
> +int igt_power_bat_open(struct igt_power *p, int index)
> +{
> +	char path[64];
> +	int fd;
> +
> +	p->hwmon_fd = -1;
> +	p->bat_fd = -1;
> +	p->rapl.fd = -1;
> +
> +	snprintf(path, sizeof(path), "/sys/class/power_supply/BAT%d", index);
> +
> +	fd = open(path, O_RDONLY | O_DIRECTORY);
> +	if (fd < 0)
> +		return fd;
> +
> +	if (!igt_sysfs_has_attr(fd, "energy_now") &&
> +	    !(igt_sysfs_has_attr(fd, "charge_now") &&
> +	      igt_sysfs_has_attr(fd, "voltage_now"))) {
> +		close(fd);

Add newline before return.

With this fixed
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>

> +		return -1;
> +	}
> +
> +	p->bat_fd = fd;
> +
> +	return 0;
> +}
> diff --git a/lib/igt_power.h b/lib/igt_power.h
> index 68a05300eec2..853b0fae815a 100644
> --- a/lib/igt_power.h
> +++ b/lib/igt_power.h
> @@ -42,14 +42,17 @@ struct power_sample {
>  struct igt_power {
>  	struct rapl rapl;
>  	int hwmon_fd;
> +	int bat_fd;
>  };
>  
>  int igt_power_open(int i915, struct igt_power *p, const char *domain);
>  void igt_power_close(struct igt_power *p);
>  
> +int igt_power_bat_open(struct igt_power *p, int index);
> +
>  static inline bool igt_power_valid(struct igt_power *p)
>  {
> -	return (p->rapl.fd >= 0) || (p->hwmon_fd >= 0);
> +	return p->rapl.fd >= 0 || p->hwmon_fd >= 0 || p->bat_fd >= 0;
>  }
>  
>  void igt_power_get_energy(struct igt_power *p, struct power_sample *s);
> -- 
> 2.44.2
> 

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

* Re: [PATCH i-g-t 4/5] tools/power: Introduce a small power/energy measurement tool
  2024-09-16 20:18 ` [PATCH i-g-t 4/5] tools/power: Introduce a small power/energy measurement tool Ville Syrjala
@ 2024-10-11 17:39   ` Kamil Konieczny
  0 siblings, 0 replies; 21+ messages in thread
From: Kamil Konieczny @ 2024-10-11 17:39 UTC (permalink / raw)
  To: igt-dev; +Cc: Ville Syrjala

Hi Ville,
On 2024-09-16 at 23:18:40 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Provide a small tool for general power/energy measurements.
> 
> The tool operates as follow:
> 1. optionally sleep for a while to let the system settle
> 2. sample from number of rapl/hwmon/battery sources
> 3. sleep for a know amount of time
> 4. sample again from the same sources
> 5. calculate the results and report how much power/energy was used
> 
> igt_power provides the actual power/energy measurement stuff.
> 
> Sample output:
> $ power -S 30 -s 30 -d /dev/dri/card0 -b 0 -r gpu -r pkg
> /dev/dri/card0[gpu]: energy 17.944336 mJ, power 0.597746 mW, time 30.020000 s
> battery[0]: energy 108000.000000 mJ, power 3597.585325 mW, time 30.020136 s
> rapl[gpu]: energy 17.944336 mJ, power 0.597824 mW, time 30.016083 s
> rapl[pkg]: energy 24139.099121 mJ, power 804.205461 mW, time 30.016085 s
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  tools/meson.build |   1 +
>  tools/power.c     | 179 ++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 180 insertions(+)
>  create mode 100644 tools/power.c
> 
> diff --git a/tools/meson.build b/tools/meson.build
> index df26c4b95e3f..48c9a4b5089e 100644
> --- a/tools/meson.build
> +++ b/tools/meson.build
> @@ -43,6 +43,7 @@ tools_progs = [
>  	'intel_gvtg_test',
>  	'dpcd_reg',
>  	'lsgpu',
> +	'power',
>  ]
>  tool_deps = igt_deps
>  tool_deps += zlib
> diff --git a/tools/power.c b/tools/power.c
> new file mode 100644
> index 000000000000..75c62ad39e61
> --- /dev/null
> +++ b/tools/power.c
> @@ -0,0 +1,179 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +#include <fcntl.h>
> +#include <getopt.h>
> +#include <stdbool.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +
> +#include "drmtest.h"
> +#include "igt_power.h"
> +
> +struct measurement {
> +	int battery_index;
> +	const char *rapl_domain;
> +	const char *drm_device;
> +	struct power_sample pre, post;
> +	struct igt_power power;
> +};
> +
> +static bool prepare(struct measurement *m)
> +{
> +	if (m->battery_index >= 0) {
> +		if (igt_power_bat_open(&m->power, m->battery_index)) {
> +			fprintf(stderr, "Unable to open battery %d\n", m->battery_index);

It would help in debug to print also errno.

Add new line before return.

> +			return false;
> +		}
> +	}
> +
> +	if (m->rapl_domain) {
> +		int fd = -1;
> +
> +		if (m->drm_device) {
> +			fd = open(m->drm_device, O_RDONLY);
> +			if (fd < 0) {
> +				fprintf(stderr, "Unable to open drm device %s\n", m->drm_device);

Same here.

> +				return false;
> +			}
> +		}
> +
> +		if (igt_power_open(fd, &m->power, m->rapl_domain)) {
> +			if (m->drm_device)
> +				fprintf(stderr, "Unable to open hwmon/rapl for %s\n", m->drm_device);
> +			else
> +				fprintf(stderr, "Unable to open rapl domain %s\n", m->rapl_domain);

Print errno in both cases.

> +			close(fd);

Add newline.

> +			return false;
> +		}
> +
> +		close(fd);
> +	}
> +
> +	return true;
> +}
> +
> +static void sample_pre(struct measurement *m)
> +{
> +	igt_power_get_energy(&m->power, &m->pre);
> +}
> +
> +static void sample_post(struct measurement *m)
> +{
> +	igt_power_get_energy(&m->power, &m->post);
> +}
> +
> +static void report(struct measurement *m)
> +{
> +	if (m->battery_index >= 0)
> +		printf("battery[%d]: energy %f mJ, power %f mW, time %f s\n",
> +		       m->battery_index,
> +		       igt_power_get_mJ(&m->power, &m->pre, &m->post),
> +		       igt_power_get_mW(&m->power, &m->pre, &m->post),
> +		       igt_power_get_s(&m->pre, &m->post));
> +	else
> +		printf("%s[%s]: energy %f mJ, power %f mW, time %f s\n",
> +		       m->drm_device ?: "rapl", m->rapl_domain,
> +		       igt_power_get_mJ(&m->power, &m->pre, &m->post),
> +		       igt_power_get_mW(&m->power, &m->pre, &m->post),
> +		       igt_power_get_s(&m->pre, &m->post));
> +
> +	igt_power_close(&m->power);
> +}
> +
> +static void __attribute__((noreturn)) usage(const char *name)
> +{
> +	fprintf(stderr,
> +		"Usage: %s [[-d <device>][-r <domain>][-b <battery>]...][-S <seconds>][-s <seconds>]\n"
> +		"  -d,--drm <device>\tDRM device (eg. /dev/dri/card0)\n"
> +		"  -r,--rapl <domain>\trapl domain (cpu,gpu,pkg,ram)\n"
> +		"  -b,--battery <battery>\tbattery index\n"
> +		"  -S,--settle <seconds>\tsettling duration\n"
> +		"  -s,--sleep <seconds>\tmeasurement duration\n",
> +		name);
> +	exit(1);
> +}
> +
> +int main(int argc, char *argv[])
> +{
> +	struct measurement measurements[8];
> +	int num_measurements = 0;
> +	int measurement_duration = 0;
> +	int settle_duration = 0;
> +
> +	for (;;) {
> +		static const struct option long_options[] = {
> +			{ .name = "drm", .has_arg = required_argument, },
> +			{ .name = "rapl", .has_arg = required_argument, },
> +			{ .name = "battery", .has_arg = required_argument, },
> +			{ .name = "sleep", .has_arg = required_argument, },
> +			{ .name = "settle", .has_arg = required_argument, },
> +			{}
> +		};
> +
> +		int opt = getopt_long(argc, argv, "d:r:b:S:s:", long_options, NULL);

Add newline.

With above fixed
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>

Regards,
Kamil

> +		if (opt == -1)
> +			break;
> +
> +		switch (opt) {
> +		case 'd':
> +			if (num_measurements >= ARRAY_SIZE(measurements))
> +				usage(argv[0]);
> +			measurements[num_measurements].battery_index = -1;
> +			measurements[num_measurements].rapl_domain = "gpu";
> +			measurements[num_measurements].drm_device = optarg;
> +			num_measurements++;
> +			break;
> +		case 'r':
> +			if (num_measurements >= ARRAY_SIZE(measurements))
> +				usage(argv[0]);
> +			measurements[num_measurements].battery_index = -1;
> +			measurements[num_measurements].rapl_domain = optarg;
> +			measurements[num_measurements].drm_device = NULL;
> +			num_measurements++;
> +			break;
> +		case 'b':
> +			if (num_measurements >= ARRAY_SIZE(measurements))
> +				usage(argv[0]);
> +			measurements[num_measurements].battery_index = atoi(optarg);
> +			measurements[num_measurements].rapl_domain = NULL;
> +			measurements[num_measurements].drm_device = NULL;
> +			num_measurements++;
> +			break;
> +		case 's':
> +			measurement_duration = atoi(optarg);
> +			break;
> +		case 'S':
> +			settle_duration = atoi(optarg);
> +			break;
> +		default:
> +			usage(argv[0]);
> +			break;
> +		}
> +	}
> +
> +	if (num_measurements == 0)
> +		usage(argv[0]);
> +
> +	for (int i = 0; i < num_measurements; i++) {
> +		if (!prepare(&measurements[i]))
> +			usage(argv[0]);
> +	}
> +
> +	sleep(settle_duration);
> +
> +	for (int i = 0; i < num_measurements; i++)
> +		sample_pre(&measurements[i]);
> +
> +	sleep(measurement_duration);
> +
> +	for (int i = 0; i < num_measurements; i++)
> +		sample_post(&measurements[i]);
> +
> +	for (int i = 0; i < num_measurements; i++)
> +		report(&measurements[i]);
> +
> +	return 0;
> +}
> -- 
> 2.44.2
> 

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

* Re: [PATCH i-g-t 5/5] tools/intel_display_bandwidth: Tool for measuring display memory bandwidth utilization
  2024-09-16 20:18 ` [PATCH i-g-t 5/5] tools/intel_display_bandwidth: Tool for measuring display memory bandwidth utilization Ville Syrjala
@ 2024-10-11 17:52   ` Kamil Konieczny
  2024-10-14 16:34     ` Ville Syrjälä
  0 siblings, 1 reply; 21+ messages in thread
From: Kamil Konieczny @ 2024-10-11 17:52 UTC (permalink / raw)
  To: igt-dev; +Cc: Ville Syrjala

Hi Ville,
On 2024-09-16 at 23:18:41 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Introduce a small tool for measing the display enging
s/measing/measuring/
s/enging/engins/

> memory bandwidth utilization. Generally this is available
> on SNB+, except on TGL/derivatives where the relevant
> registers weren't updated to cope with the new ABOX layout
> in the hardware.
> 
> Quite handy for confirming that FBC/CCS/etc. are doing their
> job.
> 
> Not 100% sure about the required scaling factor because
> bspec claims it's only needed for MTL, but my ADL definitely
> needs it already.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  lib/intel_reg.h                 |   5 +
>  tools/intel_display_bandwidth.c | 171 ++++++++++++++++++++++++++++++++

Is this tool display only? What about bw for opencl computations?
Could we have more general tool also for compute case? Then it could be
named intel_gpu_bandwidth or even shorter intel_gpu_bw?

>  tools/meson.build               |   1 +
>  3 files changed, 177 insertions(+)
>  create mode 100644 tools/intel_display_bandwidth.c
> 
> diff --git a/lib/intel_reg.h b/lib/intel_reg.h
> index 26833c66f8e7..5e049d8b14d6 100644
> --- a/lib/intel_reg.h
> +++ b/lib/intel_reg.h
> @@ -1413,6 +1413,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
>  #define PCH_3DRAMCGDIS0		0x46028
>  #define SOUTH_DSPCLK_GATE_D	0xc2020
>  
> +#define DE_POWER1	0x42400
> +#define DE_POWER2	0x42404
> +#define DE_POWER2_ABOX0	0x42404
> +#define DE_POWER2_ABOX1	0x42408
> +
>  #define CPU_eDP_A		0x64000
>  #define PCH_DP_B		0xe4100
>  #define PCH_DP_C		0xe4200
> diff --git a/tools/intel_display_bandwidth.c b/tools/intel_display_bandwidth.c
> new file mode 100644
> index 000000000000..c7be3c390d08
> --- /dev/null
> +++ b/tools/intel_display_bandwidth.c
> @@ -0,0 +1,171 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +#include <getopt.h>
> +#include <inttypes.h>
> +#include <stdbool.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <unistd.h>
> +
> +#include "intel_io.h"
> +#include "intel_chipset.h"
> +#include "intel_reg.h"
> +
> +static bool has_de_power2(uint32_t devid)
> +{
> +	/*
> +	 * TGL has DE_POWER2 but it measures the low priority traffic
> +	 * on ABOX, not not actual display traffic on ABOX0/ABOX1.

s/not not/not/

> +	 */
> +	if (intel_display_ver(devid) == 12)
> +		return false;
> +
> +	return intel_display_ver(devid) >= 6 &&
> +		!IS_VALLEYVIEW(devid) && !IS_CHERRYVIEW(devid);
> +}
> +
> +static bool has_de_power2_abox0_abox1(uint32_t devid)
> +{
> +	/*
> +	 * Despite having ABOX0/ABOX1 TGL lacks the
> +	 * accompanying DE_POWER2_ABOX* registers.
> +	 */
> +	return intel_display_ver(devid) >= 13;
> +}
> +
> +static int de_power2_scale(uint32_t devid)
> +{
> +	/*
> +	 * FIXME should perhaps use something like
> +	 * is_intel_dgfx() but that one wants to open the device :(
> +	 */
> +	switch (intel_display_ver(devid)) {
> +	case 13:
> +		return IS_DG2(devid) ? 1 : 2;
> +	case 14:
> +		return IS_BATTLEMAGE(devid) ? 1 : 2;
> +	default:
> +		return 1;
> +	}
> +}
> +
> +static int de_power2_unit(uint32_t devid)
> +{
> +	return 64 * de_power2_scale(devid);
> +}
> +
> +static float bandwidth(uint32_t devid, int duration,
> +		       uint32_t pre, uint32_t post)
> +{
> +	return (float)(post - pre) * de_power2_unit(devid) / (duration << 20);
> +}
> +
> +static void measure_de_power2_abox0_abox1(uint32_t devid, unsigned int sleep_duration)
> +{
> +	uint32_t pre_abox0, post_abox0;
> +	uint32_t pre_abox1, post_abox1;
> +
> +	pre_abox0 = INREG(DE_POWER2_ABOX0);
> +	pre_abox1 = INREG(DE_POWER2_ABOX1);
> +
> +	if (sleep_duration) {
> +		sleep(sleep_duration);
> +
> +		post_abox0 = INREG(DE_POWER2_ABOX0);
> +		post_abox1 = INREG(DE_POWER2_ABOX1);
> +
> +		printf("DE_POWER2_ABOX0: 0x%08x->0x%08x\n",
> +		       pre_abox0, post_abox0);
> +		printf("DE_POWER2_ABOX1: 0x%08x->0x%08x\n",
> +		       pre_abox1, post_abox1);
> +
> +		printf("ABOX0 bandwidth: %.2f MiB/s\n",
> +		       bandwidth(devid, sleep_duration,
> +				 pre_abox0, post_abox0));
> +		printf("ABOX1 bandwidth: %.2f MiB/s\n",
> +		       bandwidth(devid, sleep_duration,
> +				 pre_abox1, post_abox1));
> +		printf("Total bandwidth: %.2f MiB/s\n",
> +		       bandwidth(devid, sleep_duration,
> +				 pre_abox0 + pre_abox1, post_abox0 + post_abox1));
> +	} else {
> +		printf("DE_POWER2_ABOX0: 0x%08x\n", pre_abox0);
> +		printf("DE_POWER2_ABOX1: 0x%08x\n", pre_abox1);
> +	}
> +}
> +
> +static void measure_de_power2(uint32_t devid, unsigned int sleep_duration)
> +{
> +	uint32_t pre, post;
> +
> +	pre = INREG(DE_POWER2);
> +
> +	if (sleep_duration) {
> +		sleep(sleep_duration);
> +
> +		post = INREG(DE_POWER2);
> +
> +		printf("DE_POWER2: 0x%08x->0x%08x\n", pre, post);
> +
> +		printf("Total bandwidth: %.2f MiB/s\n",
> +		       bandwidth(devid, sleep_duration, pre, post));
> +	} else {
> +		printf("DE_POWER2: 0x%08x\n", pre);
> +	}
> +}
> +
> +static void __attribute__((noreturn)) usage(const char *name)
> +{
> +	fprintf(stderr, "Usage: %s [options]\n"
> +		" -s,--sleep <seconds>\n",

Could you also add counter -c and repeat measurement N times
between sleeps?

> +		name);
> +	exit(1);
> +}
> +
> +int main(int argc, char *argv[])
> +{
> +	struct intel_mmio_data mmio_data;
> +	unsigned int sleep_duration = 0;
> +	uint32_t devid;
> +
> +	for (;;) {
> +		static const struct option long_options[] = {
> +			{ .name = "sleep", .has_arg = required_argument, },
> +			{}
> +		};
> +
> +		int opt = getopt_long(argc, argv, "s:", long_options, NULL);
> +		if (opt == -1)
> +			break;
> +
> +		switch (opt) {
> +		case 's':
> +			sleep_duration = atoi(optarg);
> +			break;
> +		default:
> +			usage(argv[0]);
> +			break;
> +		}
> +	}
> +
> +	devid = intel_get_pci_device()->device_id;
> +
> +	if (!has_de_power2(devid)) {
> +		fprintf(stderr, "Display bandwidth counter not available\n");
> +		return 2;
> +	}
> +
> +	intel_register_access_init(&mmio_data, intel_get_pci_device(), 0, -1);

This function changed recently and now this code do not compile.
Please fix and resend.

Regards,
Kamil

> +
> +	if (has_de_power2_abox0_abox1(devid))
> +		measure_de_power2_abox0_abox1(devid, sleep_duration);
> +	else
> +		measure_de_power2(devid, sleep_duration);
> +
> +	intel_register_access_fini(&mmio_data);
> +
> +	return 0;
> +}
> diff --git a/tools/meson.build b/tools/meson.build
> index 48c9a4b5089e..4e9100ddb2b7 100644
> --- a/tools/meson.build
> +++ b/tools/meson.build
> @@ -16,6 +16,7 @@ tools_progs = [
>  	'intel_audio_dump',
>  	'intel_backlight',
>  	'intel_bios_dumper',
> +	'intel_display_bandwidth',
>  	'intel_display_crc',
>  	'intel_display_poller',
>  	'intel_dump_decode',
> -- 
> 2.44.2
> 

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

* Re: [PATCH i-g-t 5/5] tools/intel_display_bandwidth: Tool for measuring display memory bandwidth utilization
  2024-10-11 17:52   ` Kamil Konieczny
@ 2024-10-14 16:34     ` Ville Syrjälä
  2025-02-26 15:39       ` Govindapillai, Vinod
  0 siblings, 1 reply; 21+ messages in thread
From: Ville Syrjälä @ 2024-10-14 16:34 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev

On Fri, Oct 11, 2024 at 07:52:07PM +0200, Kamil Konieczny wrote:
> Hi Ville,
> On 2024-09-16 at 23:18:41 +0300, Ville Syrjala wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > Introduce a small tool for measing the display enging
> s/measing/measuring/
> s/enging/engins/
> 
> > memory bandwidth utilization. Generally this is available
> > on SNB+, except on TGL/derivatives where the relevant
> > registers weren't updated to cope with the new ABOX layout
> > in the hardware.
> > 
> > Quite handy for confirming that FBC/CCS/etc. are doing their
> > job.
> > 
> > Not 100% sure about the required scaling factor because
> > bspec claims it's only needed for MTL, but my ADL definitely
> > needs it already.
> > 
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  lib/intel_reg.h                 |   5 +
> >  tools/intel_display_bandwidth.c | 171 ++++++++++++++++++++++++++++++++
> 
> Is this tool display only?

Yes.

> What about bw for opencl computations?

IIRC there may be some kind of total memory bandwidth counter
exposed via perf. I'm not aware of anything more specific than
that.

No idea if there's anything for dGPUs, eg. local mem bw, PCIe
link bw, etc. Would be nice to have I suppose.

It might be intereseting to expose the display bandwidth counter
via perf as well, but I haven't looked at what that would take
to implement.

> Could we have more general tool also for compute case? Then it could be
> named intel_gpu_bandwidth or even shorter intel_gpu_bw?
> 
> >  tools/meson.build               |   1 +
> >  3 files changed, 177 insertions(+)
> >  create mode 100644 tools/intel_display_bandwidth.c
> > 
> > diff --git a/lib/intel_reg.h b/lib/intel_reg.h
> > index 26833c66f8e7..5e049d8b14d6 100644
> > --- a/lib/intel_reg.h
> > +++ b/lib/intel_reg.h
> > @@ -1413,6 +1413,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> >  #define PCH_3DRAMCGDIS0		0x46028
> >  #define SOUTH_DSPCLK_GATE_D	0xc2020
> >  
> > +#define DE_POWER1	0x42400
> > +#define DE_POWER2	0x42404
> > +#define DE_POWER2_ABOX0	0x42404
> > +#define DE_POWER2_ABOX1	0x42408
> > +
> >  #define CPU_eDP_A		0x64000
> >  #define PCH_DP_B		0xe4100
> >  #define PCH_DP_C		0xe4200
> > diff --git a/tools/intel_display_bandwidth.c b/tools/intel_display_bandwidth.c
> > new file mode 100644
> > index 000000000000..c7be3c390d08
> > --- /dev/null
> > +++ b/tools/intel_display_bandwidth.c
> > @@ -0,0 +1,171 @@
> > +// SPDX-License-Identifier: MIT
> > +/*
> > + * Copyright © 2024 Intel Corporation
> > + */
> > +
> > +#include <getopt.h>
> > +#include <inttypes.h>
> > +#include <stdbool.h>
> > +#include <stdio.h>
> > +#include <stdlib.h>
> > +#include <unistd.h>
> > +
> > +#include "intel_io.h"
> > +#include "intel_chipset.h"
> > +#include "intel_reg.h"
> > +
> > +static bool has_de_power2(uint32_t devid)
> > +{
> > +	/*
> > +	 * TGL has DE_POWER2 but it measures the low priority traffic
> > +	 * on ABOX, not not actual display traffic on ABOX0/ABOX1.
> 
> s/not not/not/
> 
> > +	 */
> > +	if (intel_display_ver(devid) == 12)
> > +		return false;
> > +
> > +	return intel_display_ver(devid) >= 6 &&
> > +		!IS_VALLEYVIEW(devid) && !IS_CHERRYVIEW(devid);
> > +}
> > +
> > +static bool has_de_power2_abox0_abox1(uint32_t devid)
> > +{
> > +	/*
> > +	 * Despite having ABOX0/ABOX1 TGL lacks the
> > +	 * accompanying DE_POWER2_ABOX* registers.
> > +	 */
> > +	return intel_display_ver(devid) >= 13;
> > +}
> > +
> > +static int de_power2_scale(uint32_t devid)
> > +{
> > +	/*
> > +	 * FIXME should perhaps use something like
> > +	 * is_intel_dgfx() but that one wants to open the device :(
> > +	 */
> > +	switch (intel_display_ver(devid)) {
> > +	case 13:
> > +		return IS_DG2(devid) ? 1 : 2;
> > +	case 14:
> > +		return IS_BATTLEMAGE(devid) ? 1 : 2;
> > +	default:
> > +		return 1;
> > +	}
> > +}
> > +
> > +static int de_power2_unit(uint32_t devid)
> > +{
> > +	return 64 * de_power2_scale(devid);
> > +}
> > +
> > +static float bandwidth(uint32_t devid, int duration,
> > +		       uint32_t pre, uint32_t post)
> > +{
> > +	return (float)(post - pre) * de_power2_unit(devid) / (duration << 20);
> > +}
> > +
> > +static void measure_de_power2_abox0_abox1(uint32_t devid, unsigned int sleep_duration)
> > +{
> > +	uint32_t pre_abox0, post_abox0;
> > +	uint32_t pre_abox1, post_abox1;
> > +
> > +	pre_abox0 = INREG(DE_POWER2_ABOX0);
> > +	pre_abox1 = INREG(DE_POWER2_ABOX1);
> > +
> > +	if (sleep_duration) {
> > +		sleep(sleep_duration);
> > +
> > +		post_abox0 = INREG(DE_POWER2_ABOX0);
> > +		post_abox1 = INREG(DE_POWER2_ABOX1);
> > +
> > +		printf("DE_POWER2_ABOX0: 0x%08x->0x%08x\n",
> > +		       pre_abox0, post_abox0);
> > +		printf("DE_POWER2_ABOX1: 0x%08x->0x%08x\n",
> > +		       pre_abox1, post_abox1);
> > +
> > +		printf("ABOX0 bandwidth: %.2f MiB/s\n",
> > +		       bandwidth(devid, sleep_duration,
> > +				 pre_abox0, post_abox0));
> > +		printf("ABOX1 bandwidth: %.2f MiB/s\n",
> > +		       bandwidth(devid, sleep_duration,
> > +				 pre_abox1, post_abox1));
> > +		printf("Total bandwidth: %.2f MiB/s\n",
> > +		       bandwidth(devid, sleep_duration,
> > +				 pre_abox0 + pre_abox1, post_abox0 + post_abox1));
> > +	} else {
> > +		printf("DE_POWER2_ABOX0: 0x%08x\n", pre_abox0);
> > +		printf("DE_POWER2_ABOX1: 0x%08x\n", pre_abox1);
> > +	}
> > +}
> > +
> > +static void measure_de_power2(uint32_t devid, unsigned int sleep_duration)
> > +{
> > +	uint32_t pre, post;
> > +
> > +	pre = INREG(DE_POWER2);
> > +
> > +	if (sleep_duration) {
> > +		sleep(sleep_duration);
> > +
> > +		post = INREG(DE_POWER2);
> > +
> > +		printf("DE_POWER2: 0x%08x->0x%08x\n", pre, post);
> > +
> > +		printf("Total bandwidth: %.2f MiB/s\n",
> > +		       bandwidth(devid, sleep_duration, pre, post));
> > +	} else {
> > +		printf("DE_POWER2: 0x%08x\n", pre);
> > +	}
> > +}
> > +
> > +static void __attribute__((noreturn)) usage(const char *name)
> > +{
> > +	fprintf(stderr, "Usage: %s [options]\n"
> > +		" -s,--sleep <seconds>\n",
> 
> Could you also add counter -c and repeat measurement N times
> between sleeps?

Seems a bit pointless when you can just run the tool
in a loop.

> 
> > +		name);
> > +	exit(1);
> > +}
> > +
> > +int main(int argc, char *argv[])
> > +{
> > +	struct intel_mmio_data mmio_data;
> > +	unsigned int sleep_duration = 0;
> > +	uint32_t devid;
> > +
> > +	for (;;) {
> > +		static const struct option long_options[] = {
> > +			{ .name = "sleep", .has_arg = required_argument, },
> > +			{}
> > +		};
> > +
> > +		int opt = getopt_long(argc, argv, "s:", long_options, NULL);
> > +		if (opt == -1)
> > +			break;
> > +
> > +		switch (opt) {
> > +		case 's':
> > +			sleep_duration = atoi(optarg);
> > +			break;
> > +		default:
> > +			usage(argv[0]);
> > +			break;
> > +		}
> > +	}
> > +
> > +	devid = intel_get_pci_device()->device_id;
> > +
> > +	if (!has_de_power2(devid)) {
> > +		fprintf(stderr, "Display bandwidth counter not available\n");
> > +		return 2;
> > +	}
> > +
> > +	intel_register_access_init(&mmio_data, intel_get_pci_device(), 0, -1);
> 
> This function changed recently and now this code do not compile.
> Please fix and resend.
> 
> Regards,
> Kamil
> 
> > +
> > +	if (has_de_power2_abox0_abox1(devid))
> > +		measure_de_power2_abox0_abox1(devid, sleep_duration);
> > +	else
> > +		measure_de_power2(devid, sleep_duration);
> > +
> > +	intel_register_access_fini(&mmio_data);
> > +
> > +	return 0;
> > +}
> > diff --git a/tools/meson.build b/tools/meson.build
> > index 48c9a4b5089e..4e9100ddb2b7 100644
> > --- a/tools/meson.build
> > +++ b/tools/meson.build
> > @@ -16,6 +16,7 @@ tools_progs = [
> >  	'intel_audio_dump',
> >  	'intel_backlight',
> >  	'intel_bios_dumper',
> > +	'intel_display_bandwidth',
> >  	'intel_display_crc',
> >  	'intel_display_poller',
> >  	'intel_dump_decode',
> > -- 
> > 2.44.2
> > 

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH i-g-t 1/5] lib/power: Allow use of rapl by specifying fd=-1
  2024-10-11 17:17   ` Kamil Konieczny
@ 2024-10-14 16:57     ` Ville Syrjälä
  0 siblings, 0 replies; 21+ messages in thread
From: Ville Syrjälä @ 2024-10-14 16:57 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev

On Fri, Oct 11, 2024 at 07:17:02PM +0200, Kamil Konieczny wrote:
> Hi Ville,
> On 2024-09-16 at 23:18:37 +0300, Ville Syrjala wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > igt_power_open() is currently defunct when you don't have
> > the GPU driver loaded, or when you explicitly want to measure
> > via rapl even when using a DGPU. Allow those use cases by
> > accepting fd<0 to indicate that we explicitly want to use rapl.
> 
> 
> This is ok but imho you should document it in function description.

The whole thing is a complete mess already. There should
probably be a completely separate igt_power_gpu_open()
or at the very least  the "gpu" domain special casing
should be handled first, and then fall back to rapl for
everything else.

But I can try to add a small note about the current
behaviour.

> 
> With that
> Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
> 
> > 
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  lib/igt_power.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/lib/igt_power.c b/lib/igt_power.c
> > index 810859b134dc..f4d3efcf0cec 100644
> > --- a/lib/igt_power.c
> > +++ b/lib/igt_power.c
> > @@ -106,7 +106,7 @@ int igt_power_open(int fd, struct igt_power *p, const char *domain)
> >  	p->hwmon_fd = -1;
> >  	p->rapl.fd = -1;
> >  
> > -	is_dgfx = is_xe_device(fd) ? xe_has_vram(fd) : gem_has_lmem(fd);
> > +	is_dgfx = fd >= 0 && (is_xe_device(fd) ? xe_has_vram(fd) : gem_has_lmem(fd));
> >  	if (is_dgfx) {
> >  		if (strncmp(domain, "gpu", strlen("gpu")) == 0) {
> >  			p->hwmon_fd = igt_hwmon_open(fd);
> > -- 
> > 2.44.2
> > 

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH i-g-t 3/5] lib/igt_power: Add power_supply/BAT based measurement
  2024-10-11 17:30   ` Kamil Konieczny
@ 2024-10-14 17:07     ` Ville Syrjälä
  0 siblings, 0 replies; 21+ messages in thread
From: Ville Syrjälä @ 2024-10-14 17:07 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev

On Fri, Oct 11, 2024 at 07:30:42PM +0200, Kamil Konieczny wrote:
> Hi Ville,
> On 2024-09-16 at 23:18:39 +0300, Ville Syrjala wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > Allow measuring total system power via the power_supply class
> > stuff in sysfs (typically the information there comes from ACPI).
> > 
> > There are two types of batteries:
> > - reports remaining capacity in uWh (energy_now)
> > - reports remaining capacity in uAh (charge_now)
> > 
> > The first type is easier since we just have to convert to
> > uJ. The second type is less convenient since we also need
> > the voltage to determine energy. For that we just multiply
> > with voltage_now (in uV) when sampling charge_now. Obviously
> > this isn't entirely correct (should integrate instead), but
> > I think it's close enough to be useful.
> > 
> > Also one should keep in mind that the battery reports remaining
> > energy, not consumed energy. So we have to flip stuff around when
> > calculating things. Another alternative would be flip already
> > when measuring (eg. {charge,energy}_full_design - {charge,energy}_now),
> > but that seems more of a hassle really.
> > 
> > TODO: maybe confirm that the AC adapter is unplugged and the
> > battery is actually reporting to discharge before we start?
> > 
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  lib/igt_power.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++
> >  lib/igt_power.h |  5 ++++-
> >  2 files changed, 64 insertions(+), 1 deletion(-)
> > 
> > diff --git a/lib/igt_power.c b/lib/igt_power.c
> > index e891da87acf3..a3e8ee588365 100644
> > --- a/lib/igt_power.c
> > +++ b/lib/igt_power.c
> > @@ -85,6 +85,21 @@ static inline void rapl_close(struct rapl *r)
> >  	r->fd = -1;
> >  }
> >  
> > +static uint64_t bat_get_energy(int fd)
> > +{
> > +	if (igt_sysfs_has_attr(fd, "energy_now")) {
> > +		/* uWh -> uJ */
> > +		return 3600 *
> > +			igt_sysfs_get_u64(fd, "energy_now");
> > +	} else {
> > +		/* uAh * uV -> uJ */
> > +		return 3600 *
> > +			igt_sysfs_get_u64(fd, "charge_now") *
> > +			igt_sysfs_get_u64(fd, "voltage_now") /
> > +			1000000;
> > +	}
> > +}
> > +
> >  /**
> >   * igt_power_open:
> >   * @fd : device fd
> > @@ -103,6 +118,7 @@ int igt_power_open(int fd, struct igt_power *p, const char *domain)
> >  	int i;
> >  
> >  	p->hwmon_fd = -1;
> > +	p->bat_fd = -1;
> >  	p->rapl.fd = -1;
> >  
> >  	if (fd >= 0 && is_intel_dgfx(fd)) {
> > @@ -140,6 +156,8 @@ void igt_power_get_energy(struct igt_power *power, struct power_sample *s)
> >  	if (power->hwmon_fd >= 0) {
> >  		if (igt_sysfs_has_attr(power->hwmon_fd, "energy1_input"))
> >  			s->energy = igt_sysfs_get_u64(power->hwmon_fd, "energy1_input");
> > +	} else if (power->bat_fd >= 0) {
> > +		s->energy = bat_get_energy(power->bat_fd);
> >  	} else if (power->rapl.fd >= 0) {
> >  		rapl_read(&power->rapl, s);
> >  	}
> > @@ -160,6 +178,8 @@ double igt_power_get_mJ(const struct igt_power *power,
> >  {
> >  	if (power->hwmon_fd >= 0)
> >  		return (p1->energy - p0->energy) * 1e-3;
> > +	else if (power->bat_fd >= 0)
> > +		return (p0->energy - p1->energy) * 1e-3; /* battery measures remaining energy */
> >  	else if (power->rapl.fd >= 0)
> >  		return ((p1->energy - p0->energy) *  power->rapl.scale) * 1e3;
> >  
> > @@ -207,7 +227,47 @@ void igt_power_close(struct igt_power *power)
> >  	if (power->hwmon_fd >= 0) {
> >  		close(power->hwmon_fd);
> >  		power->hwmon_fd = -1;
> > +	} else if (power->bat_fd >= 0) {
> > +		close(power->bat_fd);
> > +		power->bat_fd = -1;
> >  	} else if (power->rapl.fd >= 0) {
> >  		rapl_close(&power->rapl);
> >  	}
> >  }
> > +
> > +/**
> > + * igt_power_bat_open:
> > + * @igt_power : power struct
> > + * @index: battery index
> > + *
> > + * opens the power_supply fd based on battery index
> > + *
> > + * Returns
> > + * 0 on success, errno otherwise
> 
> imho -1 in case of error?

I should rather change it to actually return -errno
to match igt_power_open().

> 
> > + */
> > +int igt_power_bat_open(struct igt_power *p, int index)
> > +{
> > +	char path[64];
> > +	int fd;
> > +
> > +	p->hwmon_fd = -1;
> > +	p->bat_fd = -1;
> > +	p->rapl.fd = -1;
> > +
> > +	snprintf(path, sizeof(path), "/sys/class/power_supply/BAT%d", index);
> > +
> > +	fd = open(path, O_RDONLY | O_DIRECTORY);
> > +	if (fd < 0)
> > +		return fd;
> > +
> > +	if (!igt_sysfs_has_attr(fd, "energy_now") &&
> > +	    !(igt_sysfs_has_attr(fd, "charge_now") &&
> > +	      igt_sysfs_has_attr(fd, "voltage_now"))) {
> > +		close(fd);
> 
> Add newline before return.
> 
> With this fixed
> Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
> 
> > +		return -1;
> > +	}
> > +
> > +	p->bat_fd = fd;
> > +
> > +	return 0;
> > +}
> > diff --git a/lib/igt_power.h b/lib/igt_power.h
> > index 68a05300eec2..853b0fae815a 100644
> > --- a/lib/igt_power.h
> > +++ b/lib/igt_power.h
> > @@ -42,14 +42,17 @@ struct power_sample {
> >  struct igt_power {
> >  	struct rapl rapl;
> >  	int hwmon_fd;
> > +	int bat_fd;
> >  };
> >  
> >  int igt_power_open(int i915, struct igt_power *p, const char *domain);
> >  void igt_power_close(struct igt_power *p);
> >  
> > +int igt_power_bat_open(struct igt_power *p, int index);
> > +
> >  static inline bool igt_power_valid(struct igt_power *p)
> >  {
> > -	return (p->rapl.fd >= 0) || (p->hwmon_fd >= 0);
> > +	return p->rapl.fd >= 0 || p->hwmon_fd >= 0 || p->bat_fd >= 0;
> >  }
> >  
> >  void igt_power_get_energy(struct igt_power *p, struct power_sample *s);
> > -- 
> > 2.44.2
> > 

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH i-g-t 5/5] tools/intel_display_bandwidth: Tool for measuring display memory bandwidth utilization
  2024-10-14 16:34     ` Ville Syrjälä
@ 2025-02-26 15:39       ` Govindapillai, Vinod
  2025-02-26 15:51         ` Ville Syrjälä
  0 siblings, 1 reply; 21+ messages in thread
From: Govindapillai, Vinod @ 2025-02-26 15:39 UTC (permalink / raw)
  To: ville.syrjala@linux.intel.com, igt-dev@lists.freedesktop.org,
	kamil.konieczny@linux.intel.com

Hi Ville,

I think you missed one comment from Kamil...

"
+	intel_register_access_init(&mmio_data, intel_get_pci_device(), 0, -1);

This function changed recently and now this code do not compile.
Please fix and resend.
"

The function declaration is like this now..

int intel_register_access_init(struct intel_mmio_data *mmio_data,
			       struct pci_device *pci_dev, int safe);

BR
Vinod

On Mon, 2024-10-14 at 19:34 +0300, Ville Syrjälä wrote:
> On Fri, Oct 11, 2024 at 07:52:07PM +0200, Kamil Konieczny wrote:
> > Hi Ville,
> > On 2024-09-16 at 23:18:41 +0300, Ville Syrjala wrote:
> > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > 
> > > Introduce a small tool for measing the display enging
> > s/measing/measuring/
> > s/enging/engins/
> > 
> > > memory bandwidth utilization. Generally this is available
> > > on SNB+, except on TGL/derivatives where the relevant
> > > registers weren't updated to cope with the new ABOX layout
> > > in the hardware.
> > > 
> > > Quite handy for confirming that FBC/CCS/etc. are doing their
> > > job.
> > > 
> > > Not 100% sure about the required scaling factor because
> > > bspec claims it's only needed for MTL, but my ADL definitely
> > > needs it already.
> > > 
> > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > ---
> > >  lib/intel_reg.h                 |   5 +
> > >  tools/intel_display_bandwidth.c | 171 ++++++++++++++++++++++++++++++++
> > 
> > Is this tool display only?
> 
> Yes.
> 
> > What about bw for opencl computations?
> 
> IIRC there may be some kind of total memory bandwidth counter
> exposed via perf. I'm not aware of anything more specific than
> that.
> 
> No idea if there's anything for dGPUs, eg. local mem bw, PCIe
> link bw, etc. Would be nice to have I suppose.
> 
> It might be intereseting to expose the display bandwidth counter
> via perf as well, but I haven't looked at what that would take
> to implement.
> 
> > Could we have more general tool also for compute case? Then it could be
> > named intel_gpu_bandwidth or even shorter intel_gpu_bw?
> > 
> > >  tools/meson.build               |   1 +
> > >  3 files changed, 177 insertions(+)
> > >  create mode 100644 tools/intel_display_bandwidth.c
> > > 
> > > diff --git a/lib/intel_reg.h b/lib/intel_reg.h
> > > index 26833c66f8e7..5e049d8b14d6 100644
> > > --- a/lib/intel_reg.h
> > > +++ b/lib/intel_reg.h
> > > @@ -1413,6 +1413,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> > >  #define PCH_3DRAMCGDIS0		0x46028
> > >  #define SOUTH_DSPCLK_GATE_D	0xc2020
> > >  
> > > +#define DE_POWER1	0x42400
> > > +#define DE_POWER2	0x42404
> > > +#define DE_POWER2_ABOX0	0x42404
> > > +#define DE_POWER2_ABOX1	0x42408
> > > +
> > >  #define CPU_eDP_A		0x64000
> > >  #define PCH_DP_B		0xe4100
> > >  #define PCH_DP_C		0xe4200
> > > diff --git a/tools/intel_display_bandwidth.c b/tools/intel_display_bandwidth.c
> > > new file mode 100644
> > > index 000000000000..c7be3c390d08
> > > --- /dev/null
> > > +++ b/tools/intel_display_bandwidth.c
> > > @@ -0,0 +1,171 @@
> > > +// SPDX-License-Identifier: MIT
> > > +/*
> > > + * Copyright © 2024 Intel Corporation
> > > + */
> > > +
> > > +#include <getopt.h>
> > > +#include <inttypes.h>
> > > +#include <stdbool.h>
> > > +#include <stdio.h>
> > > +#include <stdlib.h>
> > > +#include <unistd.h>
> > > +
> > > +#include "intel_io.h"
> > > +#include "intel_chipset.h"
> > > +#include "intel_reg.h"
> > > +
> > > +static bool has_de_power2(uint32_t devid)
> > > +{
> > > +	/*
> > > +	 * TGL has DE_POWER2 but it measures the low priority traffic
> > > +	 * on ABOX, not not actual display traffic on ABOX0/ABOX1.
> > 
> > s/not not/not/
> > 
> > > +	 */
> > > +	if (intel_display_ver(devid) == 12)
> > > +		return false;
> > > +
> > > +	return intel_display_ver(devid) >= 6 &&
> > > +		!IS_VALLEYVIEW(devid) && !IS_CHERRYVIEW(devid);
> > > +}
> > > +
> > > +static bool has_de_power2_abox0_abox1(uint32_t devid)
> > > +{
> > > +	/*
> > > +	 * Despite having ABOX0/ABOX1 TGL lacks the
> > > +	 * accompanying DE_POWER2_ABOX* registers.
> > > +	 */
> > > +	return intel_display_ver(devid) >= 13;
> > > +}
> > > +
> > > +static int de_power2_scale(uint32_t devid)
> > > +{
> > > +	/*
> > > +	 * FIXME should perhaps use something like
> > > +	 * is_intel_dgfx() but that one wants to open the device :(
> > > +	 */
> > > +	switch (intel_display_ver(devid)) {
> > > +	case 13:
> > > +		return IS_DG2(devid) ? 1 : 2;
> > > +	case 14:
> > > +		return IS_BATTLEMAGE(devid) ? 1 : 2;
> > > +	default:
> > > +		return 1;
> > > +	}
> > > +}
> > > +
> > > +static int de_power2_unit(uint32_t devid)
> > > +{
> > > +	return 64 * de_power2_scale(devid);
> > > +}
> > > +
> > > +static float bandwidth(uint32_t devid, int duration,
> > > +		       uint32_t pre, uint32_t post)
> > > +{
> > > +	return (float)(post - pre) * de_power2_unit(devid) / (duration << 20);
> > > +}
> > > +
> > > +static void measure_de_power2_abox0_abox1(uint32_t devid, unsigned int sleep_duration)
> > > +{
> > > +	uint32_t pre_abox0, post_abox0;
> > > +	uint32_t pre_abox1, post_abox1;
> > > +
> > > +	pre_abox0 = INREG(DE_POWER2_ABOX0);
> > > +	pre_abox1 = INREG(DE_POWER2_ABOX1);
> > > +
> > > +	if (sleep_duration) {
> > > +		sleep(sleep_duration);
> > > +
> > > +		post_abox0 = INREG(DE_POWER2_ABOX0);
> > > +		post_abox1 = INREG(DE_POWER2_ABOX1);
> > > +
> > > +		printf("DE_POWER2_ABOX0: 0x%08x->0x%08x\n",
> > > +		       pre_abox0, post_abox0);
> > > +		printf("DE_POWER2_ABOX1: 0x%08x->0x%08x\n",
> > > +		       pre_abox1, post_abox1);
> > > +
> > > +		printf("ABOX0 bandwidth: %.2f MiB/s\n",
> > > +		       bandwidth(devid, sleep_duration,
> > > +				 pre_abox0, post_abox0));
> > > +		printf("ABOX1 bandwidth: %.2f MiB/s\n",
> > > +		       bandwidth(devid, sleep_duration,
> > > +				 pre_abox1, post_abox1));
> > > +		printf("Total bandwidth: %.2f MiB/s\n",
> > > +		       bandwidth(devid, sleep_duration,
> > > +				 pre_abox0 + pre_abox1, post_abox0 + post_abox1));
> > > +	} else {
> > > +		printf("DE_POWER2_ABOX0: 0x%08x\n", pre_abox0);
> > > +		printf("DE_POWER2_ABOX1: 0x%08x\n", pre_abox1);
> > > +	}
> > > +}
> > > +
> > > +static void measure_de_power2(uint32_t devid, unsigned int sleep_duration)
> > > +{
> > > +	uint32_t pre, post;
> > > +
> > > +	pre = INREG(DE_POWER2);
> > > +
> > > +	if (sleep_duration) {
> > > +		sleep(sleep_duration);
> > > +
> > > +		post = INREG(DE_POWER2);
> > > +
> > > +		printf("DE_POWER2: 0x%08x->0x%08x\n", pre, post);
> > > +
> > > +		printf("Total bandwidth: %.2f MiB/s\n",
> > > +		       bandwidth(devid, sleep_duration, pre, post));
> > > +	} else {
> > > +		printf("DE_POWER2: 0x%08x\n", pre);
> > > +	}
> > > +}
> > > +
> > > +static void __attribute__((noreturn)) usage(const char *name)
> > > +{
> > > +	fprintf(stderr, "Usage: %s [options]\n"
> > > +		" -s,--sleep <seconds>\n",
> > 
> > Could you also add counter -c and repeat measurement N times
> > between sleeps?
> 
> Seems a bit pointless when you can just run the tool
> in a loop.
> 
> > 
> > > +		name);
> > > +	exit(1);
> > > +}
> > > +
> > > +int main(int argc, char *argv[])
> > > +{
> > > +	struct intel_mmio_data mmio_data;
> > > +	unsigned int sleep_duration = 0;
> > > +	uint32_t devid;
> > > +
> > > +	for (;;) {
> > > +		static const struct option long_options[] = {
> > > +			{ .name = "sleep", .has_arg = required_argument, },
> > > +			{}
> > > +		};
> > > +
> > > +		int opt = getopt_long(argc, argv, "s:", long_options, NULL);
> > > +		if (opt == -1)
> > > +			break;
> > > +
> > > +		switch (opt) {
> > > +		case 's':
> > > +			sleep_duration = atoi(optarg);
> > > +			break;
> > > +		default:
> > > +			usage(argv[0]);
> > > +			break;
> > > +		}
> > > +	}
> > > +
> > > +	devid = intel_get_pci_device()->device_id;
> > > +
> > > +	if (!has_de_power2(devid)) {
> > > +		fprintf(stderr, "Display bandwidth counter not available\n");
> > > +		return 2;
> > > +	}
> > > +
> > > +	intel_register_access_init(&mmio_data, intel_get_pci_device(), 0, -1);
> > 
> > This function changed recently and now this code do not compile.
> > Please fix and resend.
> > 
> > Regards,
> > Kamil
> > 
> > > +
> > > +	if (has_de_power2_abox0_abox1(devid))
> > > +		measure_de_power2_abox0_abox1(devid, sleep_duration);
> > > +	else
> > > +		measure_de_power2(devid, sleep_duration);
> > > +
> > > +	intel_register_access_fini(&mmio_data);
> > > +
> > > +	return 0;
> > > +}
> > > diff --git a/tools/meson.build b/tools/meson.build
> > > index 48c9a4b5089e..4e9100ddb2b7 100644
> > > --- a/tools/meson.build
> > > +++ b/tools/meson.build
> > > @@ -16,6 +16,7 @@ tools_progs = [
> > >  	'intel_audio_dump',
> > >  	'intel_backlight',
> > >  	'intel_bios_dumper',
> > > +	'intel_display_bandwidth',
> > >  	'intel_display_crc',
> > >  	'intel_display_poller',
> > >  	'intel_dump_decode',
> > > -- 
> > > 2.44.2
> > > 
> 


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

* Re: [PATCH i-g-t 5/5] tools/intel_display_bandwidth: Tool for measuring display memory bandwidth utilization
  2025-02-26 15:39       ` Govindapillai, Vinod
@ 2025-02-26 15:51         ` Ville Syrjälä
  2025-02-26 16:23           ` Govindapillai, Vinod
  0 siblings, 1 reply; 21+ messages in thread
From: Ville Syrjälä @ 2025-02-26 15:51 UTC (permalink / raw)
  To: Govindapillai, Vinod
  Cc: igt-dev@lists.freedesktop.org, kamil.konieczny@linux.intel.com

On Wed, Feb 26, 2025 at 03:39:21PM +0000, Govindapillai, Vinod wrote:
> Hi Ville,
> 
> I think you missed one comment from Kamil...

I saw it. But no real point in reposting just for that.

> 
> "
> +	intel_register_access_init(&mmio_data, intel_get_pci_device(), 0, -1);
> 
> This function changed recently and now this code do not compile.
> Please fix and resend.
> "
> 
> The function declaration is like this now..
> 
> int intel_register_access_init(struct intel_mmio_data *mmio_data,
> 			       struct pci_device *pci_dev, int safe);
> 
> BR
> Vinod
> 
> On Mon, 2024-10-14 at 19:34 +0300, Ville Syrjälä wrote:
> > On Fri, Oct 11, 2024 at 07:52:07PM +0200, Kamil Konieczny wrote:
> > > Hi Ville,
> > > On 2024-09-16 at 23:18:41 +0300, Ville Syrjala wrote:
> > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > 
> > > > Introduce a small tool for measing the display enging
> > > s/measing/measuring/
> > > s/enging/engins/
> > > 
> > > > memory bandwidth utilization. Generally this is available
> > > > on SNB+, except on TGL/derivatives where the relevant
> > > > registers weren't updated to cope with the new ABOX layout
> > > > in the hardware.
> > > > 
> > > > Quite handy for confirming that FBC/CCS/etc. are doing their
> > > > job.
> > > > 
> > > > Not 100% sure about the required scaling factor because
> > > > bspec claims it's only needed for MTL, but my ADL definitely
> > > > needs it already.
> > > > 
> > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > ---
> > > >  lib/intel_reg.h                 |   5 +
> > > >  tools/intel_display_bandwidth.c | 171 ++++++++++++++++++++++++++++++++
> > > 
> > > Is this tool display only?
> > 
> > Yes.
> > 
> > > What about bw for opencl computations?
> > 
> > IIRC there may be some kind of total memory bandwidth counter
> > exposed via perf. I'm not aware of anything more specific than
> > that.
> > 
> > No idea if there's anything for dGPUs, eg. local mem bw, PCIe
> > link bw, etc. Would be nice to have I suppose.
> > 
> > It might be intereseting to expose the display bandwidth counter
> > via perf as well, but I haven't looked at what that would take
> > to implement.
> > 
> > > Could we have more general tool also for compute case? Then it could be
> > > named intel_gpu_bandwidth or even shorter intel_gpu_bw?
> > > 
> > > >  tools/meson.build               |   1 +
> > > >  3 files changed, 177 insertions(+)
> > > >  create mode 100644 tools/intel_display_bandwidth.c
> > > > 
> > > > diff --git a/lib/intel_reg.h b/lib/intel_reg.h
> > > > index 26833c66f8e7..5e049d8b14d6 100644
> > > > --- a/lib/intel_reg.h
> > > > +++ b/lib/intel_reg.h
> > > > @@ -1413,6 +1413,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> > > >  #define PCH_3DRAMCGDIS0		0x46028
> > > >  #define SOUTH_DSPCLK_GATE_D	0xc2020
> > > >  
> > > > +#define DE_POWER1	0x42400
> > > > +#define DE_POWER2	0x42404
> > > > +#define DE_POWER2_ABOX0	0x42404
> > > > +#define DE_POWER2_ABOX1	0x42408
> > > > +
> > > >  #define CPU_eDP_A		0x64000
> > > >  #define PCH_DP_B		0xe4100
> > > >  #define PCH_DP_C		0xe4200
> > > > diff --git a/tools/intel_display_bandwidth.c b/tools/intel_display_bandwidth.c
> > > > new file mode 100644
> > > > index 000000000000..c7be3c390d08
> > > > --- /dev/null
> > > > +++ b/tools/intel_display_bandwidth.c
> > > > @@ -0,0 +1,171 @@
> > > > +// SPDX-License-Identifier: MIT
> > > > +/*
> > > > + * Copyright © 2024 Intel Corporation
> > > > + */
> > > > +
> > > > +#include <getopt.h>
> > > > +#include <inttypes.h>
> > > > +#include <stdbool.h>
> > > > +#include <stdio.h>
> > > > +#include <stdlib.h>
> > > > +#include <unistd.h>
> > > > +
> > > > +#include "intel_io.h"
> > > > +#include "intel_chipset.h"
> > > > +#include "intel_reg.h"
> > > > +
> > > > +static bool has_de_power2(uint32_t devid)
> > > > +{
> > > > +	/*
> > > > +	 * TGL has DE_POWER2 but it measures the low priority traffic
> > > > +	 * on ABOX, not not actual display traffic on ABOX0/ABOX1.
> > > 
> > > s/not not/not/
> > > 
> > > > +	 */
> > > > +	if (intel_display_ver(devid) == 12)
> > > > +		return false;
> > > > +
> > > > +	return intel_display_ver(devid) >= 6 &&
> > > > +		!IS_VALLEYVIEW(devid) && !IS_CHERRYVIEW(devid);
> > > > +}
> > > > +
> > > > +static bool has_de_power2_abox0_abox1(uint32_t devid)
> > > > +{
> > > > +	/*
> > > > +	 * Despite having ABOX0/ABOX1 TGL lacks the
> > > > +	 * accompanying DE_POWER2_ABOX* registers.
> > > > +	 */
> > > > +	return intel_display_ver(devid) >= 13;
> > > > +}
> > > > +
> > > > +static int de_power2_scale(uint32_t devid)
> > > > +{
> > > > +	/*
> > > > +	 * FIXME should perhaps use something like
> > > > +	 * is_intel_dgfx() but that one wants to open the device :(
> > > > +	 */
> > > > +	switch (intel_display_ver(devid)) {
> > > > +	case 13:
> > > > +		return IS_DG2(devid) ? 1 : 2;
> > > > +	case 14:
> > > > +		return IS_BATTLEMAGE(devid) ? 1 : 2;
> > > > +	default:
> > > > +		return 1;
> > > > +	}
> > > > +}
> > > > +
> > > > +static int de_power2_unit(uint32_t devid)
> > > > +{
> > > > +	return 64 * de_power2_scale(devid);
> > > > +}
> > > > +
> > > > +static float bandwidth(uint32_t devid, int duration,
> > > > +		       uint32_t pre, uint32_t post)
> > > > +{
> > > > +	return (float)(post - pre) * de_power2_unit(devid) / (duration << 20);
> > > > +}
> > > > +
> > > > +static void measure_de_power2_abox0_abox1(uint32_t devid, unsigned int sleep_duration)
> > > > +{
> > > > +	uint32_t pre_abox0, post_abox0;
> > > > +	uint32_t pre_abox1, post_abox1;
> > > > +
> > > > +	pre_abox0 = INREG(DE_POWER2_ABOX0);
> > > > +	pre_abox1 = INREG(DE_POWER2_ABOX1);
> > > > +
> > > > +	if (sleep_duration) {
> > > > +		sleep(sleep_duration);
> > > > +
> > > > +		post_abox0 = INREG(DE_POWER2_ABOX0);
> > > > +		post_abox1 = INREG(DE_POWER2_ABOX1);
> > > > +
> > > > +		printf("DE_POWER2_ABOX0: 0x%08x->0x%08x\n",
> > > > +		       pre_abox0, post_abox0);
> > > > +		printf("DE_POWER2_ABOX1: 0x%08x->0x%08x\n",
> > > > +		       pre_abox1, post_abox1);
> > > > +
> > > > +		printf("ABOX0 bandwidth: %.2f MiB/s\n",
> > > > +		       bandwidth(devid, sleep_duration,
> > > > +				 pre_abox0, post_abox0));
> > > > +		printf("ABOX1 bandwidth: %.2f MiB/s\n",
> > > > +		       bandwidth(devid, sleep_duration,
> > > > +				 pre_abox1, post_abox1));
> > > > +		printf("Total bandwidth: %.2f MiB/s\n",
> > > > +		       bandwidth(devid, sleep_duration,
> > > > +				 pre_abox0 + pre_abox1, post_abox0 + post_abox1));
> > > > +	} else {
> > > > +		printf("DE_POWER2_ABOX0: 0x%08x\n", pre_abox0);
> > > > +		printf("DE_POWER2_ABOX1: 0x%08x\n", pre_abox1);
> > > > +	}
> > > > +}
> > > > +
> > > > +static void measure_de_power2(uint32_t devid, unsigned int sleep_duration)
> > > > +{
> > > > +	uint32_t pre, post;
> > > > +
> > > > +	pre = INREG(DE_POWER2);
> > > > +
> > > > +	if (sleep_duration) {
> > > > +		sleep(sleep_duration);
> > > > +
> > > > +		post = INREG(DE_POWER2);
> > > > +
> > > > +		printf("DE_POWER2: 0x%08x->0x%08x\n", pre, post);
> > > > +
> > > > +		printf("Total bandwidth: %.2f MiB/s\n",
> > > > +		       bandwidth(devid, sleep_duration, pre, post));
> > > > +	} else {
> > > > +		printf("DE_POWER2: 0x%08x\n", pre);
> > > > +	}
> > > > +}
> > > > +
> > > > +static void __attribute__((noreturn)) usage(const char *name)
> > > > +{
> > > > +	fprintf(stderr, "Usage: %s [options]\n"
> > > > +		" -s,--sleep <seconds>\n",
> > > 
> > > Could you also add counter -c and repeat measurement N times
> > > between sleeps?
> > 
> > Seems a bit pointless when you can just run the tool
> > in a loop.
> > 
> > > 
> > > > +		name);
> > > > +	exit(1);
> > > > +}
> > > > +
> > > > +int main(int argc, char *argv[])
> > > > +{
> > > > +	struct intel_mmio_data mmio_data;
> > > > +	unsigned int sleep_duration = 0;
> > > > +	uint32_t devid;
> > > > +
> > > > +	for (;;) {
> > > > +		static const struct option long_options[] = {
> > > > +			{ .name = "sleep", .has_arg = required_argument, },
> > > > +			{}
> > > > +		};
> > > > +
> > > > +		int opt = getopt_long(argc, argv, "s:", long_options, NULL);
> > > > +		if (opt == -1)
> > > > +			break;
> > > > +
> > > > +		switch (opt) {
> > > > +		case 's':
> > > > +			sleep_duration = atoi(optarg);
> > > > +			break;
> > > > +		default:
> > > > +			usage(argv[0]);
> > > > +			break;
> > > > +		}
> > > > +	}
> > > > +
> > > > +	devid = intel_get_pci_device()->device_id;
> > > > +
> > > > +	if (!has_de_power2(devid)) {
> > > > +		fprintf(stderr, "Display bandwidth counter not available\n");
> > > > +		return 2;
> > > > +	}
> > > > +
> > > > +	intel_register_access_init(&mmio_data, intel_get_pci_device(), 0, -1);
> > > 
> > > This function changed recently and now this code do not compile.
> > > Please fix and resend.
> > > 
> > > Regards,
> > > Kamil
> > > 
> > > > +
> > > > +	if (has_de_power2_abox0_abox1(devid))
> > > > +		measure_de_power2_abox0_abox1(devid, sleep_duration);
> > > > +	else
> > > > +		measure_de_power2(devid, sleep_duration);
> > > > +
> > > > +	intel_register_access_fini(&mmio_data);
> > > > +
> > > > +	return 0;
> > > > +}
> > > > diff --git a/tools/meson.build b/tools/meson.build
> > > > index 48c9a4b5089e..4e9100ddb2b7 100644
> > > > --- a/tools/meson.build
> > > > +++ b/tools/meson.build
> > > > @@ -16,6 +16,7 @@ tools_progs = [
> > > >  	'intel_audio_dump',
> > > >  	'intel_backlight',
> > > >  	'intel_bios_dumper',
> > > > +	'intel_display_bandwidth',
> > > >  	'intel_display_crc',
> > > >  	'intel_display_poller',
> > > >  	'intel_dump_decode',
> > > > -- 
> > > > 2.44.2
> > > > 
> > 
> 

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH i-g-t 5/5] tools/intel_display_bandwidth: Tool for measuring display memory bandwidth utilization
  2025-02-26 15:51         ` Ville Syrjälä
@ 2025-02-26 16:23           ` Govindapillai, Vinod
  0 siblings, 0 replies; 21+ messages in thread
From: Govindapillai, Vinod @ 2025-02-26 16:23 UTC (permalink / raw)
  To: ville.syrjala@linux.intel.com
  Cc: igt-dev@lists.freedesktop.org, kamil.konieczny@linux.intel.com

On Wed, 2025-02-26 at 17:51 +0200, Ville Syrjälä wrote:
> On Wed, Feb 26, 2025 at 03:39:21PM +0000, Govindapillai, Vinod wrote:
> > Hi Ville,
> > 
> > I think you missed one comment from Kamil...
> 
> I saw it. But no real point in reposting just for that.

Okay.. with that fixed,

Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

> 
> > 
> > "
> > +	intel_register_access_init(&mmio_data, intel_get_pci_device(), 0, -1);
> > 
> > This function changed recently and now this code do not compile.
> > Please fix and resend.
> > "
> > 
> > The function declaration is like this now..
> > 
> > int intel_register_access_init(struct intel_mmio_data *mmio_data,
> > 			       struct pci_device *pci_dev, int safe);
> > 
> > BR
> > Vinod
> > 
> > On Mon, 2024-10-14 at 19:34 +0300, Ville Syrjälä wrote:
> > > On Fri, Oct 11, 2024 at 07:52:07PM +0200, Kamil Konieczny wrote:
> > > > Hi Ville,
> > > > On 2024-09-16 at 23:18:41 +0300, Ville Syrjala wrote:
> > > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > 
> > > > > Introduce a small tool for measing the display enging
> > > > s/measing/measuring/
> > > > s/enging/engins/
> > > > 
> > > > > memory bandwidth utilization. Generally this is available
> > > > > on SNB+, except on TGL/derivatives where the relevant
> > > > > registers weren't updated to cope with the new ABOX layout
> > > > > in the hardware.
> > > > > 
> > > > > Quite handy for confirming that FBC/CCS/etc. are doing their
> > > > > job.
> > > > > 
> > > > > Not 100% sure about the required scaling factor because
> > > > > bspec claims it's only needed for MTL, but my ADL definitely
> > > > > needs it already.
> > > > > 
> > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > ---
> > > > >  lib/intel_reg.h                 |   5 +
> > > > >  tools/intel_display_bandwidth.c | 171 ++++++++++++++++++++++++++++++++
> > > > 
> > > > Is this tool display only?
> > > 
> > > Yes.
> > > 
> > > > What about bw for opencl computations?
> > > 
> > > IIRC there may be some kind of total memory bandwidth counter
> > > exposed via perf. I'm not aware of anything more specific than
> > > that.
> > > 
> > > No idea if there's anything for dGPUs, eg. local mem bw, PCIe
> > > link bw, etc. Would be nice to have I suppose.
> > > 
> > > It might be intereseting to expose the display bandwidth counter
> > > via perf as well, but I haven't looked at what that would take
> > > to implement.
> > > 
> > > > Could we have more general tool also for compute case? Then it could be
> > > > named intel_gpu_bandwidth or even shorter intel_gpu_bw?
> > > > 
> > > > >  tools/meson.build               |   1 +
> > > > >  3 files changed, 177 insertions(+)
> > > > >  create mode 100644 tools/intel_display_bandwidth.c
> > > > > 
> > > > > diff --git a/lib/intel_reg.h b/lib/intel_reg.h
> > > > > index 26833c66f8e7..5e049d8b14d6 100644
> > > > > --- a/lib/intel_reg.h
> > > > > +++ b/lib/intel_reg.h
> > > > > @@ -1413,6 +1413,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> > > > >  #define PCH_3DRAMCGDIS0		0x46028
> > > > >  #define SOUTH_DSPCLK_GATE_D	0xc2020
> > > > >  
> > > > > +#define DE_POWER1	0x42400
> > > > > +#define DE_POWER2	0x42404
> > > > > +#define DE_POWER2_ABOX0	0x42404
> > > > > +#define DE_POWER2_ABOX1	0x42408
> > > > > +
> > > > >  #define CPU_eDP_A		0x64000
> > > > >  #define PCH_DP_B		0xe4100
> > > > >  #define PCH_DP_C		0xe4200
> > > > > diff --git a/tools/intel_display_bandwidth.c b/tools/intel_display_bandwidth.c
> > > > > new file mode 100644
> > > > > index 000000000000..c7be3c390d08
> > > > > --- /dev/null
> > > > > +++ b/tools/intel_display_bandwidth.c
> > > > > @@ -0,0 +1,171 @@
> > > > > +// SPDX-License-Identifier: MIT
> > > > > +/*
> > > > > + * Copyright © 2024 Intel Corporation
> > > > > + */
> > > > > +
> > > > > +#include <getopt.h>
> > > > > +#include <inttypes.h>
> > > > > +#include <stdbool.h>
> > > > > +#include <stdio.h>
> > > > > +#include <stdlib.h>
> > > > > +#include <unistd.h>
> > > > > +
> > > > > +#include "intel_io.h"
> > > > > +#include "intel_chipset.h"
> > > > > +#include "intel_reg.h"
> > > > > +
> > > > > +static bool has_de_power2(uint32_t devid)
> > > > > +{
> > > > > +	/*
> > > > > +	 * TGL has DE_POWER2 but it measures the low priority traffic
> > > > > +	 * on ABOX, not not actual display traffic on ABOX0/ABOX1.
> > > > 
> > > > s/not not/not/
> > > > 
> > > > > +	 */
> > > > > +	if (intel_display_ver(devid) == 12)
> > > > > +		return false;
> > > > > +
> > > > > +	return intel_display_ver(devid) >= 6 &&
> > > > > +		!IS_VALLEYVIEW(devid) && !IS_CHERRYVIEW(devid);
> > > > > +}
> > > > > +
> > > > > +static bool has_de_power2_abox0_abox1(uint32_t devid)
> > > > > +{
> > > > > +	/*
> > > > > +	 * Despite having ABOX0/ABOX1 TGL lacks the
> > > > > +	 * accompanying DE_POWER2_ABOX* registers.
> > > > > +	 */
> > > > > +	return intel_display_ver(devid) >= 13;
> > > > > +}
> > > > > +
> > > > > +static int de_power2_scale(uint32_t devid)
> > > > > +{
> > > > > +	/*
> > > > > +	 * FIXME should perhaps use something like
> > > > > +	 * is_intel_dgfx() but that one wants to open the device :(
> > > > > +	 */
> > > > > +	switch (intel_display_ver(devid)) {
> > > > > +	case 13:
> > > > > +		return IS_DG2(devid) ? 1 : 2;
> > > > > +	case 14:
> > > > > +		return IS_BATTLEMAGE(devid) ? 1 : 2;
> > > > > +	default:
> > > > > +		return 1;
> > > > > +	}
> > > > > +}
> > > > > +
> > > > > +static int de_power2_unit(uint32_t devid)
> > > > > +{
> > > > > +	return 64 * de_power2_scale(devid);
> > > > > +}
> > > > > +
> > > > > +static float bandwidth(uint32_t devid, int duration,
> > > > > +		       uint32_t pre, uint32_t post)
> > > > > +{
> > > > > +	return (float)(post - pre) * de_power2_unit(devid) / (duration << 20);
> > > > > +}
> > > > > +
> > > > > +static void measure_de_power2_abox0_abox1(uint32_t devid, unsigned int sleep_duration)
> > > > > +{
> > > > > +	uint32_t pre_abox0, post_abox0;
> > > > > +	uint32_t pre_abox1, post_abox1;
> > > > > +
> > > > > +	pre_abox0 = INREG(DE_POWER2_ABOX0);
> > > > > +	pre_abox1 = INREG(DE_POWER2_ABOX1);
> > > > > +
> > > > > +	if (sleep_duration) {
> > > > > +		sleep(sleep_duration);
> > > > > +
> > > > > +		post_abox0 = INREG(DE_POWER2_ABOX0);
> > > > > +		post_abox1 = INREG(DE_POWER2_ABOX1);
> > > > > +
> > > > > +		printf("DE_POWER2_ABOX0: 0x%08x->0x%08x\n",
> > > > > +		       pre_abox0, post_abox0);
> > > > > +		printf("DE_POWER2_ABOX1: 0x%08x->0x%08x\n",
> > > > > +		       pre_abox1, post_abox1);
> > > > > +
> > > > > +		printf("ABOX0 bandwidth: %.2f MiB/s\n",
> > > > > +		       bandwidth(devid, sleep_duration,
> > > > > +				 pre_abox0, post_abox0));
> > > > > +		printf("ABOX1 bandwidth: %.2f MiB/s\n",
> > > > > +		       bandwidth(devid, sleep_duration,
> > > > > +				 pre_abox1, post_abox1));
> > > > > +		printf("Total bandwidth: %.2f MiB/s\n",
> > > > > +		       bandwidth(devid, sleep_duration,
> > > > > +				 pre_abox0 + pre_abox1, post_abox0 + post_abox1));
> > > > > +	} else {
> > > > > +		printf("DE_POWER2_ABOX0: 0x%08x\n", pre_abox0);
> > > > > +		printf("DE_POWER2_ABOX1: 0x%08x\n", pre_abox1);
> > > > > +	}
> > > > > +}
> > > > > +
> > > > > +static void measure_de_power2(uint32_t devid, unsigned int sleep_duration)
> > > > > +{
> > > > > +	uint32_t pre, post;
> > > > > +
> > > > > +	pre = INREG(DE_POWER2);
> > > > > +
> > > > > +	if (sleep_duration) {
> > > > > +		sleep(sleep_duration);
> > > > > +
> > > > > +		post = INREG(DE_POWER2);
> > > > > +
> > > > > +		printf("DE_POWER2: 0x%08x->0x%08x\n", pre, post);
> > > > > +
> > > > > +		printf("Total bandwidth: %.2f MiB/s\n",
> > > > > +		       bandwidth(devid, sleep_duration, pre, post));
> > > > > +	} else {
> > > > > +		printf("DE_POWER2: 0x%08x\n", pre);
> > > > > +	}
> > > > > +}
> > > > > +
> > > > > +static void __attribute__((noreturn)) usage(const char *name)
> > > > > +{
> > > > > +	fprintf(stderr, "Usage: %s [options]\n"
> > > > > +		" -s,--sleep <seconds>\n",
> > > > 
> > > > Could you also add counter -c and repeat measurement N times
> > > > between sleeps?
> > > 
> > > Seems a bit pointless when you can just run the tool
> > > in a loop.
> > > 
> > > > 
> > > > > +		name);
> > > > > +	exit(1);
> > > > > +}
> > > > > +
> > > > > +int main(int argc, char *argv[])
> > > > > +{
> > > > > +	struct intel_mmio_data mmio_data;
> > > > > +	unsigned int sleep_duration = 0;
> > > > > +	uint32_t devid;
> > > > > +
> > > > > +	for (;;) {
> > > > > +		static const struct option long_options[] = {
> > > > > +			{ .name = "sleep", .has_arg = required_argument, },
> > > > > +			{}
> > > > > +		};
> > > > > +
> > > > > +		int opt = getopt_long(argc, argv, "s:", long_options, NULL);
> > > > > +		if (opt == -1)
> > > > > +			break;
> > > > > +
> > > > > +		switch (opt) {
> > > > > +		case 's':
> > > > > +			sleep_duration = atoi(optarg);
> > > > > +			break;
> > > > > +		default:
> > > > > +			usage(argv[0]);
> > > > > +			break;
> > > > > +		}
> > > > > +	}
> > > > > +
> > > > > +	devid = intel_get_pci_device()->device_id;
> > > > > +
> > > > > +	if (!has_de_power2(devid)) {
> > > > > +		fprintf(stderr, "Display bandwidth counter not available\n");
> > > > > +		return 2;
> > > > > +	}
> > > > > +
> > > > > +	intel_register_access_init(&mmio_data, intel_get_pci_device(), 0, -1);
> > > > 
> > > > This function changed recently and now this code do not compile.
> > > > Please fix and resend.
> > > > 
> > > > Regards,
> > > > Kamil
> > > > 
> > > > > +
> > > > > +	if (has_de_power2_abox0_abox1(devid))
> > > > > +		measure_de_power2_abox0_abox1(devid, sleep_duration);
> > > > > +	else
> > > > > +		measure_de_power2(devid, sleep_duration);
> > > > > +
> > > > > +	intel_register_access_fini(&mmio_data);
> > > > > +
> > > > > +	return 0;
> > > > > +}
> > > > > diff --git a/tools/meson.build b/tools/meson.build
> > > > > index 48c9a4b5089e..4e9100ddb2b7 100644
> > > > > --- a/tools/meson.build
> > > > > +++ b/tools/meson.build
> > > > > @@ -16,6 +16,7 @@ tools_progs = [
> > > > >  	'intel_audio_dump',
> > > > >  	'intel_backlight',
> > > > >  	'intel_bios_dumper',
> > > > > +	'intel_display_bandwidth',
> > > > >  	'intel_display_crc',
> > > > >  	'intel_display_poller',
> > > > >  	'intel_dump_decode',
> > > > > -- 
> > > > > 2.44.2
> > > > > 
> > > 
> > 
> 


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

end of thread, other threads:[~2025-02-26 16:23 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-16 20:18 [PATCH i-g-t 0/5] Power/energy and display memory bandwidth measurement tools Ville Syrjala
2024-09-16 20:18 ` [PATCH i-g-t 1/5] lib/power: Allow use of rapl by specifying fd=-1 Ville Syrjala
2024-10-11 17:17   ` Kamil Konieczny
2024-10-14 16:57     ` Ville Syrjälä
2024-09-16 20:18 ` [PATCH i-g-t 2/5] igt: Use is_intel_dgfx() Ville Syrjala
2024-10-11 17:20   ` Kamil Konieczny
2024-09-16 20:18 ` [PATCH i-g-t 3/5] lib/igt_power: Add power_supply/BAT based measurement Ville Syrjala
2024-10-11 17:30   ` Kamil Konieczny
2024-10-14 17:07     ` Ville Syrjälä
2024-09-16 20:18 ` [PATCH i-g-t 4/5] tools/power: Introduce a small power/energy measurement tool Ville Syrjala
2024-10-11 17:39   ` Kamil Konieczny
2024-09-16 20:18 ` [PATCH i-g-t 5/5] tools/intel_display_bandwidth: Tool for measuring display memory bandwidth utilization Ville Syrjala
2024-10-11 17:52   ` Kamil Konieczny
2024-10-14 16:34     ` Ville Syrjälä
2025-02-26 15:39       ` Govindapillai, Vinod
2025-02-26 15:51         ` Ville Syrjälä
2025-02-26 16:23           ` Govindapillai, Vinod
2024-09-16 21:24 ` ✓ CI.xeBAT: success for Power/energy and display memory bandwidth measurement tools Patchwork
2024-09-16 21:40 ` ✓ Fi.CI.BAT: " Patchwork
2024-09-17  0:20 ` ✗ CI.xeFULL: failure " Patchwork
2024-09-17 11:05 ` ✗ Fi.CI.IGT: " Patchwork

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