Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units
@ 2025-10-08 21:17 Ashutosh Dixit
  2025-10-08 21:17 ` [PATCH i-g-t 01/18] tests/intel/xe_oa: Add OAM formats to lnl_oa_formats Ashutosh Dixit
                   ` (21 more replies)
  0 siblings, 22 replies; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Previously OA IGT's were running only on the OAG OA unit. This patchset
changes the tests so they can be run on any/all OA units. For example, on
BMG, the non-zero-reason-all test will now result in the following output:

	$ sudo ./build/tests/xe_oa --r non-zero-reason-all
	IGT-Version: 2.2-g30a56696e (x86_64) (Linux: 6.15.0+ x86_64)
	Using IGT_SRANDOM=1759524233 for randomisation
	Opened device: /dev/dri/card0
	Starting subtest: non-zero-reason-all
	Starting dynamic subtest: oag-0
	Dynamic subtest oag-0: SUCCESS (0.055s)
	Starting dynamic subtest: sag-1
	Dynamic subtest sag-1: SUCCESS (0.071s)
	Starting dynamic subtest: oam-2
	Dynamic subtest oam-2: SUCCESS (0.069s)
	Starting dynamic subtest: oam-3
	Dynamic subtest oam-3: SUCCESS (0.068s)
	Subtest non-zero-reason-all: SUCCESS (0.263s)

Ashutosh Dixit (18):
  tests/intel/xe_oa: Add OAM formats to lnl_oa_formats
  tests/intel/xe_oa: Get rid of unnecessary
    DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE
  tests/intel/xe_oa: Rename nth_oa_unit to oa_unit_by_id
  tests/intel/xe_oa: Change oa_unit_engine to take an oa_unit argument
  tests/intel/xe_oa: Add oa_unit_by_type
  tests/intel/xe_oa: Add for_each_oa_unit
  tests/intel/xe_oa: Convert test_oa_formats to take an OA unit argument
  tests/intel/xe_oa: Convert several more tests to take OA unit
    arguments
  tests/intel/xe_oa: Convert test_non_zero_reason to take an OA unit
    argument
  tests/intel/xe_oa: Convert blocking/polling tests to take OA unit
    arguments
  tests/intel/xe_oa: Convert test_mi_rpc to take an OA unit argument
  tests/intel/xe_oa: Convert
    test_single_ctx_render_target_writes_a_counter
  tests/intel/xe_oa: Convert OA buffer mmap tests to take OA unit
    arguments
  tests/intel/xe_oa: Convert MMIO trigger tests to take OA unit
    arguments
  tests/intel/xe_oa: Convert sync tests to take OA unit arguments
  tests/intel/xe_oa: Run test_oa_unit_exclusive_stream on multiple OA
    units
  tests/intel/xe_oa: Add new non-zero-reason-all test
  tests/intel/xe_oa: Constify arguments to various functions

 tests/intel/xe_oa.c | 493 ++++++++++++++++++++++----------------------
 1 file changed, 246 insertions(+), 247 deletions(-)

-- 
2.48.1


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

* [PATCH i-g-t 01/18] tests/intel/xe_oa: Add OAM formats to lnl_oa_formats
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-08 21:55   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 02/18] tests/intel/xe_oa: Get rid of unnecessary DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE Ashutosh Dixit
                   ` (20 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Add previously missing OAM formats to list of Xe2+ OA formats.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 4f2aff59ac..0a00105bd4 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -242,6 +242,18 @@ static struct oa_format mtl_oa_formats[XE_OA_FORMAT_MAX] = {
 };
 
 static struct oa_format lnl_oa_formats[XE_OA_FORMAT_MAX] = {
+	[XE_OAM_FORMAT_MPEC8u64_B8_C8] = {
+		"MPEC8u64_B8_C8", .size = 192,
+		.oa_type = DRM_XE_OA_FMT_TYPE_OAM_MPEC,
+		.report_hdr_64bit = true,
+		.counter_select = 1,
+	},
+	[XE_OAM_FORMAT_MPEC8u32_B8_C8] = {
+		"MPEC8u32_B8_C8", .size = 128,
+		.oa_type = DRM_XE_OA_FMT_TYPE_OAM_MPEC,
+		.report_hdr_64bit = true,
+		.counter_select = 2,
+	},
 	[XE_OA_FORMAT_PEC64u64] = {
 		"PEC64u64", .size = 576,
 		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
-- 
2.48.1


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

* [PATCH i-g-t 02/18] tests/intel/xe_oa: Get rid of unnecessary DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
  2025-10-08 21:17 ` [PATCH i-g-t 01/18] tests/intel/xe_oa: Add OAM formats to lnl_oa_formats Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-08 21:55   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 03/18] tests/intel/xe_oa: Rename nth_oa_unit to oa_unit_by_id Ashutosh Dixit
                   ` (19 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE is needed only when input OA
properties include an exec queue. In other cases the kernel does not use
DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE. Stop providing the unnecessary
DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE property for these cases. This is
needed to use OA units which don't have an associated hwe.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 0a00105bd4..a028823e51 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -1559,8 +1559,6 @@ open_and_read_2_oa_reports(int format_id,
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(format_id),
 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, exponent,
-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
-
 	};
 	struct intel_xe_oa_open_prop param = {
 		.num_properties = ARRAY_SIZE(properties) / 2,
@@ -1877,7 +1875,6 @@ static void test_oa_exponents(const struct drm_xe_engine_class_instance *hwe)
 			DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
 			DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, exponent,
-			DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
 		};
 		struct intel_xe_oa_open_prop param = {
 			.num_properties = ARRAY_SIZE(properties) / 2,
@@ -2096,7 +2093,6 @@ static void test_blocking(uint64_t requested_oa_period,
 	ADD_PROPS(props, idx, OA_PERIOD_EXPONENT, oa_exponent);
 	ADD_PROPS(props, idx, OA_DISABLED, true);
 	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
-	ADD_PROPS(props, idx, OA_ENGINE_INSTANCE, hwe->engine_instance);
 
 	param.num_properties = (idx - props) / 2;
 	param.properties_ptr = to_user_pointer(props);
@@ -2241,7 +2237,6 @@ static void test_polling(uint64_t requested_oa_period,
 	ADD_PROPS(props, idx, OA_PERIOD_EXPONENT, oa_exponent);
 	ADD_PROPS(props, idx, OA_DISABLED, true);
 	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
-	ADD_PROPS(props, idx, OA_ENGINE_INSTANCE, hwe->engine_instance);
 
 	param.num_properties = (idx - props) / 2;
 	param.properties_ptr = to_user_pointer(props);
@@ -2498,7 +2493,6 @@ test_oa_tlb_invalidate(const struct drm_xe_engine_class_instance *hwe)
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
 		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
 	};
 	struct intel_xe_oa_open_prop param = {
 		.num_properties = ARRAY_SIZE(properties) / 2,
@@ -2563,7 +2557,6 @@ test_buffer_fill(const struct drm_xe_engine_class_instance *hwe)
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
 		DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE, buffer_fill_size,
 	};
 	struct intel_xe_oa_open_prop param = {
@@ -2611,7 +2604,6 @@ test_non_zero_reason(const struct drm_xe_engine_class_instance *hwe, size_t oa_b
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
 		DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE, oa_buffer_size ?: buffer_fill_size
 	};
 	struct intel_xe_oa_open_prop param = {
@@ -2700,7 +2692,6 @@ test_enable_disable(const struct drm_xe_engine_class_instance *hwe)
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
 		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
 		DRM_XE_OA_PROPERTY_WAIT_NUM_REPORTS, num_reports,
 	};
 	struct intel_xe_oa_open_prop param = {
@@ -3491,7 +3482,6 @@ test_stress_open_close(const struct drm_xe_engine_class_instance *hwe)
 			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
 			DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
 			DRM_XE_OA_PROPERTY_OA_DISABLED, true,
-			DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
 		};
 		struct intel_xe_oa_open_prop param = {
 			.num_properties = ARRAY_SIZE(properties) / 2,
@@ -4008,7 +3998,6 @@ __test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
 	};
 	struct intel_xe_oa_open_prop param = {
 		.num_properties = sizeof(properties) / 16,
@@ -4114,7 +4103,6 @@ __test_mmio_triggered_reports_read(struct drm_xe_engine_class_instance *hwe)
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
 	};
 	struct intel_xe_oa_open_prop param = {
 		.num_properties = sizeof(properties) / 16,
@@ -4593,7 +4581,6 @@ test_tail_address_wrap(const struct drm_xe_engine_class_instance *hwe, size_t oa
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, exponent,
-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
 		DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE, buffer_size,
 	};
 	struct intel_xe_oa_open_prop param = {
@@ -4653,7 +4640,6 @@ static void test_mapped_oa_buffer(map_oa_buffer_test_t test_with_fd_open,
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
 	};
 	struct intel_xe_oa_open_prop param = {
 		.num_properties = ARRAY_SIZE(properties) / 2,
-- 
2.48.1


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

* [PATCH i-g-t 03/18] tests/intel/xe_oa: Rename nth_oa_unit to oa_unit_by_id
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
  2025-10-08 21:17 ` [PATCH i-g-t 01/18] tests/intel/xe_oa: Add OAM formats to lnl_oa_formats Ashutosh Dixit
  2025-10-08 21:17 ` [PATCH i-g-t 02/18] tests/intel/xe_oa: Get rid of unnecessary DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-08 21:56   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 04/18] tests/intel/xe_oa: Change oa_unit_engine to take an oa_unit argument Ashutosh Dixit
                   ` (18 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Rename nth_oa_unit to oa_unit_by_id. We will introduce oa_unit_by_type soon
and oa_unit_by_id fits that naming scheme.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index a028823e51..65e03b1010 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -493,7 +493,7 @@ static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
 	return hwe;
 }
 
-static struct drm_xe_oa_unit *nth_oa_unit(int fd, int n)
+static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
 {
 	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
 	struct drm_xe_oa_unit *oau;
@@ -502,7 +502,7 @@ static struct drm_xe_oa_unit *nth_oa_unit(int fd, int n)
 	poau = (u8 *)&qoa->oa_units[0];
 	for (int i = 0; i < qoa->num_oa_units; i++) {
 		oau = (struct drm_xe_oa_unit *)poau;
-		if (i == n)
+		if (oau->oa_unit_id == n)
 			return oau;
 		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
 	}
@@ -4348,7 +4348,7 @@ test_oa_unit_concurrent_oa_buffer_read(void)
 		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, child);
 
 		/* No OAM support yet */
-		if (nth_oa_unit(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
+		if (oa_unit_by_id(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
 			exit(0);
 
 		test_blocking(40 * 1000 * 1000, false, 5 * 1000 * 1000, hwe);
@@ -5027,7 +5027,7 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		/* See xe_query_oa_units_new() */
 		igt_require(xe_dev->oa_units);
 		igt_require(xe_dev->oa_units->num_oa_units);
-		oau = nth_oa_unit(drm_fd, 0);
+		oau = oa_unit_by_id(drm_fd, 0);
 
 		devid = intel_get_drm_devid(drm_fd);
 		sysfs = igt_sysfs_open(drm_fd);
-- 
2.48.1


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

* [PATCH i-g-t 04/18] tests/intel/xe_oa: Change oa_unit_engine to take an oa_unit argument
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (2 preceding siblings ...)
  2025-10-08 21:17 ` [PATCH i-g-t 03/18] tests/intel/xe_oa: Rename nth_oa_unit to oa_unit_by_id Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-08 22:40   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 05/18] tests/intel/xe_oa: Add oa_unit_by_type Ashutosh Dixit
                   ` (17 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

To prevent code duplication with oa_unit_by_id(), pass 'struct
drm_xe_oa_unit *' as argument to oa_unit_engine().

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 32 ++++++++------------------------
 1 file changed, 8 insertions(+), 24 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 65e03b1010..c7de1d081d 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -472,25 +472,9 @@ static u64 oa_format_fields(u64 name)
 }
 #define __ff oa_format_fields
 
-static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
+static struct drm_xe_engine_class_instance *oa_unit_engine(struct drm_xe_oa_unit *oau)
 {
-	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
-	struct drm_xe_engine_class_instance *hwe = NULL;
-	struct drm_xe_oa_unit *oau;
-	u8 *poau;
-
-	poau = (u8 *)&qoa->oa_units[0];
-	for (int i = 0; i < qoa->num_oa_units; i++) {
-		oau = (struct drm_xe_oa_unit *)poau;
-
-		if (i == n) {
-			hwe = oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
-			break;
-		}
-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
-	}
-
-	return hwe;
+	return !oau ? NULL : oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
 }
 
 static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
@@ -4263,7 +4247,7 @@ test_oa_unit_exclusive_stream(bool exponent)
 
 	/* for each oa unit, open one random perf stream with sample OA */
 	for (i = 0; i < qoa->num_oa_units; i++) {
-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
 
 		oau = (struct drm_xe_oa_unit *)poau;
 		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
@@ -4295,7 +4279,7 @@ test_oa_unit_exclusive_stream(bool exponent)
 	/* for each oa unit make sure no other streams can be opened */
 	poau = (u8 *)&qoa->oa_units[0];
 	for (i = 0; i < qoa->num_oa_units; i++) {
-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
 		int err;
 
 		oau = (struct drm_xe_oa_unit *)poau;
@@ -4345,7 +4329,7 @@ test_oa_unit_concurrent_oa_buffer_read(void)
 	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
 
 	igt_fork(child, qoa->num_oa_units) {
-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, child);
+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, child));
 
 		/* No OAM support yet */
 		if (oa_unit_by_id(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
@@ -4924,18 +4908,18 @@ static const char *xe_engine_class_name(uint32_t engine_class)
 
 #define __for_one_hwe_in_each_oa_unit(hwe) \
 	for (int m = 0; !m || hwe; m++) \
-		for_each_if(hwe = oa_unit_engine(drm_fd, m)) \
+		for_each_if(hwe = oa_unit_engine(oa_unit_by_id(drm_fd, m))) \
 			igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
 				      hwe->engine_instance)
 
 /* Only OAG (not OAM) is currently supported */
 #define __for_one_hwe_in_oag(hwe) \
-	if ((hwe = oa_unit_engine(drm_fd, 0))) \
+	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
 		igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
 			      hwe->engine_instance)
 
 #define __for_one_hwe_in_oag_w_arg(hwe, str) \
-	if ((hwe = oa_unit_engine(drm_fd, 0))) \
+	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
 		igt_dynamic_f("%s-%d-%s", xe_engine_class_name(hwe->engine_class), \
 			      hwe->engine_instance, str)
 
-- 
2.48.1


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

* [PATCH i-g-t 05/18] tests/intel/xe_oa: Add oa_unit_by_type
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (3 preceding siblings ...)
  2025-10-08 21:17 ` [PATCH i-g-t 04/18] tests/intel/xe_oa: Change oa_unit_engine to take an oa_unit argument Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-08 22:42   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 06/18] tests/intel/xe_oa: Add for_each_oa_unit Ashutosh Dixit
                   ` (16 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Add a function which returns an OA unit identified by its type (similar to
oa_unit_by_id()).

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index c7de1d081d..012f5929ce 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -494,6 +494,23 @@ static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
 	return NULL;
 }
 
+static struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
+	struct drm_xe_oa_unit *oau;
+	u8 *poau;
+
+	poau = (u8 *)&qoa->oa_units[0];
+	for (int i = 0; i < qoa->num_oa_units; i++) {
+		oau = (struct drm_xe_oa_unit *)poau;
+		if (oau->oa_unit_type == t)
+			return oau;
+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+	}
+
+	return NULL;
+}
+
 static char *
 pretty_print_oa_period(uint64_t oa_period_ns)
 {
@@ -4914,12 +4931,12 @@ static const char *xe_engine_class_name(uint32_t engine_class)
 
 /* Only OAG (not OAM) is currently supported */
 #define __for_one_hwe_in_oag(hwe) \
-	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
+	if ((hwe = oa_unit_engine(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG)))) \
 		igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
 			      hwe->engine_instance)
 
 #define __for_one_hwe_in_oag_w_arg(hwe, str) \
-	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
+	if ((hwe = oa_unit_engine(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG)))) \
 		igt_dynamic_f("%s-%d-%s", xe_engine_class_name(hwe->engine_class), \
 			      hwe->engine_instance, str)
 
-- 
2.48.1


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

* [PATCH i-g-t 06/18] tests/intel/xe_oa: Add for_each_oa_unit
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (4 preceding siblings ...)
  2025-10-08 21:17 ` [PATCH i-g-t 05/18] tests/intel/xe_oa: Add oa_unit_by_type Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-08 23:31   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 07/18] tests/intel/xe_oa: Convert test_oa_formats to take an OA unit argument Ashutosh Dixit
                   ` (15 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Add a for_each_oa_unit iterator, which eliminates code duplication when
iterating over OA units obtained from OA unit query.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 012f5929ce..bc71bfcd30 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -477,18 +477,21 @@ static struct drm_xe_engine_class_instance *oa_unit_engine(struct drm_xe_oa_unit
 	return !oau ? NULL : oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
 }
 
+#define for_each_oa_unit(qoa, oau, poau, i) \
+	for (i = 0, qoa = xe_oa_units(drm_fd), poau = (u8 *)&qoa->oa_units[0]; \
+	     oau = (struct drm_xe_oa_unit *)poau, i < qoa->num_oa_units; \
+	     poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]), i++)
+
 static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
 {
-	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
+	struct drm_xe_query_oa_units *qoa;
 	struct drm_xe_oa_unit *oau;
 	u8 *poau;
+	int i;
 
-	poau = (u8 *)&qoa->oa_units[0];
-	for (int i = 0; i < qoa->num_oa_units; i++) {
-		oau = (struct drm_xe_oa_unit *)poau;
+	for_each_oa_unit(qoa, oau, poau, i) {
 		if (oau->oa_unit_id == n)
 			return oau;
-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
 	}
 
 	return NULL;
@@ -496,16 +499,14 @@ static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
 
 static struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
 {
-	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
+	struct drm_xe_query_oa_units *qoa;
 	struct drm_xe_oa_unit *oau;
 	u8 *poau;
+	int i;
 
-	poau = (u8 *)&qoa->oa_units[0];
-	for (int i = 0; i < qoa->num_oa_units; i++) {
-		oau = (struct drm_xe_oa_unit *)poau;
+	for_each_oa_unit(qoa, oau, poau, i) {
 		if (oau->oa_unit_type == t)
 			return oau;
-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
 	}
 
 	return NULL;
-- 
2.48.1


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

* [PATCH i-g-t 07/18] tests/intel/xe_oa: Convert test_oa_formats to take an OA unit argument
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (5 preceding siblings ...)
  2025-10-08 21:17 ` [PATCH i-g-t 06/18] tests/intel/xe_oa: Add for_each_oa_unit Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-10 22:22   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 08/18] tests/intel/xe_oa: Convert several more tests to take OA unit arguments Ashutosh Dixit
                   ` (14 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

To enable OA IGT's to run on all OA units, OA unit tests are converted to
take a 'struct drm_xe_oa_unit *' argument (instead of hwe). This patch
converts the first unit test (test_oa_formats), so it introduces this new
infrastructure.

OA units are now identified via a name (corresponding to OA unit type) and
id. OA units are longer identified by hwe, because some OA units have no
associated hwe's.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 92 ++++++++++++++++++++++++++++++++++-----------
 1 file changed, 71 insertions(+), 21 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index bc71bfcd30..af01a79d38 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -327,8 +327,6 @@ static int pm_fd = -1;
 static int stream_fd = -1;
 static uint32_t devid;
 
-static struct drm_xe_engine_class_instance default_hwe;
-
 static struct intel_xe_perf *intel_xe_perf;
 static uint64_t oa_exponent_default;
 static size_t default_oa_buffer_size;
@@ -340,6 +338,54 @@ static uint32_t min_oa_exponent;
 static uint32_t buffer_fill_size;
 static uint32_t num_buf_sizes;
 
+/* OA unit names */
+static const char *oa_unit_name[] = {
+	[DRM_XE_OA_UNIT_TYPE_OAG] = "oag",
+	[DRM_XE_OA_UNIT_TYPE_OAM] = "oam",
+	[DRM_XE_OA_UNIT_TYPE_OAM_SAG] = "sag",
+};
+
+static struct intel_xe_perf_metric_set *oa_unit_metric_set(struct drm_xe_oa_unit *oau)
+{
+	const char *test_set_name = NULL;
+	struct intel_xe_perf_metric_set *metric_set_iter;
+	struct intel_xe_perf_metric_set *test_set = NULL;
+
+	if (oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAG)
+		test_set_name = "TestOa";
+	else if (HAS_OAM(devid) &&
+		 (oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAM ||
+		  oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAM_SAG))
+		test_set_name = "MediaSet1";
+	else
+		igt_assert(!"reached");
+
+	igt_list_for_each_entry(metric_set_iter, &intel_xe_perf->metric_sets, link) {
+		if (strcmp(metric_set_iter->symbol_name, test_set_name) == 0) {
+			test_set = metric_set_iter;
+			break;
+		}
+	}
+
+	igt_assert(test_set);
+
+	/*
+	 * configuration was loaded in init_sys_info() ->
+	 * intel_xe_perf_load_perf_configs(), and test_set->perf_oa_metrics_set
+	 * should point to metric id returned by the config add ioctl. 0 is
+	 * invalid.
+	 */
+	igt_assert_neq_u64(test_set->perf_oa_metrics_set, 0);
+
+	igt_debug("oa_unit %d:%d - %s metric set UUID = %s\n",
+		  oau->oa_unit_id,
+		  oau->oa_unit_type,
+		  test_set->symbol_name,
+		  test_set->hw_config_guid);
+
+	return test_set;
+}
+
 static struct intel_xe_perf_metric_set *metric_set(const struct drm_xe_engine_class_instance *hwe)
 {
 	const char *test_set_name = NULL;
@@ -381,7 +427,7 @@ static struct intel_xe_perf_metric_set *metric_set(const struct drm_xe_engine_cl
 
 	return test_set;
 }
-#define default_test_set metric_set(&default_hwe)
+#define default_test_set oa_unit_metric_set(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG))
 
 static void set_fd_flags(int fd, int flags)
 {
@@ -1548,11 +1594,11 @@ open_and_read_2_oa_reports(int format_id,
 			   uint32_t *oa_report0,
 			   uint32_t *oa_report1,
 			   bool timer_only,
-			   const struct drm_xe_engine_class_instance *hwe)
+			   struct drm_xe_oa_unit *oau)
 {
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 
 		/* Include OA reports in samples */
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
@@ -1672,32 +1718,28 @@ print_reports(uint32_t *oa_report0, uint32_t *oa_report1, int fmt)
 }
 
 static bool
-hwe_supports_oa_type(int oa_type, const struct drm_xe_engine_class_instance *hwe)
+oau_supports_oa_type(int oa_type, struct drm_xe_oa_unit *oau)
 {
 	switch (oa_type) {
 	case DRM_XE_OA_FMT_TYPE_OAM:
 	case DRM_XE_OA_FMT_TYPE_OAM_MPEC:
-		return hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_DECODE ||
-		       hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE;
+		return oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAM ||
+		       oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAM_SAG;
 	case DRM_XE_OA_FMT_TYPE_OAG:
 	case DRM_XE_OA_FMT_TYPE_OAR:
-		return hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER;
 	case DRM_XE_OA_FMT_TYPE_OAC:
-		return hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE;
 	case DRM_XE_OA_FMT_TYPE_PEC:
-		return hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER ||
-		       hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE;
+		return oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAG;
 	default:
 		return false;
 	}
-
 }
 
 /**
  * SUBTEST: oa-formats
  * Description: Test that supported OA formats work as expected
  */
-static void test_oa_formats(const struct drm_xe_engine_class_instance *hwe)
+static void test_oa_formats(struct drm_xe_oa_unit *oau)
 {
 	for (int i = 0; i < XE_OA_FORMAT_MAX; i++) {
 		struct oa_format format = get_oa_format(i);
@@ -1707,7 +1749,7 @@ static void test_oa_formats(const struct drm_xe_engine_class_instance *hwe)
 		if (!format.name) /* sparse, indexed by ID */
 			continue;
 
-		if (!hwe_supports_oa_type(format.oa_type, hwe))
+		if (!oau_supports_oa_type(format.oa_type, oau))
 			continue;
 
 		igt_debug("Checking OA format %s\n", format.name);
@@ -1717,13 +1759,13 @@ static void test_oa_formats(const struct drm_xe_engine_class_instance *hwe)
 					   oa_report0,
 					   oa_report1,
 					   false, /* timer reports only */
-					   hwe);
+					   oau);
 
 		print_reports(oa_report0, oa_report1, i);
 		sanity_check_reports(oa_report0, oa_report1, i);
 
-		if (i == metric_set(hwe)->perf_oa_format)
-			pec_sanity_check_reports(oa_report0, oa_report1, metric_set(hwe));
+		if (i == oa_unit_metric_set(oau)->perf_oa_format)
+			pec_sanity_check_reports(oa_report0, oa_report1, oa_unit_metric_set(oau));
 	}
 }
 
@@ -4946,6 +4988,14 @@ static const char *xe_engine_class_name(uint32_t engine_class)
 	igt_require_f(hwe, "no render engine\n"); \
 	igt_dynamic_f("rcs-%d", hwe->engine_instance)
 
+#define __for_oa_unit_by_type(k) \
+	if ((oau = oa_unit_by_type(drm_fd, k))) \
+		igt_dynamic_f("%s-%d", oa_unit_name[oau->oa_unit_type], oau->oa_unit_id)
+
+#define __for_oa_unit_by_type_w_arg(k, str) \
+	if ((oau = oa_unit_by_type(drm_fd, k))) \
+		igt_dynamic_f("%s-%d-%s", oa_unit_name[oau->oa_unit_type], oau->oa_unit_id, str)
+
 static int opt_handler(int opt, int opt_index, void *data)
 {
 	uint32_t tmp;
@@ -5057,8 +5107,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		test_missing_sample_flags();
 
 	igt_subtest_with_dynamic("oa-formats")
-		__for_one_hwe_in_oag(hwe)
-			test_oa_formats(hwe);
+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+			test_oa_formats(oau);
 
 	igt_subtest("invalid-oa-exponent")
 		test_invalid_oa_exponent();
-- 
2.48.1


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

* [PATCH i-g-t 08/18] tests/intel/xe_oa: Convert several more tests to take OA unit arguments
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (6 preceding siblings ...)
  2025-10-08 21:17 ` [PATCH i-g-t 07/18] tests/intel/xe_oa: Convert test_oa_formats to take an OA unit argument Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-10 22:24   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 09/18] tests/intel/xe_oa: Convert test_non_zero_reason to take an OA unit argument Ashutosh Dixit
                   ` (13 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Convert the following tests to take 'struct drm_xe_oa_unit *'
arguments (instead of hwe), to enable these to be run on all OA units:

- test_oa_exponents
- test_buffer_fill
- test_enable_disable
- test_oa_tlb_invalidate
- test_stress_open_close
- test_tail_address_wrap

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 60 ++++++++++++++++++++++-----------------------
 1 file changed, 30 insertions(+), 30 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index af01a79d38..ac15da09a3 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -1896,9 +1896,9 @@ static bool expected_report_timing_delta(uint32_t delta, uint32_t expected_delta
  * SUBTEST: oa-exponents
  * Description: Test that oa exponent values behave as expected
  */
-static void test_oa_exponents(const struct drm_xe_engine_class_instance *hwe)
+static void test_oa_exponents(struct drm_xe_oa_unit *oau)
 {
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t fmt = test_set->perf_oa_format;
 
 	load_helper_init();
@@ -1910,7 +1910,7 @@ static void test_oa_exponents(const struct drm_xe_engine_class_instance *hwe)
 	 */
 	for (int exponent = min_oa_exponent; exponent < max_oa_exponent; exponent++) {
 		uint64_t properties[] = {
-			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 
 			/* Include OA reports in samples */
 			DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
@@ -2526,11 +2526,11 @@ num_valid_reports_captured(struct intel_xe_oa_open_prop *param,
  * Description: Open OA stream twice to verify OA TLB invalidation
  */
 static void
-test_oa_tlb_invalidate(const struct drm_xe_engine_class_instance *hwe)
+test_oa_tlb_invalidate(struct drm_xe_oa_unit *oau)
 {
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
 
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
@@ -2584,15 +2584,15 @@ wait_for_oa_buffer_overflow(int fd, int poll_period_us)
  * Description: Test filling and overflow of OA buffer
  */
 static void
-test_buffer_fill(const struct drm_xe_engine_class_instance *hwe)
+test_buffer_fill(struct drm_xe_oa_unit *oau)
 {
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t fmt = test_set->perf_oa_format;
 	uint64_t properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 
 		/* Include OA reports in samples */
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
@@ -2724,13 +2724,13 @@ test_non_zero_reason(const struct drm_xe_engine_class_instance *hwe, size_t oa_b
  * Description: Test that OA stream enable/disable works as expected
  */
 static void
-test_enable_disable(const struct drm_xe_engine_class_instance *hwe)
+test_enable_disable(struct drm_xe_oa_unit *oau)
 {
 	uint32_t num_reports = 5;
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t fmt = test_set->perf_oa_format;
 	uint64_t properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
@@ -3505,16 +3505,16 @@ test_rc6_disable(void)
  * Description: Open/close OA streams in a tight loop
  */
 static void
-test_stress_open_close(const struct drm_xe_engine_class_instance *hwe)
+test_stress_open_close(struct drm_xe_oa_unit *oau)
 {
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 
 	load_helper_init();
 	load_helper_run(HIGH);
 
 	igt_until_timeout(2) {
 		uint64_t properties[] = {
-			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 
 			/* XXX: even without periodic sampling we have to
 			 * specify at least one sample layout property...
@@ -4613,14 +4613,14 @@ static void closed_fd_and_unmapped_access(const struct drm_xe_engine_class_insta
  * has zeroes in it.
  */
 static void
-test_tail_address_wrap(const struct drm_xe_engine_class_instance *hwe, size_t oa_buffer_size)
+test_tail_address_wrap(struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
 {
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	u64 exponent = max_oa_exponent_for_period_lte(20000);
 	u64 buffer_size = oa_buffer_size ?: buffer_fill_size;
 	u64 fmt = test_set->perf_oa_format;
 	u64 properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
@@ -5114,13 +5114,13 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		test_invalid_oa_exponent();
 
 	igt_subtest_with_dynamic("oa-exponents")
-		__for_one_hwe_in_oag(hwe)
-			test_oa_exponents(hwe);
+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+			test_oa_exponents(oau);
 
 	igt_subtest_with_dynamic("buffer-fill") {
 		igt_require(oau->capabilities & DRM_XE_OA_CAPS_OA_BUFFER_SIZE);
-		__for_one_hwe_in_oag(hwe)
-			test_buffer_fill(hwe);
+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+			test_buffer_fill(oau);
 	}
 
 	/**
@@ -5148,8 +5148,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		test_non_sampling_read_error();
 
 	igt_subtest_with_dynamic("enable-disable")
-		__for_one_hwe_in_oag(hwe)
-			test_enable_disable(hwe);
+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+			test_enable_disable(oau);
 
 	igt_subtest_with_dynamic("blocking") {
 		igt_require(!igt_run_in_simulation());
@@ -5183,8 +5183,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		igt_subtest_with_dynamic("oa-tlb-invalidate") {
 			igt_require(intel_graphics_ver(devid) <= IP_VER(12, 70) &&
 				    intel_graphics_ver(devid) != IP_VER(12, 60));
-			__for_one_hwe_in_oag(hwe)
-				test_oa_tlb_invalidate(hwe);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_oa_tlb_invalidate(oau);
 		}
 
 		igt_subtest_with_dynamic("unprivileged-single-ctx-counters") {
@@ -5213,8 +5213,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 	}
 
 	igt_subtest_with_dynamic("stress-open-close") {
-		__for_one_hwe_in_oag(hwe)
-			test_stress_open_close(hwe);
+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+			test_stress_open_close(oau);
 	}
 
 	igt_subtest("invalid-create-userspace-config")
@@ -5259,8 +5259,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		long k = random() % num_buf_sizes;
 
 		igt_require(oau->capabilities & DRM_XE_OA_CAPS_OA_BUFFER_SIZE);
-		__for_one_hwe_in_oag_w_arg(hwe, buf_sizes[k].name)
-			test_tail_address_wrap(hwe, buf_sizes[k].size);
+		__for_oa_unit_by_type_w_arg(DRM_XE_OA_UNIT_TYPE_OAG, buf_sizes[k].name)
+			test_tail_address_wrap(oau, buf_sizes[k].size);
 	}
 
 	igt_subtest_group {
-- 
2.48.1


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

* [PATCH i-g-t 09/18] tests/intel/xe_oa: Convert test_non_zero_reason to take an OA unit argument
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (7 preceding siblings ...)
  2025-10-08 21:17 ` [PATCH i-g-t 08/18] tests/intel/xe_oa: Convert several more tests to take OA unit arguments Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-10 22:24   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 10/18] tests/intel/xe_oa: Convert blocking/polling tests to take OA unit arguments Ashutosh Dixit
                   ` (12 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Convert test_non_zero_reason to take 'struct drm_xe_oa_unit *' argument, to
enable it to be run on all OA units.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index ac15da09a3..8ee8a85ed7 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -2631,15 +2631,15 @@ test_buffer_fill(struct drm_xe_oa_unit *oau)
  * Description: Test reason field is non-zero. Can also check OA buffer wraparound issues
  */
 static void
-test_non_zero_reason(const struct drm_xe_engine_class_instance *hwe, size_t oa_buffer_size)
+test_non_zero_reason(struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
 {
 	/* ~20 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(20000);
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t fmt = test_set->perf_oa_format;
 	size_t report_size = get_oa_format(fmt).size;
 	uint64_t properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 
 		/* Include OA reports in samples */
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
@@ -2710,7 +2710,7 @@ test_non_zero_reason(const struct drm_xe_engine_class_instance *hwe, size_t oa_b
 		 */
 		if (!oa_buffer_size && last_report && (offset / report_size == check_idx)) {
 			sanity_check_reports(last_report, report, fmt);
-			pec_sanity_check_reports(last_report, report, metric_set(hwe));
+			pec_sanity_check_reports(last_report, report, oa_unit_metric_set(oau));
 		}
 
 		last_report = report;
@@ -5131,15 +5131,15 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		long k = random() % num_buf_sizes;
 
 		igt_require(oau->capabilities & DRM_XE_OA_CAPS_OA_BUFFER_SIZE);
-		__for_one_hwe_in_oag_w_arg(hwe, buf_sizes[k].name)
-			test_non_zero_reason(hwe, buf_sizes[k].size);
+		__for_oa_unit_by_type_w_arg(DRM_XE_OA_UNIT_TYPE_OAG, buf_sizes[k].name)
+			test_non_zero_reason(oau, buf_sizes[k].size);
 	}
 
 	igt_subtest_with_dynamic("non-zero-reason") {
 		igt_require(!igt_run_in_simulation());
 		igt_require(oau->capabilities & DRM_XE_OA_CAPS_OA_BUFFER_SIZE);
-		__for_one_hwe_in_oag(hwe)
-			test_non_zero_reason(hwe, 0);
+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+			test_non_zero_reason(oau, 0);
 	}
 
 	igt_subtest("disabled-read-error")
-- 
2.48.1


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

* [PATCH i-g-t 10/18] tests/intel/xe_oa: Convert blocking/polling tests to take OA unit arguments
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (8 preceding siblings ...)
  2025-10-08 21:17 ` [PATCH i-g-t 09/18] tests/intel/xe_oa: Convert test_non_zero_reason to take an OA unit argument Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-10 22:25   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 11/18] tests/intel/xe_oa: Convert test_mi_rpc to take an OA unit argument Ashutosh Dixit
                   ` (11 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Convert blocking/polling tests to take 'struct drm_xe_oa_unit *' arguments,
to enable these to be run on all OA units.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 8ee8a85ed7..739da370ef 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -2099,7 +2099,7 @@ get_time(void)
 static void test_blocking(uint64_t requested_oa_period,
 			  bool set_kernel_hrtimer,
 			  uint64_t kernel_hrtimer,
-			  const struct drm_xe_engine_class_instance *hwe)
+			  struct drm_xe_oa_unit *oau)
 {
 	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
@@ -2128,7 +2128,7 @@ static void test_blocking(uint64_t requested_oa_period,
 	int min_iterations = (test_duration_ns / (oa_period + kernel_hrtimer + kernel_hrtimer / 5));
 	int64_t start, end;
 	int n = 0;
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
 
 	ADD_PROPS(props, idx, SAMPLE_OA, true);
@@ -2136,7 +2136,7 @@ static void test_blocking(uint64_t requested_oa_period,
 	ADD_PROPS(props, idx, OA_FORMAT, __ff(test_set->perf_oa_format));
 	ADD_PROPS(props, idx, OA_PERIOD_EXPONENT, oa_exponent);
 	ADD_PROPS(props, idx, OA_DISABLED, true);
-	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
+	ADD_PROPS(props, idx, OA_UNIT_ID, oau->oa_unit_id);
 
 	param.num_properties = (idx - props) / 2;
 	param.properties_ptr = to_user_pointer(props);
@@ -2242,7 +2242,7 @@ static void test_blocking(uint64_t requested_oa_period,
 static void test_polling(uint64_t requested_oa_period,
 			 bool set_kernel_hrtimer,
 			 uint64_t kernel_hrtimer,
-			 const struct drm_xe_engine_class_instance *hwe)
+			 struct drm_xe_oa_unit *oau)
 {
 	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
@@ -2272,7 +2272,7 @@ static void test_polling(uint64_t requested_oa_period,
 	int min_iterations = (test_duration_ns / (oa_period + (kernel_hrtimer + kernel_hrtimer / 5)));
 	int64_t start, end;
 	int n = 0;
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
 
 	ADD_PROPS(props, idx, SAMPLE_OA, true);
@@ -2280,7 +2280,7 @@ static void test_polling(uint64_t requested_oa_period,
 	ADD_PROPS(props, idx, OA_FORMAT, __ff(test_set->perf_oa_format));
 	ADD_PROPS(props, idx, OA_PERIOD_EXPONENT, oa_exponent);
 	ADD_PROPS(props, idx, OA_DISABLED, true);
-	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
+	ADD_PROPS(props, idx, OA_UNIT_ID, oau->oa_unit_id);
 
 	param.num_properties = (idx - props) / 2;
 	param.properties_ptr = to_user_pointer(props);
@@ -4389,13 +4389,13 @@ test_oa_unit_concurrent_oa_buffer_read(void)
 	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
 
 	igt_fork(child, qoa->num_oa_units) {
-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, child));
+		struct drm_xe_oa_unit *oau = oa_unit_by_id(drm_fd, child);
 
 		/* No OAM support yet */
-		if (oa_unit_by_id(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
+		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
 			exit(0);
 
-		test_blocking(40 * 1000 * 1000, false, 5 * 1000 * 1000, hwe);
+		test_blocking(40 * 1000 * 1000, false, 5 * 1000 * 1000, oau);
 	}
 	igt_waitchildren();
 }
@@ -5153,20 +5153,20 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 
 	igt_subtest_with_dynamic("blocking") {
 		igt_require(!igt_run_in_simulation());
-		__for_one_hwe_in_oag(hwe)
+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
 			test_blocking(40 * 1000 * 1000 /* 40ms oa period */,
 				      false /* set_kernel_hrtimer */,
 				      5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
-				      hwe);
+				      oau);
 	}
 
 	igt_subtest_with_dynamic("polling") {
 		igt_require(!igt_run_in_simulation());
-		__for_one_hwe_in_oag(hwe)
+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
 			test_polling(40 * 1000 * 1000 /* 40ms oa period */,
 				     false /* set_kernel_hrtimer */,
 				     5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
-				     hwe);
+				     oau);
 	}
 
 	igt_subtest("polling-small-buf")
-- 
2.48.1


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

* [PATCH i-g-t 11/18] tests/intel/xe_oa: Convert test_mi_rpc to take an OA unit argument
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (9 preceding siblings ...)
  2025-10-08 21:17 ` [PATCH i-g-t 10/18] tests/intel/xe_oa: Convert blocking/polling tests to take OA unit arguments Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-10 22:26   ` Umesh Nerlige Ramappa
  2025-10-08 21:17 ` [PATCH i-g-t 12/18] tests/intel/xe_oa: Convert test_single_ctx_render_target_writes_a_counter Ashutosh Dixit
                   ` (10 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Convert test_mi_rpc to take 'struct drm_xe_oa_unit *' argument, to enable
it to be run on all OA units.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 739da370ef..efcac06e15 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -2994,15 +2994,16 @@ test_disabled_read_error(void)
  * Description: Test OAR/OAC using MI_REPORT_PERF_COUNT
  */
 static void
-test_mi_rpc(struct drm_xe_engine_class_instance *hwe)
+test_mi_rpc(struct drm_xe_oa_unit *oau)
 
 {
+	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
 	uint64_t fmt = ((IS_DG2(devid) || IS_METEORLAKE(devid)) &&
 			hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE) ?
 		XE_OAC_FORMAT_A24u64_B8_C8 : oar_unit_default_format();
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 
 		/* On Gen12, MI RPC uses OAR. OAR is configured only for the
 		 * render context that wants to measure the performance. Hence a
@@ -5177,8 +5178,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 
 	igt_subtest_group {
 		igt_subtest_with_dynamic("mi-rpc")
-			__for_one_hwe_in_oag(hwe)
-				test_mi_rpc(hwe);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_mi_rpc(oau);
 
 		igt_subtest_with_dynamic("oa-tlb-invalidate") {
 			igt_require(intel_graphics_ver(devid) <= IP_VER(12, 70) &&
-- 
2.48.1


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

* [PATCH i-g-t 12/18] tests/intel/xe_oa: Convert test_single_ctx_render_target_writes_a_counter
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (10 preceding siblings ...)
  2025-10-08 21:17 ` [PATCH i-g-t 11/18] tests/intel/xe_oa: Convert test_mi_rpc to take an OA unit argument Ashutosh Dixit
@ 2025-10-08 21:17 ` Ashutosh Dixit
  2025-10-10 22:27   ` Umesh Nerlige Ramappa
  2025-10-08 21:18 ` [PATCH i-g-t 13/18] tests/intel/xe_oa: Convert OA buffer mmap tests to take OA unit arguments Ashutosh Dixit
                   ` (9 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Convert test_single_ctx_render_target_writes_a_counter to take 'struct
drm_xe_oa_unit *' argument, to enable it to be run on all OA units.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index efcac06e15..01df791dc5 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -3125,12 +3125,14 @@ emit_stall_timestamp_and_rpc(struct intel_bb *ibb,
 	emit_report_perf_count(ibb, dst, report_dst_offset, report_id);
 }
 
-static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
+static void single_ctx_helper(struct drm_xe_oa_unit *oau)
 {
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
+	struct drm_xe_engine_class_instance *hwe =
+		&xe_find_engine_by_class(drm_fd, DRM_XE_ENGINE_CLASS_RENDER)->instance;
 	uint64_t fmt = oar_unit_default_format();
 	uint64_t properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 
 		/* Have a random value here for the context id, but initialize
 		 * it once you figure out the context ID for the work to be
@@ -3172,6 +3174,8 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
 	uint32_t ctx_id_offset, counter_offset, dst_buf_size;
 	struct oa_format format = get_oa_format(fmt);
 
+	igt_require_f(hwe, "no render engine\n");
+
 	if (format.report_hdr_64bit) {
 		ctx_id_offset = 4;
 		counter_offset = 8;
@@ -3429,7 +3433,7 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
  * Description: A harder test for OAR/OAC using MI_REPORT_PERF_COUNT
  */
 static void
-test_single_ctx_render_target_writes_a_counter(struct drm_xe_engine_class_instance *hwe)
+test_single_ctx_render_target_writes_a_counter(struct drm_xe_oa_unit *oau)
 {
 	int child_ret;
 	struct igt_helper_process child = {};
@@ -3444,7 +3448,7 @@ test_single_ctx_render_target_writes_a_counter(struct drm_xe_engine_class_instan
 
 			igt_drop_root();
 
-			single_ctx_helper(hwe);
+			single_ctx_helper(oau);
 
 			drm_close_driver(drm_fd);
 		}
@@ -5190,8 +5194,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 
 		igt_subtest_with_dynamic("unprivileged-single-ctx-counters") {
 			igt_require_f(render_copy, "no render-copy function\n");
-			__for_one_render_engine(hwe)
-				test_single_ctx_render_target_writes_a_counter(hwe);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_single_ctx_render_target_writes_a_counter(oau);
 		}
 	}
 
-- 
2.48.1


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

* [PATCH i-g-t 13/18] tests/intel/xe_oa: Convert OA buffer mmap tests to take OA unit arguments
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (11 preceding siblings ...)
  2025-10-08 21:17 ` [PATCH i-g-t 12/18] tests/intel/xe_oa: Convert test_single_ctx_render_target_writes_a_counter Ashutosh Dixit
@ 2025-10-08 21:18 ` Ashutosh Dixit
  2025-10-10 22:28   ` Umesh Nerlige Ramappa
  2025-10-08 21:18 ` [PATCH i-g-t 14/18] tests/intel/xe_oa: Convert MMIO trigger " Ashutosh Dixit
                   ` (8 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:18 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Convert OA buffer mmap tests to take 'struct drm_xe_oa_unit *' arguments,
to enable them to be run on all OA units.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 71 +++++++++++++++++++++++----------------------
 1 file changed, 36 insertions(+), 35 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 01df791dc5..1b16893de3 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -4414,7 +4414,7 @@ static void *map_oa_buffer(u32 *size)
 	return vaddr;
 }
 
-static void invalid_param_map_oa_buffer(const struct drm_xe_engine_class_instance *hwe)
+static void invalid_param_map_oa_buffer(struct drm_xe_oa_unit *oau)
 {
 	void *oa_vaddr = NULL;
 
@@ -4450,7 +4450,7 @@ static void unprivileged_try_to_map_oa_buffer(void)
 	igt_assert_eq(errno, EACCES);
 }
 
-static void unprivileged_map_oa_buffer(const struct drm_xe_engine_class_instance *hwe)
+static void unprivileged_map_oa_buffer(struct drm_xe_oa_unit *oau)
 {
 	igt_fork(child, 1) {
 		igt_drop_root();
@@ -4484,7 +4484,7 @@ static void try_invalid_access(void *vaddr)
 	signal(SIGSEGV, old_sigsegv);
 }
 
-static void map_oa_buffer_unprivilege_access(const struct drm_xe_engine_class_instance *hwe)
+static void map_oa_buffer_unprivilege_access(struct drm_xe_oa_unit *oau)
 {
 	void *vaddr;
 	uint32_t size;
@@ -4500,7 +4500,7 @@ static void map_oa_buffer_unprivilege_access(const struct drm_xe_engine_class_in
 	munmap(vaddr, size);
 }
 
-static void map_oa_buffer_forked_access(const struct drm_xe_engine_class_instance *hwe)
+static void map_oa_buffer_forked_access(struct drm_xe_oa_unit *oau)
 {
 	void *vaddr;
 	uint32_t size;
@@ -4516,10 +4516,10 @@ static void map_oa_buffer_forked_access(const struct drm_xe_engine_class_instanc
 }
 
 static void mmap_wait_for_periodic_reports(void *oa_vaddr, uint32_t n,
-					   const struct drm_xe_engine_class_instance *hwe)
+					   struct drm_xe_oa_unit *oau)
 {
 	uint32_t period_us = oa_exponent_to_ns(oa_exponent_default) / 1000;
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t fmt = test_set->perf_oa_format;
 	uint32_t num_periodic_reports = 0;
 	uint32_t report_words = get_oa_format(fmt).size >> 2;
@@ -4537,9 +4537,9 @@ static void mmap_wait_for_periodic_reports(void *oa_vaddr, uint32_t n,
 }
 
 static void mmap_check_reports(void *oa_vaddr, uint32_t oa_size,
-			       const struct drm_xe_engine_class_instance *hwe)
+			       struct drm_xe_oa_unit *oau)
 {
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t fmt = test_set->perf_oa_format;
 	struct oa_format format = get_oa_format(fmt);
 	size_t report_words = format.size >> 2;
@@ -4557,22 +4557,22 @@ static void mmap_check_reports(void *oa_vaddr, uint32_t oa_size,
 			sanity_check_reports(reports - 2 * report_words,
 					     reports - report_words, fmt);
 			pec_sanity_check_reports(reports - 2 * report_words,
-						 reports - report_words, metric_set(hwe));
+						 reports - report_words, oa_unit_metric_set(oau));
 		}
 	}
 
 	igt_assert(timer_reports >= 3);
 }
 
-static void check_reports_from_mapped_buffer(const struct drm_xe_engine_class_instance *hwe)
+static void check_reports_from_mapped_buffer(struct drm_xe_oa_unit *oau)
 {
 	void *vaddr;
 	uint32_t size;
 
 	vaddr = map_oa_buffer(&size);
 
-	mmap_wait_for_periodic_reports(vaddr, 10, hwe);
-	mmap_check_reports(vaddr, size, hwe);
+	mmap_wait_for_periodic_reports(vaddr, 10, oau);
+	mmap_check_reports(vaddr, size, oau);
 
 	munmap(vaddr, size);
 }
@@ -4581,13 +4581,14 @@ static void check_reports_from_mapped_buffer(const struct drm_xe_engine_class_in
  * SUBTEST: closed-fd-and-unmapped-access
  * Description: Unmap buffer, close fd and try to access
  */
-static void closed_fd_and_unmapped_access(const struct drm_xe_engine_class_instance *hwe)
+static void closed_fd_and_unmapped_access(struct drm_xe_oa_unit *oau)
 {
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
-		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
-		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
 	};
 	struct intel_xe_oa_open_prop param = {
@@ -4600,8 +4601,8 @@ static void closed_fd_and_unmapped_access(const struct drm_xe_engine_class_insta
 	stream_fd = __perf_open(drm_fd, &param, false);
 	vaddr = map_oa_buffer(&size);
 
-	mmap_wait_for_periodic_reports(vaddr, 10, hwe);
-	mmap_check_reports(vaddr, size, hwe);
+	mmap_wait_for_periodic_reports(vaddr, 10, oau);
+	mmap_check_reports(vaddr, size, oau);
 
 	munmap(vaddr, size);
 	__perf_close(stream_fd);
@@ -4678,13 +4679,13 @@ test_tail_address_wrap(struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
  * SUBTEST: privileged-forked-access-vaddr
  * Description: Verify that forked access to mapped buffer fails
  */
-typedef void (*map_oa_buffer_test_t)(const struct drm_xe_engine_class_instance *hwe);
+typedef void (*map_oa_buffer_test_t)(struct drm_xe_oa_unit *oau);
 static void test_mapped_oa_buffer(map_oa_buffer_test_t test_with_fd_open,
-				  const struct drm_xe_engine_class_instance *hwe)
+				  struct drm_xe_oa_unit *oau)
 {
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
@@ -4698,7 +4699,7 @@ static void test_mapped_oa_buffer(map_oa_buffer_test_t test_with_fd_open,
 	stream_fd = __perf_open(drm_fd, &param, false);
 
 	igt_assert(test_with_fd_open);
-	test_with_fd_open(hwe);
+	test_with_fd_open(oau);
 
 	__perf_close(stream_fd);
 }
@@ -5236,28 +5237,28 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 
 	igt_subtest_group {
 		igt_subtest_with_dynamic("map-oa-buffer")
-			__for_one_hwe_in_oag(hwe)
-				test_mapped_oa_buffer(check_reports_from_mapped_buffer, hwe);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_mapped_oa_buffer(check_reports_from_mapped_buffer, oau);
 
 		igt_subtest_with_dynamic("invalid-map-oa-buffer")
-			__for_one_hwe_in_oag(hwe)
-				test_mapped_oa_buffer(invalid_param_map_oa_buffer, hwe);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_mapped_oa_buffer(invalid_param_map_oa_buffer, oau);
 
 		igt_subtest_with_dynamic("non-privileged-map-oa-buffer")
-			__for_one_hwe_in_oag(hwe)
-				test_mapped_oa_buffer(unprivileged_map_oa_buffer, hwe);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_mapped_oa_buffer(unprivileged_map_oa_buffer, oau);
 
 		igt_subtest_with_dynamic("non-privileged-access-vaddr")
-			__for_one_hwe_in_oag(hwe)
-				test_mapped_oa_buffer(map_oa_buffer_unprivilege_access, hwe);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_mapped_oa_buffer(map_oa_buffer_unprivilege_access, oau);
 
 		igt_subtest_with_dynamic("privileged-forked-access-vaddr")
-			__for_one_hwe_in_oag(hwe)
-				test_mapped_oa_buffer(map_oa_buffer_forked_access, hwe);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_mapped_oa_buffer(map_oa_buffer_forked_access, oau);
 
 		igt_subtest_with_dynamic("closed-fd-and-unmapped-access")
-			__for_one_hwe_in_oag(hwe)
-				closed_fd_and_unmapped_access(hwe);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				closed_fd_and_unmapped_access(oau);
 	}
 
 	igt_subtest_with_dynamic("tail-address-wrap") {
-- 
2.48.1


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

* [PATCH i-g-t 14/18] tests/intel/xe_oa: Convert MMIO trigger tests to take OA unit arguments
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (12 preceding siblings ...)
  2025-10-08 21:18 ` [PATCH i-g-t 13/18] tests/intel/xe_oa: Convert OA buffer mmap tests to take OA unit arguments Ashutosh Dixit
@ 2025-10-08 21:18 ` Ashutosh Dixit
  2025-10-10 22:29   ` Umesh Nerlige Ramappa
  2025-10-08 21:18 ` [PATCH i-g-t 15/18] tests/intel/xe_oa: Convert sync " Ashutosh Dixit
                   ` (7 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:18 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Convert MMIO trigger tests to take 'struct drm_xe_oa_unit *' arguments, to
enable them to be run on all OA units.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 41 ++++++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 19 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 1b16893de3..a3f4a80d6a 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -3992,11 +3992,12 @@ static u32 oa_get_mmio_base(const struct drm_xe_engine_class_instance *hwe)
  * SUBTEST: oa-regs-whitelisted
  * Description: Verify that OA registers are whitelisted
  */
-static void test_oa_regs_whitelist(const struct drm_xe_engine_class_instance *hwe)
+static void test_oa_regs_whitelist(struct drm_xe_oa_unit *oau)
 {
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
+	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
 	uint64_t properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
@@ -4010,8 +4011,7 @@ static void test_oa_regs_whitelist(const struct drm_xe_engine_class_instance *hw
 	u32 mmio_base;
 
 	/* FIXME: Add support for OAM whitelist testing */
-	if (hwe->engine_class != DRM_XE_ENGINE_CLASS_RENDER &&
-	    hwe->engine_class != DRM_XE_ENGINE_CLASS_COMPUTE)
+	if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
 		return;
 
 	mmio_base = oa_get_mmio_base(hwe);
@@ -4039,10 +4039,12 @@ static void test_oa_regs_whitelist(const struct drm_xe_engine_class_instance *hw
 }
 
 static void
-__test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
+__test_mmio_triggered_reports(struct drm_xe_oa_unit *oau)
 {
-	struct intel_xe_perf_metric_set *test_set = default_test_set;
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
+	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
 	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
@@ -4144,10 +4146,12 @@ __test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
 }
 
 static void
-__test_mmio_triggered_reports_read(struct drm_xe_engine_class_instance *hwe)
+__test_mmio_triggered_reports_read(struct drm_xe_oa_unit *oau)
 {
-	struct intel_xe_perf_metric_set *test_set = default_test_set;
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
+	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
 	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
@@ -4240,8 +4244,7 @@ __test_mmio_triggered_reports_read(struct drm_xe_engine_class_instance *hwe)
  * Description: Test MMIO trigger functionality with read system call
  */
 static void
-test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe,
-			    bool with_read)
+test_mmio_triggered_reports(struct drm_xe_oa_unit *oau, bool with_read)
 {
 	struct igt_helper_process child = {};
 	int ret;
@@ -4251,9 +4254,9 @@ test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe,
 		igt_drop_root();
 
 		if (with_read)
-			__test_mmio_triggered_reports_read(hwe);
+			__test_mmio_triggered_reports_read(oau);
 		else
-			__test_mmio_triggered_reports(hwe);
+			__test_mmio_triggered_reports(oau);
 	}
 	ret = igt_wait_helper(&child);
 	write_u64_file("/proc/sys/dev/xe/observation_paranoid", 1);
@@ -5275,19 +5278,19 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		}
 
 		igt_subtest_with_dynamic("oa-regs-whitelisted")
-			__for_one_hwe_in_oag(hwe)
-				test_oa_regs_whitelist(hwe);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_oa_regs_whitelist(oau);
 
 		igt_subtest_with_dynamic("mmio-triggered-reports") {
 			igt_require(HAS_OA_MMIO_TRIGGER(devid));
-			__for_one_hwe_in_oag(hwe)
-				test_mmio_triggered_reports(hwe, false);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_mmio_triggered_reports(oau, false);
 		}
 
 		igt_subtest_with_dynamic("mmio-triggered-reports-read") {
 			igt_require(HAS_OA_MMIO_TRIGGER(devid));
-			__for_one_hwe_in_oag(hwe)
-				test_mmio_triggered_reports(hwe, true);
+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+				test_mmio_triggered_reports(oau, true);
 		}
 	}
 
-- 
2.48.1


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

* [PATCH i-g-t 15/18] tests/intel/xe_oa: Convert sync tests to take OA unit arguments
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (13 preceding siblings ...)
  2025-10-08 21:18 ` [PATCH i-g-t 14/18] tests/intel/xe_oa: Convert MMIO trigger " Ashutosh Dixit
@ 2025-10-08 21:18 ` Ashutosh Dixit
  2025-10-10 22:30   ` Umesh Nerlige Ramappa
  2025-10-08 21:18 ` [PATCH i-g-t 16/18] tests/intel/xe_oa: Run test_oa_unit_exclusive_stream on multiple OA units Ashutosh Dixit
                   ` (6 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:18 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Convert sync tests to take 'struct drm_xe_oa_unit *' arguments, to enable
them to be run on all OA units.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 35 ++++++++---------------------------
 1 file changed, 8 insertions(+), 27 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index a3f4a80d6a..75142e610d 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -4766,9 +4766,10 @@ struct oa_sync {
 };
 
 static void
-oa_sync_init(enum oa_sync_type sync_type, const struct drm_xe_engine_class_instance *hwe,
+oa_sync_init(enum oa_sync_type sync_type, struct drm_xe_oa_unit *oau,
 	     struct oa_sync *osync, struct drm_xe_sync *sync)
 {
+	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
 	uint64_t addr = 0x1a0000;
 
 	osync->sync_type = sync_type;
@@ -4890,15 +4891,15 @@ static void oa_sync_free(struct oa_sync *osync)
  * @wait-cfg:	Exercise reconfig path and wait for syncs to signal
  * @wait:	Don't exercise reconfig path and wait for syncs to signal
  */
-static void test_syncs(const struct drm_xe_engine_class_instance *hwe,
+static void test_syncs(struct drm_xe_oa_unit *oau,
 		       enum oa_sync_type sync_type, int flags)
 {
 	struct drm_xe_ext_set_property extn[XE_OA_MAX_SET_PROPERTIES] = {};
-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	struct drm_xe_sync sync = {};
 	struct oa_sync osync = {};
 	uint64_t open_properties[] = {
-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
@@ -4929,7 +4930,7 @@ static void test_syncs(const struct drm_xe_engine_class_instance *hwe,
 	if (sync_type == OA_SYNC_TYPE_USERPTR || sync_type == OA_SYNC_TYPE_UFENCE)
 		flags |= WAIT;
 
-	oa_sync_init(sync_type, hwe, &osync, &sync);
+	oa_sync_init(sync_type, oau, &osync, &sync);
 
 	stream_fd = __perf_open(drm_fd, &open_param, false);
 
@@ -4956,25 +4957,6 @@ exit:
 	oa_sync_free(&osync);
 }
 
-static const char *xe_engine_class_name(uint32_t engine_class)
-{
-	switch (engine_class) {
-		case DRM_XE_ENGINE_CLASS_RENDER:
-			return "rcs";
-		case DRM_XE_ENGINE_CLASS_COPY:
-			return "bcs";
-		case DRM_XE_ENGINE_CLASS_VIDEO_DECODE:
-			return "vcs";
-		case DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE:
-			return "vecs";
-		case DRM_XE_ENGINE_CLASS_COMPUTE:
-			return "ccs";
-		default:
-			igt_warn("Engine class 0x%x unknown\n", engine_class);
-			return "unknown";
-	}
-}
-
 #define __for_one_hwe_in_each_oa_unit(hwe) \
 	for (int m = 0; !m || hwe; m++) \
 		for_each_if(hwe = oa_unit_engine(oa_unit_by_id(drm_fd, m))) \
@@ -5055,7 +5037,6 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		{ "ufence-wait", OA_SYNC_TYPE_UFENCE, WAIT },
 		{ NULL },
 	};
-	struct drm_xe_engine_class_instance *hwe = NULL;
 	struct drm_xe_oa_unit *oau;
 	struct xe_device *xe_dev;
 
@@ -5301,8 +5282,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 
 		for (const struct sync_section *s = sync_sections; s->name; s++) {
 			igt_subtest_with_dynamic_f("syncs-%s", s->name) {
-				__for_one_hwe_in_oag(hwe)
-					test_syncs(hwe, s->sync_type, s->flags);
+				__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
+					test_syncs(oau, s->sync_type, s->flags);
 			}
 		}
 	}
-- 
2.48.1


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

* [PATCH i-g-t 16/18] tests/intel/xe_oa: Run test_oa_unit_exclusive_stream on multiple OA units
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (14 preceding siblings ...)
  2025-10-08 21:18 ` [PATCH i-g-t 15/18] tests/intel/xe_oa: Convert sync " Ashutosh Dixit
@ 2025-10-08 21:18 ` Ashutosh Dixit
  2025-10-10 22:31   ` Umesh Nerlige Ramappa
  2025-10-08 21:18 ` [PATCH i-g-t 17/18] tests/intel/xe_oa: Add new non-zero-reason-all test Ashutosh Dixit
                   ` (5 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:18 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Change test_oa_unit_exclusive_stream to run simultaneously on all OA units
which have an hwe. Also removed unused code now that all tests are
converted to use OA units rather than hwe's.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 86 ++++++---------------------------------------
 1 file changed, 10 insertions(+), 76 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 75142e610d..2d956286d2 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -385,48 +385,6 @@ static struct intel_xe_perf_metric_set *oa_unit_metric_set(struct drm_xe_oa_unit
 
 	return test_set;
 }
-
-static struct intel_xe_perf_metric_set *metric_set(const struct drm_xe_engine_class_instance *hwe)
-{
-	const char *test_set_name = NULL;
-	struct intel_xe_perf_metric_set *metric_set_iter;
-	struct intel_xe_perf_metric_set *test_set = NULL;
-
-	if (hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER ||
-	    hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE)
-		test_set_name = "TestOa";
-	else if ((hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_DECODE ||
-		  hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE) &&
-		 HAS_OAM(devid))
-		test_set_name = "MediaSet1";
-	else
-		igt_assert(!"reached");
-
-	igt_list_for_each_entry(metric_set_iter, &intel_xe_perf->metric_sets, link) {
-		if (strcmp(metric_set_iter->symbol_name, test_set_name) == 0) {
-			test_set = metric_set_iter;
-			break;
-		}
-	}
-
-	igt_assert(test_set);
-
-	/*
-	 * configuration was loaded in init_sys_info() ->
-	 * intel_xe_perf_load_perf_configs(), and test_set->perf_oa_metrics_set
-	 * should point to metric id returned by the config add ioctl. 0 is
-	 * invalid.
-	 */
-	igt_assert_neq_u64(test_set->perf_oa_metrics_set, 0);
-
-	igt_debug("engine %d:%d - %s metric set UUID = %s\n",
-		  hwe->engine_class,
-		  hwe->engine_instance,
-		  test_set->symbol_name,
-		  test_set->hw_config_guid);
-
-	return test_set;
-}
 #define default_test_set oa_unit_metric_set(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG))
 
 static void set_fd_flags(int fd, int flags)
@@ -4293,8 +4251,8 @@ static void
 test_oa_unit_exclusive_stream(bool exponent)
 {
 	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
+	struct drm_xe_engine_class_instance *hwe;
 	struct drm_xe_oa_unit *oau;
-	u8 *poau = (u8 *)&qoa->oa_units[0];
 	uint64_t properties[] = {
 		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
@@ -4315,12 +4273,12 @@ test_oa_unit_exclusive_stream(bool exponent)
 
 	/* for each oa unit, open one random perf stream with sample OA */
 	for (i = 0; i < qoa->num_oa_units; i++) {
-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
+		oau = oa_unit_by_id(drm_fd, i);
+		hwe = oa_unit_engine(oau);
 
-		oau = (struct drm_xe_oa_unit *)poau;
-		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
+		if (!hwe)
 			continue;
-		test_set = metric_set(hwe);
+		test_set = oa_unit_metric_set(oau);
 
 		igt_debug("opening OA buffer with c:i %d:%d\n",
 			  hwe->engine_class, hwe->engine_instance);
@@ -4336,7 +4294,6 @@ test_oa_unit_exclusive_stream(bool exponent)
 		properties[9] = hwe->engine_instance;
 		perf_fd[i] = intel_xe_perf_ioctl(drm_fd, DRM_XE_OBSERVATION_OP_STREAM_OPEN, &param);
 		igt_assert(perf_fd[i] >= 0);
-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
 	}
 
 	/* Xe KMD holds reference to the exec_q's so they shouldn't be really destroyed */
@@ -4345,15 +4302,15 @@ test_oa_unit_exclusive_stream(bool exponent)
 			xe_exec_queue_destroy(drm_fd, exec_q[i]);
 
 	/* for each oa unit make sure no other streams can be opened */
-	poau = (u8 *)&qoa->oa_units[0];
 	for (i = 0; i < qoa->num_oa_units; i++) {
-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
 		int err;
 
-		oau = (struct drm_xe_oa_unit *)poau;
-		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
+		oau = oa_unit_by_id(drm_fd, i);
+		hwe = oa_unit_engine(oau);
+
+		if (!hwe)
 			continue;
-		test_set = metric_set(hwe);
+		test_set = oa_unit_metric_set(oau);
 
 		igt_debug("try with exp with c:i %d:%d\n",
 			  hwe->engine_class, hwe->engine_instance);
@@ -4376,7 +4333,6 @@ test_oa_unit_exclusive_stream(bool exponent)
 		err = intel_xe_perf_ioctl(drm_fd, DRM_XE_OBSERVATION_OP_STREAM_OPEN, &param);
 		igt_assert_lt(err, 0);
 		igt_assert(errno == EBUSY || errno == ENODEV);
-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
 	}
 
 	for (i = 0; i < qoa->num_oa_units; i++) {
@@ -4957,28 +4913,6 @@ exit:
 	oa_sync_free(&osync);
 }
 
-#define __for_one_hwe_in_each_oa_unit(hwe) \
-	for (int m = 0; !m || hwe; m++) \
-		for_each_if(hwe = oa_unit_engine(oa_unit_by_id(drm_fd, m))) \
-			igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
-				      hwe->engine_instance)
-
-/* Only OAG (not OAM) is currently supported */
-#define __for_one_hwe_in_oag(hwe) \
-	if ((hwe = oa_unit_engine(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG)))) \
-		igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
-			      hwe->engine_instance)
-
-#define __for_one_hwe_in_oag_w_arg(hwe, str) \
-	if ((hwe = oa_unit_engine(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG)))) \
-		igt_dynamic_f("%s-%d-%s", xe_engine_class_name(hwe->engine_class), \
-			      hwe->engine_instance, str)
-
-#define __for_one_render_engine(hwe) \
-	hwe = &xe_find_engine_by_class(drm_fd, DRM_XE_ENGINE_CLASS_RENDER)->instance; \
-	igt_require_f(hwe, "no render engine\n"); \
-	igt_dynamic_f("rcs-%d", hwe->engine_instance)
-
 #define __for_oa_unit_by_type(k) \
 	if ((oau = oa_unit_by_type(drm_fd, k))) \
 		igt_dynamic_f("%s-%d", oa_unit_name[oau->oa_unit_type], oau->oa_unit_id)
-- 
2.48.1


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

* [PATCH i-g-t 17/18] tests/intel/xe_oa: Add new non-zero-reason-all test
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (15 preceding siblings ...)
  2025-10-08 21:18 ` [PATCH i-g-t 16/18] tests/intel/xe_oa: Run test_oa_unit_exclusive_stream on multiple OA units Ashutosh Dixit
@ 2025-10-08 21:18 ` Ashutosh Dixit
  2025-10-10 22:32   ` Umesh Nerlige Ramappa
  2025-10-08 21:18 ` [PATCH i-g-t 18/18] tests/intel/xe_oa: Constify arguments to various functions Ashutosh Dixit
                   ` (4 subsequent siblings)
  21 siblings, 1 reply; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:18 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

To demonstrate the new infrastructure, add a new non-zero-reason-all test
which runs the non-zero-reason test on all OA units.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 2d956286d2..36b1785bbd 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -4921,6 +4921,10 @@ exit:
 	if ((oau = oa_unit_by_type(drm_fd, k))) \
 		igt_dynamic_f("%s-%d-%s", oa_unit_name[oau->oa_unit_type], oau->oa_unit_id, str)
 
+#define __for_each_oa_unit(qoa, oau, poau, i) \
+	for_each_oa_unit(qoa, oau, poau, i) \
+		igt_dynamic_f("%s-%d", oa_unit_name[oau->oa_unit_type], oau->oa_unit_id)
+
 static int opt_handler(int opt, int opt_index, void *data)
 {
 	uint32_t tmp;
@@ -4971,8 +4975,11 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		{ "ufence-wait", OA_SYNC_TYPE_UFENCE, WAIT },
 		{ NULL },
 	};
+	struct drm_xe_query_oa_units *qoa;
 	struct drm_xe_oa_unit *oau;
 	struct xe_device *xe_dev;
+	u8 *poau;
+	int i;
 
 	igt_fixture {
 		struct stat sb;
@@ -5066,6 +5073,16 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 			test_non_zero_reason(oau, 0);
 	}
 
+	/**
+	 * SUBTEST: non-zero-reason-all
+	 * Description: Non zero reason over all OA units
+	 */
+	igt_subtest_with_dynamic("non-zero-reason-all") {
+		igt_require(oau->capabilities & DRM_XE_OA_CAPS_OA_BUFFER_SIZE);
+		__for_each_oa_unit(qoa, oau, poau, i)
+			test_non_zero_reason(oau, SZ_128K);
+	}
+
 	igt_subtest("disabled-read-error")
 		test_disabled_read_error();
 	igt_subtest("non-sampling-read-error")
-- 
2.48.1


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

* [PATCH i-g-t 18/18] tests/intel/xe_oa: Constify arguments to various functions
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (16 preceding siblings ...)
  2025-10-08 21:18 ` [PATCH i-g-t 17/18] tests/intel/xe_oa: Add new non-zero-reason-all test Ashutosh Dixit
@ 2025-10-08 21:18 ` Ashutosh Dixit
  2025-10-08 22:21 ` ✓ Xe.CI.BAT: success for Change OA IGT's to run on all OA units Patchwork
                   ` (3 subsequent siblings)
  21 siblings, 0 replies; 45+ messages in thread
From: Ashutosh Dixit @ 2025-10-08 21:18 UTC (permalink / raw)
  To: igt-dev; +Cc: Umesh Nerlige Ramappa

Constify arguments to various functions, in order to prevent inadvertent
data modification.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 106 ++++++++++++++++++++++++--------------------
 1 file changed, 57 insertions(+), 49 deletions(-)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 36b1785bbd..54f59c52cb 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -345,7 +345,15 @@ static const char *oa_unit_name[] = {
 	[DRM_XE_OA_UNIT_TYPE_OAM_SAG] = "sag",
 };
 
-static struct intel_xe_perf_metric_set *oa_unit_metric_set(struct drm_xe_oa_unit *oau)
+/* Wrapper to deconstify @inst for xe_exec_queue_create */
+static u32 xe_exec_queue_create_deconst(int fd, uint32_t vm,
+					const struct drm_xe_engine_class_instance *inst,
+					uint64_t ext)
+{
+	return xe_exec_queue_create(fd, vm, (struct drm_xe_engine_class_instance *)inst, ext);
+}
+
+static struct intel_xe_perf_metric_set *oa_unit_metric_set(const struct drm_xe_oa_unit *oau)
 {
 	const char *test_set_name = NULL;
 	struct intel_xe_perf_metric_set *metric_set_iter;
@@ -476,7 +484,7 @@ static u64 oa_format_fields(u64 name)
 }
 #define __ff oa_format_fields
 
-static struct drm_xe_engine_class_instance *oa_unit_engine(struct drm_xe_oa_unit *oau)
+static const struct drm_xe_engine_class_instance *oa_unit_engine(const struct drm_xe_oa_unit *oau)
 {
 	return !oau ? NULL : oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
 }
@@ -486,7 +494,7 @@ static struct drm_xe_engine_class_instance *oa_unit_engine(struct drm_xe_oa_unit
 	     oau = (struct drm_xe_oa_unit *)poau, i < qoa->num_oa_units; \
 	     poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]), i++)
 
-static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
+static const struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
 {
 	struct drm_xe_query_oa_units *qoa;
 	struct drm_xe_oa_unit *oau;
@@ -501,7 +509,7 @@ static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
 	return NULL;
 }
 
-static struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
+static const struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
 {
 	struct drm_xe_query_oa_units *qoa;
 	struct drm_xe_oa_unit *oau;
@@ -1552,7 +1560,7 @@ open_and_read_2_oa_reports(int format_id,
 			   uint32_t *oa_report0,
 			   uint32_t *oa_report1,
 			   bool timer_only,
-			   struct drm_xe_oa_unit *oau)
+			   const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t properties[] = {
@@ -1676,7 +1684,7 @@ print_reports(uint32_t *oa_report0, uint32_t *oa_report1, int fmt)
 }
 
 static bool
-oau_supports_oa_type(int oa_type, struct drm_xe_oa_unit *oau)
+oau_supports_oa_type(int oa_type, const struct drm_xe_oa_unit *oau)
 {
 	switch (oa_type) {
 	case DRM_XE_OA_FMT_TYPE_OAM:
@@ -1697,7 +1705,7 @@ oau_supports_oa_type(int oa_type, struct drm_xe_oa_unit *oau)
  * SUBTEST: oa-formats
  * Description: Test that supported OA formats work as expected
  */
-static void test_oa_formats(struct drm_xe_oa_unit *oau)
+static void test_oa_formats(const struct drm_xe_oa_unit *oau)
 {
 	for (int i = 0; i < XE_OA_FORMAT_MAX; i++) {
 		struct oa_format format = get_oa_format(i);
@@ -1854,7 +1862,7 @@ static bool expected_report_timing_delta(uint32_t delta, uint32_t expected_delta
  * SUBTEST: oa-exponents
  * Description: Test that oa exponent values behave as expected
  */
-static void test_oa_exponents(struct drm_xe_oa_unit *oau)
+static void test_oa_exponents(const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t fmt = test_set->perf_oa_format;
@@ -2057,7 +2065,7 @@ get_time(void)
 static void test_blocking(uint64_t requested_oa_period,
 			  bool set_kernel_hrtimer,
 			  uint64_t kernel_hrtimer,
-			  struct drm_xe_oa_unit *oau)
+			  const struct drm_xe_oa_unit *oau)
 {
 	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
@@ -2200,7 +2208,7 @@ static void test_blocking(uint64_t requested_oa_period,
 static void test_polling(uint64_t requested_oa_period,
 			 bool set_kernel_hrtimer,
 			 uint64_t kernel_hrtimer,
-			 struct drm_xe_oa_unit *oau)
+			 const struct drm_xe_oa_unit *oau)
 {
 	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
@@ -2484,7 +2492,7 @@ num_valid_reports_captured(struct intel_xe_oa_open_prop *param,
  * Description: Open OA stream twice to verify OA TLB invalidation
  */
 static void
-test_oa_tlb_invalidate(struct drm_xe_oa_unit *oau)
+test_oa_tlb_invalidate(const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t properties[] = {
@@ -2542,7 +2550,7 @@ wait_for_oa_buffer_overflow(int fd, int poll_period_us)
  * Description: Test filling and overflow of OA buffer
  */
 static void
-test_buffer_fill(struct drm_xe_oa_unit *oau)
+test_buffer_fill(const struct drm_xe_oa_unit *oau)
 {
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
@@ -2589,7 +2597,7 @@ test_buffer_fill(struct drm_xe_oa_unit *oau)
  * Description: Test reason field is non-zero. Can also check OA buffer wraparound issues
  */
 static void
-test_non_zero_reason(struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
+test_non_zero_reason(const struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
 {
 	/* ~20 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(20000);
@@ -2682,7 +2690,7 @@ test_non_zero_reason(struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
  * Description: Test that OA stream enable/disable works as expected
  */
 static void
-test_enable_disable(struct drm_xe_oa_unit *oau)
+test_enable_disable(const struct drm_xe_oa_unit *oau)
 {
 	uint32_t num_reports = 5;
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
@@ -2952,10 +2960,10 @@ test_disabled_read_error(void)
  * Description: Test OAR/OAC using MI_REPORT_PERF_COUNT
  */
 static void
-test_mi_rpc(struct drm_xe_oa_unit *oau)
+test_mi_rpc(const struct drm_xe_oa_unit *oau)
 
 {
-	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
+	const struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
 	uint64_t fmt = ((IS_DG2(devid) || IS_METEORLAKE(devid)) &&
 			hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE) ?
 		XE_OAC_FORMAT_A24u64_B8_C8 : oar_unit_default_format();
@@ -3004,7 +3012,7 @@ test_mi_rpc(struct drm_xe_oa_unit *oau)
 
 	bops = buf_ops_create(drm_fd);
 	vm = xe_vm_create(drm_fd, 0, 0);
-	ctx_id = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	ctx_id = xe_exec_queue_create_deconst(drm_fd, vm, hwe, 0);
 	igt_assert_neq(ctx_id, INVALID_CTX_ID);
 	properties[3] = ctx_id;
 
@@ -3083,7 +3091,7 @@ emit_stall_timestamp_and_rpc(struct intel_bb *ibb,
 	emit_report_perf_count(ibb, dst, report_dst_offset, report_id);
 }
 
-static void single_ctx_helper(struct drm_xe_oa_unit *oau)
+static void single_ctx_helper(const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	struct drm_xe_engine_class_instance *hwe =
@@ -3391,7 +3399,7 @@ static void single_ctx_helper(struct drm_xe_oa_unit *oau)
  * Description: A harder test for OAR/OAC using MI_REPORT_PERF_COUNT
  */
 static void
-test_single_ctx_render_target_writes_a_counter(struct drm_xe_oa_unit *oau)
+test_single_ctx_render_target_writes_a_counter(const struct drm_xe_oa_unit *oau)
 {
 	int child_ret;
 	struct igt_helper_process child = {};
@@ -3468,7 +3476,7 @@ test_rc6_disable(void)
  * Description: Open/close OA streams in a tight loop
  */
 static void
-test_stress_open_close(struct drm_xe_oa_unit *oau)
+test_stress_open_close(const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 
@@ -3950,10 +3958,10 @@ static u32 oa_get_mmio_base(const struct drm_xe_engine_class_instance *hwe)
  * SUBTEST: oa-regs-whitelisted
  * Description: Verify that OA registers are whitelisted
  */
-static void test_oa_regs_whitelist(struct drm_xe_oa_unit *oau)
+static void test_oa_regs_whitelist(const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
-	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
+	const struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
 	uint64_t properties[] = {
 		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
@@ -3997,10 +4005,10 @@ static void test_oa_regs_whitelist(struct drm_xe_oa_unit *oau)
 }
 
 static void
-__test_mmio_triggered_reports(struct drm_xe_oa_unit *oau)
+__test_mmio_triggered_reports(const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
-	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
+	const struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
 	uint64_t properties[] = {
 		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
@@ -4035,7 +4043,7 @@ __test_mmio_triggered_reports(struct drm_xe_oa_unit *oau)
 	scratch_buf_init(bops, &dst, rc_width, rc_height, 0x00ff00ff);
 
 	vm = xe_vm_create(drm_fd, 0, 0);
-	context = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	context = xe_exec_queue_create_deconst(drm_fd, vm, hwe, 0);
 	igt_assert(context);
 	ibb = intel_bb_create_with_context(drm_fd, context, vm, NULL, BATCH_SZ);
 
@@ -4104,10 +4112,10 @@ __test_mmio_triggered_reports(struct drm_xe_oa_unit *oau)
 }
 
 static void
-__test_mmio_triggered_reports_read(struct drm_xe_oa_unit *oau)
+__test_mmio_triggered_reports_read(const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
-	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
+	const struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
 	uint64_t properties[] = {
 		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
@@ -4134,7 +4142,7 @@ __test_mmio_triggered_reports_read(struct drm_xe_oa_unit *oau)
 	scratch_buf_init(bops, &dst, rc_width, rc_height, 0x00ff00ff);
 
 	vm = xe_vm_create(drm_fd, 0, 0);
-	context = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	context = xe_exec_queue_create_deconst(drm_fd, vm, hwe, 0);
 	igt_assert(context);
 	ibb = intel_bb_create_with_context(drm_fd, context, vm, NULL, BATCH_SZ);
 
@@ -4202,7 +4210,7 @@ __test_mmio_triggered_reports_read(struct drm_xe_oa_unit *oau)
  * Description: Test MMIO trigger functionality with read system call
  */
 static void
-test_mmio_triggered_reports(struct drm_xe_oa_unit *oau, bool with_read)
+test_mmio_triggered_reports(const struct drm_xe_oa_unit *oau, bool with_read)
 {
 	struct igt_helper_process child = {};
 	int ret;
@@ -4251,8 +4259,8 @@ static void
 test_oa_unit_exclusive_stream(bool exponent)
 {
 	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
-	struct drm_xe_engine_class_instance *hwe;
-	struct drm_xe_oa_unit *oau;
+	const struct drm_xe_engine_class_instance *hwe;
+	const struct drm_xe_oa_unit *oau;
 	uint64_t properties[] = {
 		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
@@ -4282,7 +4290,7 @@ test_oa_unit_exclusive_stream(bool exponent)
 
 		igt_debug("opening OA buffer with c:i %d:%d\n",
 			  hwe->engine_class, hwe->engine_instance);
-		exec_q[i] = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+		exec_q[i] = xe_exec_queue_create_deconst(drm_fd, vm, hwe, 0);
 		if (!exponent) {
 			properties[10] = DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID;
 			properties[11] = exec_q[i];
@@ -4326,7 +4334,7 @@ test_oa_unit_exclusive_stream(bool exponent)
 		/* case 2: concurrent access to non-OAG unit should fail */
 		igt_debug("try with exec_q with c:i %d:%d\n",
 			  hwe->engine_class, hwe->engine_instance);
-		exec_q[i] = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+		exec_q[i] = xe_exec_queue_create_deconst(drm_fd, vm, hwe, 0);
 		properties[10] = DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID;
 		properties[11] = exec_q[i];
 		errno = 0;
@@ -4353,7 +4361,7 @@ test_oa_unit_concurrent_oa_buffer_read(void)
 	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
 
 	igt_fork(child, qoa->num_oa_units) {
-		struct drm_xe_oa_unit *oau = oa_unit_by_id(drm_fd, child);
+		const struct drm_xe_oa_unit *oau = oa_unit_by_id(drm_fd, child);
 
 		/* No OAM support yet */
 		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
@@ -4373,7 +4381,7 @@ static void *map_oa_buffer(u32 *size)
 	return vaddr;
 }
 
-static void invalid_param_map_oa_buffer(struct drm_xe_oa_unit *oau)
+static void invalid_param_map_oa_buffer(const struct drm_xe_oa_unit *oau)
 {
 	void *oa_vaddr = NULL;
 
@@ -4409,7 +4417,7 @@ static void unprivileged_try_to_map_oa_buffer(void)
 	igt_assert_eq(errno, EACCES);
 }
 
-static void unprivileged_map_oa_buffer(struct drm_xe_oa_unit *oau)
+static void unprivileged_map_oa_buffer(const struct drm_xe_oa_unit *oau)
 {
 	igt_fork(child, 1) {
 		igt_drop_root();
@@ -4443,7 +4451,7 @@ static void try_invalid_access(void *vaddr)
 	signal(SIGSEGV, old_sigsegv);
 }
 
-static void map_oa_buffer_unprivilege_access(struct drm_xe_oa_unit *oau)
+static void map_oa_buffer_unprivilege_access(const struct drm_xe_oa_unit *oau)
 {
 	void *vaddr;
 	uint32_t size;
@@ -4459,7 +4467,7 @@ static void map_oa_buffer_unprivilege_access(struct drm_xe_oa_unit *oau)
 	munmap(vaddr, size);
 }
 
-static void map_oa_buffer_forked_access(struct drm_xe_oa_unit *oau)
+static void map_oa_buffer_forked_access(const struct drm_xe_oa_unit *oau)
 {
 	void *vaddr;
 	uint32_t size;
@@ -4475,7 +4483,7 @@ static void map_oa_buffer_forked_access(struct drm_xe_oa_unit *oau)
 }
 
 static void mmap_wait_for_periodic_reports(void *oa_vaddr, uint32_t n,
-					   struct drm_xe_oa_unit *oau)
+					   const struct drm_xe_oa_unit *oau)
 {
 	uint32_t period_us = oa_exponent_to_ns(oa_exponent_default) / 1000;
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
@@ -4496,7 +4504,7 @@ static void mmap_wait_for_periodic_reports(void *oa_vaddr, uint32_t n,
 }
 
 static void mmap_check_reports(void *oa_vaddr, uint32_t oa_size,
-			       struct drm_xe_oa_unit *oau)
+			       const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t fmt = test_set->perf_oa_format;
@@ -4523,7 +4531,7 @@ static void mmap_check_reports(void *oa_vaddr, uint32_t oa_size,
 	igt_assert(timer_reports >= 3);
 }
 
-static void check_reports_from_mapped_buffer(struct drm_xe_oa_unit *oau)
+static void check_reports_from_mapped_buffer(const struct drm_xe_oa_unit *oau)
 {
 	void *vaddr;
 	uint32_t size;
@@ -4540,7 +4548,7 @@ static void check_reports_from_mapped_buffer(struct drm_xe_oa_unit *oau)
  * SUBTEST: closed-fd-and-unmapped-access
  * Description: Unmap buffer, close fd and try to access
  */
-static void closed_fd_and_unmapped_access(struct drm_xe_oa_unit *oau)
+static void closed_fd_and_unmapped_access(const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t properties[] = {
@@ -4578,7 +4586,7 @@ static void closed_fd_and_unmapped_access(struct drm_xe_oa_unit *oau)
  * has zeroes in it.
  */
 static void
-test_tail_address_wrap(struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
+test_tail_address_wrap(const struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	u64 exponent = max_oa_exponent_for_period_lte(20000);
@@ -4638,9 +4646,9 @@ test_tail_address_wrap(struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
  * SUBTEST: privileged-forked-access-vaddr
  * Description: Verify that forked access to mapped buffer fails
  */
-typedef void (*map_oa_buffer_test_t)(struct drm_xe_oa_unit *oau);
+typedef void (*map_oa_buffer_test_t)(const struct drm_xe_oa_unit *oau);
 static void test_mapped_oa_buffer(map_oa_buffer_test_t test_with_fd_open,
-				  struct drm_xe_oa_unit *oau)
+				  const struct drm_xe_oa_unit *oau)
 {
 	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
 	uint64_t properties[] = {
@@ -4722,10 +4730,10 @@ struct oa_sync {
 };
 
 static void
-oa_sync_init(enum oa_sync_type sync_type, struct drm_xe_oa_unit *oau,
+oa_sync_init(enum oa_sync_type sync_type, const struct drm_xe_oa_unit *oau,
 	     struct oa_sync *osync, struct drm_xe_sync *sync)
 {
-	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
+	const struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
 	uint64_t addr = 0x1a0000;
 
 	osync->sync_type = sync_type;
@@ -4847,7 +4855,7 @@ static void oa_sync_free(struct oa_sync *osync)
  * @wait-cfg:	Exercise reconfig path and wait for syncs to signal
  * @wait:	Don't exercise reconfig path and wait for syncs to signal
  */
-static void test_syncs(struct drm_xe_oa_unit *oau,
+static void test_syncs(const struct drm_xe_oa_unit *oau,
 		       enum oa_sync_type sync_type, int flags)
 {
 	struct drm_xe_ext_set_property extn[XE_OA_MAX_SET_PROPERTIES] = {};
@@ -4976,7 +4984,7 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
 		{ NULL },
 	};
 	struct drm_xe_query_oa_units *qoa;
-	struct drm_xe_oa_unit *oau;
+	const struct drm_xe_oa_unit *oau;
 	struct xe_device *xe_dev;
 	u8 *poau;
 	int i;
-- 
2.48.1


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

* Re: [PATCH i-g-t 01/18] tests/intel/xe_oa: Add OAM formats to lnl_oa_formats
  2025-10-08 21:17 ` [PATCH i-g-t 01/18] tests/intel/xe_oa: Add OAM formats to lnl_oa_formats Ashutosh Dixit
@ 2025-10-08 21:55   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-08 21:55 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:48PM -0700, Ashutosh Dixit wrote:
>Add previously missing OAM formats to list of Xe2+ OA formats.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index 4f2aff59ac..0a00105bd4 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -242,6 +242,18 @@ static struct oa_format mtl_oa_formats[XE_OA_FORMAT_MAX] = {
> };
>
> static struct oa_format lnl_oa_formats[XE_OA_FORMAT_MAX] = {
>+	[XE_OAM_FORMAT_MPEC8u64_B8_C8] = {
>+		"MPEC8u64_B8_C8", .size = 192,
>+		.oa_type = DRM_XE_OA_FMT_TYPE_OAM_MPEC,
>+		.report_hdr_64bit = true,
>+		.counter_select = 1,
>+	},
>+	[XE_OAM_FORMAT_MPEC8u32_B8_C8] = {
>+		"MPEC8u32_B8_C8", .size = 128,
>+		.oa_type = DRM_XE_OA_FMT_TYPE_OAM_MPEC,
>+		.report_hdr_64bit = true,
>+		.counter_select = 2,
>+	},
> 	[XE_OA_FORMAT_PEC64u64] = {
> 		"PEC64u64", .size = 576,
> 		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 02/18] tests/intel/xe_oa: Get rid of unnecessary DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE
  2025-10-08 21:17 ` [PATCH i-g-t 02/18] tests/intel/xe_oa: Get rid of unnecessary DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE Ashutosh Dixit
@ 2025-10-08 21:55   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-08 21:55 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:49PM -0700, Ashutosh Dixit wrote:
>DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE is needed only when input OA
>properties include an exec queue. In other cases the kernel does not use
>DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE. Stop providing the unnecessary
>DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE property for these cases. This is
>needed to use OA units which don't have an associated hwe.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 14 --------------
> 1 file changed, 14 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index 0a00105bd4..a028823e51 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -1559,8 +1559,6 @@ open_and_read_2_oa_reports(int format_id,
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(format_id),
> 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, exponent,
>-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
>-
> 	};
> 	struct intel_xe_oa_open_prop param = {
> 		.num_properties = ARRAY_SIZE(properties) / 2,
>@@ -1877,7 +1875,6 @@ static void test_oa_exponents(const struct drm_xe_engine_class_instance *hwe)
> 			DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
> 			DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, exponent,
>-			DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
> 		};
> 		struct intel_xe_oa_open_prop param = {
> 			.num_properties = ARRAY_SIZE(properties) / 2,
>@@ -2096,7 +2093,6 @@ static void test_blocking(uint64_t requested_oa_period,
> 	ADD_PROPS(props, idx, OA_PERIOD_EXPONENT, oa_exponent);
> 	ADD_PROPS(props, idx, OA_DISABLED, true);
> 	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
>-	ADD_PROPS(props, idx, OA_ENGINE_INSTANCE, hwe->engine_instance);
>
> 	param.num_properties = (idx - props) / 2;
> 	param.properties_ptr = to_user_pointer(props);
>@@ -2241,7 +2237,6 @@ static void test_polling(uint64_t requested_oa_period,
> 	ADD_PROPS(props, idx, OA_PERIOD_EXPONENT, oa_exponent);
> 	ADD_PROPS(props, idx, OA_DISABLED, true);
> 	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
>-	ADD_PROPS(props, idx, OA_ENGINE_INSTANCE, hwe->engine_instance);
>
> 	param.num_properties = (idx - props) / 2;
> 	param.properties_ptr = to_user_pointer(props);
>@@ -2498,7 +2493,6 @@ test_oa_tlb_invalidate(const struct drm_xe_engine_class_instance *hwe)
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
> 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
> 		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
>-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
> 	};
> 	struct intel_xe_oa_open_prop param = {
> 		.num_properties = ARRAY_SIZE(properties) / 2,
>@@ -2563,7 +2557,6 @@ test_buffer_fill(const struct drm_xe_engine_class_instance *hwe)
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
> 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
>-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
> 		DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE, buffer_fill_size,
> 	};
> 	struct intel_xe_oa_open_prop param = {
>@@ -2611,7 +2604,6 @@ test_non_zero_reason(const struct drm_xe_engine_class_instance *hwe, size_t oa_b
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
> 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
>-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
> 		DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE, oa_buffer_size ?: buffer_fill_size
> 	};
> 	struct intel_xe_oa_open_prop param = {
>@@ -2700,7 +2692,6 @@ test_enable_disable(const struct drm_xe_engine_class_instance *hwe)
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
> 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
> 		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
>-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
> 		DRM_XE_OA_PROPERTY_WAIT_NUM_REPORTS, num_reports,
> 	};
> 	struct intel_xe_oa_open_prop param = {
>@@ -3491,7 +3482,6 @@ test_stress_open_close(const struct drm_xe_engine_class_instance *hwe)
> 			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
> 			DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
> 			DRM_XE_OA_PROPERTY_OA_DISABLED, true,
>-			DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
> 		};
> 		struct intel_xe_oa_open_prop param = {
> 			.num_properties = ARRAY_SIZE(properties) / 2,
>@@ -4008,7 +3998,6 @@ __test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
> 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
>-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
> 	};
> 	struct intel_xe_oa_open_prop param = {
> 		.num_properties = sizeof(properties) / 16,
>@@ -4114,7 +4103,6 @@ __test_mmio_triggered_reports_read(struct drm_xe_engine_class_instance *hwe)
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
> 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
>-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
> 	};
> 	struct intel_xe_oa_open_prop param = {
> 		.num_properties = sizeof(properties) / 16,
>@@ -4593,7 +4581,6 @@ test_tail_address_wrap(const struct drm_xe_engine_class_instance *hwe, size_t oa
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
> 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, exponent,
>-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
> 		DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE, buffer_size,
> 	};
> 	struct intel_xe_oa_open_prop param = {
>@@ -4653,7 +4640,6 @@ static void test_mapped_oa_buffer(map_oa_buffer_test_t test_with_fd_open,
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
> 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
>-		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
> 	};
> 	struct intel_xe_oa_open_prop param = {
> 		.num_properties = ARRAY_SIZE(properties) / 2,
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 03/18] tests/intel/xe_oa: Rename nth_oa_unit to oa_unit_by_id
  2025-10-08 21:17 ` [PATCH i-g-t 03/18] tests/intel/xe_oa: Rename nth_oa_unit to oa_unit_by_id Ashutosh Dixit
@ 2025-10-08 21:56   ` Umesh Nerlige Ramappa
  2025-10-10 21:31     ` Dixit, Ashutosh
  0 siblings, 1 reply; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-08 21:56 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:50PM -0700, Ashutosh Dixit wrote:
>Rename nth_oa_unit to oa_unit_by_id. We will introduce oa_unit_by_type soon
>and oa_unit_by_id fits that naming scheme.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

nit: s/n/id/ in function params

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index a028823e51..65e03b1010 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -493,7 +493,7 @@ static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
> 	return hwe;
> }
>
>-static struct drm_xe_oa_unit *nth_oa_unit(int fd, int n)
>+static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
> {
> 	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
> 	struct drm_xe_oa_unit *oau;
>@@ -502,7 +502,7 @@ static struct drm_xe_oa_unit *nth_oa_unit(int fd, int n)
> 	poau = (u8 *)&qoa->oa_units[0];
> 	for (int i = 0; i < qoa->num_oa_units; i++) {
> 		oau = (struct drm_xe_oa_unit *)poau;
>-		if (i == n)
>+		if (oau->oa_unit_id == n)
> 			return oau;
> 		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
> 	}
>@@ -4348,7 +4348,7 @@ test_oa_unit_concurrent_oa_buffer_read(void)
> 		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, child);
>
> 		/* No OAM support yet */
>-		if (nth_oa_unit(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
>+		if (oa_unit_by_id(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
> 			exit(0);
>
> 		test_blocking(40 * 1000 * 1000, false, 5 * 1000 * 1000, hwe);
>@@ -5027,7 +5027,7 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 		/* See xe_query_oa_units_new() */
> 		igt_require(xe_dev->oa_units);
> 		igt_require(xe_dev->oa_units->num_oa_units);
>-		oau = nth_oa_unit(drm_fd, 0);
>+		oau = oa_unit_by_id(drm_fd, 0);
>
> 		devid = intel_get_drm_devid(drm_fd);
> 		sysfs = igt_sysfs_open(drm_fd);
>-- 
>2.48.1
>

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

* ✓ Xe.CI.BAT: success for Change OA IGT's to run on all OA units
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (17 preceding siblings ...)
  2025-10-08 21:18 ` [PATCH i-g-t 18/18] tests/intel/xe_oa: Constify arguments to various functions Ashutosh Dixit
@ 2025-10-08 22:21 ` Patchwork
  2025-10-08 22:39 ` ✓ i915.CI.BAT: " Patchwork
                   ` (2 subsequent siblings)
  21 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2025-10-08 22:21 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

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

== Series Details ==

Series: Change OA IGT's to run on all OA units
URL   : https://patchwork.freedesktop.org/series/155639/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_8579_BAT -> XEIGTPW_13878_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts


Changes
-------

  No changes found


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

  * IGT: IGT_8579 -> IGTPW_13878

  IGTPW_13878: 13878
  IGT_8579: 8579
  xe-3886-f929eafc95342ea5377f79705864d50dd325c79f: f929eafc95342ea5377f79705864d50dd325c79f

== Logs ==

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

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

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

* ✓ i915.CI.BAT: success for Change OA IGT's to run on all OA units
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (18 preceding siblings ...)
  2025-10-08 22:21 ` ✓ Xe.CI.BAT: success for Change OA IGT's to run on all OA units Patchwork
@ 2025-10-08 22:39 ` Patchwork
  2025-10-09  1:49 ` ✗ Xe.CI.Full: failure " Patchwork
  2025-10-09 11:47 ` ✗ i915.CI.Full: " Patchwork
  21 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2025-10-08 22:39 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

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

== Series Details ==

Series: Change OA IGT's to run on all OA units
URL   : https://patchwork.freedesktop.org/series/155639/
State : success

== Summary ==

CI Bug Log - changes from IGT_8579 -> IGTPW_13878
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

  Missing    (2): fi-snb-2520m bat-adls-6 

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

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

### IGT changes ###

#### Issues hit ####

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

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

  
#### Possible fixes ####

  * igt@i915_selftest@live:
    - bat-mtlp-8:         [DMESG-FAIL][7] ([i915#12061]) -> [PASS][8] +1 other test pass
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/bat-mtlp-8/igt@i915_selftest@live.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/bat-mtlp-8/igt@i915_selftest@live.html
    - bat-jsl-1:          [DMESG-FAIL][9] ([i915#14910]) -> [PASS][10] +1 other test pass
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/bat-jsl-1/igt@i915_selftest@live.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/bat-jsl-1/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-arlh-3:         [DMESG-FAIL][11] ([i915#12061]) -> [PASS][12] +1 other test pass
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/bat-arlh-3/igt@i915_selftest@live@workarounds.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/bat-arlh-3/igt@i915_selftest@live@workarounds.html

  
#### Warnings ####

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

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

  
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12904]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12904
  [i915#13929]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13929
  [i915#14204]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14204
  [i915#14910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14910


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

  * CI: CI-20190529 -> None
  * IGT: IGT_8579 -> IGTPW_13878

  CI-20190529: 20190529
  CI_DRM_17327: f929eafc95342ea5377f79705864d50dd325c79f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_13878: 13878
  IGT_8579: 8579

== Logs ==

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

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

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

* Re: [PATCH i-g-t 04/18] tests/intel/xe_oa: Change oa_unit_engine to take an oa_unit argument
  2025-10-08 21:17 ` [PATCH i-g-t 04/18] tests/intel/xe_oa: Change oa_unit_engine to take an oa_unit argument Ashutosh Dixit
@ 2025-10-08 22:40   ` Umesh Nerlige Ramappa
  2025-10-08 23:19     ` Dixit, Ashutosh
  0 siblings, 1 reply; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-08 22:40 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:51PM -0700, Ashutosh Dixit wrote:
>To prevent code duplication with oa_unit_by_id(), pass 'struct
>drm_xe_oa_unit *' as argument to oa_unit_engine().
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
>---
> tests/intel/xe_oa.c | 32 ++++++++------------------------
> 1 file changed, 8 insertions(+), 24 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index 65e03b1010..c7de1d081d 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -472,25 +472,9 @@ static u64 oa_format_fields(u64 name)
> }
> #define __ff oa_format_fields
>
>-static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
>+static struct drm_xe_engine_class_instance *oa_unit_engine(struct drm_xe_oa_unit *oau)
> {
>-	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
>-	struct drm_xe_engine_class_instance *hwe = NULL;
>-	struct drm_xe_oa_unit *oau;
>-	u8 *poau;
>-
>-	poau = (u8 *)&qoa->oa_units[0];
>-	for (int i = 0; i < qoa->num_oa_units; i++) {
>-		oau = (struct drm_xe_oa_unit *)poau;
>-
>-		if (i == n) {
>-			hwe = oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
>-			break;
>-		}
>-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
>-	}
>-
>-	return hwe;
>+	return !oau ? NULL : oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;

Since this can now return NULL hwe, test_oa_unit_exclusive_stream() and 
test_oa_unit_concurrent_oa_buffer_read() should check if the hwe is NULL 
and account for that.

Umesh

> }
>
> static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
>@@ -4263,7 +4247,7 @@ test_oa_unit_exclusive_stream(bool exponent)
>
> 	/* for each oa unit, open one random perf stream with sample OA */
> 	for (i = 0; i < qoa->num_oa_units; i++) {
>-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
>+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
>
> 		oau = (struct drm_xe_oa_unit *)poau;
> 		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
>@@ -4295,7 +4279,7 @@ test_oa_unit_exclusive_stream(bool exponent)
> 	/* for each oa unit make sure no other streams can be opened */
> 	poau = (u8 *)&qoa->oa_units[0];
> 	for (i = 0; i < qoa->num_oa_units; i++) {
>-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
>+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
> 		int err;
>
> 		oau = (struct drm_xe_oa_unit *)poau;
>@@ -4345,7 +4329,7 @@ test_oa_unit_concurrent_oa_buffer_read(void)
> 	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
>
> 	igt_fork(child, qoa->num_oa_units) {
>-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, child);
>+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, child));
>
> 		/* No OAM support yet */
> 		if (oa_unit_by_id(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
>@@ -4924,18 +4908,18 @@ static const char *xe_engine_class_name(uint32_t engine_class)
>
> #define __for_one_hwe_in_each_oa_unit(hwe) \
> 	for (int m = 0; !m || hwe; m++) \
>-		for_each_if(hwe = oa_unit_engine(drm_fd, m)) \
>+		for_each_if(hwe = oa_unit_engine(oa_unit_by_id(drm_fd, m))) \
> 			igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
> 				      hwe->engine_instance)
>
> /* Only OAG (not OAM) is currently supported */
> #define __for_one_hwe_in_oag(hwe) \
>-	if ((hwe = oa_unit_engine(drm_fd, 0))) \
>+	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
> 		igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
> 			      hwe->engine_instance)
>
> #define __for_one_hwe_in_oag_w_arg(hwe, str) \
>-	if ((hwe = oa_unit_engine(drm_fd, 0))) \
>+	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
> 		igt_dynamic_f("%s-%d-%s", xe_engine_class_name(hwe->engine_class), \
> 			      hwe->engine_instance, str)
>
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 05/18] tests/intel/xe_oa: Add oa_unit_by_type
  2025-10-08 21:17 ` [PATCH i-g-t 05/18] tests/intel/xe_oa: Add oa_unit_by_type Ashutosh Dixit
@ 2025-10-08 22:42   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-08 22:42 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:52PM -0700, Ashutosh Dixit wrote:
>Add a function which returns an OA unit identified by its type (similar to
>oa_unit_by_id()).
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 21 +++++++++++++++++++--
> 1 file changed, 19 insertions(+), 2 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index c7de1d081d..012f5929ce 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -494,6 +494,23 @@ static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
> 	return NULL;
> }
>
>+static struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
>+{
>+	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
>+	struct drm_xe_oa_unit *oau;
>+	u8 *poau;
>+
>+	poau = (u8 *)&qoa->oa_units[0];
>+	for (int i = 0; i < qoa->num_oa_units; i++) {
>+		oau = (struct drm_xe_oa_unit *)poau;
>+		if (oau->oa_unit_type == t)
>+			return oau;
>+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
>+	}
>+
>+	return NULL;
>+}
>+
> static char *
> pretty_print_oa_period(uint64_t oa_period_ns)
> {
>@@ -4914,12 +4931,12 @@ static const char *xe_engine_class_name(uint32_t engine_class)
>
> /* Only OAG (not OAM) is currently supported */
> #define __for_one_hwe_in_oag(hwe) \
>-	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
>+	if ((hwe = oa_unit_engine(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG)))) \
> 		igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
> 			      hwe->engine_instance)
>
> #define __for_one_hwe_in_oag_w_arg(hwe, str) \
>-	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
>+	if ((hwe = oa_unit_engine(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG)))) \
> 		igt_dynamic_f("%s-%d-%s", xe_engine_class_name(hwe->engine_class), \
> 			      hwe->engine_instance, str)
>
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 04/18] tests/intel/xe_oa: Change oa_unit_engine to take an oa_unit argument
  2025-10-08 22:40   ` Umesh Nerlige Ramappa
@ 2025-10-08 23:19     ` Dixit, Ashutosh
  2025-10-08 23:33       ` Umesh Nerlige Ramappa
  0 siblings, 1 reply; 45+ messages in thread
From: Dixit, Ashutosh @ 2025-10-08 23:19 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: igt-dev

On Wed, 08 Oct 2025 15:40:38 -0700, Umesh Nerlige Ramappa wrote:
>
> On Wed, Oct 08, 2025 at 02:17:51PM -0700, Ashutosh Dixit wrote:
> > To prevent code duplication with oa_unit_by_id(), pass 'struct
> > drm_xe_oa_unit *' as argument to oa_unit_engine().
> >
> > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> > ---
> > tests/intel/xe_oa.c | 32 ++++++++------------------------
> > 1 file changed, 8 insertions(+), 24 deletions(-)
> >
> > diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
> > index 65e03b1010..c7de1d081d 100644
> > --- a/tests/intel/xe_oa.c
> > +++ b/tests/intel/xe_oa.c
> > @@ -472,25 +472,9 @@ static u64 oa_format_fields(u64 name)
> > }
> > #define __ff oa_format_fields
> >
> > -static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
> > +static struct drm_xe_engine_class_instance *oa_unit_engine(struct drm_xe_oa_unit *oau)
> > {
> > -	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
> > -	struct drm_xe_engine_class_instance *hwe = NULL;
> > -	struct drm_xe_oa_unit *oau;
> > -	u8 *poau;
> > -
> > -	poau = (u8 *)&qoa->oa_units[0];
> > -	for (int i = 0; i < qoa->num_oa_units; i++) {
> > -		oau = (struct drm_xe_oa_unit *)poau;
> > -
> > -		if (i == n) {
> > -			hwe = oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
> > -			break;
> > -		}
> > -		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
> > -	}
> > -
> > -	return hwe;
> > +	return !oau ? NULL : oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
>
> Since this can now return NULL hwe, test_oa_unit_exclusive_stream() and
> test_oa_unit_concurrent_oa_buffer_read() should check if the hwe is NULL
> and account for that.

For test_oa_unit_exclusive_stream() this is done in the patch 16/18
("tests/intel/xe_oa: Run test_oa_unit_exclusive_stream on multiple OA
units").

For test_oa_unit_concurrent_oa_buffer_read(), hwe is eliminated in Patch
10/18 ("tests/intel/xe_oa: Convert blocking/polling tests to take OA unit
arguments").

So looks ok to me I think. Thanks.


>
> Umesh
>
> > }
> >
> > static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
> > @@ -4263,7 +4247,7 @@ test_oa_unit_exclusive_stream(bool exponent)
> >
> >	/* for each oa unit, open one random perf stream with sample OA */
> >	for (i = 0; i < qoa->num_oa_units; i++) {
> > -		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
> > +		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
> >
> >		oau = (struct drm_xe_oa_unit *)poau;
> >		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
> > @@ -4295,7 +4279,7 @@ test_oa_unit_exclusive_stream(bool exponent)
> >	/* for each oa unit make sure no other streams can be opened */
> >	poau = (u8 *)&qoa->oa_units[0];
> >	for (i = 0; i < qoa->num_oa_units; i++) {
> > -		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
> > +		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
> >		int err;
> >
> >		oau = (struct drm_xe_oa_unit *)poau;
> > @@ -4345,7 +4329,7 @@ test_oa_unit_concurrent_oa_buffer_read(void)
> >	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
> >
> >	igt_fork(child, qoa->num_oa_units) {
> > -		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, child);
> > +		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, child));
> >
> >		/* No OAM support yet */
> >		if (oa_unit_by_id(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
> > @@ -4924,18 +4908,18 @@ static const char *xe_engine_class_name(uint32_t engine_class)
> >
> > #define __for_one_hwe_in_each_oa_unit(hwe) \
> >	for (int m = 0; !m || hwe; m++) \
> > -		for_each_if(hwe = oa_unit_engine(drm_fd, m)) \
> > +		for_each_if(hwe = oa_unit_engine(oa_unit_by_id(drm_fd, m))) \
> >			igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
> >				      hwe->engine_instance)
> >
> > /* Only OAG (not OAM) is currently supported */
> > #define __for_one_hwe_in_oag(hwe) \
> > -	if ((hwe = oa_unit_engine(drm_fd, 0))) \
> > +	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
> >		igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
> >			      hwe->engine_instance)
> >
> > #define __for_one_hwe_in_oag_w_arg(hwe, str) \
> > -	if ((hwe = oa_unit_engine(drm_fd, 0))) \
> > +	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
> >		igt_dynamic_f("%s-%d-%s", xe_engine_class_name(hwe->engine_class), \
> >			      hwe->engine_instance, str)
> >
> > --
> > 2.48.1
> >

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

* Re: [PATCH i-g-t 06/18] tests/intel/xe_oa: Add for_each_oa_unit
  2025-10-08 21:17 ` [PATCH i-g-t 06/18] tests/intel/xe_oa: Add for_each_oa_unit Ashutosh Dixit
@ 2025-10-08 23:31   ` Umesh Nerlige Ramappa
  2025-10-09 16:40     ` Umesh Nerlige Ramappa
  0 siblings, 1 reply; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-08 23:31 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:53PM -0700, Ashutosh Dixit wrote:
>Add a for_each_oa_unit iterator, which eliminates code duplication when
>iterating over OA units obtained from OA unit query.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
>---
> tests/intel/xe_oa.c | 21 +++++++++++----------
> 1 file changed, 11 insertions(+), 10 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index 012f5929ce..bc71bfcd30 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -477,18 +477,21 @@ static struct drm_xe_engine_class_instance *oa_unit_engine(struct drm_xe_oa_unit
> 	return !oau ? NULL : oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
> }
>
>+#define for_each_oa_unit(qoa, oau, poau, i) \
>+	for (i = 0, qoa = xe_oa_units(drm_fd), poau = (u8 *)&qoa->oa_units[0]; \
>+	     oau = (struct drm_xe_oa_unit *)poau, i < qoa->num_oa_units; \
>+	     poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]), i++)
>+
> static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
> {
>-	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
>+	struct drm_xe_query_oa_units *qoa;
> 	struct drm_xe_oa_unit *oau;
> 	u8 *poau;
>+	int i;
>
>-	poau = (u8 *)&qoa->oa_units[0];
>-	for (int i = 0; i < qoa->num_oa_units; i++) {
>-		oau = (struct drm_xe_oa_unit *)poau;
>+	for_each_oa_unit(qoa, oau, poau, i) {
> 		if (oau->oa_unit_id == n)
> 			return oau;
>-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
> 	}
>
> 	return NULL;
>@@ -496,16 +499,14 @@ static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
>
> static struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
> {
>-	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
>+	struct drm_xe_query_oa_units *qoa;
> 	struct drm_xe_oa_unit *oau;
> 	u8 *poau;
>+	int i;
>
>-	poau = (u8 *)&qoa->oa_units[0];
>-	for (int i = 0; i < qoa->num_oa_units; i++) {
>-		oau = (struct drm_xe_oa_unit *)poau;
>+	for_each_oa_unit(qoa, oau, poau, i) {
> 		if (oau->oa_unit_type == t)
> 			return oau;
>-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
> 	}
>
> 	return NULL;

If it's possible to keep the interface for iterators simple, I would go 
for that. i, poau can be hidden from the caller. Something like this:

// NOTE: not compiled/tested

static u32 xe_oa_first_unit(int fd, struct drm_xe_oa_unit **oau)
{
         struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
         *oau = &qoa->oa_units[0];

         return qoa->num_oa_units;
}

static void xe_oa_next_unit(struct drm_xe_oa_unit **oau)
{
	struct drm_xe_oa_unit *poau = *oau;

         return (u8 *)poau + sizeof(*poau) + poau->num_engines * sizeof(poau->eci[0]);
}

#define for_each_oa_unit(fd, oau) \
         for (u32 i = 0, num = xe_oa_first_unit(fd, &oau); \
              oau && i < num; \
              i++, xe_oa_next_unit(&oau))

static const struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
{
         struct drm_xe_oa_unit *oau;

         for_each_oa_unit(fd, oau) {
                 if (oau->oa_unit_id == n)
                         return oau;
         }

         return NULL;
}

static const struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
{
         struct drm_xe_oa_unit *oau;

         for_each_oa_unit(fd, oau) {
                 if (oau->oa_unit_type == t)
                         return oau;
         }

         return NULL;
}

Thanks,
Umesh



>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 04/18] tests/intel/xe_oa: Change oa_unit_engine to take an oa_unit argument
  2025-10-08 23:19     ` Dixit, Ashutosh
@ 2025-10-08 23:33       ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-08 23:33 UTC (permalink / raw)
  To: Dixit, Ashutosh; +Cc: igt-dev

On Wed, Oct 08, 2025 at 04:19:31PM -0700, Dixit, Ashutosh wrote:
>On Wed, 08 Oct 2025 15:40:38 -0700, Umesh Nerlige Ramappa wrote:
>>
>> On Wed, Oct 08, 2025 at 02:17:51PM -0700, Ashutosh Dixit wrote:
>> > To prevent code duplication with oa_unit_by_id(), pass 'struct
>> > drm_xe_oa_unit *' as argument to oa_unit_engine().
>> >
>> > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
>> > ---
>> > tests/intel/xe_oa.c | 32 ++++++++------------------------
>> > 1 file changed, 8 insertions(+), 24 deletions(-)
>> >
>> > diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>> > index 65e03b1010..c7de1d081d 100644
>> > --- a/tests/intel/xe_oa.c
>> > +++ b/tests/intel/xe_oa.c
>> > @@ -472,25 +472,9 @@ static u64 oa_format_fields(u64 name)
>> > }
>> > #define __ff oa_format_fields
>> >
>> > -static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
>> > +static struct drm_xe_engine_class_instance *oa_unit_engine(struct drm_xe_oa_unit *oau)
>> > {
>> > -	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
>> > -	struct drm_xe_engine_class_instance *hwe = NULL;
>> > -	struct drm_xe_oa_unit *oau;
>> > -	u8 *poau;
>> > -
>> > -	poau = (u8 *)&qoa->oa_units[0];
>> > -	for (int i = 0; i < qoa->num_oa_units; i++) {
>> > -		oau = (struct drm_xe_oa_unit *)poau;
>> > -
>> > -		if (i == n) {
>> > -			hwe = oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
>> > -			break;
>> > -		}
>> > -		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
>> > -	}
>> > -
>> > -	return hwe;
>> > +	return !oau ? NULL : oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
>>
>> Since this can now return NULL hwe, test_oa_unit_exclusive_stream() and
>> test_oa_unit_concurrent_oa_buffer_read() should check if the hwe is NULL
>> and account for that.
>
>For test_oa_unit_exclusive_stream() this is done in the patch 16/18
>("tests/intel/xe_oa: Run test_oa_unit_exclusive_stream on multiple OA
>units").
>
>For test_oa_unit_concurrent_oa_buffer_read(), hwe is eliminated in Patch
>10/18 ("tests/intel/xe_oa: Convert blocking/polling tests to take OA unit
>arguments").
>
>So looks ok to me I think. Thanks.
>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Thanks,
Umesh

>
>>
>> Umesh
>>
>> > }
>> >
>> > static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
>> > @@ -4263,7 +4247,7 @@ test_oa_unit_exclusive_stream(bool exponent)
>> >
>> >	/* for each oa unit, open one random perf stream with sample OA */
>> >	for (i = 0; i < qoa->num_oa_units; i++) {
>> > -		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
>> > +		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
>> >
>> >		oau = (struct drm_xe_oa_unit *)poau;
>> >		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
>> > @@ -4295,7 +4279,7 @@ test_oa_unit_exclusive_stream(bool exponent)
>> >	/* for each oa unit make sure no other streams can be opened */
>> >	poau = (u8 *)&qoa->oa_units[0];
>> >	for (i = 0; i < qoa->num_oa_units; i++) {
>> > -		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
>> > +		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
>> >		int err;
>> >
>> >		oau = (struct drm_xe_oa_unit *)poau;
>> > @@ -4345,7 +4329,7 @@ test_oa_unit_concurrent_oa_buffer_read(void)
>> >	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
>> >
>> >	igt_fork(child, qoa->num_oa_units) {
>> > -		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, child);
>> > +		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, child));
>> >
>> >		/* No OAM support yet */
>> >		if (oa_unit_by_id(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
>> > @@ -4924,18 +4908,18 @@ static const char *xe_engine_class_name(uint32_t engine_class)
>> >
>> > #define __for_one_hwe_in_each_oa_unit(hwe) \
>> >	for (int m = 0; !m || hwe; m++) \
>> > -		for_each_if(hwe = oa_unit_engine(drm_fd, m)) \
>> > +		for_each_if(hwe = oa_unit_engine(oa_unit_by_id(drm_fd, m))) \
>> >			igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
>> >				      hwe->engine_instance)
>> >
>> > /* Only OAG (not OAM) is currently supported */
>> > #define __for_one_hwe_in_oag(hwe) \
>> > -	if ((hwe = oa_unit_engine(drm_fd, 0))) \
>> > +	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
>> >		igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
>> >			      hwe->engine_instance)
>> >
>> > #define __for_one_hwe_in_oag_w_arg(hwe, str) \
>> > -	if ((hwe = oa_unit_engine(drm_fd, 0))) \
>> > +	if ((hwe = oa_unit_engine(oa_unit_by_id(drm_fd, 0)))) \
>> >		igt_dynamic_f("%s-%d-%s", xe_engine_class_name(hwe->engine_class), \
>> >			      hwe->engine_instance, str)
>> >
>> > --
>> > 2.48.1
>> >

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

* ✗ Xe.CI.Full: failure for Change OA IGT's to run on all OA units
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (19 preceding siblings ...)
  2025-10-08 22:39 ` ✓ i915.CI.BAT: " Patchwork
@ 2025-10-09  1:49 ` Patchwork
  2025-10-09 11:47 ` ✗ i915.CI.Full: " Patchwork
  21 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2025-10-09  1:49 UTC (permalink / raw)
  To: Dixit, Ashutosh; +Cc: igt-dev

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

== Series Details ==

Series: Change OA IGT's to run on all OA units
URL   : https://patchwork.freedesktop.org/series/155639/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_8579_FULL -> XEIGTPW_13878_FULL
====================================================

Summary
-------

  **FAILURE**

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

  Missing    (1): shard-adlp 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-bmg:          [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@xe_evict@evict-beng-mixed-many-threads-small.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * {igt@xe_oa@non-zero-reason-all} (NEW):
    - shard-dg2-set2:     NOTRUN -> [SKIP][3]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@xe_oa@non-zero-reason-all.html

  
#### Suppressed ####

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

  * {igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-blt}:
    - shard-bmg:          NOTRUN -> [SKIP][4]
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-blt.html

  * {igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-shrfb-draw-blt}:
    - shard-lnl:          NOTRUN -> [SKIP][5]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-shrfb-draw-blt.html

  
New tests
---------

  New tests have been introduced between XEIGT_8579_FULL and XEIGTPW_13878_FULL:

### New IGT tests (35) ###

  * igt@xe_oa@blocking@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [1.01, 1.02] s

  * igt@xe_oa@buffer-size@oag-0-128m:
    - Statuses : 1 pass(s)
    - Exec time: [9.40] s

  * igt@xe_oa@buffer-size@oag-0-256k:
    - Statuses : 1 pass(s)
    - Exec time: [0.04] s

  * igt@xe_oa@closed-fd-and-unmapped-access@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.04, 0.05] s

  * igt@xe_oa@enable-disable@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01, 0.02] s

  * igt@xe_oa@invalid-map-oa-buffer@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01] s

  * igt@xe_oa@map-oa-buffer@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.05, 0.06] s

  * igt@xe_oa@mi-rpc@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01] s

  * igt@xe_oa@mmio-triggered-reports-read@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.03, 0.04] s

  * igt@xe_oa@mmio-triggered-reports@oag-0:
    - Statuses : 1 pass(s)
    - Exec time: [0.03] s

  * igt@xe_oa@non-privileged-access-vaddr@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01, 0.02] s

  * igt@xe_oa@non-privileged-map-oa-buffer@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01, 0.03] s

  * igt@xe_oa@non-zero-reason-all:
    - Statuses : 2 pass(s) 1 skip(s)
    - Exec time: [0.0, 0.25] s

  * igt@xe_oa@non-zero-reason-all@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.05] s

  * igt@xe_oa@non-zero-reason-all@oam-2:
    - Statuses : 2 pass(s)
    - Exec time: [0.07] s

  * igt@xe_oa@non-zero-reason-all@oam-3:
    - Statuses : 1 pass(s)
    - Exec time: [0.06] s

  * igt@xe_oa@non-zero-reason-all@sag-1:
    - Statuses : 2 pass(s)
    - Exec time: [0.06, 0.07] s

  * igt@xe_oa@non-zero-reason@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [1.19] s

  * igt@xe_oa@oa-exponents@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [3.47, 3.49] s

  * igt@xe_oa@oa-formats@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.12] s

  * igt@xe_oa@oa-regs-whitelisted@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01, 0.02] s

  * igt@xe_oa@polling@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [1.03] s

  * igt@xe_oa@privileged-forked-access-vaddr@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01, 0.02] s

  * igt@xe_oa@stress-open-close@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [2.17] s

  * igt@xe_oa@syncs-syncobj-cfg@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01] s

  * igt@xe_oa@syncs-syncobj-none@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.00, 0.01] s

  * igt@xe_oa@syncs-syncobj-wait-cfg@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01] s

  * igt@xe_oa@syncs-syncobj-wait@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.00, 0.01] s

  * igt@xe_oa@syncs-ufence-wait-cfg@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01] s

  * igt@xe_oa@syncs-ufence-wait@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01] s

  * igt@xe_oa@syncs-userptr-wait-cfg@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01, 0.02] s

  * igt@xe_oa@syncs-userptr-wait@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.01] s

  * igt@xe_oa@tail-address-wrap@oag-0-128m:
    - Statuses : 1 pass(s)
    - Exec time: [3.16] s

  * igt@xe_oa@tail-address-wrap@oag-0-256k:
    - Statuses : 1 pass(s)
    - Exec time: [0.01] s

  * igt@xe_oa@unprivileged-single-ctx-counters@oag-0:
    - Statuses : 2 pass(s)
    - Exec time: [0.06] s

  

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

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

### IGT changes ###

#### Issues hit ####

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

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

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][9] ([Intel XE#1124])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-434/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

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

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-lnl:          NOTRUN -> [SKIP][11] ([Intel XE#1124])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-1/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#2314] / [Intel XE#2894])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][13] ([Intel XE#2191])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p.html

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

  * igt@kms_bw@linear-tiling-4-displays-2160x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][15] ([Intel XE#1512])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-5/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html

  * igt@kms_bw@linear-tiling-4-displays-3840x2160p:
    - shard-dg2-set2:     NOTRUN -> [SKIP][16] ([Intel XE#367])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-434/igt@kms_bw@linear-tiling-4-displays-3840x2160p.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#2887]) +4 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-8/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc.html
    - shard-lnl:          NOTRUN -> [SKIP][18] ([Intel XE#2887])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-4/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [SKIP][19] ([Intel XE#787]) +118 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-6.html

  * igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][20] ([Intel XE#455] / [Intel XE#787]) +18 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-4.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][21] ([Intel XE#2907]) +1 other test skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-433/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#3432])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-dp-4:
    - shard-dg2-set2:     [PASS][23] -> [INCOMPLETE][24] ([Intel XE#6168])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-dp-4.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     [PASS][25] -> [DMESG-WARN][26] ([Intel XE#1727] / [Intel XE#3113])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-6.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-6.html

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#2652] / [Intel XE#787]) +21 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-8/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2.html

  * igt@kms_chamelium_frames@dp-crc-single:
    - shard-bmg:          NOTRUN -> [SKIP][28] ([Intel XE#2252]) +5 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@kms_chamelium_frames@dp-crc-single.html

  * igt@kms_chamelium_hpd@dp-hpd-after-suspend:
    - shard-lnl:          NOTRUN -> [SKIP][29] ([Intel XE#373]) +1 other test skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-4/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html

  * igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode:
    - shard-dg2-set2:     NOTRUN -> [SKIP][30] ([Intel XE#373]) +3 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode.html

  * igt@kms_content_protection@atomic-dpms@pipe-a-dp-4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][31] ([Intel XE#1178]) +1 other test fail
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-434/igt@kms_content_protection@atomic-dpms@pipe-a-dp-4.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-dg2-set2:     NOTRUN -> [SKIP][32] ([Intel XE#307])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-433/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@lic-type-0@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][33] ([Intel XE#1178]) +2 other tests fail
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@kms_content_protection@lic-type-0@pipe-a-dp-2.html

  * igt@kms_content_protection@type1:
    - shard-bmg:          NOTRUN -> [SKIP][34] ([Intel XE#2341])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-4/igt@kms_content_protection@type1.html
    - shard-lnl:          NOTRUN -> [SKIP][35] ([Intel XE#3278])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-4/igt@kms_content_protection@type1.html

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

  * igt@kms_cursor_legacy@cursorb-vs-flipb-legacy:
    - shard-bmg:          [PASS][37] -> [SKIP][38] ([Intel XE#2291]) +2 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-2/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-bmg:          NOTRUN -> [SKIP][39] ([Intel XE#2286])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-lnl:          NOTRUN -> [SKIP][40] ([Intel XE#4302])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-8/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [SKIP][41] ([Intel XE#4494] / [i915#3804])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-436/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6.html

  * igt@kms_dp_aux_dev:
    - shard-bmg:          NOTRUN -> [SKIP][42] ([Intel XE#3009])
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_dp_aux_dev.html

  * igt@kms_dp_link_training@uhbr-mst:
    - shard-lnl:          NOTRUN -> [SKIP][43] ([Intel XE#4354])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-4/igt@kms_dp_link_training@uhbr-mst.html
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#4354])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-8/igt@kms_dp_link_training@uhbr-mst.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][45] ([Intel XE#4356])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@kms_dp_link_training@uhbr-mst.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-dg2-set2:     NOTRUN -> [SKIP][46] ([Intel XE#455]) +3 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@kms_dsc@dsc-fractional-bpp.html

  * igt@kms_feature_discovery@display-3x:
    - shard-lnl:          NOTRUN -> [SKIP][47] ([Intel XE#703])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-3/igt@kms_feature_discovery@display-3x.html
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#2373])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-7/igt@kms_feature_discovery@display-3x.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][49] ([Intel XE#703])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@kms_feature_discovery@display-3x.html

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

  * igt@kms_flip@2x-flip-vs-blocking-wf-vblank:
    - shard-bmg:          [PASS][51] -> [SKIP][52] ([Intel XE#2316]) +3 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-2/igt@kms_flip@2x-flip-vs-blocking-wf-vblank.html
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_flip@2x-flip-vs-blocking-wf-vblank.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][53] ([Intel XE#2293] / [Intel XE#2380]) +1 other test skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode:
    - shard-bmg:          NOTRUN -> [SKIP][54] ([Intel XE#2293]) +1 other test skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][55] ([Intel XE#651]) +1 other test skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt.html

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

  * igt@kms_frontbuffer_tracking@drrs-2p-rte:
    - shard-lnl:          NOTRUN -> [SKIP][57] ([Intel XE#656]) +7 other tests skip
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-7/igt@kms_frontbuffer_tracking@drrs-2p-rte.html

  * igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc:
    - shard-dg2-set2:     NOTRUN -> [SKIP][58] ([Intel XE#651]) +8 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][59] ([Intel XE#5390]) +8 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][60] ([Intel XE#2312]) +2 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-msflip-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][61] ([Intel XE#653]) +12 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-436/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-msflip-blt.html

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

  * igt@kms_frontbuffer_tracking@plane-fbc-rte:
    - shard-bmg:          NOTRUN -> [SKIP][63] ([Intel XE#2350])
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_frontbuffer_tracking@plane-fbc-rte.html

  * igt@kms_hdr@invalid-hdr:
    - shard-dg2-set2:     [PASS][64] -> [SKIP][65] ([Intel XE#455])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-463/igt@kms_hdr@invalid-hdr.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-432/igt@kms_hdr@invalid-hdr.html
    - shard-bmg:          [PASS][66] -> [SKIP][67] ([Intel XE#1503])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-4/igt@kms_hdr@invalid-hdr.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@kms_hdr@invalid-hdr.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][68] ([Intel XE#4090])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][69] ([Intel XE#2925])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-466/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_plane_cursor@viewport@pipe-a-hdmi-a-6-size-64:
    - shard-dg2-set2:     NOTRUN -> [FAIL][70] ([Intel XE#616])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@kms_plane_cursor@viewport@pipe-a-hdmi-a-6-size-64.html

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

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

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

  * igt@kms_pm_backlight@basic-brightness:
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#870])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@kms_pm_backlight@basic-brightness.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][76] ([Intel XE#870])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@kms_pm_backlight@basic-brightness.html

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

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

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-bmg:          NOTRUN -> [SKIP][79] ([Intel XE#1406] / [Intel XE#1489]) +1 other test skip
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][80] ([Intel XE#1406] / [Intel XE#1489]) +3 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-433/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html

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

  * igt@kms_psr@fbc-pr-cursor-plane-onoff:
    - shard-bmg:          NOTRUN -> [SKIP][82] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +4 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@kms_psr@fbc-pr-cursor-plane-onoff.html

  * igt@kms_psr@fbc-psr2-dpms:
    - shard-lnl:          NOTRUN -> [SKIP][83] ([Intel XE#1406])
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-3/igt@kms_psr@fbc-psr2-dpms.html

  * igt@kms_psr@fbc-psr2-dpms@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][84] ([Intel XE#1406] / [Intel XE#4609])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-3/igt@kms_psr@fbc-psr2-dpms@edp-1.html

  * igt@kms_psr@psr-primary-page-flip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][85] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +2 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@kms_psr@psr-primary-page-flip.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-dg2-set2:     NOTRUN -> [SKIP][86] ([Intel XE#1406] / [Intel XE#2939])
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-436/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - shard-bmg:          NOTRUN -> [SKIP][87] ([Intel XE#1435])
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@kms_vrr@max-min:
    - shard-bmg:          NOTRUN -> [SKIP][88] ([Intel XE#1499])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-4/igt@kms_vrr@max-min.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-dg2-set2:     NOTRUN -> [SKIP][89] ([Intel XE#1091] / [Intel XE#2849])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@sriov_basic@enable-vfs-autoprobe-off.html
    - shard-lnl:          NOTRUN -> [SKIP][90] ([Intel XE#1091] / [Intel XE#2849])
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-1/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@xe_copy_basic@mem-copy-linear-0x369:
    - shard-dg2-set2:     NOTRUN -> [SKIP][91] ([Intel XE#1123])
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-466/igt@xe_copy_basic@mem-copy-linear-0x369.html

  * igt@xe_eu_stall@invalid-gt-id:
    - shard-dg2-set2:     NOTRUN -> [SKIP][92] ([Intel XE#5626])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@xe_eu_stall@invalid-gt-id.html

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

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate:
    - shard-dg2-set2:     [PASS][94] -> [SKIP][95] ([Intel XE#1392]) +5 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-464/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate:
    - shard-dg2-set2:     NOTRUN -> [SKIP][96] ([Intel XE#1392])
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate.html

  * igt@xe_exec_basic@multigpu-no-exec-null:
    - shard-bmg:          NOTRUN -> [SKIP][97] ([Intel XE#2322]) +2 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@xe_exec_basic@multigpu-no-exec-null.html

  * igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race:
    - shard-lnl:          NOTRUN -> [SKIP][98] ([Intel XE#1392])
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-2/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html

  * igt@xe_exec_fault_mode@many-execqueues-userptr-invalidate-imm:
    - shard-dg2-set2:     NOTRUN -> [SKIP][99] ([Intel XE#288]) +8 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-433/igt@xe_exec_fault_mode@many-execqueues-userptr-invalidate-imm.html

  * igt@xe_exec_sip_eudebug@breakpoint-writesip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][100] ([Intel XE#4837]) +5 other tests skip
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-436/igt@xe_exec_sip_eudebug@breakpoint-writesip.html
    - shard-lnl:          NOTRUN -> [SKIP][101] ([Intel XE#4837]) +2 other tests skip
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-5/igt@xe_exec_sip_eudebug@breakpoint-writesip.html

  * igt@xe_exec_system_allocator@threads-many-large-mmap-huge:
    - shard-lnl:          NOTRUN -> [SKIP][102] ([Intel XE#4943]) +3 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-4/igt@xe_exec_system_allocator@threads-many-large-mmap-huge.html

  * igt@xe_exec_system_allocator@threads-many-stride-mmap-remap-eocheck:
    - shard-dg2-set2:     NOTRUN -> [SKIP][103] ([Intel XE#4915]) +95 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@xe_exec_system_allocator@threads-many-stride-mmap-remap-eocheck.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-new-huge:
    - shard-bmg:          NOTRUN -> [SKIP][104] ([Intel XE#4943]) +16 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-new-huge.html

  * igt@xe_module_load@load:
    - shard-bmg:          ([PASS][105], [PASS][106], [PASS][107], [PASS][108], [PASS][109], [PASS][110], [PASS][111], [PASS][112], [PASS][113], [PASS][114], [PASS][115], [PASS][116], [PASS][117], [PASS][118], [PASS][119], [PASS][120], [PASS][121], [PASS][122], [PASS][123], [PASS][124], [PASS][125], [PASS][126], [PASS][127], [PASS][128], [PASS][129]) -> ([PASS][130], [PASS][131], [PASS][132], [PASS][133], [PASS][134], [PASS][135], [PASS][136], [PASS][137], [PASS][138], [PASS][139], [PASS][140], [PASS][141], [PASS][142], [PASS][143], [PASS][144], [PASS][145], [PASS][146], [PASS][147], [PASS][148], [PASS][149], [SKIP][150], [PASS][151], [PASS][152], [PASS][153], [PASS][154], [PASS][155]) ([Intel XE#2457])
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-7/igt@xe_module_load@load.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@xe_module_load@load.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@xe_module_load@load.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-7/igt@xe_module_load@load.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-7/igt@xe_module_load@load.html
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-3/igt@xe_module_load@load.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-3/igt@xe_module_load@load.html
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@xe_module_load@load.html
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-1/igt@xe_module_load@load.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-8/igt@xe_module_load@load.html
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@xe_module_load@load.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-2/igt@xe_module_load@load.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-2/igt@xe_module_load@load.html
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-2/igt@xe_module_load@load.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-5/igt@xe_module_load@load.html
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-5/igt@xe_module_load@load.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-3/igt@xe_module_load@load.html
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-3/igt@xe_module_load@load.html
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-5/igt@xe_module_load@load.html
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-8/igt@xe_module_load@load.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-1/igt@xe_module_load@load.html
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-1/igt@xe_module_load@load.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-4/igt@xe_module_load@load.html
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-4/igt@xe_module_load@load.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-4/igt@xe_module_load@load.html
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-8/igt@xe_module_load@load.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-8/igt@xe_module_load@load.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@xe_module_load@load.html
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@xe_module_load@load.html
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@xe_module_load@load.html
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@xe_module_load@load.html
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-8/igt@xe_module_load@load.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-4/igt@xe_module_load@load.html
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@xe_module_load@load.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@xe_module_load@load.html
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-5/igt@xe_module_load@load.html
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-5/igt@xe_module_load@load.html
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-5/igt@xe_module_load@load.html
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-4/igt@xe_module_load@load.html
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-4/igt@xe_module_load@load.html
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-7/igt@xe_module_load@load.html
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-7/igt@xe_module_load@load.html
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-7/igt@xe_module_load@load.html
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@xe_module_load@load.html
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@xe_module_load@load.html
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@xe_module_load@load.html
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@xe_module_load@load.html
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@xe_module_load@load.html
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@xe_module_load@load.html
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@xe_module_load@load.html
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@xe_module_load@load.html
    - shard-dg2-set2:     ([PASS][156], [PASS][157], [PASS][158], [PASS][159], [PASS][160], [PASS][161], [PASS][162], [PASS][163], [PASS][164], [PASS][165], [PASS][166], [PASS][167], [PASS][168], [PASS][169], [PASS][170], [PASS][171], [PASS][172], [PASS][173], [PASS][174], [PASS][175], [PASS][176], [PASS][177], [PASS][178], [PASS][179], [PASS][180]) -> ([PASS][181], [PASS][182], [PASS][183], [PASS][184], [PASS][185], [PASS][186], [PASS][187], [PASS][188], [PASS][189], [PASS][190], [PASS][191], [PASS][192], [PASS][193], [SKIP][194], [PASS][195], [PASS][196], [PASS][197], [PASS][198], [PASS][199], [PASS][200], [PASS][201], [PASS][202], [PASS][203], [PASS][204], [PASS][205], [PASS][206]) ([Intel XE#378])
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-466/igt@xe_module_load@load.html
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-466/igt@xe_module_load@load.html
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-464/igt@xe_module_load@load.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-463/igt@xe_module_load@load.html
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-463/igt@xe_module_load@load.html
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-435/igt@xe_module_load@load.html
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-464/igt@xe_module_load@load.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-432/igt@xe_module_load@load.html
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-464/igt@xe_module_load@load.html
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-464/igt@xe_module_load@load.html
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-434/igt@xe_module_load@load.html
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-434/igt@xe_module_load@load.html
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-432/igt@xe_module_load@load.html
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-432/igt@xe_module_load@load.html
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-432/igt@xe_module_load@load.html
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-463/igt@xe_module_load@load.html
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-463/igt@xe_module_load@load.html
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-463/igt@xe_module_load@load.html
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-433/igt@xe_module_load@load.html
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-435/igt@xe_module_load@load.html
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-435/igt@xe_module_load@load.html
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-433/igt@xe_module_load@load.html
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-433/igt@xe_module_load@load.html
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-436/igt@xe_module_load@load.html
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-436/igt@xe_module_load@load.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-432/igt@xe_module_load@load.html
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-432/igt@xe_module_load@load.html
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@xe_module_load@load.html
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@xe_module_load@load.html
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@xe_module_load@load.html
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-434/igt@xe_module_load@load.html
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-434/igt@xe_module_load@load.html
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-434/igt@xe_module_load@load.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-432/igt@xe_module_load@load.html
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-466/igt@xe_module_load@load.html
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-466/igt@xe_module_load@load.html
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@xe_module_load@load.html
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@xe_module_load@load.html
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@xe_module_load@load.html
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@xe_module_load@load.html
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@xe_module_load@load.html
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@xe_module_load@load.html
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-435/igt@xe_module_load@load.html
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-436/igt@xe_module_load@load.html
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-433/igt@xe_module_load@load.html
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-432/igt@xe_module_load@load.html
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-433/igt@xe_module_load@load.html
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-433/igt@xe_module_load@load.html
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-433/igt@xe_module_load@load.html
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-436/igt@xe_module_load@load.html
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-436/igt@xe_module_load@load.html

  * igt@xe_oa@oa-unit-exclusive-stream-sample-oa:
    - shard-dg2-set2:     NOTRUN -> [SKIP][207] ([Intel XE#3573]) +2 other tests skip
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@xe_oa@oa-unit-exclusive-stream-sample-oa.html

  * igt@xe_pat@pat-index-xehpc:
    - shard-bmg:          NOTRUN -> [SKIP][208] ([Intel XE#1420])
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-4/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelpg:
    - shard-dg2-set2:     NOTRUN -> [SKIP][209] ([Intel XE#979])
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-432/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pm@d3cold-basic-exec:
    - shard-dg2-set2:     NOTRUN -> [SKIP][210] ([Intel XE#2284] / [Intel XE#366])
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-436/igt@xe_pm@d3cold-basic-exec.html

  * igt@xe_pxp@pxp-stale-bo-bind-post-termination-irq:
    - shard-dg2-set2:     NOTRUN -> [SKIP][211] ([Intel XE#4733])
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@xe_pxp@pxp-stale-bo-bind-post-termination-irq.html

  * igt@xe_query@multigpu-query-cs-cycles:
    - shard-bmg:          NOTRUN -> [SKIP][212] ([Intel XE#944]) +2 other tests skip
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-8/igt@xe_query@multigpu-query-cs-cycles.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][213] ([Intel XE#944]) +1 other test skip
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-466/igt@xe_query@multigpu-query-cs-cycles.html
    - shard-lnl:          NOTRUN -> [SKIP][214] ([Intel XE#944])
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-5/igt@xe_query@multigpu-query-cs-cycles.html

  * igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][215] ([Intel XE#4130])
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs.html
    - shard-lnl:          NOTRUN -> [SKIP][216] ([Intel XE#4130])
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-1/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs.html

  * igt@xe_sriov_flr@flr-vfs-parallel:
    - shard-dg2-set2:     NOTRUN -> [SKIP][217] ([Intel XE#4273])
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-466/igt@xe_sriov_flr@flr-vfs-parallel.html

  
#### Possible fixes ####

  * igt@intel_hwmon@hwmon-write:
    - shard-bmg:          [FAIL][218] ([Intel XE#4665]) -> [PASS][219]
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-2/igt@intel_hwmon@hwmon-write.html
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@intel_hwmon@hwmon-write.html

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

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs:
    - shard-dg2-set2:     [INCOMPLETE][222] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4345] / [Intel XE#6168]) -> [PASS][223]
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-434/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
    - shard-dg2-set2:     [INCOMPLETE][224] ([Intel XE#2705] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) -> [PASS][225]
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     [INCOMPLETE][226] ([Intel XE#2705] / [Intel XE#4212] / [Intel XE#4522]) -> [PASS][227]
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-6.html
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-6.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-legacy:
    - shard-bmg:          [SKIP][228] ([Intel XE#2291]) -> [PASS][229] +3 other tests pass
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-bmg:          [SKIP][230] ([Intel XE#4354]) -> [PASS][231]
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@kms_dp_link_training@non-uhbr-sst.html
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-4/igt@kms_dp_link_training@non-uhbr-sst.html

  * igt@kms_flip@2x-flip-vs-dpms-on-nop:
    - shard-bmg:          [SKIP][232] ([Intel XE#2316]) -> [PASS][233] +4 other tests pass
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@kms_flip@2x-flip-vs-dpms-on-nop.html
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@kms_flip@2x-flip-vs-dpms-on-nop.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-bmg:          [SKIP][234] ([Intel XE#1503]) -> [PASS][235]
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@kms_hdr@static-toggle-dpms.html
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_plane_multiple@2x-tiling-x:
    - shard-bmg:          [SKIP][236] ([Intel XE#4596]) -> [PASS][237]
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-x.html
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@kms_plane_multiple@2x-tiling-x.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-bmg:          [SKIP][238] ([Intel XE#2685] / [Intel XE#3307]) -> [PASS][239]
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-4/igt@kms_plane_scaling@intel-max-src-size.html
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_plane_scaling@intel-max-src-size.html
    - shard-dg2-set2:     [SKIP][240] ([Intel XE#455]) -> [PASS][241]
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-466/igt@kms_plane_scaling@intel-max-src-size.html
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-lnl:          [FAIL][242] ([Intel XE#718]) -> [PASS][243] +1 other test pass
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-lnl-3/igt@kms_pm_dc@dc6-psr.html
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-lnl-1/igt@kms_pm_dc@dc6-psr.html

  * igt@xe_evict@evict-mixed-many-threads-small:
    - shard-bmg:          [INCOMPLETE][244] -> [PASS][245]
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-4/igt@xe_evict@evict-mixed-many-threads-small.html
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@xe_evict@evict-mixed-many-threads-small.html

  * igt@xe_exec_basic@multigpu-no-exec-null-defer-bind:
    - shard-dg2-set2:     [SKIP][246] ([Intel XE#1392]) -> [PASS][247] +5 other tests pass
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-null-defer-bind.html
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@xe_exec_basic@multigpu-no-exec-null-defer-bind.html

  * igt@xe_exec_compute_mode@many-execqueues-preempt-fence-early:
    - shard-bmg:          [FAIL][248] ([Intel XE#5625]) -> [PASS][249]
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-2/igt@xe_exec_compute_mode@many-execqueues-preempt-fence-early.html
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-5/igt@xe_exec_compute_mode@many-execqueues-preempt-fence-early.html

  * igt@xe_exec_threads@threads-userptr-rebind-err:
    - shard-bmg:          [DMESG-FAIL][250] ([Intel XE#3876]) -> [PASS][251] +1 other test pass
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-2/igt@xe_exec_threads@threads-userptr-rebind-err.html
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-8/igt@xe_exec_threads@threads-userptr-rebind-err.html

  
#### Warnings ####

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
    - shard-dg2-set2:     [INCOMPLETE][252] ([Intel XE#2705] / [Intel XE#4212] / [Intel XE#4345]) -> [INCOMPLETE][253] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4345] / [Intel XE#6168])
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html

  * igt@kms_content_protection@lic-type-0:
    - shard-bmg:          [SKIP][254] ([Intel XE#2341]) -> [FAIL][255] ([Intel XE#1178])
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@kms_content_protection@lic-type-0.html
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@kms_content_protection@lic-type-0.html

  * igt@kms_content_protection@srm:
    - shard-bmg:          [FAIL][256] ([Intel XE#1178]) -> [SKIP][257] ([Intel XE#2341])
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-3/igt@kms_content_protection@srm.html
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_content_protection@srm.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc:
    - shard-bmg:          [SKIP][258] ([Intel XE#2312]) -> [SKIP][259] ([Intel XE#2311]) +11 other tests skip
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc.html
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt:
    - shard-bmg:          [SKIP][260] ([Intel XE#5390]) -> [SKIP][261] ([Intel XE#2312]) +2 other tests skip
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-render:
    - shard-bmg:          [SKIP][262] ([Intel XE#2312]) -> [SKIP][263] ([Intel XE#5390]) +6 other tests skip
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-render.html
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc:
    - shard-bmg:          [SKIP][264] ([Intel XE#2311]) -> [SKIP][265] ([Intel XE#2312]) +9 other tests skip
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move:
    - shard-bmg:          [SKIP][266] ([Intel XE#2313]) -> [SKIP][267] ([Intel XE#2312]) +8 other tests skip
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move.html
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render:
    - shard-bmg:          [SKIP][268] ([Intel XE#2312]) -> [SKIP][269] ([Intel XE#2313]) +11 other tests skip
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          [SKIP][270] ([Intel XE#3544]) -> [SKIP][271] ([Intel XE#3374] / [Intel XE#3544])
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-1/igt@kms_hdr@brightness-with-hdr.html
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-6/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-bmg:          [ABORT][272] ([Intel XE#4760] / [Intel XE#5545]) -> [SKIP][273] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#836])
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-bmg-2/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-bmg-1/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-dg2-set2:     [SKIP][274] ([Intel XE#362]) -> [FAIL][275] ([Intel XE#1729])
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-433/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-dg2-set2:     [SKIP][276] ([Intel XE#1500]) -> [SKIP][277] ([Intel XE#362])
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8579/shard-dg2-464/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_13878/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern-with-chamelium.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#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
  [Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
  [Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
  [Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
  [Intel XE#2350]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2350
  [Intel XE#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373
  [Intel XE#2374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2374
  [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
  [Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
  [Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2685]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2685
  [Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
  [Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
  [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
  [Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
  [Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
  [Intel XE#3009]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3009
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
  [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
  [Intel XE#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
  [Intel XE#3307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3307
  [Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
  [Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
  [Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
  [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#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
  [Intel XE#4090]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4090
  [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
  [Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
  [Intel XE#4273]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4273
  [Intel XE#4302]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4302
  [Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
  [Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
  [Intel XE#4356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4356
  [Intel XE#4494]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4494
  [Intel XE#4522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4522
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#4665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4665
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
  [Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
  [Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
  [Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
  [Intel XE#5626]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5626
  [Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993
  [Intel XE#6054]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6054
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#6168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6168
  [Intel XE#6196]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6196
  [Intel XE#6259]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6259
  [Intel XE#6267]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6267
  [Intel XE#6281]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6281
  [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#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
  [Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804


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

  * IGT: IGT_8579 -> IGTPW_13878

  IGTPW_13878: 13878
  IGT_8579: 8579
  xe-3886-f929eafc95342ea5377f79705864d50dd325c79f: f929eafc95342ea5377f79705864d50dd325c79f

== Logs ==

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

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

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

* ✗ i915.CI.Full: failure for Change OA IGT's to run on all OA units
  2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
                   ` (20 preceding siblings ...)
  2025-10-09  1:49 ` ✗ Xe.CI.Full: failure " Patchwork
@ 2025-10-09 11:47 ` Patchwork
  21 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2025-10-09 11:47 UTC (permalink / raw)
  To: Dixit, Ashutosh; +Cc: igt-dev

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

== Series Details ==

Series: Change OA IGT's to run on all OA units
URL   : https://patchwork.freedesktop.org/series/155639/
State : failure

== Summary ==

CI Bug Log - changes from IGT_8579_full -> IGTPW_13878_full
====================================================

Summary
-------

  **FAILURE**

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

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1:
    - shard-tglu:         [PASS][1] -> [FAIL][2] +1 other test fail
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-tglu-6/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-10/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html

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

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

### IGT changes ###

#### Issues hit ####

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

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

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

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

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

  * igt@gem_ccs@block-multicopy-inplace:
    - shard-dg1:          NOTRUN -> [SKIP][8] ([i915#3555] / [i915#9323])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-18/igt@gem_ccs@block-multicopy-inplace.html

  * igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0:
    - shard-dg2:          [PASS][9] -> [INCOMPLETE][10] ([i915#13356])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg2-3/igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-7/igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0.html

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

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

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

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

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

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

  * igt@gem_ctx_sseu@invalid-args:
    - shard-dg2:          NOTRUN -> [SKIP][17] ([i915#280])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@gem_ctx_sseu@invalid-args.html

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-dg2-9:        NOTRUN -> [SKIP][18] ([i915#280]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@gem_ctx_sseu@invalid-sseu.html

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

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

  * igt@gem_exec_balancer@bonded-false-hang:
    - shard-dg2-9:        NOTRUN -> [SKIP][21] ([i915#4812])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@gem_exec_balancer@bonded-false-hang.html

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

  * igt@gem_exec_balancer@hog:
    - shard-dg2:          NOTRUN -> [SKIP][23] ([i915#4812])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-3/igt@gem_exec_balancer@hog.html

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

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

  * igt@gem_exec_capture@capture@vecs0-lmem0:
    - shard-dg2-9:        NOTRUN -> [FAIL][26] ([i915#11965]) +4 other tests fail
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@gem_exec_capture@capture@vecs0-lmem0.html

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

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

  * igt@gem_exec_flush@basic-wb-ro-default:
    - shard-dg2-9:        NOTRUN -> [SKIP][29] ([i915#3539] / [i915#4852]) +1 other test skip
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@gem_exec_flush@basic-wb-ro-default.html

  * igt@gem_exec_flush@basic-wb-rw-default:
    - shard-dg1:          NOTRUN -> [SKIP][30] ([i915#3539] / [i915#4852])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-15/igt@gem_exec_flush@basic-wb-rw-default.html

  * igt@gem_exec_reloc@basic-cpu-gtt-noreloc:
    - shard-dg2:          NOTRUN -> [SKIP][31] ([i915#3281]) +10 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-1/igt@gem_exec_reloc@basic-cpu-gtt-noreloc.html
    - shard-rkl:          NOTRUN -> [SKIP][32] ([i915#3281]) +1 other test skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@gem_exec_reloc@basic-cpu-gtt-noreloc.html

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

  * igt@gem_exec_reloc@basic-wc:
    - shard-mtlp:         NOTRUN -> [SKIP][34] ([i915#3281])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-4/igt@gem_exec_reloc@basic-wc.html

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

  * igt@gem_exec_schedule@preempt-queue-chain:
    - shard-dg2-9:        NOTRUN -> [SKIP][36] ([i915#4537] / [i915#4812]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@gem_exec_schedule@preempt-queue-chain.html

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

  * igt@gem_fenced_exec_thrash@2-spare-fences:
    - shard-dg2:          NOTRUN -> [SKIP][38] ([i915#4860])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@gem_fenced_exec_thrash@2-spare-fences.html

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

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

  * igt@gem_lmem_swapping@smem-oom@lmem0:
    - shard-dg2:          [PASS][41] -> [TIMEOUT][42] ([i915#5493]) +1 other test timeout
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg2-5/igt@gem_lmem_swapping@smem-oom@lmem0.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-7/igt@gem_lmem_swapping@smem-oom@lmem0.html

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

  * igt@gem_madvise@dontneed-before-pwrite:
    - shard-rkl:          NOTRUN -> [SKIP][44] ([i915#3282])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@gem_madvise@dontneed-before-pwrite.html
    - shard-dg1:          NOTRUN -> [SKIP][45] ([i915#3282]) +1 other test skip
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-15/igt@gem_madvise@dontneed-before-pwrite.html
    - shard-mtlp:         NOTRUN -> [SKIP][46] ([i915#3282])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-6/igt@gem_madvise@dontneed-before-pwrite.html

  * igt@gem_media_vme:
    - shard-dg2-9:        NOTRUN -> [SKIP][47] ([i915#284])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@gem_media_vme.html

  * igt@gem_mmap_gtt@close-race:
    - shard-rkl:          [PASS][48] -> [DMESG-WARN][49] ([i915#12964]) +30 other tests dmesg-warn
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gem_mmap_gtt@close-race.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@gem_mmap_gtt@close-race.html

  * igt@gem_mmap_gtt@isolation:
    - shard-dg2-9:        NOTRUN -> [SKIP][50] ([i915#4077]) +10 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@gem_mmap_gtt@isolation.html

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

  * igt@gem_mmap_wc@bad-offset:
    - shard-mtlp:         NOTRUN -> [SKIP][52] ([i915#4083])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-4/igt@gem_mmap_wc@bad-offset.html
    - shard-dg1:          NOTRUN -> [SKIP][53] ([i915#4083])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-16/igt@gem_mmap_wc@bad-offset.html

  * igt@gem_mmap_wc@bad-size:
    - shard-dg2-9:        NOTRUN -> [SKIP][54] ([i915#4083]) +1 other test skip
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@gem_mmap_wc@bad-size.html

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

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

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

  * igt@gem_pwrite@basic-exhaustion:
    - shard-tglu-1:       NOTRUN -> [WARN][58] ([i915#2658])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@gem_pwrite@basic-exhaustion.html

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

  * igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted:
    - shard-rkl:          [PASS][60] -> [TIMEOUT][61] ([i915#12964])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted.html

  * igt@gem_pxp@fail-invalid-protected-context:
    - shard-dg2-9:        NOTRUN -> [SKIP][62] ([i915#4270]) +1 other test skip
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@gem_pxp@fail-invalid-protected-context.html

  * igt@gem_pxp@reject-modify-context-protection-off-1:
    - shard-rkl:          [PASS][63] -> [TIMEOUT][64] ([i915#12917] / [i915#12964])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@gem_pxp@reject-modify-context-protection-off-1.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@gem_pxp@reject-modify-context-protection-off-1.html

  * igt@gem_readwrite@beyond-eob:
    - shard-dg2-9:        NOTRUN -> [SKIP][65] ([i915#3282]) +2 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@gem_readwrite@beyond-eob.html

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

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

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

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

  * igt@gem_softpin@evict-snoop-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][70] ([i915#4885])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@gem_softpin@evict-snoop-interruptible.html
    - shard-rkl:          NOTRUN -> [SKIP][71] +7 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@gem_softpin@evict-snoop-interruptible.html
    - shard-dg1:          NOTRUN -> [SKIP][72] ([i915#4885])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-16/igt@gem_softpin@evict-snoop-interruptible.html
    - shard-mtlp:         NOTRUN -> [SKIP][73] ([i915#4885])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-4/igt@gem_softpin@evict-snoop-interruptible.html

  * igt@gem_softpin@noreloc-s3:
    - shard-rkl:          [PASS][74] -> [INCOMPLETE][75] ([i915#13809])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-5/igt@gem_softpin@noreloc-s3.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-3/igt@gem_softpin@noreloc-s3.html

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

  * igt@gem_userptr_blits@coherency-unsync:
    - shard-dg2:          NOTRUN -> [SKIP][77] ([i915#3297]) +2 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-7/igt@gem_userptr_blits@coherency-unsync.html
    - shard-rkl:          NOTRUN -> [SKIP][78] ([i915#14544] / [i915#3297])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_userptr_blits@coherency-unsync.html
    - shard-dg1:          NOTRUN -> [SKIP][79] ([i915#3297])
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-16/igt@gem_userptr_blits@coherency-unsync.html
    - shard-mtlp:         NOTRUN -> [SKIP][80] ([i915#3297])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-4/igt@gem_userptr_blits@coherency-unsync.html

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

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

  * igt@gem_userptr_blits@relocations:
    - shard-dg1:          NOTRUN -> [SKIP][84] ([i915#3281] / [i915#3297])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-12/igt@gem_userptr_blits@relocations.html

  * igt@gen7_exec_parse@basic-rejected:
    - shard-dg2:          NOTRUN -> [SKIP][85] +15 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-7/igt@gen7_exec_parse@basic-rejected.html

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

  * igt@gen9_exec_parse@bb-start-far:
    - shard-dg2:          NOTRUN -> [SKIP][87] ([i915#2856]) +4 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@gen9_exec_parse@bb-start-far.html

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

  * igt@i915_drm_fdinfo@all-busy-idle-check-all:
    - shard-dg2:          NOTRUN -> [SKIP][89] ([i915#14123]) +1 other test skip
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-4/igt@i915_drm_fdinfo@all-busy-idle-check-all.html

  * igt@i915_drm_fdinfo@busy-idle@vecs0:
    - shard-dg2:          NOTRUN -> [SKIP][90] ([i915#14073]) +15 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@i915_drm_fdinfo@busy-idle@vecs0.html

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

  * igt@i915_drm_fdinfo@virtual-busy-hang-all:
    - shard-dg2-9:        NOTRUN -> [SKIP][92] ([i915#14118])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@i915_drm_fdinfo@virtual-busy-hang-all.html

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

  * igt@i915_module_load@reload-no-display:
    - shard-tglu-1:       NOTRUN -> [DMESG-WARN][94] ([i915#13029] / [i915#14545])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@i915_module_load@reload-no-display.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-dg2:          NOTRUN -> [DMESG-WARN][95] ([i915#13447])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-1/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_module_load@resize-bar:
    - shard-dg2:          NOTRUN -> [DMESG-WARN][96] ([i915#14545])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-5/igt@i915_module_load@resize-bar.html

  * igt@i915_pm_rc6_residency@rc6-accuracy:
    - shard-rkl:          [PASS][97] -> [FAIL][98] ([i915#12942]) +1 other test fail
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@i915_pm_rc6_residency@rc6-accuracy.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@i915_pm_rc6_residency@rc6-accuracy.html

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

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

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

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

  * igt@i915_selftest@mock:
    - shard-dg2:          [PASS][103] -> [DMESG-WARN][104] ([i915#14545])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg2-1/igt@i915_selftest@mock.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-1/igt@i915_selftest@mock.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-dg1:          [PASS][105] -> [DMESG-WARN][106] ([i915#14545]) +1 other test dmesg-warn
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-19/igt@i915_suspend@basic-s3-without-i915.html
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-14/igt@i915_suspend@basic-s3-without-i915.html
    - shard-tglu:         NOTRUN -> [INCOMPLETE][107] ([i915#4817] / [i915#7443])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-9/igt@i915_suspend@basic-s3-without-i915.html

  * igt@i915_suspend@fence-restore-untiled:
    - shard-rkl:          [PASS][108] -> [INCOMPLETE][109] ([i915#4817]) +1 other test incomplete
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@i915_suspend@fence-restore-untiled.html
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-3/igt@i915_suspend@fence-restore-untiled.html

  * igt@i915_suspend@forcewake:
    - shard-glk:          NOTRUN -> [INCOMPLETE][110] ([i915#4817])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk8/igt@i915_suspend@forcewake.html

  * igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling:
    - shard-dg2:          NOTRUN -> [SKIP][111] ([i915#4212]) +1 other test skip
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-8/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html

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

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][113] ([i915#5190]) +2 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-7/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

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

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

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

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

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

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-rkl:          NOTRUN -> [SKIP][120] ([i915#5286])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@linear-64bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][121] ([i915#3638])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_big_fb@linear-64bpp-rotate-270.html

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-dg1:          NOTRUN -> [SKIP][122] ([i915#3638])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-15/igt@kms_big_fb@linear-64bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-mtlp:         NOTRUN -> [SKIP][123] +2 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-2/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip.html

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

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

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-270:
    - shard-dg1:          NOTRUN -> [SKIP][126] ([i915#4538])
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-16/igt@kms_big_fb@yf-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-dg2-9:        NOTRUN -> [SKIP][127] ([i915#5190])
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_busy@basic:
    - shard-rkl:          NOTRUN -> [SKIP][128] ([i915#11190] / [i915#14544])
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_busy@basic.html

  * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs:
    - shard-tglu:         NOTRUN -> [SKIP][129] ([i915#6095]) +39 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-5/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs.html

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

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

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

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][133] ([i915#10307] / [i915#10434] / [i915#6095]) +2 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-4/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1.html

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

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

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs:
    - shard-tglu-1:       NOTRUN -> [SKIP][136] ([i915#6095]) +44 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][137] ([i915#14098] / [i915#6095]) +42 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-1.html

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

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

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][140] ([i915#12313])
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][141] ([i915#6095]) +126 other tests skip
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-14/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-4.html

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

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][143] ([i915#6095]) +4 other tests skip
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-4/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs.html

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

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

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

  * igt@kms_chamelium_audio@dp-audio:
    - shard-tglu:         NOTRUN -> [SKIP][147] ([i915#11151] / [i915#7828]) +6 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-3/igt@kms_chamelium_audio@dp-audio.html

  * igt@kms_chamelium_audio@hdmi-audio-edid:
    - shard-tglu-1:       NOTRUN -> [SKIP][148] ([i915#11151] / [i915#7828]) +4 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_chamelium_audio@hdmi-audio-edid.html

  * igt@kms_chamelium_hpd@dp-hpd-fast:
    - shard-dg2:          NOTRUN -> [SKIP][149] ([i915#11151] / [i915#7828]) +6 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-3/igt@kms_chamelium_hpd@dp-hpd-fast.html

  * igt@kms_chamelium_hpd@dp-hpd-with-enabled-mode:
    - shard-dg1:          NOTRUN -> [SKIP][150] ([i915#11151] / [i915#7828])
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-18/igt@kms_chamelium_hpd@dp-hpd-with-enabled-mode.html
    - shard-mtlp:         NOTRUN -> [SKIP][151] ([i915#11151] / [i915#7828])
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-5/igt@kms_chamelium_hpd@dp-hpd-with-enabled-mode.html

  * igt@kms_chamelium_hpd@hdmi-hpd:
    - shard-dg2-9:        NOTRUN -> [SKIP][152] ([i915#11151] / [i915#7828]) +5 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_chamelium_hpd@hdmi-hpd.html

  * igt@kms_chamelium_hpd@vga-hpd-for-each-pipe:
    - shard-rkl:          NOTRUN -> [SKIP][153] ([i915#11151] / [i915#7828]) +1 other test skip
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html

  * igt@kms_color@gamma:
    - shard-rkl:          [PASS][154] -> [SKIP][155] ([i915#12655] / [i915#14544]) +2 other tests skip
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-3/igt@kms_color@gamma.html
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_color@gamma.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][156] ([i915#7118] / [i915#9424]) +1 other test skip
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-3/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-dg2-9:        NOTRUN -> [SKIP][157] ([i915#3299])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_content_protection@dp-mst-lic-type-0.html

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

  * igt@kms_content_protection@lic-type-1:
    - shard-dg2-9:        NOTRUN -> [SKIP][159] ([i915#9424])
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_content_protection@lic-type-1.html

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

  * igt@kms_cursor_crc@cursor-random-128x42:
    - shard-rkl:          [PASS][161] -> [FAIL][162] ([i915#13566])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_cursor_crc@cursor-random-128x42.html
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_cursor_crc@cursor-random-128x42.html

  * igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [FAIL][163] ([i915#13566]) +1 other test fail
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html
    - shard-tglu:         [PASS][164] -> [FAIL][165] ([i915#13566]) +3 other tests fail
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-tglu-3/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-2/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-tglu:         NOTRUN -> [SKIP][166] ([i915#13049])
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-10/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-random-512x512:
    - shard-dg2:          NOTRUN -> [SKIP][167] ([i915#13049]) +3 other tests skip
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@kms_cursor_crc@cursor-random-512x512.html

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

  * igt@kms_cursor_crc@cursor-sliding-256x85@pipe-b-hdmi-a-1:
    - shard-rkl:          [PASS][169] -> [DMESG-WARN][170] ([i915#12917] / [i915#12964])
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_cursor_crc@cursor-sliding-256x85@pipe-b-hdmi-a-1.html
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_cursor_crc@cursor-sliding-256x85@pipe-b-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-sliding-32x32:
    - shard-dg2-9:        NOTRUN -> [SKIP][171] ([i915#3555]) +3 other tests skip
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_cursor_crc@cursor-sliding-32x32.html

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

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

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

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - shard-rkl:          [PASS][175] -> [SKIP][176] ([i915#11190] / [i915#14544])
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

  * igt@kms_cursor_legacy@cursor-vs-flip-toggle:
    - shard-rkl:          [PASS][177] -> [SKIP][178] ([i915#14544]) +39 other tests skip
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html

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

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions:
    - shard-glk:          [PASS][180] -> [SKIP][181] +2 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-glk3/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions.html
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk8/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic:
    - shard-dg2:          NOTRUN -> [SKIP][182] ([i915#13046] / [i915#5354]) +5 other tests skip
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-4/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html
    - shard-mtlp:         NOTRUN -> [SKIP][183] ([i915#9809])
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-4/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html

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

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

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - shard-dg2:          NOTRUN -> [SKIP][186] ([i915#9833])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-4/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
    - shard-rkl:          NOTRUN -> [SKIP][187] ([i915#9723])
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
    - shard-tglu-1:       NOTRUN -> [SKIP][188] ([i915#9723]) +1 other test skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

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

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-dg2-9:        NOTRUN -> [SKIP][190] ([i915#13749])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_dp_link_training@non-uhbr-sst.html
    - shard-tglu:         NOTRUN -> [SKIP][191] ([i915#13749])
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-8/igt@kms_dp_link_training@non-uhbr-sst.html

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

  * igt@kms_dp_linktrain_fallback@dp-fallback:
    - shard-tglu-1:       NOTRUN -> [SKIP][193] ([i915#13707])
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_dp_linktrain_fallback@dp-fallback.html

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

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-tglu-1:       NOTRUN -> [SKIP][195] ([i915#3840])
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc:
    - shard-dg2:          NOTRUN -> [SKIP][196] ([i915#3840] / [i915#9053])
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@kms_dsc@dsc-with-output-formats-with-bpc.html

  * igt@kms_fbcon_fbt@fbc:
    - shard-rkl:          [PASS][197] -> [SKIP][198] ([i915#14544] / [i915#14561])
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_fbcon_fbt@fbc.html
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_fbcon_fbt@fbc.html

  * igt@kms_feature_discovery@chamelium:
    - shard-tglu:         NOTRUN -> [SKIP][199] ([i915#2065] / [i915#4854])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-7/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@display-4x:
    - shard-dg2:          NOTRUN -> [SKIP][200] ([i915#1839])
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-5/igt@kms_feature_discovery@display-4x.html
    - shard-rkl:          NOTRUN -> [SKIP][201] ([i915#1839])
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@kms_feature_discovery@display-4x.html
    - shard-dg1:          NOTRUN -> [SKIP][202] ([i915#1839])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-16/igt@kms_feature_discovery@display-4x.html
    - shard-tglu:         NOTRUN -> [SKIP][203] ([i915#1839])
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-3/igt@kms_feature_discovery@display-4x.html
    - shard-mtlp:         NOTRUN -> [SKIP][204] ([i915#1839])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-8/igt@kms_feature_discovery@display-4x.html

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

  * igt@kms_fence_pin_leak:
    - shard-dg2:          NOTRUN -> [SKIP][206] ([i915#4881])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-3/igt@kms_fence_pin_leak.html

  * igt@kms_flip@2x-absolute-wf_vblank:
    - shard-dg2:          NOTRUN -> [SKIP][207] ([i915#9934]) +10 other tests skip
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@kms_flip@2x-absolute-wf_vblank.html

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

  * igt@kms_flip@2x-flip-vs-wf_vblank-interruptible:
    - shard-dg1:          NOTRUN -> [SKIP][209] ([i915#9934]) +1 other test skip
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-19/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html

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

  * igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset:
    - shard-dg2-9:        NOTRUN -> [SKIP][211] ([i915#9934]) +4 other tests skip
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - shard-rkl:          [PASS][212] -> [SKIP][213] ([i915#14544] / [i915#3637]) +9 other tests skip
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_flip@basic-flip-vs-dpms.html
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_flip@basic-flip-vs-dpms.html

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

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

  * igt@kms_flip@wf_vblank-ts-check@a-vga1:
    - shard-snb:          [PASS][217] -> [FAIL][218] ([i915#14600]) +1 other test fail
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-snb4/igt@kms_flip@wf_vblank-ts-check@a-vga1.html
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-snb5/igt@kms_flip@wf_vblank-ts-check@a-vga1.html

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

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

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

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
    - shard-dg2:          NOTRUN -> [SKIP][222] ([i915#2672] / [i915#3555] / [i915#5190])
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-5/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][223] ([i915#2672]) +5 other tests skip
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-5/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-rkl:          [PASS][224] -> [SKIP][225] ([i915#14544] / [i915#3555]) +4 other tests skip
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
    - shard-tglu-1:       NOTRUN -> [SKIP][226] ([i915#2587] / [i915#2672] / [i915#3555])
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html

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

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling:
    - shard-tglu:         NOTRUN -> [SKIP][228] ([i915#2672] / [i915#3555])
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-4/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-valid-mode:
    - shard-tglu:         NOTRUN -> [SKIP][229] ([i915#2587] / [i915#2672]) +1 other test skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-4/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-downscaling:
    - shard-dg2:          NOTRUN -> [SKIP][230] ([i915#2672] / [i915#3555]) +6 other tests skip
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-3/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html

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

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

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling:
    - shard-dg2-9:        NOTRUN -> [SKIP][234] ([i915#2672] / [i915#3555] / [i915#5190]) +1 other test skip
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html

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

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-rkl:          [PASS][236] -> [SKIP][237] ([i915#14544] / [i915#1849] / [i915#5354]) +11 other tests skip
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt:
    - shard-rkl:          NOTRUN -> [SKIP][238] ([i915#14544] / [i915#1849] / [i915#5354]) +5 other tests skip
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt.html

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

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
    - shard-tglu-1:       NOTRUN -> [SKIP][240] +49 other tests skip
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt:
    - shard-rkl:          NOTRUN -> [SKIP][241] ([i915#1825]) +7 other tests skip
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][242] ([i915#8708]) +1 other test skip
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-19/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-dg2-9:        NOTRUN -> [SKIP][243] ([i915#8708]) +11 other tests skip
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt:
    - shard-dg2-9:        NOTRUN -> [SKIP][244] ([i915#15102] / [i915#3458]) +9 other tests skip
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt:
    - shard-mtlp:         NOTRUN -> [SKIP][245] ([i915#1825]) +2 other tests skip
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-cpu:
    - shard-rkl:          NOTRUN -> [SKIP][246] ([i915#15102] / [i915#3023]) +1 other test skip
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-cpu.html

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

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

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

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

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

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-plflip-blt:
    - shard-dg1:          NOTRUN -> [SKIP][252] +8 other tests skip
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-19/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-plflip-blt.html

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

  * igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
    - shard-dg2:          NOTRUN -> [SKIP][254] ([i915#15102] / [i915#3458]) +15 other tests skip
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-1/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
    - shard-dg1:          NOTRUN -> [SKIP][255] ([i915#15102] / [i915#3458]) +4 other tests skip
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-12/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@psr-suspend:
    - shard-tglu-1:       NOTRUN -> [SKIP][256] ([i915#15102]) +13 other tests skip
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_frontbuffer_tracking@psr-suspend.html

  * igt@kms_hdr@bpc-switch-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][257] ([i915#3555] / [i915#8228])
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-1/igt@kms_hdr@bpc-switch-dpms.html
    - shard-rkl:          NOTRUN -> [SKIP][258] ([i915#3555] / [i915#8228])
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@kms_hdr@bpc-switch-dpms.html
    - shard-dg1:          NOTRUN -> [SKIP][259] ([i915#3555] / [i915#8228])
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-13/igt@kms_hdr@bpc-switch-dpms.html
    - shard-tglu:         NOTRUN -> [SKIP][260] ([i915#3555] / [i915#8228])
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-2/igt@kms_hdr@bpc-switch-dpms.html

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

  * igt@kms_hdr@static-swap:
    - shard-dg2:          [PASS][262] -> [SKIP][263] ([i915#3555] / [i915#8228])
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg2-10/igt@kms_hdr@static-swap.html
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@kms_hdr@static-swap.html

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

  * igt@kms_invalid_mode@clock-too-high:
    - shard-rkl:          [PASS][265] -> [SKIP][266] ([i915#14544] / [i915#3555] / [i915#8826])
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_invalid_mode@clock-too-high.html
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_invalid_mode@clock-too-high.html

  * igt@kms_invalid_mode@overflow-vrefresh:
    - shard-rkl:          [PASS][267] -> [SKIP][268] ([i915#14544] / [i915#8826])
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_invalid_mode@overflow-vrefresh.html
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_invalid_mode@overflow-vrefresh.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-tglu:         NOTRUN -> [SKIP][269] ([i915#12388])
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-4/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_joiner@basic-force-ultra-joiner:
    - shard-dg2:          NOTRUN -> [SKIP][270] ([i915#10656])
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-3/igt@kms_joiner@basic-force-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-dg2-9:        NOTRUN -> [SKIP][271] ([i915#10656])
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_joiner@invalid-modeset-ultra-joiner:
    - shard-dg2:          NOTRUN -> [SKIP][272] ([i915#12339])
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-3/igt@kms_joiner@invalid-modeset-ultra-joiner.html
    - shard-dg1:          NOTRUN -> [SKIP][273] ([i915#12339])
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-15/igt@kms_joiner@invalid-modeset-ultra-joiner.html

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

  * igt@kms_panel_fitting@legacy:
    - shard-tglu:         NOTRUN -> [SKIP][275] ([i915#6301]) +1 other test skip
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-4/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c:
    - shard-dg2-9:        NOTRUN -> [SKIP][276] +5 other tests skip
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24:
    - shard-glk10:        NOTRUN -> [SKIP][277] ([i915#11190])
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk10/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html

  * igt@kms_pipe_stress@stress-xrgb8888-ytiled:
    - shard-dg2:          NOTRUN -> [SKIP][278] ([i915#13705])
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-5/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html
    - shard-mtlp:         NOTRUN -> [SKIP][279] ([i915#13705])
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-3/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html

  * igt@kms_plane@plane-position-covered:
    - shard-rkl:          [PASS][280] -> [SKIP][281] ([i915#14544] / [i915#8825])
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_plane@plane-position-covered.html
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_plane@plane-position-covered.html

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

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

  * igt@kms_plane_multiple@2x-tiling-4:
    - shard-dg2:          NOTRUN -> [SKIP][284] ([i915#13958]) +1 other test skip
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-7/igt@kms_plane_multiple@2x-tiling-4.html
    - shard-tglu-1:       NOTRUN -> [SKIP][285] ([i915#13958])
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_plane_multiple@2x-tiling-4.html

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

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

  * igt@kms_plane_multiple@tiling-yf:
    - shard-dg2-9:        NOTRUN -> [SKIP][288] ([i915#14259])
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_plane_multiple@tiling-yf.html

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

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

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b:
    - shard-tglu-1:       NOTRUN -> [SKIP][291] ([i915#12247]) +3 other tests skip
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5:
    - shard-rkl:          [PASS][292] -> [SKIP][293] ([i915#14544] / [i915#6953] / [i915#8152])
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5.html
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-a:
    - shard-rkl:          [PASS][294] -> [SKIP][295] ([i915#12247] / [i915#14544])
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-a.html
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-a.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-b:
    - shard-rkl:          [PASS][296] -> [SKIP][297] ([i915#12247] / [i915#14544] / [i915#8152])
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-b.html
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-b.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-a:
    - shard-dg1:          [PASS][298] -> [DMESG-WARN][299] ([i915#4423]) +3 other tests dmesg-warn
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-15/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-a.html
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-18/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-a.html

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

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-dg2:          NOTRUN -> [SKIP][301] ([i915#3828])
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-8/igt@kms_pm_dc@dc5-retention-flops.html
    - shard-tglu-1:       NOTRUN -> [SKIP][302] ([i915#3828])
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][303] ([i915#14544] / [i915#4281])
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_pm_lpsp@screens-disabled:
    - shard-tglu:         NOTRUN -> [SKIP][304] ([i915#8430])
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-3/igt@kms_pm_lpsp@screens-disabled.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-dg2:          NOTRUN -> [SKIP][305] ([i915#15073])
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-tglu:         NOTRUN -> [SKIP][306] ([i915#15073]) +1 other test skip
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-6/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_pm_rpm@pm-caching:
    - shard-dg1:          NOTRUN -> [SKIP][307] ([i915#4077]) +4 other tests skip
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-12/igt@kms_pm_rpm@pm-caching.html
    - shard-mtlp:         NOTRUN -> [SKIP][308] ([i915#4077]) +3 other tests skip
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-7/igt@kms_pm_rpm@pm-caching.html

  * igt@kms_prime@basic-crc-hybrid:
    - shard-dg2:          NOTRUN -> [SKIP][309] ([i915#6524] / [i915#6805]) +1 other test skip
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-5/igt@kms_prime@basic-crc-hybrid.html
    - shard-tglu:         NOTRUN -> [SKIP][310] ([i915#6524])
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-3/igt@kms_prime@basic-crc-hybrid.html

  * igt@kms_prime@basic-crc-vgem:
    - shard-rkl:          [PASS][311] -> [SKIP][312] ([i915#14544] / [i915#6524])
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@kms_prime@basic-crc-vgem.html
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_prime@basic-crc-vgem.html

  * igt@kms_prime@d3hot:
    - shard-tglu-1:       NOTRUN -> [SKIP][313] ([i915#6524])
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_prime@d3hot.html

  * igt@kms_properties@crtc-properties-legacy:
    - shard-rkl:          [PASS][314] -> [SKIP][315] ([i915#11521] / [i915#14544]) +1 other test skip
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_properties@crtc-properties-legacy.html
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_properties@crtc-properties-legacy.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf:
    - shard-snb:          NOTRUN -> [SKIP][316] ([i915#11520])
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-snb6/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area:
    - shard-glk:          NOTRUN -> [SKIP][317] ([i915#11520]) +13 other tests skip
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk6/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html
    - shard-rkl:          NOTRUN -> [SKIP][318] ([i915#11520] / [i915#14544])
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf:
    - shard-glk10:        NOTRUN -> [SKIP][319] ([i915#11520]) +4 other tests skip
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk10/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html
    - shard-dg2-9:        NOTRUN -> [SKIP][320] ([i915#11520]) +4 other tests skip
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html

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

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

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

  * igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf:
    - shard-dg1:          NOTRUN -> [SKIP][324] ([i915#11520])
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-19/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html

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

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-dg2-9:        NOTRUN -> [SKIP][326] ([i915#9683])
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr@fbc-pr-primary-mmap-cpu:
    - shard-rkl:          NOTRUN -> [SKIP][327] ([i915#1072] / [i915#14544] / [i915#9732]) +1 other test skip
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_psr@fbc-pr-primary-mmap-cpu.html

  * igt@kms_psr@fbc-pr-suspend:
    - shard-dg2:          NOTRUN -> [SKIP][328] ([i915#1072] / [i915#9732]) +23 other tests skip
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-3/igt@kms_psr@fbc-pr-suspend.html

  * igt@kms_psr@fbc-psr-primary-mmap-cpu:
    - shard-dg2-9:        NOTRUN -> [SKIP][329] ([i915#1072] / [i915#9732]) +10 other tests skip
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_psr@fbc-psr-primary-mmap-cpu.html

  * igt@kms_psr@fbc-psr-primary-render:
    - shard-dg1:          NOTRUN -> [SKIP][330] ([i915#1072] / [i915#9732])
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-13/igt@kms_psr@fbc-psr-primary-render.html

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

  * igt@kms_psr@psr-sprite-blt:
    - shard-snb:          NOTRUN -> [SKIP][332] +48 other tests skip
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-snb7/igt@kms_psr@psr-sprite-blt.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - shard-tglu-1:       NOTRUN -> [SKIP][333] ([i915#9732]) +13 other tests skip
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_psr@psr2-cursor-plane-move:
    - shard-rkl:          NOTRUN -> [SKIP][334] ([i915#1072] / [i915#9732]) +1 other test skip
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@kms_psr@psr2-cursor-plane-move.html

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

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

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

  * igt@kms_scaling_modes@scaling-mode-none:
    - shard-dg2:          NOTRUN -> [SKIP][338] ([i915#3555]) +6 other tests skip
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-1/igt@kms_scaling_modes@scaling-mode-none.html

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

  * igt@kms_setmode@invalid-clone-single-crtc:
    - shard-glk:          NOTRUN -> [SKIP][340] +455 other tests skip
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk8/igt@kms_setmode@invalid-clone-single-crtc.html

  * igt@kms_setmode@invalid-clone-single-crtc-stealing:
    - shard-dg1:          NOTRUN -> [SKIP][341] ([i915#3555]) +1 other test skip
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-16/igt@kms_setmode@invalid-clone-single-crtc-stealing.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-tglu-1:       NOTRUN -> [SKIP][342] ([i915#8623])
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-1/igt@kms_tiled_display@basic-test-pattern.html
    - shard-glk:          NOTRUN -> [FAIL][343] ([i915#10959])
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk6/igt@kms_tiled_display@basic-test-pattern.html
    - shard-dg2:          NOTRUN -> [SKIP][344] ([i915#8623])
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-7/igt@kms_tiled_display@basic-test-pattern.html

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

  * igt@kms_vblank@query-forked-hang:
    - shard-glk10:        NOTRUN -> [SKIP][346] +191 other tests skip
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk10/igt@kms_vblank@query-forked-hang.html

  * igt@kms_vblank@ts-continuation-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][347] ([i915#12276]) +1 other test incomplete
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk1/igt@kms_vblank@ts-continuation-suspend.html

  * igt@kms_vblank@wait-forked-busy-hang@pipe-b-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][348] ([i915#12964]) +4 other tests dmesg-warn
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_vblank@wait-forked-busy-hang@pipe-b-hdmi-a-1.html

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

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

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - shard-tglu:         NOTRUN -> [SKIP][351] ([i915#9906]) +1 other test skip
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-9/igt@kms_vrr@seamless-rr-switch-vrr.html
    - shard-dg2-9:        NOTRUN -> [SKIP][352] ([i915#9906])
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-9/igt@kms_vrr@seamless-rr-switch-vrr.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-dg2:          NOTRUN -> [SKIP][353] ([i915#2437] / [i915#9412])
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-3/igt@kms_writeback@writeback-check-output-xrgb2101010.html
    - shard-rkl:          NOTRUN -> [SKIP][354] ([i915#2437] / [i915#9412])
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_writeback@writeback-check-output-xrgb2101010.html
    - shard-dg1:          NOTRUN -> [SKIP][355] ([i915#2437] / [i915#9412])
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-15/igt@kms_writeback@writeback-check-output-xrgb2101010.html
    - shard-tglu:         NOTRUN -> [SKIP][356] ([i915#2437] / [i915#9412])
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-4/igt@kms_writeback@writeback-check-output-xrgb2101010.html
    - shard-mtlp:         NOTRUN -> [SKIP][357] ([i915#2437] / [i915#9412])
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-8/igt@kms_writeback@writeback-check-output-xrgb2101010.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-glk:          NOTRUN -> [SKIP][358] ([i915#2437]) +3 other tests skip
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk9/igt@kms_writeback@writeback-fb-id.html

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

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

  * igt@perf@non-zero-reason@0-rcs0:
    - shard-dg2:          NOTRUN -> [FAIL][361] ([i915#9100]) +1 other test fail
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-4/igt@perf@non-zero-reason@0-rcs0.html

  * igt@perf@polling@0-rcs0:
    - shard-tglu:         [PASS][362] -> [FAIL][363] ([i915#10538]) +1 other test fail
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-tglu-10/igt@perf@polling@0-rcs0.html
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-10/igt@perf@polling@0-rcs0.html

  * igt@perf_pmu@most-busy-idle-check-all:
    - shard-dg1:          [PASS][364] -> [FAIL][365] ([i915#11943]) +1 other test fail
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-17/igt@perf_pmu@most-busy-idle-check-all.html
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-17/igt@perf_pmu@most-busy-idle-check-all.html

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

  * igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem:
    - shard-dg1:          NOTRUN -> [SKIP][367] ([i915#14121]) +1 other test skip
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-15/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html

  * igt@prime_vgem@basic-fence-read:
    - shard-dg2:          NOTRUN -> [SKIP][368] ([i915#3291] / [i915#3708]) +2 other tests skip
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-3/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@fence-read-hang:
    - shard-dg2:          NOTRUN -> [SKIP][369] ([i915#3708]) +1 other test skip
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-7/igt@prime_vgem@fence-read-hang.html

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

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

  
#### Possible fixes ####

  * igt@fbdev@eof:
    - shard-rkl:          [SKIP][372] ([i915#14544] / [i915#2582]) -> [PASS][373] +1 other test pass
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@fbdev@eof.html
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@fbdev@eof.html

  * igt@gem_eio@reset-stress:
    - shard-dg1:          [FAIL][374] ([i915#5784]) -> [PASS][375]
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-19/igt@gem_eio@reset-stress.html
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-13/igt@gem_eio@reset-stress.html

  * igt@gem_exec_big@single:
    - shard-tglu:         [ABORT][376] ([i915#11713] / [i915#14756]) -> [PASS][377]
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-tglu-4/igt@gem_exec_big@single.html
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-2/igt@gem_exec_big@single.html

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

  * igt@gem_pxp@display-protected-crc:
    - shard-rkl:          [TIMEOUT][380] ([i915#12917] / [i915#12964]) -> [PASS][381]
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gem_pxp@display-protected-crc.html
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@gem_pxp@display-protected-crc.html

  * igt@gem_workarounds@suspend-resume-context:
    - shard-rkl:          [INCOMPLETE][382] ([i915#13356]) -> [PASS][383]
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-3/igt@gem_workarounds@suspend-resume-context.html
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_workarounds@suspend-resume-context.html

  * igt@i915_pm_freq_api@freq-suspend@gt0:
    - shard-dg2:          [INCOMPLETE][384] ([i915#13356] / [i915#13820]) -> [PASS][385] +1 other test pass
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg2-6/igt@i915_pm_freq_api@freq-suspend@gt0.html
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@i915_pm_freq_api@freq-suspend@gt0.html

  * igt@i915_selftest@live@workarounds:
    - shard-mtlp:         [DMESG-FAIL][386] ([i915#12061]) -> [PASS][387] +1 other test pass
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-mtlp-7/igt@i915_selftest@live@workarounds.html
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-8/igt@i915_selftest@live@workarounds.html

  * igt@i915_suspend@basic-s2idle-without-i915:
    - shard-rkl:          [DMESG-WARN][388] ([i915#12917] / [i915#12964]) -> [PASS][389]
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-5/igt@i915_suspend@basic-s2idle-without-i915.html
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@i915_suspend@basic-s2idle-without-i915.html

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

  * igt@kms_async_flips@async-flip-suspend-resume:
    - shard-dg2:          [ABORT][392] -> [PASS][393] +1 other test pass
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg2-10/igt@kms_async_flips@async-flip-suspend-resume.html
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-6/igt@kms_async_flips@async-flip-suspend-resume.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-mtlp:         [FAIL][394] ([i915#5138]) -> [PASS][395]
   [394]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-mtlp-4/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [395]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-3/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-0:
    - shard-rkl:          [SKIP][396] ([i915#14544]) -> [PASS][397] +39 other tests pass
   [396]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_big_fb@x-tiled-32bpp-rotate-0.html
   [397]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_big_fb@x-tiled-32bpp-rotate-0.html

  * igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs:
    - shard-rkl:          [DMESG-WARN][398] ([i915#12964]) -> [PASS][399] +18 other tests pass
   [398]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs.html
   [399]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs.html

  * igt@kms_color@ctm-red-to-blue:
    - shard-rkl:          [SKIP][400] ([i915#12655] / [i915#14544]) -> [PASS][401]
   [400]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_color@ctm-red-to-blue.html
   [401]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_color@ctm-red-to-blue.html

  * igt@kms_cursor_crc@cursor-onscreen-256x85:
    - shard-tglu:         [FAIL][402] ([i915#13566]) -> [PASS][403] +3 other tests pass
   [402]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-tglu-3/igt@kms_cursor_crc@cursor-onscreen-256x85.html
   [403]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-9/igt@kms_cursor_crc@cursor-onscreen-256x85.html

  * igt@kms_cursor_crc@cursor-random-256x85@pipe-a-hdmi-a-1:
    - shard-rkl:          [FAIL][404] ([i915#13566]) -> [PASS][405] +1 other test pass
   [404]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_cursor_crc@cursor-random-256x85@pipe-a-hdmi-a-1.html
   [405]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_cursor_crc@cursor-random-256x85@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-suspend:
    - shard-snb:          [ABORT][406] ([i915#14849] / [i915#14871]) -> [PASS][407] +1 other test pass
   [406]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-snb5/igt@kms_cursor_crc@cursor-suspend.html
   [407]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-snb7/igt@kms_cursor_crc@cursor-suspend.html
    - shard-tglu:         [ABORT][408] ([i915#14849] / [i915#14871]) -> [PASS][409] +1 other test pass
   [408]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-tglu-5/igt@kms_cursor_crc@cursor-suspend.html
   [409]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-5/igt@kms_cursor_crc@cursor-suspend.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size:
    - shard-rkl:          [SKIP][410] ([i915#11190] / [i915#14544]) -> [PASS][411]
   [410]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size.html
   [411]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size.html

  * igt@kms_flip@2x-absolute-wf_vblank-interruptible:
    - shard-glk:          [SKIP][412] -> [PASS][413] +2 other tests pass
   [412]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-glk8/igt@kms_flip@2x-absolute-wf_vblank-interruptible.html
   [413]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk6/igt@kms_flip@2x-absolute-wf_vblank-interruptible.html

  * igt@kms_flip@flip-vs-wf_vblank-interruptible:
    - shard-rkl:          [SKIP][414] ([i915#14544] / [i915#3637]) -> [PASS][415] +2 other tests pass
   [414]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_flip@flip-vs-wf_vblank-interruptible.html
   [415]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@kms_flip@flip-vs-wf_vblank-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling:
    - shard-rkl:          [SKIP][416] ([i915#14544] / [i915#3555]) -> [PASS][417] +2 other tests pass
   [416]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling.html
   [417]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
    - shard-dg1:          [DMESG-WARN][418] ([i915#4423]) -> [PASS][419] +2 other tests pass
   [418]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-18/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu.html
   [419]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-16/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-rkl:          [SKIP][420] ([i915#14544] / [i915#1849] / [i915#5354]) -> [PASS][421] +6 other tests pass
   [420]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [421]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_invalid_mode@bad-vsync-start:
    - shard-rkl:          [SKIP][422] ([i915#14544] / [i915#3555] / [i915#8826]) -> [PASS][423]
   [422]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_invalid_mode@bad-vsync-start.html
   [423]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_invalid_mode@bad-vsync-start.html

  * igt@kms_plane@pixel-format-source-clamping:
    - shard-rkl:          [SKIP][424] ([i915#14544] / [i915#8825]) -> [PASS][425]
   [424]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_plane@pixel-format-source-clamping.html
   [425]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@kms_plane@pixel-format-source-clamping.html

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

  * igt@kms_plane_alpha_blend@alpha-7efc:
    - shard-rkl:          [SKIP][428] ([i915#14544] / [i915#7294]) -> [PASS][429]
   [428]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_plane_alpha_blend@alpha-7efc.html
   [429]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_plane_alpha_blend@alpha-7efc.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers:
    - shard-rkl:          [SKIP][430] ([i915#12247] / [i915#14544] / [i915#8152]) -> [PASS][431] +2 other tests pass
   [430]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers.html
   [431]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers@pipe-a:
    - shard-rkl:          [SKIP][432] ([i915#12247] / [i915#14544]) -> [PASS][433] +1 other test pass
   [432]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers@pipe-a.html
   [433]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers@pipe-a.html

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

  * igt@kms_pm_dc@dc5-psr:
    - shard-mtlp:         [FAIL][436] -> [PASS][437]
   [436]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-mtlp-5/igt@kms_pm_dc@dc5-psr.html
   [437]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-mtlp-5/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-dg2:          [SKIP][438] ([i915#15073]) -> [PASS][439] +1 other test pass
   [438]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg2-1/igt@kms_pm_rpm@modeset-lpsp.html
   [439]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-4/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-rkl:          [SKIP][440] ([i915#15073]) -> [PASS][441] +2 other tests pass
   [440]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-5/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [441]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_pm_rpm@modeset-non-lpsp:
    - shard-rkl:          [SKIP][442] ([i915#14544] / [i915#15073]) -> [PASS][443] +1 other test pass
   [442]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_pm_rpm@modeset-non-lpsp.html
   [443]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@kms_pm_rpm@modeset-non-lpsp.html

  * igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-hdmi-a-1:
    - shard-rkl:          [SKIP][444] ([i915#1311]) -> [PASS][445]
   [444]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-hdmi-a-1.html
   [445]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-hdmi-a-1.html

  * igt@perf@rc6-disable:
    - shard-rkl:          [SKIP][446] -> [PASS][447]
   [446]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@perf@rc6-disable.html
   [447]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@perf@rc6-disable.html

  
#### Warnings ####

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

  * igt@device_reset@unbind-cold-reset-rebind:
    - shard-rkl:          [SKIP][450] ([i915#11078] / [i915#14544]) -> [SKIP][451] ([i915#11078])
   [450]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@device_reset@unbind-cold-reset-rebind.html
   [451]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@device_reset@unbind-cold-reset-rebind.html

  * igt@gem_bad_reloc@negative-reloc-lut:
    - shard-rkl:          [SKIP][452] ([i915#3281]) -> [SKIP][453] ([i915#14544] / [i915#3281]) +6 other tests skip
   [452]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@gem_bad_reloc@negative-reloc-lut.html
   [453]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_bad_reloc@negative-reloc-lut.html

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

  * igt@gem_ccs@suspend-resume:
    - shard-rkl:          [SKIP][456] ([i915#9323]) -> [SKIP][457] ([i915#14544] / [i915#9323])
   [456]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@gem_ccs@suspend-resume.html
   [457]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_ccs@suspend-resume.html

  * igt@gem_close_race@multigpu-basic-threads:
    - shard-rkl:          [SKIP][458] ([i915#14544] / [i915#7697]) -> [SKIP][459] ([i915#7697])
   [458]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gem_close_race@multigpu-basic-threads.html
   [459]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@gem_close_race@multigpu-basic-threads.html

  * igt@gem_create@create-ext-set-pat:
    - shard-rkl:          [SKIP][460] ([i915#8562]) -> [SKIP][461] ([i915#14544] / [i915#8562])
   [460]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@gem_create@create-ext-set-pat.html
   [461]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_create@create-ext-set-pat.html

  * igt@gem_ctx_sseu@mmap-args:
    - shard-rkl:          [SKIP][462] ([i915#280]) -> [SKIP][463] ([i915#14544] / [i915#280]) +1 other test skip
   [462]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@gem_ctx_sseu@mmap-args.html
   [463]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_ctx_sseu@mmap-args.html

  * igt@gem_exec_balancer@parallel-ordering:
    - shard-rkl:          [SKIP][464] ([i915#4525]) -> [SKIP][465] ([i915#14544] / [i915#4525]) +1 other test skip
   [464]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@gem_exec_balancer@parallel-ordering.html
   [465]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_exec_balancer@parallel-ordering.html

  * igt@gem_exec_reloc@basic-gtt-cpu-active:
    - shard-rkl:          [SKIP][466] ([i915#14544] / [i915#3281]) -> [SKIP][467] ([i915#3281]) +5 other tests skip
   [466]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-cpu-active.html
   [467]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-3/igt@gem_exec_reloc@basic-gtt-cpu-active.html

  * igt@gem_lmem_swapping@heavy-verify-multi:
    - shard-rkl:          [SKIP][468] ([i915#14544] / [i915#4613]) -> [SKIP][469] ([i915#4613])
   [468]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gem_lmem_swapping@heavy-verify-multi.html
   [469]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@gem_lmem_swapping@heavy-verify-multi.html

  * igt@gem_lmem_swapping@heavy-verify-random-ccs:
    - shard-rkl:          [SKIP][470] ([i915#4613]) -> [SKIP][471] ([i915#14544] / [i915#4613]) +3 other tests skip
   [470]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-5/igt@gem_lmem_swapping@heavy-verify-random-ccs.html
   [471]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_lmem_swapping@heavy-verify-random-ccs.html

  * igt@gem_media_vme:
    - shard-rkl:          [SKIP][472] ([i915#284]) -> [SKIP][473] ([i915#14544] / [i915#284])
   [472]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@gem_media_vme.html
   [473]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_media_vme.html

  * igt@gem_pxp@hw-rejects-pxp-buffer:
    - shard-rkl:          [TIMEOUT][474] ([i915#12917] / [i915#12964]) -> [SKIP][475] ([i915#13717])
   [474]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@gem_pxp@hw-rejects-pxp-buffer.html
   [475]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@gem_pxp@hw-rejects-pxp-buffer.html

  * igt@gem_pxp@hw-rejects-pxp-context:
    - shard-rkl:          [FAIL][476] ([i915#14981]) -> [TIMEOUT][477] ([i915#12917] / [i915#12964])
   [476]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@gem_pxp@hw-rejects-pxp-context.html
   [477]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@gem_pxp@hw-rejects-pxp-context.html

  * igt@gem_pxp@verify-pxp-key-change-after-suspend-resume:
    - shard-rkl:          [SKIP][478] ([i915#14544] / [i915#4270]) -> [TIMEOUT][479] ([i915#12917] / [i915#12964])
   [478]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gem_pxp@verify-pxp-key-change-after-suspend-resume.html
   [479]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@gem_pxp@verify-pxp-key-change-after-suspend-resume.html

  * igt@gem_readwrite@beyond-eob:
    - shard-rkl:          [SKIP][480] ([i915#3282]) -> [SKIP][481] ([i915#14544] / [i915#3282]) +4 other tests skip
   [480]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@gem_readwrite@beyond-eob.html
   [481]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_readwrite@beyond-eob.html

  * igt@gem_set_tiling_vs_blt@tiled-to-untiled:
    - shard-rkl:          [SKIP][482] ([i915#14544] / [i915#8411]) -> [SKIP][483] ([i915#8411])
   [482]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
   [483]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html

  * igt@gem_set_tiling_vs_pwrite:
    - shard-rkl:          [SKIP][484] ([i915#14544] / [i915#3282]) -> [SKIP][485] ([i915#3282]) +2 other tests skip
   [484]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gem_set_tiling_vs_pwrite.html
   [485]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@gem_set_tiling_vs_pwrite.html

  * igt@gem_userptr_blits@create-destroy-unsync:
    - shard-rkl:          [SKIP][486] ([i915#3297]) -> [SKIP][487] ([i915#14544] / [i915#3297]) +2 other tests skip
   [486]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@gem_userptr_blits@create-destroy-unsync.html
   [487]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_userptr_blits@create-destroy-unsync.html

  * igt@gem_userptr_blits@forbidden-operations:
    - shard-rkl:          [SKIP][488] ([i915#14544] / [i915#3282] / [i915#3297]) -> [SKIP][489] ([i915#3282] / [i915#3297])
   [488]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gem_userptr_blits@forbidden-operations.html
   [489]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@gem_userptr_blits@forbidden-operations.html

  * igt@gem_userptr_blits@relocations:
    - shard-rkl:          [SKIP][490] ([i915#3281] / [i915#3297]) -> [SKIP][491] ([i915#14544] / [i915#3281] / [i915#3297])
   [490]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@gem_userptr_blits@relocations.html
   [491]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gem_userptr_blits@relocations.html

  * igt@gem_userptr_blits@unsync-unmap:
    - shard-rkl:          [SKIP][492] ([i915#14544] / [i915#3297]) -> [SKIP][493] ([i915#3297])
   [492]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gem_userptr_blits@unsync-unmap.html
   [493]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@gem_userptr_blits@unsync-unmap.html

  * igt@gen9_exec_parse@batch-without-end:
    - shard-rkl:          [SKIP][494] ([i915#14544] / [i915#2527]) -> [SKIP][495] ([i915#2527]) +1 other test skip
   [494]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@gen9_exec_parse@batch-without-end.html
   [495]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@gen9_exec_parse@batch-without-end.html

  * igt@gen9_exec_parse@unaligned-jump:
    - shard-rkl:          [SKIP][496] ([i915#2527]) -> [SKIP][497] ([i915#14544] / [i915#2527]) +1 other test skip
   [496]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-5/igt@gen9_exec_parse@unaligned-jump.html
   [497]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@gen9_exec_parse@unaligned-jump.html

  * igt@i915_pm_freq_api@freq-basic-api:
    - shard-rkl:          [SKIP][498] ([i915#8399]) -> [SKIP][499] ([i915#14544] / [i915#8399])
   [498]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@i915_pm_freq_api@freq-basic-api.html
   [499]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@i915_pm_freq_api@freq-basic-api.html

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

  * igt@i915_pm_rc6_residency@media-rc6-accuracy:
    - shard-rkl:          [SKIP][502] -> [SKIP][503] ([i915#14544]) +20 other tests skip
   [502]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@i915_pm_rc6_residency@media-rc6-accuracy.html
   [503]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@i915_pm_rc6_residency@media-rc6-accuracy.html

  * igt@i915_pm_rc6_residency@rc6-idle:
    - shard-rkl:          [SKIP][504] ([i915#14498] / [i915#14544]) -> [SKIP][505] ([i915#14498])
   [504]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@i915_pm_rc6_residency@rc6-idle.html
   [505]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@i915_pm_rc6_residency@rc6-idle.html

  * igt@i915_pm_rpm@gem-execbuf-stress-pc8:
    - shard-rkl:          [SKIP][506] ([i915#13328]) -> [SKIP][507]
   [506]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@i915_pm_rpm@gem-execbuf-stress-pc8.html
   [507]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@i915_pm_rpm@gem-execbuf-stress-pc8.html

  * igt@i915_pm_sseu@full-enable:
    - shard-rkl:          [SKIP][508] ([i915#4387]) -> [SKIP][509] ([i915#14544] / [i915#4387])
   [508]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-3/igt@i915_pm_sseu@full-enable.html
   [509]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@i915_pm_sseu@full-enable.html

  * igt@kms_atomic@plane-primary-overlay-mutable-zpos:
    - shard-rkl:          [SKIP][510] ([i915#14544]) -> [SKIP][511] ([i915#9531])
   [510]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
   [511]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-3/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html

  * igt@kms_big_fb@4-tiled-16bpp-rotate-90:
    - shard-rkl:          [SKIP][512] ([i915#5286]) -> [SKIP][513] ([i915#14544]) +4 other tests skip
   [512]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_big_fb@4-tiled-16bpp-rotate-90.html
   [513]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_big_fb@4-tiled-16bpp-rotate-90.html

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

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-rkl:          [SKIP][516] ([i915#3638]) -> [SKIP][517] ([i915#14544]) +7 other tests skip
   [516]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_big_fb@linear-64bpp-rotate-90.html
   [517]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_big_fb@linear-64bpp-rotate-90.html

  * igt@kms_big_fb@linear-8bpp-rotate-90:
    - shard-rkl:          [SKIP][518] ([i915#14544]) -> [SKIP][519] ([i915#3638])
   [518]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_big_fb@linear-8bpp-rotate-90.html
   [519]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_big_fb@linear-8bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-270:
    - shard-rkl:          [SKIP][520] ([i915#14544]) -> [SKIP][521] +9 other tests skip
   [520]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html
   [521]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][522] ([i915#6095]) -> [SKIP][523] ([i915#14098] / [i915#6095]) +2 other tests skip
   [522]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2.html
   [523]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs:
    - shard-dg1:          [SKIP][524] ([i915#6095]) -> [SKIP][525] ([i915#4423] / [i915#6095]) +1 other test skip
   [524]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-15/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs.html
   [525]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-18/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs:
    - shard-rkl:          [SKIP][526] ([i915#14544]) -> [SKIP][527] ([i915#14098] / [i915#6095]) +4 other tests skip
   [526]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs.html
   [527]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][528] ([i915#14098] / [i915#6095]) -> [SKIP][529] ([i915#6095]) +3 other tests skip
   [528]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-3/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html
   [529]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
    - shard-rkl:          [SKIP][530] ([i915#12313]) -> [SKIP][531] ([i915#14544]) +1 other test skip
   [530]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
   [531]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs:
    - shard-rkl:          [SKIP][532] ([i915#14544]) -> [SKIP][533] ([i915#12313])
   [532]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs.html
   [533]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs.html

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

  * igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k:
    - shard-dg1:          [SKIP][536] ([i915#11151] / [i915#4423] / [i915#7828]) -> [SKIP][537] ([i915#11151] / [i915#7828])
   [536]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-18/igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k.html
   [537]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-13/igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k.html

  * igt@kms_chamelium_edid@hdmi-edid-read:
    - shard-rkl:          [SKIP][538] ([i915#11151] / [i915#7828]) -> [SKIP][539] ([i915#11151] / [i915#14544] / [i915#7828]) +7 other tests skip
   [538]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_chamelium_edid@hdmi-edid-read.html
   [539]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_chamelium_edid@hdmi-edid-read.html

  * igt@kms_chamelium_frames@dp-crc-fast:
    - shard-rkl:          [SKIP][540] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][541] ([i915#11151] / [i915#7828]) +4 other tests skip
   [540]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_chamelium_frames@dp-crc-fast.html
   [541]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_chamelium_frames@dp-crc-fast.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-rkl:          [SKIP][542] ([i915#3116]) -> [SKIP][543] ([i915#14544])
   [542]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-3/igt@kms_content_protection@dp-mst-lic-type-0.html
   [543]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-0.html

  * igt@kms_content_protection@lic-type-0:
    - shard-rkl:          [SKIP][544] ([i915#14544]) -> [SKIP][545] ([i915#9424])
   [544]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_content_protection@lic-type-0.html
   [545]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@kms_content_protection@lic-type-0.html

  * igt@kms_content_protection@srm:
    - shard-dg1:          [SKIP][546] ([i915#7116]) -> [SKIP][547] ([i915#4423] / [i915#7116])
   [546]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-14/igt@kms_content_protection@srm.html
   [547]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-12/igt@kms_content_protection@srm.html

  * igt@kms_content_protection@uevent:
    - shard-rkl:          [SKIP][548] ([i915#14544]) -> [SKIP][549] ([i915#7118] / [i915#9424])
   [548]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_content_protection@uevent.html
   [549]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@cursor-onscreen-128x42:
    - shard-rkl:          [FAIL][550] ([i915#13566]) -> [SKIP][551] ([i915#14544]) +1 other test skip
   [550]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_cursor_crc@cursor-onscreen-128x42.html
   [551]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-128x42.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-rkl:          [SKIP][552] ([i915#13049]) -> [SKIP][553] ([i915#14544]) +1 other test skip
   [552]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_cursor_crc@cursor-random-512x170.html
   [553]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-random-512x512:
    - shard-rkl:          [SKIP][554] ([i915#14544]) -> [SKIP][555] ([i915#13049]) +1 other test skip
   [554]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_cursor_crc@cursor-random-512x512.html
   [555]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@kms_cursor_crc@cursor-random-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x32:
    - shard-rkl:          [SKIP][556] ([i915#3555]) -> [SKIP][557] ([i915#14544]) +2 other tests skip
   [556]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@kms_cursor_crc@cursor-rapid-movement-32x32.html
   [557]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-32x32.html

  * igt@kms_cursor_crc@cursor-sliding-128x42:
    - shard-rkl:          [SKIP][558] ([i915#14544]) -> [FAIL][559] ([i915#13566])
   [558]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_cursor_crc@cursor-sliding-128x42.html
   [559]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_cursor_crc@cursor-sliding-128x42.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-rkl:          [FAIL][560] ([i915#13566]) -> [DMESG-FAIL][561] ([i915#12964])
   [560]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_cursor_crc@cursor-sliding-256x85.html
   [561]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-rkl:          [SKIP][562] ([i915#4103]) -> [SKIP][563] ([i915#14544])
   [562]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-5/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
   [563]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
    - shard-rkl:          [SKIP][564] ([i915#9723]) -> [SKIP][565] ([i915#14544])
   [564]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
   [565]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-rkl:          [SKIP][566] ([i915#13691]) -> [SKIP][567] ([i915#14544])
   [566]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-5/igt@kms_display_modes@extended-mode-basic.html
   [567]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-rkl:          [SKIP][568] ([i915#13749]) -> [SKIP][569] ([i915#14544])
   [568]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_dp_link_training@non-uhbr-sst.html
   [569]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_dp_link_training@non-uhbr-sst.html
    - shard-dg1:          [SKIP][570] ([i915#13749]) -> [SKIP][571] ([i915#13749] / [i915#4423])
   [570]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-12/igt@kms_dp_link_training@non-uhbr-sst.html
   [571]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-18/igt@kms_dp_link_training@non-uhbr-sst.html

  * igt@kms_dsc@dsc-basic:
    - shard-rkl:          [SKIP][572] ([i915#3555] / [i915#3840]) -> [SKIP][573] ([i915#11190] / [i915#14544])
   [572]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_dsc@dsc-basic.html
   [573]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_dsc@dsc-basic.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-rkl:          [SKIP][574] ([i915#14544]) -> [SKIP][575] ([i915#3840])
   [574]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp.html
   [575]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@kms_dsc@dsc-fractional-bpp.html

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

  * igt@kms_feature_discovery@chamelium:
    - shard-rkl:          [SKIP][578] ([i915#14544] / [i915#4854]) -> [SKIP][579] ([i915#4854])
   [578]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_feature_discovery@chamelium.html
   [579]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-2/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@psr2:
    - shard-rkl:          [SKIP][580] ([i915#14544] / [i915#658]) -> [SKIP][581] ([i915#658])
   [580]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_feature_discovery@psr2.html
   [581]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip@2x-flip-vs-modeset:
    - shard-rkl:          [SKIP][582] ([i915#9934]) -> [SKIP][583] ([i915#14544] / [i915#9934]) +3 other tests skip
   [582]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_flip@2x-flip-vs-modeset.html
   [583]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_flip@2x-flip-vs-modeset.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible:
    - shard-glk:          [INCOMPLETE][584] ([i915#12314] / [i915#12745] / [i915#4839]) -> [SKIP][585]
   [584]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-glk5/igt@kms_flip@2x-flip-vs-suspend-interruptible.html
   [585]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-glk8/igt@kms_flip@2x-flip-vs-suspend-interruptible.html

  * igt@kms_flip@2x-modeset-vs-vblank-race:
    - shard-rkl:          [SKIP][586] ([i915#14544] / [i915#9934]) -> [SKIP][587] ([i915#9934]) +5 other tests skip
   [586]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_flip@2x-modeset-vs-vblank-race.html
   [587]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@kms_flip@2x-modeset-vs-vblank-race.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible:
    - shard-rkl:          [DMESG-WARN][588] ([i915#12964]) -> [SKIP][589] ([i915#14544] / [i915#3637])
   [588]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@kms_flip@wf_vblank-ts-check-interruptible.html
   [589]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_flip@wf_vblank-ts-check-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
    - shard-rkl:          [SKIP][590] ([i915#2672] / [i915#3555]) -> [SKIP][591] ([i915#14544] / [i915#3555]) +4 other tests skip
   [590]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
   [591]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
    - shard-dg1:          [SKIP][592] ([i915#2672] / [i915#3555]) -> [SKIP][593] ([i915#2672] / [i915#3555] / [i915#4423])
   [592]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-18/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
   [593]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-18/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode:
    - shard-dg1:          [SKIP][594] ([i915#2587] / [i915#2672]) -> [SKIP][595] ([i915#2587] / [i915#2672] / [i915#4423])
   [594]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-18/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html
   [595]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-18/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
    - shard-rkl:          [SKIP][596] ([i915#14544] / [i915#3555]) -> [SKIP][597] ([i915#2672] / [i915#3555]) +3 other tests skip
   [596]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
   [597]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html

  * igt@kms_force_connector_basic@force-load-detect:
    - shard-dg1:          [SKIP][598] -> [ABORT][599] ([i915#4423])
   [598]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-14/igt@kms_force_connector_basic@force-load-detect.html
   [599]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-18/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move:
    - shard-dg1:          [SKIP][600] -> [SKIP][601] ([i915#4423]) +2 other tests skip
   [600]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-16/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html
   [601]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-18/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt:
    - shard-rkl:          [SKIP][602] -> [SKIP][603] ([i915#14544] / [i915#1849] / [i915#5354])
   [602]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt.html
   [603]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-4:
    - shard-rkl:          [SKIP][604] ([i915#14544] / [i915#1849] / [i915#5354]) -> [SKIP][605] ([i915#5439])
   [604]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-tiling-4.html
   [605]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-3/igt@kms_frontbuffer_tracking@fbc-tiling-4.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move:
    - shard-dg2:          [SKIP][606] ([i915#3458]) -> [SKIP][607] ([i915#10433] / [i915#15102] / [i915#3458])
   [606]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg2-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move.html
   [607]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-rte:
    - shard-rkl:          [SKIP][608] ([i915#3023]) -> [SKIP][609] ([i915#14544] / [i915#1849] / [i915#5354]) +20 other tests skip
   [608]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html
   [609]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
    - shard-rkl:          [SKIP][610] ([i915#14544] / [i915#1849] / [i915#5354]) -> [SKIP][611] ([i915#1825]) +27 other tests skip
   [610]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html
   [611]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt:
    - shard-dg1:          [SKIP][612] ([i915#3458]) -> [SKIP][613] ([i915#15102] / [i915#3458]) +74 other tests skip
   [612]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-12/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt.html
   [613]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-19/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc:
    - shard-rkl:          [SKIP][614] ([i915#3023]) -> [SKIP][615] ([i915#15102] / [i915#3023]) +70 other tests skip
   [614]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc.html
   [615]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@pipe-fbc-rte:
    - shard-rkl:          [SKIP][616] ([i915#9766]) -> [SKIP][617] ([i915#14544] / [i915#1849] / [i915#5354])
   [616]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html
   [617]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move:
    - shard-dg2:          [SKIP][618] ([i915#3458]) -> [SKIP][619] ([i915#15102] / [i915#3458]) +40 other tests skip
   [618]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg2-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
   [619]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg2-5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-gtt:
    - shard-rkl:          [SKIP][620] ([i915#14544] / [i915#1849] / [i915#5354]) -> [SKIP][621] ([i915#15102] / [i915#3023]) +8 other tests skip
   [620]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-gtt.html
   [621]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-gtt.html

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

  * igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary:
    - shard-tglu:         [SKIP][624] -> [SKIP][625] ([i915#15102]) +86 other tests skip
   [624]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-tglu-2/igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary.html
   [625]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-tglu-6/igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-rkl:          [SKIP][626] ([i915#10656]) -> [SKIP][627] ([i915#10656] / [i915#14544])
   [626]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_joiner@invalid-modeset-big-joiner.html
   [627]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_joiner@invalid-modeset-force-big-joiner:
    - shard-rkl:          [SKIP][628] ([i915#12388]) -> [SKIP][629] ([i915#12388] / [i915#14544])
   [628]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-3/igt@kms_joiner@invalid-modeset-force-big-joiner.html
   [629]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_joiner@invalid-modeset-force-big-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-rkl:          [SKIP][630] ([i915#4070] / [i915#4816]) -> [SKIP][631] ([i915#14544] / [i915#4070] / [i915#4816])
   [630]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-5/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [631]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

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

  * igt@kms_plane_multiple@tiling-yf:
    - shard-rkl:          [SKIP][634] ([i915#14259]) -> [SKIP][635] ([i915#14544])
   [634]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-3/igt@kms_plane_multiple@tiling-yf.html
   [635]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_plane_scaling@2x-scaler-multi-pipe:
    - shard-rkl:          [SKIP][636] -> [SKIP][637] ([i915#14544] / [i915#8152])
   [636]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
   [637]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_plane_scaling@2x-scaler-multi-pipe.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b:
    - shard-rkl:          [SKIP][638] ([i915#12247]) -> [SKIP][639] ([i915#12247] / [i915#14544] / [i915#8152]) +4 other tests skip
   [638]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html
   [639]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html

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

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

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
    - shard-rkl:          [SKIP][644] ([i915#3555]) -> [SKIP][645] ([i915#14544] / [i915#3555] / [i915#8152])
   [644]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html
   [645]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html

  * igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-a:
    - shard-rkl:          [SKIP][646] ([i915#12247]) -> [SKIP][647] ([i915#12247] / [i915#14544]) +2 other tests skip
   [646]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-a.html
   [647]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-a.html

  * igt@kms_pm_backlight@basic-brightness:
    - shard-rkl:          [SKIP][648] ([i915#14544] / [i915#5354]) -> [SKIP][649] ([i915#5354])
   [648]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_pm_backlight@basic-brightness.html
   [649]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-5/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-rkl:          [SKIP][650] ([i915#5354]) -> [SKIP][651] ([i915#14544] / [i915#5354])
   [650]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@kms_pm_backlight@fade-with-dpms.html
   [651]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-rkl:          [SKIP][652] ([i915#9685]) -> [SKIP][653] ([i915#14544] / [i915#9685])
   [652]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-3/igt@kms_pm_dc@dc3co-vpb-simulation.html
   [653]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_pm_dc@dc3co-vpb-simulation.html

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

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-rkl:          [SKIP][656] ([i915#9340]) -> [SKIP][657] ([i915#3828])
   [656]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-5/igt@kms_pm_lpsp@kms-lpsp.html
   [657]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-rkl:          [SKIP][658] ([i915#15073]) -> [SKIP][659] ([i915#14544] / [i915#15073])
   [658]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
   [659]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-rkl:          [SKIP][660] ([i915#14544] / [i915#15073]) -> [SKIP][661] ([i915#15073])
   [660]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [661]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf:
    - shard-rkl:          [SKIP][662] ([i915#11520]) -> [SKIP][663] ([i915#11520] / [i915#14544]) +6 other tests skip
   [662]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-5/igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf.html
   [663]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
    - shard-rkl:          [SKIP][664] ([i915#11520] / [i915#14544]) -> [SKIP][665] ([i915#11520]) +5 other tests skip
   [664]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html
   [665]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-rkl:          [SKIP][666] ([i915#14544] / [i915#9683]) -> [SKIP][667] ([i915#9683])
   [666]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_psr2_su@frontbuffer-xrgb8888.html
   [667]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@pr-cursor-plane-onoff:
    - shard-rkl:          [SKIP][668] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][669] ([i915#1072] / [i915#9732]) +11 other tests skip
   [668]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_psr@pr-cursor-plane-onoff.html
   [669]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_psr@pr-cursor-plane-onoff.html

  * igt@kms_psr@psr-suspend:
    - shard-dg1:          [SKIP][670] ([i915#1072] / [i915#9732]) -> [SKIP][671] ([i915#1072] / [i915#4423] / [i915#9732])
   [670]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-16/igt@kms_psr@psr-suspend.html
   [671]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-15/igt@kms_psr@psr-suspend.html

  * igt@kms_psr@psr2-cursor-mmap-gtt:
    - shard-rkl:          [SKIP][672] ([i915#1072] / [i915#9732]) -> [SKIP][673] ([i915#1072] / [i915#14544] / [i915#9732]) +22 other tests skip
   [672]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_psr@psr2-cursor-mmap-gtt.html
   [673]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_psr@psr2-cursor-mmap-gtt.html

  * igt@kms_psr@psr2-sprite-plane-onoff:
    - shard-dg1:          [SKIP][674] ([i915#1072] / [i915#4423] / [i915#9732]) -> [SKIP][675] ([i915#1072] / [i915#9732])
   [674]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-dg1-18/igt@kms_psr@psr2-sprite-plane-onoff.html
   [675]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-dg1-16/igt@kms_psr@psr2-sprite-plane-onoff.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-rkl:          [SKIP][676] ([i915#14544]) -> [DMESG-WARN][677] ([i915#12964])
   [676]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_rotation_crc@primary-rotation-270.html
   [677]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-4/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-rkl:          [SKIP][678] ([i915#14544]) -> [SKIP][679] ([i915#5289])
   [678]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
   [679]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_scaling_modes@scaling-mode-none:
    - shard-rkl:          [SKIP][680] ([i915#14544]) -> [SKIP][681] ([i915#3555]) +2 other tests skip
   [680]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_scaling_modes@scaling-mode-none.html
   [681]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-8/igt@kms_scaling_modes@scaling-mode-none.html

  * igt@kms_sequence@get-idle:
    - shard-rkl:          [DMESG-WARN][682] ([i915#12964]) -> [SKIP][683] ([i915#14544])
   [682]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-3/igt@kms_sequence@get-idle.html
   [683]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_sequence@get-idle.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - shard-rkl:          [SKIP][684] ([i915#14544] / [i915#3555]) -> [SKIP][685] ([i915#3555])
   [684]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_setmode@basic-clone-single-crtc.html
   [685]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-rkl:          [SKIP][686] ([i915#8623]) -> [SKIP][687] ([i915#14544])
   [686]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_tiled_display@basic-test-pattern.html
   [687]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_vblank@ts-continuation-dpms-suspend:
    - shard-rkl:          [INCOMPLETE][688] ([i915#12276]) -> [SKIP][689] ([i915#14544])
   [688]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-4/igt@kms_vblank@ts-continuation-dpms-suspend.html
   [689]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_vblank@ts-continuation-dpms-suspend.html

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - shard-rkl:          [SKIP][690] ([i915#14544]) -> [SKIP][691] ([i915#9906])
   [690]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-6/igt@kms_vrr@seamless-rr-switch-drrs.html
   [691]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-7/igt@kms_vrr@seamless-rr-switch-drrs.html

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - shard-rkl:          [SKIP][692] ([i915#9906]) -> [SKIP][693] ([i915#14544]) +1 other test skip
   [692]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@kms_vrr@seamless-rr-switch-vrr.html
   [693]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_vrr@seamless-rr-switch-vrr.html

  * igt@kms_writeback@writeback-check-output:
    - shard-rkl:          [SKIP][694] ([i915#2437]) -> [SKIP][695] ([i915#14544] / [i915#2437]) +1 other test skip
   [694]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@kms_writeback@writeback-check-output.html
   [695]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@kms_writeback@writeback-check-output.html

  * igt@perf@gen8-unprivileged-single-ctx-counters:
    - shard-rkl:          [SKIP][696] ([i915#2436]) -> [SKIP][697] ([i915#14544] / [i915#2436])
   [696]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@perf@gen8-unprivileged-single-ctx-counters.html
   [697]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@perf@gen8-unprivileged-single-ctx-counters.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-rkl:          [SKIP][698] ([i915#8516]) -> [SKIP][699] ([i915#14544] / [i915#8516])
   [698]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-8/igt@perf_pmu@rc6-all-gts.html
   [699]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@perf_pmu@rc6-all-gts.html

  * igt@prime_vgem@fence-read-hang:
    - shard-rkl:          [SKIP][700] ([i915#3708]) -> [SKIP][701] ([i915#14544] / [i915#3708])
   [700]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-7/igt@prime_vgem@fence-read-hang.html
   [701]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@prime_vgem@fence-read-hang.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - shard-rkl:          [SKIP][702] ([i915#9917]) -> [SKIP][703] ([i915#14544] / [i915#9917]) +1 other test skip
   [702]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8579/shard-rkl-2/igt@sriov_basic@enable-vfs-autoprobe-on.html
   [703]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_13878/shard-rkl-6/igt@sriov_basic@enable-vfs-autoprobe-on.html

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

  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10538
  [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10959]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10959
  [i915#1099]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1099
  [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
  [i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
  [i915#11190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11190
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11521]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11521
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#11713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11713
  [i915#11943]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11943
  [i915#11965]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11965
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12178]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12178
  [i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
  [i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12314
  [i915#12339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12339
  [i915#12388]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12388
  [i915#12655]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12655
  [i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
  [i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
  [i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
  [i915#12917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12917
  [i915#12942]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12942
  [i915#12964]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12964
  [i915#13029]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13029
  [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#1311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1311
  [i915#13179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13179
  [i915#13328]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13328
  [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
  [i915#13427]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13427
  [i915#13447]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13447
  [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
  [i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
  [i915#13705]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13705
  [i915#13707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13707
  [i915#13717]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13717
  [i915#13748]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13748
  [i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
  [i915#13781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13781
  [i915#13784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13784
  [i915#13790]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13790
  [i915#13809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13809
  [i915#13820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13820
  [i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
  [i915#14073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14073
  [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
  [i915#14118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14118
  [i915#14121]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14121
  [i915#14123]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14123
  [i915#14259]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14259
  [i915#14498]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14498
  [i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
  [i915#14545]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14545
  [i915#14553]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14553
  [i915#14561]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14561
  [i915#14600]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14600
  [i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
  [i915#14756]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14756
  [i915#14849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14849
  [i915#14871]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14871
  [i915#14981]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14981
  [i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
  [i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#2065]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2065
  [i915#2436]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2436
  [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
  [i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#3936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3936
  [i915#4070]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4281
  [i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#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#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
  [i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881
  [i915#4885]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4885
  [i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#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#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
  [i915#5723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5723
  [i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6230]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6230
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6805
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
  [i915#7294]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7294
  [i915#7387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7387
  [i915#7443]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7443
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7862]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7862
  [i915#8152]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8152
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
  [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8825
  [i915#8826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8826
  [i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
  [i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
  [i915#9100]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9100
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
  [i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9531]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9531
  [i915#9581]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9581
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#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#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
  [i915#9833]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9833
  [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_8579 -> IGTPW_13878

  CI-20190529: 20190529
  CI_DRM_17327: f929eafc95342ea5377f79705864d50dd325c79f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_13878: 13878
  IGT_8579: 8579

== Logs ==

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

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

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

* Re: [PATCH i-g-t 06/18] tests/intel/xe_oa: Add for_each_oa_unit
  2025-10-08 23:31   ` Umesh Nerlige Ramappa
@ 2025-10-09 16:40     ` Umesh Nerlige Ramappa
  2025-10-13 20:32       ` Dixit, Ashutosh
  0 siblings, 1 reply; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-09 16:40 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 04:31:23PM -0700, Umesh Nerlige Ramappa wrote:
>On Wed, Oct 08, 2025 at 02:17:53PM -0700, Ashutosh Dixit wrote:
>>Add a for_each_oa_unit iterator, which eliminates code duplication when
>>iterating over OA units obtained from OA unit query.
>>
>>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
>>---
>>tests/intel/xe_oa.c | 21 +++++++++++----------
>>1 file changed, 11 insertions(+), 10 deletions(-)
>>
>>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>>index 012f5929ce..bc71bfcd30 100644
>>--- a/tests/intel/xe_oa.c
>>+++ b/tests/intel/xe_oa.c
>>@@ -477,18 +477,21 @@ static struct drm_xe_engine_class_instance *oa_unit_engine(struct drm_xe_oa_unit
>>	return !oau ? NULL : oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
>>}
>>
>>+#define for_each_oa_unit(qoa, oau, poau, i) \
>>+	for (i = 0, qoa = xe_oa_units(drm_fd), poau = (u8 *)&qoa->oa_units[0]; \
>>+	     oau = (struct drm_xe_oa_unit *)poau, i < qoa->num_oa_units; \
>>+	     poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]), i++)
>>+
>>static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
>>{
>>-	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
>>+	struct drm_xe_query_oa_units *qoa;
>>	struct drm_xe_oa_unit *oau;
>>	u8 *poau;
>>+	int i;
>>
>>-	poau = (u8 *)&qoa->oa_units[0];
>>-	for (int i = 0; i < qoa->num_oa_units; i++) {
>>-		oau = (struct drm_xe_oa_unit *)poau;
>>+	for_each_oa_unit(qoa, oau, poau, i) {
>>		if (oau->oa_unit_id == n)
>>			return oau;
>>-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
>>	}
>>
>>	return NULL;
>>@@ -496,16 +499,14 @@ static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
>>
>>static struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
>>{
>>-	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
>>+	struct drm_xe_query_oa_units *qoa;
>>	struct drm_xe_oa_unit *oau;
>>	u8 *poau;
>>+	int i;
>>
>>-	poau = (u8 *)&qoa->oa_units[0];
>>-	for (int i = 0; i < qoa->num_oa_units; i++) {
>>-		oau = (struct drm_xe_oa_unit *)poau;
>>+	for_each_oa_unit(qoa, oau, poau, i) {
>>		if (oau->oa_unit_type == t)
>>			return oau;
>>-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
>>	}
>>
>>	return NULL;
>
>If it's possible to keep the interface for iterators simple, I would 
>go for that. i, poau can be hidden from the caller. Something like 
>this:
>
>// NOTE: not compiled/tested
>
>static u32 xe_oa_first_unit(int fd, struct drm_xe_oa_unit **oau)
>{
>        struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
>        *oau = &qoa->oa_units[0];
>
>        return qoa->num_oa_units;
>}
>
>static void xe_oa_next_unit(struct drm_xe_oa_unit **oau)
>{
>	struct drm_xe_oa_unit *poau = *oau;
>
>        return (u8 *)poau + sizeof(*poau) + poau->num_engines * sizeof(poau->eci[0]);

Not return, but update *oau.

*oau = (u8 *)poau + sizeof(*poau) + poau->num_engines * sizeof(poau->eci[0]);

>}
>
>#define for_each_oa_unit(fd, oau) \
>        for (u32 i = 0, num = xe_oa_first_unit(fd, &oau); \
>             oau && i < num; \
>             i++, xe_oa_next_unit(&oau))
>
>static const struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
>{
>        struct drm_xe_oa_unit *oau;
>
>        for_each_oa_unit(fd, oau) {
>                if (oau->oa_unit_id == n)
>                        return oau;
>        }
>
>        return NULL;
>}
>
>static const struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
>{
>        struct drm_xe_oa_unit *oau;
>
>        for_each_oa_unit(fd, oau) {
>                if (oau->oa_unit_type == t)
>                        return oau;
>        }
>
>        return NULL;
>}
>
>Thanks,
>Umesh
>
>
>
>>-- 
>>2.48.1
>>

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

* Re: [PATCH i-g-t 03/18] tests/intel/xe_oa: Rename nth_oa_unit to oa_unit_by_id
  2025-10-08 21:56   ` Umesh Nerlige Ramappa
@ 2025-10-10 21:31     ` Dixit, Ashutosh
  0 siblings, 0 replies; 45+ messages in thread
From: Dixit, Ashutosh @ 2025-10-10 21:31 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: igt-dev

On Wed, 08 Oct 2025 14:56:30 -0700, Umesh Nerlige Ramappa wrote:
>
> On Wed, Oct 08, 2025 at 02:17:50PM -0700, Ashutosh Dixit wrote:
> > Rename nth_oa_unit to oa_unit_by_id. We will introduce oa_unit_by_type soon
> > and oa_unit_by_id fits that naming scheme.
> >
> > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
>
> nit: s/n/id/ in function params

Fixed in v2. Thanks!

>
> Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
>
> > ---
> > tests/intel/xe_oa.c | 8 ++++----
> > 1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
> > index a028823e51..65e03b1010 100644
> > --- a/tests/intel/xe_oa.c
> > +++ b/tests/intel/xe_oa.c
> > @@ -493,7 +493,7 @@ static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
> >	return hwe;
> > }
> >
> > -static struct drm_xe_oa_unit *nth_oa_unit(int fd, int n)
> > +static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
> > {
> >	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
> >	struct drm_xe_oa_unit *oau;
> > @@ -502,7 +502,7 @@ static struct drm_xe_oa_unit *nth_oa_unit(int fd, int n)
> >	poau = (u8 *)&qoa->oa_units[0];
> >	for (int i = 0; i < qoa->num_oa_units; i++) {
> >		oau = (struct drm_xe_oa_unit *)poau;
> > -		if (i == n)
> > +		if (oau->oa_unit_id == n)
> >			return oau;
> >		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
> >	}
> > @@ -4348,7 +4348,7 @@ test_oa_unit_concurrent_oa_buffer_read(void)
> >		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, child);
> >
> >		/* No OAM support yet */
> > -		if (nth_oa_unit(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
> > +		if (oa_unit_by_id(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
> >			exit(0);
> >
> >		test_blocking(40 * 1000 * 1000, false, 5 * 1000 * 1000, hwe);
> > @@ -5027,7 +5027,7 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> >		/* See xe_query_oa_units_new() */
> >		igt_require(xe_dev->oa_units);
> >		igt_require(xe_dev->oa_units->num_oa_units);
> > -		oau = nth_oa_unit(drm_fd, 0);
> > +		oau = oa_unit_by_id(drm_fd, 0);
> >
> >		devid = intel_get_drm_devid(drm_fd);
> >		sysfs = igt_sysfs_open(drm_fd);
> > --
> > 2.48.1
> >

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

* Re: [PATCH i-g-t 07/18] tests/intel/xe_oa: Convert test_oa_formats to take an OA unit argument
  2025-10-08 21:17 ` [PATCH i-g-t 07/18] tests/intel/xe_oa: Convert test_oa_formats to take an OA unit argument Ashutosh Dixit
@ 2025-10-10 22:22   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:22 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:54PM -0700, Ashutosh Dixit wrote:
>To enable OA IGT's to run on all OA units, OA unit tests are converted to
>take a 'struct drm_xe_oa_unit *' argument (instead of hwe). This patch
>converts the first unit test (test_oa_formats), so it introduces this new
>infrastructure.
>
>OA units are now identified via a name (corresponding to OA unit type) and
>id. OA units are longer identified by hwe, because some OA units have no
>associated hwe's.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

LGTM,

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh
>---
> tests/intel/xe_oa.c | 92 ++++++++++++++++++++++++++++++++++-----------
> 1 file changed, 71 insertions(+), 21 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index bc71bfcd30..af01a79d38 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -327,8 +327,6 @@ static int pm_fd = -1;
> static int stream_fd = -1;
> static uint32_t devid;
>
>-static struct drm_xe_engine_class_instance default_hwe;
>-
> static struct intel_xe_perf *intel_xe_perf;
> static uint64_t oa_exponent_default;
> static size_t default_oa_buffer_size;
>@@ -340,6 +338,54 @@ static uint32_t min_oa_exponent;
> static uint32_t buffer_fill_size;
> static uint32_t num_buf_sizes;
>
>+/* OA unit names */
>+static const char *oa_unit_name[] = {
>+	[DRM_XE_OA_UNIT_TYPE_OAG] = "oag",
>+	[DRM_XE_OA_UNIT_TYPE_OAM] = "oam",
>+	[DRM_XE_OA_UNIT_TYPE_OAM_SAG] = "sag",
>+};
>+
>+static struct intel_xe_perf_metric_set *oa_unit_metric_set(struct drm_xe_oa_unit *oau)
>+{
>+	const char *test_set_name = NULL;
>+	struct intel_xe_perf_metric_set *metric_set_iter;
>+	struct intel_xe_perf_metric_set *test_set = NULL;
>+
>+	if (oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAG)
>+		test_set_name = "TestOa";
>+	else if (HAS_OAM(devid) &&
>+		 (oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAM ||
>+		  oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAM_SAG))
>+		test_set_name = "MediaSet1";
>+	else
>+		igt_assert(!"reached");
>+
>+	igt_list_for_each_entry(metric_set_iter, &intel_xe_perf->metric_sets, link) {
>+		if (strcmp(metric_set_iter->symbol_name, test_set_name) == 0) {
>+			test_set = metric_set_iter;
>+			break;
>+		}
>+	}
>+
>+	igt_assert(test_set);
>+
>+	/*
>+	 * configuration was loaded in init_sys_info() ->
>+	 * intel_xe_perf_load_perf_configs(), and test_set->perf_oa_metrics_set
>+	 * should point to metric id returned by the config add ioctl. 0 is
>+	 * invalid.
>+	 */
>+	igt_assert_neq_u64(test_set->perf_oa_metrics_set, 0);
>+
>+	igt_debug("oa_unit %d:%d - %s metric set UUID = %s\n",
>+		  oau->oa_unit_id,
>+		  oau->oa_unit_type,
>+		  test_set->symbol_name,
>+		  test_set->hw_config_guid);
>+
>+	return test_set;
>+}
>+
> static struct intel_xe_perf_metric_set *metric_set(const struct drm_xe_engine_class_instance *hwe)
> {
> 	const char *test_set_name = NULL;
>@@ -381,7 +427,7 @@ static struct intel_xe_perf_metric_set *metric_set(const struct drm_xe_engine_cl
>
> 	return test_set;
> }
>-#define default_test_set metric_set(&default_hwe)
>+#define default_test_set oa_unit_metric_set(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG))
>
> static void set_fd_flags(int fd, int flags)
> {
>@@ -1548,11 +1594,11 @@ open_and_read_2_oa_reports(int format_id,
> 			   uint32_t *oa_report0,
> 			   uint32_t *oa_report1,
> 			   bool timer_only,
>-			   const struct drm_xe_engine_class_instance *hwe)
>+			   struct drm_xe_oa_unit *oau)
> {
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
>
> 		/* Include OA reports in samples */
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
>@@ -1672,32 +1718,28 @@ print_reports(uint32_t *oa_report0, uint32_t *oa_report1, int fmt)
> }
>
> static bool
>-hwe_supports_oa_type(int oa_type, const struct drm_xe_engine_class_instance *hwe)
>+oau_supports_oa_type(int oa_type, struct drm_xe_oa_unit *oau)
> {
> 	switch (oa_type) {
> 	case DRM_XE_OA_FMT_TYPE_OAM:
> 	case DRM_XE_OA_FMT_TYPE_OAM_MPEC:
>-		return hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_DECODE ||
>-		       hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE;
>+		return oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAM ||
>+		       oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAM_SAG;
> 	case DRM_XE_OA_FMT_TYPE_OAG:
> 	case DRM_XE_OA_FMT_TYPE_OAR:
>-		return hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER;
> 	case DRM_XE_OA_FMT_TYPE_OAC:
>-		return hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE;
> 	case DRM_XE_OA_FMT_TYPE_PEC:
>-		return hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER ||
>-		       hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE;
>+		return oau->oa_unit_type == DRM_XE_OA_UNIT_TYPE_OAG;
> 	default:
> 		return false;
> 	}
>-
> }
>
> /**
>  * SUBTEST: oa-formats
>  * Description: Test that supported OA formats work as expected
>  */
>-static void test_oa_formats(const struct drm_xe_engine_class_instance *hwe)
>+static void test_oa_formats(struct drm_xe_oa_unit *oau)
> {
> 	for (int i = 0; i < XE_OA_FORMAT_MAX; i++) {
> 		struct oa_format format = get_oa_format(i);
>@@ -1707,7 +1749,7 @@ static void test_oa_formats(const struct drm_xe_engine_class_instance *hwe)
> 		if (!format.name) /* sparse, indexed by ID */
> 			continue;
>
>-		if (!hwe_supports_oa_type(format.oa_type, hwe))
>+		if (!oau_supports_oa_type(format.oa_type, oau))
> 			continue;
>
> 		igt_debug("Checking OA format %s\n", format.name);
>@@ -1717,13 +1759,13 @@ static void test_oa_formats(const struct drm_xe_engine_class_instance *hwe)
> 					   oa_report0,
> 					   oa_report1,
> 					   false, /* timer reports only */
>-					   hwe);
>+					   oau);
>
> 		print_reports(oa_report0, oa_report1, i);
> 		sanity_check_reports(oa_report0, oa_report1, i);
>
>-		if (i == metric_set(hwe)->perf_oa_format)
>-			pec_sanity_check_reports(oa_report0, oa_report1, metric_set(hwe));
>+		if (i == oa_unit_metric_set(oau)->perf_oa_format)
>+			pec_sanity_check_reports(oa_report0, oa_report1, oa_unit_metric_set(oau));
> 	}
> }
>
>@@ -4946,6 +4988,14 @@ static const char *xe_engine_class_name(uint32_t engine_class)
> 	igt_require_f(hwe, "no render engine\n"); \
> 	igt_dynamic_f("rcs-%d", hwe->engine_instance)
>
>+#define __for_oa_unit_by_type(k) \
>+	if ((oau = oa_unit_by_type(drm_fd, k))) \
>+		igt_dynamic_f("%s-%d", oa_unit_name[oau->oa_unit_type], oau->oa_unit_id)
>+
>+#define __for_oa_unit_by_type_w_arg(k, str) \
>+	if ((oau = oa_unit_by_type(drm_fd, k))) \
>+		igt_dynamic_f("%s-%d-%s", oa_unit_name[oau->oa_unit_type], oau->oa_unit_id, str)
>+
> static int opt_handler(int opt, int opt_index, void *data)
> {
> 	uint32_t tmp;
>@@ -5057,8 +5107,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 		test_missing_sample_flags();
>
> 	igt_subtest_with_dynamic("oa-formats")
>-		__for_one_hwe_in_oag(hwe)
>-			test_oa_formats(hwe);
>+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+			test_oa_formats(oau);
>
> 	igt_subtest("invalid-oa-exponent")
> 		test_invalid_oa_exponent();
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 08/18] tests/intel/xe_oa: Convert several more tests to take OA unit arguments
  2025-10-08 21:17 ` [PATCH i-g-t 08/18] tests/intel/xe_oa: Convert several more tests to take OA unit arguments Ashutosh Dixit
@ 2025-10-10 22:24   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:24 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:55PM -0700, Ashutosh Dixit wrote:
>Convert the following tests to take 'struct drm_xe_oa_unit *'
>arguments (instead of hwe), to enable these to be run on all OA units:
>
>- test_oa_exponents
>- test_buffer_fill
>- test_enable_disable
>- test_oa_tlb_invalidate
>- test_stress_open_close
>- test_tail_address_wrap
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh
>---
> tests/intel/xe_oa.c | 60 ++++++++++++++++++++++-----------------------
> 1 file changed, 30 insertions(+), 30 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index af01a79d38..ac15da09a3 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -1896,9 +1896,9 @@ static bool expected_report_timing_delta(uint32_t delta, uint32_t expected_delta
>  * SUBTEST: oa-exponents
>  * Description: Test that oa exponent values behave as expected
>  */
>-static void test_oa_exponents(const struct drm_xe_engine_class_instance *hwe)
>+static void test_oa_exponents(struct drm_xe_oa_unit *oau)
> {
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t fmt = test_set->perf_oa_format;
>
> 	load_helper_init();
>@@ -1910,7 +1910,7 @@ static void test_oa_exponents(const struct drm_xe_engine_class_instance *hwe)
> 	 */
> 	for (int exponent = min_oa_exponent; exponent < max_oa_exponent; exponent++) {
> 		uint64_t properties[] = {
>-			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
>
> 			/* Include OA reports in samples */
> 			DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
>@@ -2526,11 +2526,11 @@ num_valid_reports_captured(struct intel_xe_oa_open_prop *param,
>  * Description: Open OA stream twice to verify OA TLB invalidation
>  */
> static void
>-test_oa_tlb_invalidate(const struct drm_xe_engine_class_instance *hwe)
>+test_oa_tlb_invalidate(struct drm_xe_oa_unit *oau)
> {
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
>
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
>@@ -2584,15 +2584,15 @@ wait_for_oa_buffer_overflow(int fd, int poll_period_us)
>  * Description: Test filling and overflow of OA buffer
>  */
> static void
>-test_buffer_fill(const struct drm_xe_engine_class_instance *hwe)
>+test_buffer_fill(struct drm_xe_oa_unit *oau)
> {
> 	/* ~5 micro second period */
> 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
> 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t fmt = test_set->perf_oa_format;
> 	uint64_t properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
>
> 		/* Include OA reports in samples */
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
>@@ -2724,13 +2724,13 @@ test_non_zero_reason(const struct drm_xe_engine_class_instance *hwe, size_t oa_b
>  * Description: Test that OA stream enable/disable works as expected
>  */
> static void
>-test_enable_disable(const struct drm_xe_engine_class_instance *hwe)
>+test_enable_disable(struct drm_xe_oa_unit *oau)
> {
> 	uint32_t num_reports = 5;
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t fmt = test_set->perf_oa_format;
> 	uint64_t properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
>@@ -3505,16 +3505,16 @@ test_rc6_disable(void)
>  * Description: Open/close OA streams in a tight loop
>  */
> static void
>-test_stress_open_close(const struct drm_xe_engine_class_instance *hwe)
>+test_stress_open_close(struct drm_xe_oa_unit *oau)
> {
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
>
> 	load_helper_init();
> 	load_helper_run(HIGH);
>
> 	igt_until_timeout(2) {
> 		uint64_t properties[] = {
>-			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
>
> 			/* XXX: even without periodic sampling we have to
> 			 * specify at least one sample layout property...
>@@ -4613,14 +4613,14 @@ static void closed_fd_and_unmapped_access(const struct drm_xe_engine_class_insta
>  * has zeroes in it.
>  */
> static void
>-test_tail_address_wrap(const struct drm_xe_engine_class_instance *hwe, size_t oa_buffer_size)
>+test_tail_address_wrap(struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
> {
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	u64 exponent = max_oa_exponent_for_period_lte(20000);
> 	u64 buffer_size = oa_buffer_size ?: buffer_fill_size;
> 	u64 fmt = test_set->perf_oa_format;
> 	u64 properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
>@@ -5114,13 +5114,13 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 		test_invalid_oa_exponent();
>
> 	igt_subtest_with_dynamic("oa-exponents")
>-		__for_one_hwe_in_oag(hwe)
>-			test_oa_exponents(hwe);
>+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+			test_oa_exponents(oau);
>
> 	igt_subtest_with_dynamic("buffer-fill") {
> 		igt_require(oau->capabilities & DRM_XE_OA_CAPS_OA_BUFFER_SIZE);
>-		__for_one_hwe_in_oag(hwe)
>-			test_buffer_fill(hwe);
>+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+			test_buffer_fill(oau);
> 	}
>
> 	/**
>@@ -5148,8 +5148,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 		test_non_sampling_read_error();
>
> 	igt_subtest_with_dynamic("enable-disable")
>-		__for_one_hwe_in_oag(hwe)
>-			test_enable_disable(hwe);
>+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+			test_enable_disable(oau);
>
> 	igt_subtest_with_dynamic("blocking") {
> 		igt_require(!igt_run_in_simulation());
>@@ -5183,8 +5183,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 		igt_subtest_with_dynamic("oa-tlb-invalidate") {
> 			igt_require(intel_graphics_ver(devid) <= IP_VER(12, 70) &&
> 				    intel_graphics_ver(devid) != IP_VER(12, 60));
>-			__for_one_hwe_in_oag(hwe)
>-				test_oa_tlb_invalidate(hwe);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_oa_tlb_invalidate(oau);
> 		}
>
> 		igt_subtest_with_dynamic("unprivileged-single-ctx-counters") {
>@@ -5213,8 +5213,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 	}
>
> 	igt_subtest_with_dynamic("stress-open-close") {
>-		__for_one_hwe_in_oag(hwe)
>-			test_stress_open_close(hwe);
>+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+			test_stress_open_close(oau);
> 	}
>
> 	igt_subtest("invalid-create-userspace-config")
>@@ -5259,8 +5259,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 		long k = random() % num_buf_sizes;
>
> 		igt_require(oau->capabilities & DRM_XE_OA_CAPS_OA_BUFFER_SIZE);
>-		__for_one_hwe_in_oag_w_arg(hwe, buf_sizes[k].name)
>-			test_tail_address_wrap(hwe, buf_sizes[k].size);
>+		__for_oa_unit_by_type_w_arg(DRM_XE_OA_UNIT_TYPE_OAG, buf_sizes[k].name)
>+			test_tail_address_wrap(oau, buf_sizes[k].size);
> 	}
>
> 	igt_subtest_group {
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 09/18] tests/intel/xe_oa: Convert test_non_zero_reason to take an OA unit argument
  2025-10-08 21:17 ` [PATCH i-g-t 09/18] tests/intel/xe_oa: Convert test_non_zero_reason to take an OA unit argument Ashutosh Dixit
@ 2025-10-10 22:24   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:24 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:56PM -0700, Ashutosh Dixit wrote:
>Convert test_non_zero_reason to take 'struct drm_xe_oa_unit *' argument, to
>enable it to be run on all OA units.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
  
Umesh
>---
> tests/intel/xe_oa.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index ac15da09a3..8ee8a85ed7 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -2631,15 +2631,15 @@ test_buffer_fill(struct drm_xe_oa_unit *oau)
>  * Description: Test reason field is non-zero. Can also check OA buffer wraparound issues
>  */
> static void
>-test_non_zero_reason(const struct drm_xe_engine_class_instance *hwe, size_t oa_buffer_size)
>+test_non_zero_reason(struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
> {
> 	/* ~20 micro second period */
> 	int oa_exponent = max_oa_exponent_for_period_lte(20000);
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t fmt = test_set->perf_oa_format;
> 	size_t report_size = get_oa_format(fmt).size;
> 	uint64_t properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
>
> 		/* Include OA reports in samples */
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
>@@ -2710,7 +2710,7 @@ test_non_zero_reason(const struct drm_xe_engine_class_instance *hwe, size_t oa_b
> 		 */
> 		if (!oa_buffer_size && last_report && (offset / report_size == check_idx)) {
> 			sanity_check_reports(last_report, report, fmt);
>-			pec_sanity_check_reports(last_report, report, metric_set(hwe));
>+			pec_sanity_check_reports(last_report, report, oa_unit_metric_set(oau));
> 		}
>
> 		last_report = report;
>@@ -5131,15 +5131,15 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 		long k = random() % num_buf_sizes;
>
> 		igt_require(oau->capabilities & DRM_XE_OA_CAPS_OA_BUFFER_SIZE);
>-		__for_one_hwe_in_oag_w_arg(hwe, buf_sizes[k].name)
>-			test_non_zero_reason(hwe, buf_sizes[k].size);
>+		__for_oa_unit_by_type_w_arg(DRM_XE_OA_UNIT_TYPE_OAG, buf_sizes[k].name)
>+			test_non_zero_reason(oau, buf_sizes[k].size);
> 	}
>
> 	igt_subtest_with_dynamic("non-zero-reason") {
> 		igt_require(!igt_run_in_simulation());
> 		igt_require(oau->capabilities & DRM_XE_OA_CAPS_OA_BUFFER_SIZE);
>-		__for_one_hwe_in_oag(hwe)
>-			test_non_zero_reason(hwe, 0);
>+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+			test_non_zero_reason(oau, 0);
> 	}
>
> 	igt_subtest("disabled-read-error")
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 10/18] tests/intel/xe_oa: Convert blocking/polling tests to take OA unit arguments
  2025-10-08 21:17 ` [PATCH i-g-t 10/18] tests/intel/xe_oa: Convert blocking/polling tests to take OA unit arguments Ashutosh Dixit
@ 2025-10-10 22:25   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:25 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:57PM -0700, Ashutosh Dixit wrote:
>Convert blocking/polling tests to take 'struct drm_xe_oa_unit *' arguments,
>to enable these to be run on all OA units.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 26 +++++++++++++-------------
> 1 file changed, 13 insertions(+), 13 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index 8ee8a85ed7..739da370ef 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -2099,7 +2099,7 @@ get_time(void)
> static void test_blocking(uint64_t requested_oa_period,
> 			  bool set_kernel_hrtimer,
> 			  uint64_t kernel_hrtimer,
>-			  const struct drm_xe_engine_class_instance *hwe)
>+			  struct drm_xe_oa_unit *oau)
> {
> 	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
> 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
>@@ -2128,7 +2128,7 @@ static void test_blocking(uint64_t requested_oa_period,
> 	int min_iterations = (test_duration_ns / (oa_period + kernel_hrtimer + kernel_hrtimer / 5));
> 	int64_t start, end;
> 	int n = 0;
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
>
> 	ADD_PROPS(props, idx, SAMPLE_OA, true);
>@@ -2136,7 +2136,7 @@ static void test_blocking(uint64_t requested_oa_period,
> 	ADD_PROPS(props, idx, OA_FORMAT, __ff(test_set->perf_oa_format));
> 	ADD_PROPS(props, idx, OA_PERIOD_EXPONENT, oa_exponent);
> 	ADD_PROPS(props, idx, OA_DISABLED, true);
>-	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
>+	ADD_PROPS(props, idx, OA_UNIT_ID, oau->oa_unit_id);
>
> 	param.num_properties = (idx - props) / 2;
> 	param.properties_ptr = to_user_pointer(props);
>@@ -2242,7 +2242,7 @@ static void test_blocking(uint64_t requested_oa_period,
> static void test_polling(uint64_t requested_oa_period,
> 			 bool set_kernel_hrtimer,
> 			 uint64_t kernel_hrtimer,
>-			 const struct drm_xe_engine_class_instance *hwe)
>+			 struct drm_xe_oa_unit *oau)
> {
> 	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
> 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
>@@ -2272,7 +2272,7 @@ static void test_polling(uint64_t requested_oa_period,
> 	int min_iterations = (test_duration_ns / (oa_period + (kernel_hrtimer + kernel_hrtimer / 5)));
> 	int64_t start, end;
> 	int n = 0;
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
>
> 	ADD_PROPS(props, idx, SAMPLE_OA, true);
>@@ -2280,7 +2280,7 @@ static void test_polling(uint64_t requested_oa_period,
> 	ADD_PROPS(props, idx, OA_FORMAT, __ff(test_set->perf_oa_format));
> 	ADD_PROPS(props, idx, OA_PERIOD_EXPONENT, oa_exponent);
> 	ADD_PROPS(props, idx, OA_DISABLED, true);
>-	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
>+	ADD_PROPS(props, idx, OA_UNIT_ID, oau->oa_unit_id);
>
> 	param.num_properties = (idx - props) / 2;
> 	param.properties_ptr = to_user_pointer(props);
>@@ -4389,13 +4389,13 @@ test_oa_unit_concurrent_oa_buffer_read(void)
> 	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
>
> 	igt_fork(child, qoa->num_oa_units) {
>-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, child));
>+		struct drm_xe_oa_unit *oau = oa_unit_by_id(drm_fd, child);
>
> 		/* No OAM support yet */
>-		if (oa_unit_by_id(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
>+		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
> 			exit(0);
>
>-		test_blocking(40 * 1000 * 1000, false, 5 * 1000 * 1000, hwe);
>+		test_blocking(40 * 1000 * 1000, false, 5 * 1000 * 1000, oau);
> 	}
> 	igt_waitchildren();
> }
>@@ -5153,20 +5153,20 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
>
> 	igt_subtest_with_dynamic("blocking") {
> 		igt_require(!igt_run_in_simulation());
>-		__for_one_hwe_in_oag(hwe)
>+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
> 			test_blocking(40 * 1000 * 1000 /* 40ms oa period */,
> 				      false /* set_kernel_hrtimer */,
> 				      5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
>-				      hwe);
>+				      oau);
> 	}
>
> 	igt_subtest_with_dynamic("polling") {
> 		igt_require(!igt_run_in_simulation());
>-		__for_one_hwe_in_oag(hwe)
>+		__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
> 			test_polling(40 * 1000 * 1000 /* 40ms oa period */,
> 				     false /* set_kernel_hrtimer */,
> 				     5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
>-				     hwe);
>+				     oau);
> 	}
>
> 	igt_subtest("polling-small-buf")
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 11/18] tests/intel/xe_oa: Convert test_mi_rpc to take an OA unit argument
  2025-10-08 21:17 ` [PATCH i-g-t 11/18] tests/intel/xe_oa: Convert test_mi_rpc to take an OA unit argument Ashutosh Dixit
@ 2025-10-10 22:26   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:26 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:58PM -0700, Ashutosh Dixit wrote:
>Convert test_mi_rpc to take 'struct drm_xe_oa_unit *' argument, to enable
>it to be run on all OA units.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh
>---
> tests/intel/xe_oa.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index 739da370ef..efcac06e15 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -2994,15 +2994,16 @@ test_disabled_read_error(void)
>  * Description: Test OAR/OAC using MI_REPORT_PERF_COUNT
>  */
> static void
>-test_mi_rpc(struct drm_xe_engine_class_instance *hwe)
>+test_mi_rpc(struct drm_xe_oa_unit *oau)
>
> {
>+	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
> 	uint64_t fmt = ((IS_DG2(devid) || IS_METEORLAKE(devid)) &&
> 			hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE) ?
> 		XE_OAC_FORMAT_A24u64_B8_C8 : oar_unit_default_format();
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
>
> 		/* On Gen12, MI RPC uses OAR. OAR is configured only for the
> 		 * render context that wants to measure the performance. Hence a
>@@ -5177,8 +5178,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
>
> 	igt_subtest_group {
> 		igt_subtest_with_dynamic("mi-rpc")
>-			__for_one_hwe_in_oag(hwe)
>-				test_mi_rpc(hwe);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_mi_rpc(oau);
>
> 		igt_subtest_with_dynamic("oa-tlb-invalidate") {
> 			igt_require(intel_graphics_ver(devid) <= IP_VER(12, 70) &&
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 12/18] tests/intel/xe_oa: Convert test_single_ctx_render_target_writes_a_counter
  2025-10-08 21:17 ` [PATCH i-g-t 12/18] tests/intel/xe_oa: Convert test_single_ctx_render_target_writes_a_counter Ashutosh Dixit
@ 2025-10-10 22:27   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:27 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:17:59PM -0700, Ashutosh Dixit wrote:
>Convert test_single_ctx_render_target_writes_a_counter to take 'struct
>drm_xe_oa_unit *' argument, to enable it to be run on all OA units.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index efcac06e15..01df791dc5 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -3125,12 +3125,14 @@ emit_stall_timestamp_and_rpc(struct intel_bb *ibb,
> 	emit_report_perf_count(ibb, dst, report_dst_offset, report_id);
> }
>
>-static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
>+static void single_ctx_helper(struct drm_xe_oa_unit *oau)
> {
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
>+	struct drm_xe_engine_class_instance *hwe =
>+		&xe_find_engine_by_class(drm_fd, DRM_XE_ENGINE_CLASS_RENDER)->instance;
> 	uint64_t fmt = oar_unit_default_format();
> 	uint64_t properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
>
> 		/* Have a random value here for the context id, but initialize
> 		 * it once you figure out the context ID for the work to be
>@@ -3172,6 +3174,8 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
> 	uint32_t ctx_id_offset, counter_offset, dst_buf_size;
> 	struct oa_format format = get_oa_format(fmt);
>
>+	igt_require_f(hwe, "no render engine\n");
>+
> 	if (format.report_hdr_64bit) {
> 		ctx_id_offset = 4;
> 		counter_offset = 8;
>@@ -3429,7 +3433,7 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
>  * Description: A harder test for OAR/OAC using MI_REPORT_PERF_COUNT
>  */
> static void
>-test_single_ctx_render_target_writes_a_counter(struct drm_xe_engine_class_instance *hwe)
>+test_single_ctx_render_target_writes_a_counter(struct drm_xe_oa_unit *oau)
> {
> 	int child_ret;
> 	struct igt_helper_process child = {};
>@@ -3444,7 +3448,7 @@ test_single_ctx_render_target_writes_a_counter(struct drm_xe_engine_class_instan
>
> 			igt_drop_root();
>
>-			single_ctx_helper(hwe);
>+			single_ctx_helper(oau);
>
> 			drm_close_driver(drm_fd);
> 		}
>@@ -5190,8 +5194,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
>
> 		igt_subtest_with_dynamic("unprivileged-single-ctx-counters") {
> 			igt_require_f(render_copy, "no render-copy function\n");
>-			__for_one_render_engine(hwe)
>-				test_single_ctx_render_target_writes_a_counter(hwe);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_single_ctx_render_target_writes_a_counter(oau);
> 		}
> 	}
>
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 13/18] tests/intel/xe_oa: Convert OA buffer mmap tests to take OA unit arguments
  2025-10-08 21:18 ` [PATCH i-g-t 13/18] tests/intel/xe_oa: Convert OA buffer mmap tests to take OA unit arguments Ashutosh Dixit
@ 2025-10-10 22:28   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:28 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:18:00PM -0700, Ashutosh Dixit wrote:
>Convert OA buffer mmap tests to take 'struct drm_xe_oa_unit *' arguments,
>to enable them to be run on all OA units.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 71 +++++++++++++++++++++++----------------------
> 1 file changed, 36 insertions(+), 35 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index 01df791dc5..1b16893de3 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -4414,7 +4414,7 @@ static void *map_oa_buffer(u32 *size)
> 	return vaddr;
> }
>
>-static void invalid_param_map_oa_buffer(const struct drm_xe_engine_class_instance *hwe)
>+static void invalid_param_map_oa_buffer(struct drm_xe_oa_unit *oau)
> {
> 	void *oa_vaddr = NULL;
>
>@@ -4450,7 +4450,7 @@ static void unprivileged_try_to_map_oa_buffer(void)
> 	igt_assert_eq(errno, EACCES);
> }
>
>-static void unprivileged_map_oa_buffer(const struct drm_xe_engine_class_instance *hwe)
>+static void unprivileged_map_oa_buffer(struct drm_xe_oa_unit *oau)
> {
> 	igt_fork(child, 1) {
> 		igt_drop_root();
>@@ -4484,7 +4484,7 @@ static void try_invalid_access(void *vaddr)
> 	signal(SIGSEGV, old_sigsegv);
> }
>
>-static void map_oa_buffer_unprivilege_access(const struct drm_xe_engine_class_instance *hwe)
>+static void map_oa_buffer_unprivilege_access(struct drm_xe_oa_unit *oau)
> {
> 	void *vaddr;
> 	uint32_t size;
>@@ -4500,7 +4500,7 @@ static void map_oa_buffer_unprivilege_access(const struct drm_xe_engine_class_in
> 	munmap(vaddr, size);
> }
>
>-static void map_oa_buffer_forked_access(const struct drm_xe_engine_class_instance *hwe)
>+static void map_oa_buffer_forked_access(struct drm_xe_oa_unit *oau)
> {
> 	void *vaddr;
> 	uint32_t size;
>@@ -4516,10 +4516,10 @@ static void map_oa_buffer_forked_access(const struct drm_xe_engine_class_instanc
> }
>
> static void mmap_wait_for_periodic_reports(void *oa_vaddr, uint32_t n,
>-					   const struct drm_xe_engine_class_instance *hwe)
>+					   struct drm_xe_oa_unit *oau)
> {
> 	uint32_t period_us = oa_exponent_to_ns(oa_exponent_default) / 1000;
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t fmt = test_set->perf_oa_format;
> 	uint32_t num_periodic_reports = 0;
> 	uint32_t report_words = get_oa_format(fmt).size >> 2;
>@@ -4537,9 +4537,9 @@ static void mmap_wait_for_periodic_reports(void *oa_vaddr, uint32_t n,
> }
>
> static void mmap_check_reports(void *oa_vaddr, uint32_t oa_size,
>-			       const struct drm_xe_engine_class_instance *hwe)
>+			       struct drm_xe_oa_unit *oau)
> {
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t fmt = test_set->perf_oa_format;
> 	struct oa_format format = get_oa_format(fmt);
> 	size_t report_words = format.size >> 2;
>@@ -4557,22 +4557,22 @@ static void mmap_check_reports(void *oa_vaddr, uint32_t oa_size,
> 			sanity_check_reports(reports - 2 * report_words,
> 					     reports - report_words, fmt);
> 			pec_sanity_check_reports(reports - 2 * report_words,
>-						 reports - report_words, metric_set(hwe));
>+						 reports - report_words, oa_unit_metric_set(oau));
> 		}
> 	}
>
> 	igt_assert(timer_reports >= 3);
> }
>
>-static void check_reports_from_mapped_buffer(const struct drm_xe_engine_class_instance *hwe)
>+static void check_reports_from_mapped_buffer(struct drm_xe_oa_unit *oau)
> {
> 	void *vaddr;
> 	uint32_t size;
>
> 	vaddr = map_oa_buffer(&size);
>
>-	mmap_wait_for_periodic_reports(vaddr, 10, hwe);
>-	mmap_check_reports(vaddr, size, hwe);
>+	mmap_wait_for_periodic_reports(vaddr, 10, oau);
>+	mmap_check_reports(vaddr, size, oau);
>
> 	munmap(vaddr, size);
> }
>@@ -4581,13 +4581,14 @@ static void check_reports_from_mapped_buffer(const struct drm_xe_engine_class_in
>  * SUBTEST: closed-fd-and-unmapped-access
>  * Description: Unmap buffer, close fd and try to access
>  */
>-static void closed_fd_and_unmapped_access(const struct drm_xe_engine_class_instance *hwe)
>+static void closed_fd_and_unmapped_access(struct drm_xe_oa_unit *oau)
> {
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
>-		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
>-		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
>+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
>+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
> 		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent_default,
> 	};
> 	struct intel_xe_oa_open_prop param = {
>@@ -4600,8 +4601,8 @@ static void closed_fd_and_unmapped_access(const struct drm_xe_engine_class_insta
> 	stream_fd = __perf_open(drm_fd, &param, false);
> 	vaddr = map_oa_buffer(&size);
>
>-	mmap_wait_for_periodic_reports(vaddr, 10, hwe);
>-	mmap_check_reports(vaddr, size, hwe);
>+	mmap_wait_for_periodic_reports(vaddr, 10, oau);
>+	mmap_check_reports(vaddr, size, oau);
>
> 	munmap(vaddr, size);
> 	__perf_close(stream_fd);
>@@ -4678,13 +4679,13 @@ test_tail_address_wrap(struct drm_xe_oa_unit *oau, size_t oa_buffer_size)
>  * SUBTEST: privileged-forked-access-vaddr
>  * Description: Verify that forked access to mapped buffer fails
>  */
>-typedef void (*map_oa_buffer_test_t)(const struct drm_xe_engine_class_instance *hwe);
>+typedef void (*map_oa_buffer_test_t)(struct drm_xe_oa_unit *oau);
> static void test_mapped_oa_buffer(map_oa_buffer_test_t test_with_fd_open,
>-				  const struct drm_xe_engine_class_instance *hwe)
>+				  struct drm_xe_oa_unit *oau)
> {
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	uint64_t properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
>@@ -4698,7 +4699,7 @@ static void test_mapped_oa_buffer(map_oa_buffer_test_t test_with_fd_open,
> 	stream_fd = __perf_open(drm_fd, &param, false);
>
> 	igt_assert(test_with_fd_open);
>-	test_with_fd_open(hwe);
>+	test_with_fd_open(oau);
>
> 	__perf_close(stream_fd);
> }
>@@ -5236,28 +5237,28 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
>
> 	igt_subtest_group {
> 		igt_subtest_with_dynamic("map-oa-buffer")
>-			__for_one_hwe_in_oag(hwe)
>-				test_mapped_oa_buffer(check_reports_from_mapped_buffer, hwe);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_mapped_oa_buffer(check_reports_from_mapped_buffer, oau);
>
> 		igt_subtest_with_dynamic("invalid-map-oa-buffer")
>-			__for_one_hwe_in_oag(hwe)
>-				test_mapped_oa_buffer(invalid_param_map_oa_buffer, hwe);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_mapped_oa_buffer(invalid_param_map_oa_buffer, oau);
>
> 		igt_subtest_with_dynamic("non-privileged-map-oa-buffer")
>-			__for_one_hwe_in_oag(hwe)
>-				test_mapped_oa_buffer(unprivileged_map_oa_buffer, hwe);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_mapped_oa_buffer(unprivileged_map_oa_buffer, oau);
>
> 		igt_subtest_with_dynamic("non-privileged-access-vaddr")
>-			__for_one_hwe_in_oag(hwe)
>-				test_mapped_oa_buffer(map_oa_buffer_unprivilege_access, hwe);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_mapped_oa_buffer(map_oa_buffer_unprivilege_access, oau);
>
> 		igt_subtest_with_dynamic("privileged-forked-access-vaddr")
>-			__for_one_hwe_in_oag(hwe)
>-				test_mapped_oa_buffer(map_oa_buffer_forked_access, hwe);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_mapped_oa_buffer(map_oa_buffer_forked_access, oau);
>
> 		igt_subtest_with_dynamic("closed-fd-and-unmapped-access")
>-			__for_one_hwe_in_oag(hwe)
>-				closed_fd_and_unmapped_access(hwe);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				closed_fd_and_unmapped_access(oau);
> 	}
>
> 	igt_subtest_with_dynamic("tail-address-wrap") {
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 14/18] tests/intel/xe_oa: Convert MMIO trigger tests to take OA unit arguments
  2025-10-08 21:18 ` [PATCH i-g-t 14/18] tests/intel/xe_oa: Convert MMIO trigger " Ashutosh Dixit
@ 2025-10-10 22:29   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:29 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:18:01PM -0700, Ashutosh Dixit wrote:
>Convert MMIO trigger tests to take 'struct drm_xe_oa_unit *' arguments, to
>enable them to be run on all OA units.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 41 ++++++++++++++++++++++-------------------
> 1 file changed, 22 insertions(+), 19 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index 1b16893de3..a3f4a80d6a 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -3992,11 +3992,12 @@ static u32 oa_get_mmio_base(const struct drm_xe_engine_class_instance *hwe)
>  * SUBTEST: oa-regs-whitelisted
>  * Description: Verify that OA registers are whitelisted
>  */
>-static void test_oa_regs_whitelist(const struct drm_xe_engine_class_instance *hwe)
>+static void test_oa_regs_whitelist(struct drm_xe_oa_unit *oau)
> {
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
>+	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
> 	uint64_t properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
>@@ -4010,8 +4011,7 @@ static void test_oa_regs_whitelist(const struct drm_xe_engine_class_instance *hw
> 	u32 mmio_base;
>
> 	/* FIXME: Add support for OAM whitelist testing */
>-	if (hwe->engine_class != DRM_XE_ENGINE_CLASS_RENDER &&
>-	    hwe->engine_class != DRM_XE_ENGINE_CLASS_COMPUTE)
>+	if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
> 		return;
>
> 	mmio_base = oa_get_mmio_base(hwe);
>@@ -4039,10 +4039,12 @@ static void test_oa_regs_whitelist(const struct drm_xe_engine_class_instance *hw
> }
>
> static void
>-__test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
>+__test_mmio_triggered_reports(struct drm_xe_oa_unit *oau)
> {
>-	struct intel_xe_perf_metric_set *test_set = default_test_set;
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
>+	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
> 	uint64_t properties[] = {
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
>@@ -4144,10 +4146,12 @@ __test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
> }
>
> static void
>-__test_mmio_triggered_reports_read(struct drm_xe_engine_class_instance *hwe)
>+__test_mmio_triggered_reports_read(struct drm_xe_oa_unit *oau)
> {
>-	struct intel_xe_perf_metric_set *test_set = default_test_set;
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
>+	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
> 	uint64_t properties[] = {
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
>@@ -4240,8 +4244,7 @@ __test_mmio_triggered_reports_read(struct drm_xe_engine_class_instance *hwe)
>  * Description: Test MMIO trigger functionality with read system call
>  */
> static void
>-test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe,
>-			    bool with_read)
>+test_mmio_triggered_reports(struct drm_xe_oa_unit *oau, bool with_read)
> {
> 	struct igt_helper_process child = {};
> 	int ret;
>@@ -4251,9 +4254,9 @@ test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe,
> 		igt_drop_root();
>
> 		if (with_read)
>-			__test_mmio_triggered_reports_read(hwe);
>+			__test_mmio_triggered_reports_read(oau);
> 		else
>-			__test_mmio_triggered_reports(hwe);
>+			__test_mmio_triggered_reports(oau);
> 	}
> 	ret = igt_wait_helper(&child);
> 	write_u64_file("/proc/sys/dev/xe/observation_paranoid", 1);
>@@ -5275,19 +5278,19 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 		}
>
> 		igt_subtest_with_dynamic("oa-regs-whitelisted")
>-			__for_one_hwe_in_oag(hwe)
>-				test_oa_regs_whitelist(hwe);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_oa_regs_whitelist(oau);
>
> 		igt_subtest_with_dynamic("mmio-triggered-reports") {
> 			igt_require(HAS_OA_MMIO_TRIGGER(devid));
>-			__for_one_hwe_in_oag(hwe)
>-				test_mmio_triggered_reports(hwe, false);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_mmio_triggered_reports(oau, false);
> 		}
>
> 		igt_subtest_with_dynamic("mmio-triggered-reports-read") {
> 			igt_require(HAS_OA_MMIO_TRIGGER(devid));
>-			__for_one_hwe_in_oag(hwe)
>-				test_mmio_triggered_reports(hwe, true);
>+			__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+				test_mmio_triggered_reports(oau, true);
> 		}
> 	}
>
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 15/18] tests/intel/xe_oa: Convert sync tests to take OA unit arguments
  2025-10-08 21:18 ` [PATCH i-g-t 15/18] tests/intel/xe_oa: Convert sync " Ashutosh Dixit
@ 2025-10-10 22:30   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:30 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:18:02PM -0700, Ashutosh Dixit wrote:
>Convert sync tests to take 'struct drm_xe_oa_unit *' arguments, to enable
>them to be run on all OA units.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 35 ++++++++---------------------------
> 1 file changed, 8 insertions(+), 27 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index a3f4a80d6a..75142e610d 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -4766,9 +4766,10 @@ struct oa_sync {
> };
>
> static void
>-oa_sync_init(enum oa_sync_type sync_type, const struct drm_xe_engine_class_instance *hwe,
>+oa_sync_init(enum oa_sync_type sync_type, struct drm_xe_oa_unit *oau,
> 	     struct oa_sync *osync, struct drm_xe_sync *sync)
> {
>+	struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oau);
> 	uint64_t addr = 0x1a0000;
>
> 	osync->sync_type = sync_type;
>@@ -4890,15 +4891,15 @@ static void oa_sync_free(struct oa_sync *osync)
>  * @wait-cfg:	Exercise reconfig path and wait for syncs to signal
>  * @wait:	Don't exercise reconfig path and wait for syncs to signal
>  */
>-static void test_syncs(const struct drm_xe_engine_class_instance *hwe,
>+static void test_syncs(struct drm_xe_oa_unit *oau,
> 		       enum oa_sync_type sync_type, int flags)
> {
> 	struct drm_xe_ext_set_property extn[XE_OA_MAX_SET_PROPERTIES] = {};
>-	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
>+	struct intel_xe_perf_metric_set *test_set = oa_unit_metric_set(oau);
> 	struct drm_xe_sync sync = {};
> 	struct oa_sync osync = {};
> 	uint64_t open_properties[] = {
>-		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
>+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, oau->oa_unit_id,
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
> 		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
> 		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
>@@ -4929,7 +4930,7 @@ static void test_syncs(const struct drm_xe_engine_class_instance *hwe,
> 	if (sync_type == OA_SYNC_TYPE_USERPTR || sync_type == OA_SYNC_TYPE_UFENCE)
> 		flags |= WAIT;
>
>-	oa_sync_init(sync_type, hwe, &osync, &sync);
>+	oa_sync_init(sync_type, oau, &osync, &sync);
>
> 	stream_fd = __perf_open(drm_fd, &open_param, false);
>
>@@ -4956,25 +4957,6 @@ exit:
> 	oa_sync_free(&osync);
> }
>
>-static const char *xe_engine_class_name(uint32_t engine_class)
>-{
>-	switch (engine_class) {
>-		case DRM_XE_ENGINE_CLASS_RENDER:
>-			return "rcs";
>-		case DRM_XE_ENGINE_CLASS_COPY:
>-			return "bcs";
>-		case DRM_XE_ENGINE_CLASS_VIDEO_DECODE:
>-			return "vcs";
>-		case DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE:
>-			return "vecs";
>-		case DRM_XE_ENGINE_CLASS_COMPUTE:
>-			return "ccs";
>-		default:
>-			igt_warn("Engine class 0x%x unknown\n", engine_class);
>-			return "unknown";
>-	}
>-}
>-
> #define __for_one_hwe_in_each_oa_unit(hwe) \
> 	for (int m = 0; !m || hwe; m++) \
> 		for_each_if(hwe = oa_unit_engine(oa_unit_by_id(drm_fd, m))) \
>@@ -5055,7 +5037,6 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 		{ "ufence-wait", OA_SYNC_TYPE_UFENCE, WAIT },
> 		{ NULL },
> 	};
>-	struct drm_xe_engine_class_instance *hwe = NULL;
> 	struct drm_xe_oa_unit *oau;
> 	struct xe_device *xe_dev;
>
>@@ -5301,8 +5282,8 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
>
> 		for (const struct sync_section *s = sync_sections; s->name; s++) {
> 			igt_subtest_with_dynamic_f("syncs-%s", s->name) {
>-				__for_one_hwe_in_oag(hwe)
>-					test_syncs(hwe, s->sync_type, s->flags);
>+				__for_oa_unit_by_type(DRM_XE_OA_UNIT_TYPE_OAG)
>+					test_syncs(oau, s->sync_type, s->flags);
> 			}
> 		}
> 	}
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 16/18] tests/intel/xe_oa: Run test_oa_unit_exclusive_stream on multiple OA units
  2025-10-08 21:18 ` [PATCH i-g-t 16/18] tests/intel/xe_oa: Run test_oa_unit_exclusive_stream on multiple OA units Ashutosh Dixit
@ 2025-10-10 22:31   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:31 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:18:03PM -0700, Ashutosh Dixit wrote:
>Change test_oa_unit_exclusive_stream to run simultaneously on all OA units
>which have an hwe. Also removed unused code now that all tests are
>converted to use OA units rather than hwe's.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 86 ++++++---------------------------------------
> 1 file changed, 10 insertions(+), 76 deletions(-)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index 75142e610d..2d956286d2 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -385,48 +385,6 @@ static struct intel_xe_perf_metric_set *oa_unit_metric_set(struct drm_xe_oa_unit
>
> 	return test_set;
> }
>-
>-static struct intel_xe_perf_metric_set *metric_set(const struct drm_xe_engine_class_instance *hwe)
>-{
>-	const char *test_set_name = NULL;
>-	struct intel_xe_perf_metric_set *metric_set_iter;
>-	struct intel_xe_perf_metric_set *test_set = NULL;
>-
>-	if (hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER ||
>-	    hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE)
>-		test_set_name = "TestOa";
>-	else if ((hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_DECODE ||
>-		  hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE) &&
>-		 HAS_OAM(devid))
>-		test_set_name = "MediaSet1";
>-	else
>-		igt_assert(!"reached");
>-
>-	igt_list_for_each_entry(metric_set_iter, &intel_xe_perf->metric_sets, link) {
>-		if (strcmp(metric_set_iter->symbol_name, test_set_name) == 0) {
>-			test_set = metric_set_iter;
>-			break;
>-		}
>-	}
>-
>-	igt_assert(test_set);
>-
>-	/*
>-	 * configuration was loaded in init_sys_info() ->
>-	 * intel_xe_perf_load_perf_configs(), and test_set->perf_oa_metrics_set
>-	 * should point to metric id returned by the config add ioctl. 0 is
>-	 * invalid.
>-	 */
>-	igt_assert_neq_u64(test_set->perf_oa_metrics_set, 0);
>-
>-	igt_debug("engine %d:%d - %s metric set UUID = %s\n",
>-		  hwe->engine_class,
>-		  hwe->engine_instance,
>-		  test_set->symbol_name,
>-		  test_set->hw_config_guid);
>-
>-	return test_set;
>-}
> #define default_test_set oa_unit_metric_set(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG))
>
> static void set_fd_flags(int fd, int flags)
>@@ -4293,8 +4251,8 @@ static void
> test_oa_unit_exclusive_stream(bool exponent)
> {
> 	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
>+	struct drm_xe_engine_class_instance *hwe;
> 	struct drm_xe_oa_unit *oau;
>-	u8 *poau = (u8 *)&qoa->oa_units[0];
> 	uint64_t properties[] = {
> 		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
> 		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
>@@ -4315,12 +4273,12 @@ test_oa_unit_exclusive_stream(bool exponent)
>
> 	/* for each oa unit, open one random perf stream with sample OA */
> 	for (i = 0; i < qoa->num_oa_units; i++) {
>-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
>+		oau = oa_unit_by_id(drm_fd, i);
>+		hwe = oa_unit_engine(oau);
>
>-		oau = (struct drm_xe_oa_unit *)poau;
>-		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
>+		if (!hwe)
> 			continue;
>-		test_set = metric_set(hwe);
>+		test_set = oa_unit_metric_set(oau);
>
> 		igt_debug("opening OA buffer with c:i %d:%d\n",
> 			  hwe->engine_class, hwe->engine_instance);
>@@ -4336,7 +4294,6 @@ test_oa_unit_exclusive_stream(bool exponent)
> 		properties[9] = hwe->engine_instance;
> 		perf_fd[i] = intel_xe_perf_ioctl(drm_fd, DRM_XE_OBSERVATION_OP_STREAM_OPEN, &param);
> 		igt_assert(perf_fd[i] >= 0);
>-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
> 	}
>
> 	/* Xe KMD holds reference to the exec_q's so they shouldn't be really destroyed */
>@@ -4345,15 +4302,15 @@ test_oa_unit_exclusive_stream(bool exponent)
> 			xe_exec_queue_destroy(drm_fd, exec_q[i]);
>
> 	/* for each oa unit make sure no other streams can be opened */
>-	poau = (u8 *)&qoa->oa_units[0];
> 	for (i = 0; i < qoa->num_oa_units; i++) {
>-		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(oa_unit_by_id(drm_fd, i));
> 		int err;
>
>-		oau = (struct drm_xe_oa_unit *)poau;
>-		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
>+		oau = oa_unit_by_id(drm_fd, i);
>+		hwe = oa_unit_engine(oau);
>+
>+		if (!hwe)
> 			continue;
>-		test_set = metric_set(hwe);
>+		test_set = oa_unit_metric_set(oau);
>
> 		igt_debug("try with exp with c:i %d:%d\n",
> 			  hwe->engine_class, hwe->engine_instance);
>@@ -4376,7 +4333,6 @@ test_oa_unit_exclusive_stream(bool exponent)
> 		err = intel_xe_perf_ioctl(drm_fd, DRM_XE_OBSERVATION_OP_STREAM_OPEN, &param);
> 		igt_assert_lt(err, 0);
> 		igt_assert(errno == EBUSY || errno == ENODEV);
>-		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
> 	}
>
> 	for (i = 0; i < qoa->num_oa_units; i++) {
>@@ -4957,28 +4913,6 @@ exit:
> 	oa_sync_free(&osync);
> }
>
>-#define __for_one_hwe_in_each_oa_unit(hwe) \
>-	for (int m = 0; !m || hwe; m++) \
>-		for_each_if(hwe = oa_unit_engine(oa_unit_by_id(drm_fd, m))) \
>-			igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
>-				      hwe->engine_instance)
>-
>-/* Only OAG (not OAM) is currently supported */
>-#define __for_one_hwe_in_oag(hwe) \
>-	if ((hwe = oa_unit_engine(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG)))) \
>-		igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
>-			      hwe->engine_instance)
>-
>-#define __for_one_hwe_in_oag_w_arg(hwe, str) \
>-	if ((hwe = oa_unit_engine(oa_unit_by_type(drm_fd, DRM_XE_OA_UNIT_TYPE_OAG)))) \
>-		igt_dynamic_f("%s-%d-%s", xe_engine_class_name(hwe->engine_class), \
>-			      hwe->engine_instance, str)
>-
>-#define __for_one_render_engine(hwe) \
>-	hwe = &xe_find_engine_by_class(drm_fd, DRM_XE_ENGINE_CLASS_RENDER)->instance; \
>-	igt_require_f(hwe, "no render engine\n"); \
>-	igt_dynamic_f("rcs-%d", hwe->engine_instance)
>-
> #define __for_oa_unit_by_type(k) \
> 	if ((oau = oa_unit_by_type(drm_fd, k))) \
> 		igt_dynamic_f("%s-%d", oa_unit_name[oau->oa_unit_type], oau->oa_unit_id)
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 17/18] tests/intel/xe_oa: Add new non-zero-reason-all test
  2025-10-08 21:18 ` [PATCH i-g-t 17/18] tests/intel/xe_oa: Add new non-zero-reason-all test Ashutosh Dixit
@ 2025-10-10 22:32   ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 45+ messages in thread
From: Umesh Nerlige Ramappa @ 2025-10-10 22:32 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

On Wed, Oct 08, 2025 at 02:18:04PM -0700, Ashutosh Dixit wrote:
>To demonstrate the new infrastructure, add a new non-zero-reason-all test
>which runs the non-zero-reason test on all OA units.
>
>Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>---
> tests/intel/xe_oa.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
>diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
>index 2d956286d2..36b1785bbd 100644
>--- a/tests/intel/xe_oa.c
>+++ b/tests/intel/xe_oa.c
>@@ -4921,6 +4921,10 @@ exit:
> 	if ((oau = oa_unit_by_type(drm_fd, k))) \
> 		igt_dynamic_f("%s-%d-%s", oa_unit_name[oau->oa_unit_type], oau->oa_unit_id, str)
>
>+#define __for_each_oa_unit(qoa, oau, poau, i) \
>+	for_each_oa_unit(qoa, oau, poau, i) \
>+		igt_dynamic_f("%s-%d", oa_unit_name[oau->oa_unit_type], oau->oa_unit_id)
>+
> static int opt_handler(int opt, int opt_index, void *data)
> {
> 	uint32_t tmp;
>@@ -4971,8 +4975,11 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 		{ "ufence-wait", OA_SYNC_TYPE_UFENCE, WAIT },
> 		{ NULL },
> 	};
>+	struct drm_xe_query_oa_units *qoa;
> 	struct drm_xe_oa_unit *oau;
> 	struct xe_device *xe_dev;
>+	u8 *poau;
>+	int i;
>
> 	igt_fixture {
> 		struct stat sb;
>@@ -5066,6 +5073,16 @@ igt_main_args("b:t", long_options, help_str, opt_handler, NULL)
> 			test_non_zero_reason(oau, 0);
> 	}
>
>+	/**
>+	 * SUBTEST: non-zero-reason-all
>+	 * Description: Non zero reason over all OA units
>+	 */
>+	igt_subtest_with_dynamic("non-zero-reason-all") {
>+		igt_require(oau->capabilities & DRM_XE_OA_CAPS_OA_BUFFER_SIZE);
>+		__for_each_oa_unit(qoa, oau, poau, i)
>+			test_non_zero_reason(oau, SZ_128K);
>+	}
>+
> 	igt_subtest("disabled-read-error")
> 		test_disabled_read_error();
> 	igt_subtest("non-sampling-read-error")
>-- 
>2.48.1
>

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

* Re: [PATCH i-g-t 06/18] tests/intel/xe_oa: Add for_each_oa_unit
  2025-10-09 16:40     ` Umesh Nerlige Ramappa
@ 2025-10-13 20:32       ` Dixit, Ashutosh
  0 siblings, 0 replies; 45+ messages in thread
From: Dixit, Ashutosh @ 2025-10-13 20:32 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: igt-dev

On Thu, 09 Oct 2025 09:40:29 -0700, Umesh Nerlige Ramappa wrote:
>

Hi Umesh,

> On Wed, Oct 08, 2025 at 04:31:23PM -0700, Umesh Nerlige Ramappa wrote:
> > On Wed, Oct 08, 2025 at 02:17:53PM -0700, Ashutosh Dixit wrote:
> >> Add a for_each_oa_unit iterator, which eliminates code duplication when
> >> iterating over OA units obtained from OA unit query.
> >>
> >> Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> >> ---
> >> tests/intel/xe_oa.c | 21 +++++++++++----------
> >> 1 file changed, 11 insertions(+), 10 deletions(-)
> >>
> >> diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
> >> index 012f5929ce..bc71bfcd30 100644
> >> --- a/tests/intel/xe_oa.c
> >> +++ b/tests/intel/xe_oa.c
> >> @@ -477,18 +477,21 @@ static struct drm_xe_engine_class_instance *oa_unit_engine(struct drm_xe_oa_unit
> >>	return !oau ? NULL : oau->num_engines ? &oau->eci[random() % oau->num_engines] : NULL;
> >> }
> >>
> >> +#define for_each_oa_unit(qoa, oau, poau, i) \
> >> +	for (i = 0, qoa = xe_oa_units(drm_fd), poau = (u8 *)&qoa->oa_units[0]; \
> >> +	     oau = (struct drm_xe_oa_unit *)poau, i < qoa->num_oa_units; \
> >> +	     poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]), i++)
> >> +
> >> static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
> >> {
> >> -	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
> >> +	struct drm_xe_query_oa_units *qoa;
> >>	struct drm_xe_oa_unit *oau;
> >>	u8 *poau;
> >> +	int i;
> >>
> >> -	poau = (u8 *)&qoa->oa_units[0];
> >> -	for (int i = 0; i < qoa->num_oa_units; i++) {
> >> -		oau = (struct drm_xe_oa_unit *)poau;
> >> +	for_each_oa_unit(qoa, oau, poau, i) {
> >>		if (oau->oa_unit_id == n)
> >>			return oau;
> >> -		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
> >>	}
> >>
> >>	return NULL;
> >> @@ -496,16 +499,14 @@ static struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
> >>
> >> static struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
> >> {
> >> -	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
> >> +	struct drm_xe_query_oa_units *qoa;
> >>	struct drm_xe_oa_unit *oau;
> >>	u8 *poau;
> >> +	int i;
> >>
> >> -	poau = (u8 *)&qoa->oa_units[0];
> >> -	for (int i = 0; i < qoa->num_oa_units; i++) {
> >> -		oau = (struct drm_xe_oa_unit *)poau;
> >> +	for_each_oa_unit(qoa, oau, poau, i) {
> >>		if (oau->oa_unit_type == t)
> >>			return oau;
> >> -		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
> >>	}
> >>
> >>	return NULL;
> >
> > If it's possible to keep the interface for iterators simple, I would go
> > for that. i, poau can be hidden from the caller. Something like this:
> >
> > // NOTE: not compiled/tested
> >
> > static u32 xe_oa_first_unit(int fd, struct drm_xe_oa_unit **oau)
> > {
> >        struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
> >        *oau = &qoa->oa_units[0];
> >
> >        return qoa->num_oa_units;
> > }
> >
> > static void xe_oa_next_unit(struct drm_xe_oa_unit **oau)
> > {
> >	struct drm_xe_oa_unit *poau = *oau;
> >
> >        return (u8 *)poau + sizeof(*poau) + poau->num_engines * sizeof(poau->eci[0]);
>
> Not return, but update *oau.
>
> *oau = (u8 *)poau + sizeof(*poau) + poau->num_engines * sizeof(poau->eci[0]);

In v2, I have implemented something not identical, but very close to
this. But thanks for this suggestion, it has resulted in some cleaned up
code.

Ashutosh



>
> > }
> >
> > #define for_each_oa_unit(fd, oau) \
> >        for (u32 i = 0, num = xe_oa_first_unit(fd, &oau); \
> >             oau && i < num; \
> >             i++, xe_oa_next_unit(&oau))
> >
> > static const struct drm_xe_oa_unit *oa_unit_by_id(int fd, int n)
> > {
> >        struct drm_xe_oa_unit *oau;
> >
> >        for_each_oa_unit(fd, oau) {
> >                if (oau->oa_unit_id == n)
> >                        return oau;
> >        }
> >
> >        return NULL;
> > }
> >
> > static const struct drm_xe_oa_unit *oa_unit_by_type(int fd, int t)
> > {
> >        struct drm_xe_oa_unit *oau;
> >
> >        for_each_oa_unit(fd, oau) {
> >                if (oau->oa_unit_type == t)
> >                        return oau;
> >        }
> >
> >        return NULL;
> > }
> >
> > Thanks,
> > Umesh
> >
> >
> >
> >> --
> >> 2.48.1
> >>

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

end of thread, other threads:[~2025-10-13 20:32 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-08 21:17 [PATCH i-g-t 00/18] Change OA IGT's to run on all OA units Ashutosh Dixit
2025-10-08 21:17 ` [PATCH i-g-t 01/18] tests/intel/xe_oa: Add OAM formats to lnl_oa_formats Ashutosh Dixit
2025-10-08 21:55   ` Umesh Nerlige Ramappa
2025-10-08 21:17 ` [PATCH i-g-t 02/18] tests/intel/xe_oa: Get rid of unnecessary DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE Ashutosh Dixit
2025-10-08 21:55   ` Umesh Nerlige Ramappa
2025-10-08 21:17 ` [PATCH i-g-t 03/18] tests/intel/xe_oa: Rename nth_oa_unit to oa_unit_by_id Ashutosh Dixit
2025-10-08 21:56   ` Umesh Nerlige Ramappa
2025-10-10 21:31     ` Dixit, Ashutosh
2025-10-08 21:17 ` [PATCH i-g-t 04/18] tests/intel/xe_oa: Change oa_unit_engine to take an oa_unit argument Ashutosh Dixit
2025-10-08 22:40   ` Umesh Nerlige Ramappa
2025-10-08 23:19     ` Dixit, Ashutosh
2025-10-08 23:33       ` Umesh Nerlige Ramappa
2025-10-08 21:17 ` [PATCH i-g-t 05/18] tests/intel/xe_oa: Add oa_unit_by_type Ashutosh Dixit
2025-10-08 22:42   ` Umesh Nerlige Ramappa
2025-10-08 21:17 ` [PATCH i-g-t 06/18] tests/intel/xe_oa: Add for_each_oa_unit Ashutosh Dixit
2025-10-08 23:31   ` Umesh Nerlige Ramappa
2025-10-09 16:40     ` Umesh Nerlige Ramappa
2025-10-13 20:32       ` Dixit, Ashutosh
2025-10-08 21:17 ` [PATCH i-g-t 07/18] tests/intel/xe_oa: Convert test_oa_formats to take an OA unit argument Ashutosh Dixit
2025-10-10 22:22   ` Umesh Nerlige Ramappa
2025-10-08 21:17 ` [PATCH i-g-t 08/18] tests/intel/xe_oa: Convert several more tests to take OA unit arguments Ashutosh Dixit
2025-10-10 22:24   ` Umesh Nerlige Ramappa
2025-10-08 21:17 ` [PATCH i-g-t 09/18] tests/intel/xe_oa: Convert test_non_zero_reason to take an OA unit argument Ashutosh Dixit
2025-10-10 22:24   ` Umesh Nerlige Ramappa
2025-10-08 21:17 ` [PATCH i-g-t 10/18] tests/intel/xe_oa: Convert blocking/polling tests to take OA unit arguments Ashutosh Dixit
2025-10-10 22:25   ` Umesh Nerlige Ramappa
2025-10-08 21:17 ` [PATCH i-g-t 11/18] tests/intel/xe_oa: Convert test_mi_rpc to take an OA unit argument Ashutosh Dixit
2025-10-10 22:26   ` Umesh Nerlige Ramappa
2025-10-08 21:17 ` [PATCH i-g-t 12/18] tests/intel/xe_oa: Convert test_single_ctx_render_target_writes_a_counter Ashutosh Dixit
2025-10-10 22:27   ` Umesh Nerlige Ramappa
2025-10-08 21:18 ` [PATCH i-g-t 13/18] tests/intel/xe_oa: Convert OA buffer mmap tests to take OA unit arguments Ashutosh Dixit
2025-10-10 22:28   ` Umesh Nerlige Ramappa
2025-10-08 21:18 ` [PATCH i-g-t 14/18] tests/intel/xe_oa: Convert MMIO trigger " Ashutosh Dixit
2025-10-10 22:29   ` Umesh Nerlige Ramappa
2025-10-08 21:18 ` [PATCH i-g-t 15/18] tests/intel/xe_oa: Convert sync " Ashutosh Dixit
2025-10-10 22:30   ` Umesh Nerlige Ramappa
2025-10-08 21:18 ` [PATCH i-g-t 16/18] tests/intel/xe_oa: Run test_oa_unit_exclusive_stream on multiple OA units Ashutosh Dixit
2025-10-10 22:31   ` Umesh Nerlige Ramappa
2025-10-08 21:18 ` [PATCH i-g-t 17/18] tests/intel/xe_oa: Add new non-zero-reason-all test Ashutosh Dixit
2025-10-10 22:32   ` Umesh Nerlige Ramappa
2025-10-08 21:18 ` [PATCH i-g-t 18/18] tests/intel/xe_oa: Constify arguments to various functions Ashutosh Dixit
2025-10-08 22:21 ` ✓ Xe.CI.BAT: success for Change OA IGT's to run on all OA units Patchwork
2025-10-08 22:39 ` ✓ i915.CI.BAT: " Patchwork
2025-10-09  1:49 ` ✗ Xe.CI.Full: failure " Patchwork
2025-10-09 11:47 ` ✗ i915.CI.Full: " Patchwork

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