Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark
@ 2024-06-25 13:08 Nirmoy Das
  2024-06-25 14:11 ` ✓ CI.xeBAT: success for tests/intel/xe_exec_store: Add basic_inst_benchmark (rev3) Patchwork
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Nirmoy Das @ 2024-06-25 13:08 UTC (permalink / raw)
  To: igt-dev; +Cc: kamil.konieczny, Nirmoy Das

Add basic_inst_benchmark to benchmark this basic operation
for BO sizes to get basic understanding how long it takes
bind a BO and run simple GPU command on it.

This not a CI test but rather for developer to identify various
bottleneck/regression in  BO binding.

Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 tests/intel/xe_exec_store.c | 112 ++++++++++++++++++++++++++++++------
 1 file changed, 94 insertions(+), 18 deletions(-)

diff --git a/tests/intel/xe_exec_store.c b/tests/intel/xe_exec_store.c
index c872c22d5..aaabdbec3 100644
--- a/tests/intel/xe_exec_store.c
+++ b/tests/intel/xe_exec_store.c
@@ -93,15 +93,10 @@ static void persistance_batch(struct data *data, uint64_t addr)
 	data->addr = batch_addr;
 
 }
-/**
- * SUBTEST: basic-store
- * Description: Basic test to verify store dword.
- * SUBTEST: basic-cond-batch
- * Description: Basic test to verify cond batch end instruction.
- * SUBTEST: basic-all
- * Description: Test to verify store dword on all available engines.
- */
-static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instance *eci)
+
+static void basic_inst_size(int fd, int inst_type,
+			    struct drm_xe_engine_class_instance *eci,
+			    uint16_t cpu_caching, size_t bo_size)
 {
 	struct drm_xe_sync sync[2] = {
 		{ .type = DRM_XE_SYNC_TYPE_SYNCOBJ, .flags = DRM_XE_SYNC_FLAG_SIGNAL, },
@@ -117,7 +112,6 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
 	uint32_t exec_queue;
 	uint32_t bind_engine;
 	uint32_t syncobj;
-	size_t bo_size;
 	int value = 0x123456;
 	uint64_t addr = 0x100000;
 	uint32_t bo = 0;
@@ -127,12 +121,16 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
 	sync[1].handle = syncobj;
 
 	vm = xe_vm_create(fd, 0, 0);
-	bo_size = sizeof(*data);
-	bo_size = xe_bb_size(fd, bo_size);
 
-	bo = xe_bo_create(fd, vm, bo_size,
-			  vram_if_possible(fd, eci->gt_id),
-			  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
+	if (cpu_caching)
+		bo = xe_bo_create_caching(fd, vm, bo_size,
+					  vram_if_possible(fd, eci->gt_id),
+					  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM,
+					  cpu_caching);
+	else
+		bo = xe_bo_create(fd, vm, bo_size,
+				  vram_if_possible(fd, eci->gt_id),
+				  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
 
 	exec_queue = xe_exec_queue_create(fd, vm, eci, 0);
 	bind_engine = xe_bind_exec_queue_create(fd, vm, 0);
@@ -167,6 +165,66 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
 	xe_vm_destroy(fd, vm);
 }
 
+
+/**
+ * SUBTEST: basic-store
+ * Description: Basic test to verify store dword.
+ * SUBTEST: basic-cond-batch
+ * Description: Basic test to verify cond batch end instruction.
+ * SUBTEST: basic-all
+ * Description: Test to verify store dword on all available engines.
+ */
+static void basic_inst(int fd, int inst_type,
+		       struct drm_xe_engine_class_instance *eci,
+		       uint16_t cpu_caching)
+{
+	size_t bo_size;
+
+	bo_size = sizeof(struct data);
+	bo_size = xe_bb_size(fd, bo_size);
+
+	basic_inst_size(fd, inst_type, eci, cpu_caching, bo_size);
+}
+
+/**
+ * SUBTEST: basic-store-benchmark
+ * Description: Basic test to verify time taken for doing store dword with various size.
+ */
+static void basic_inst_benchmark(int fd, int inst_type,
+				 struct drm_xe_engine_class_instance *eci,
+				 uint16_t cpu_caching)
+{
+	struct {
+		size_t size;
+		const char *name;
+	} sizes[] = {
+		{SZ_4K, "SZ_4K"},
+		{SZ_2M, "SZ_2M"},
+		{SZ_64M, "SZ_64M"},
+		{SZ_128M, "SZ_128M"},
+		{SZ_256M, "SZ_256M"},
+		{SZ_1G, "SZ_1G"}
+	};
+
+	struct timeval start, end;
+	long seconds, useconds, utime;
+
+	for (size_t i = 0; i < ARRAY_SIZE(sizes); ++i) {
+		size_t bo_size = sizes[i].size;
+		const char *size_name = sizes[i].name;
+
+		gettimeofday(&start, NULL);
+		basic_inst_size(fd, inst_type, eci, cpu_caching, bo_size);
+		gettimeofday(&end, NULL);
+
+		seconds = end.tv_sec - start.tv_sec;
+		useconds = end.tv_usec - start.tv_usec;
+		utime = (seconds * 1000000) + useconds;
+
+		igt_info("Time taken for size %s: %ld us\n", size_name, utime);
+	}
+}
+
 #define PAGES 1
 #define NCACHELINES (4096/64)
 /**
@@ -342,12 +400,30 @@ igt_main
 
 	igt_subtest("basic-store") {
 		engine = xe_engine(fd, 1);
-		basic_inst(fd, STORE, &engine->instance);
+		basic_inst(fd, COND_BATCH, &engine->instance, 0);
+	}
+
+	igt_subtest_with_dynamic("basic-store-benchmark") {
+		struct dyn {
+			const char *name;
+			int cache;
+		} tests[] = {
+			{"WC", DRM_XE_GEM_CPU_CACHING_WC},
+			{"WB", DRM_XE_GEM_CPU_CACHING_WB}
+		};
+		/* Enable for iGFX only for now */
+		igt_require(! xe_has_vram(fd));
+
+		for (int i = 0; i < ARRAY_SIZE(tests); i++) {
+			igt_dynamic_f("%s", tests[i].name);
+			engine = xe_engine(fd, 1);
+			basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
+		}
 	}
 
 	igt_subtest("basic-cond-batch") {
 		engine = xe_engine(fd, 1);
-		basic_inst(fd, COND_BATCH, &engine->instance);
+		basic_inst(fd, COND_BATCH, &engine->instance, 0);
 	}
 
 	igt_subtest_with_dynamic("basic-all") {
@@ -356,7 +432,7 @@ igt_main
 				      xe_engine_class_string(hwe->engine_class),
 				      hwe->engine_instance,
 				      hwe->gt_id);
-			basic_inst(fd, STORE, hwe);
+			basic_inst(fd, STORE, hwe, 0);
 		}
 	}
 
-- 
2.42.0


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

* ✓ CI.xeBAT: success for tests/intel/xe_exec_store: Add basic_inst_benchmark (rev3)
  2024-06-25 13:08 [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark Nirmoy Das
@ 2024-06-25 14:11 ` Patchwork
  2024-06-25 14:22 ` ✗ Fi.CI.BAT: failure " Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2024-06-25 14:11 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: igt-dev

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

== Series Details ==

Series: tests/intel/xe_exec_store: Add basic_inst_benchmark (rev3)
URL   : https://patchwork.freedesktop.org/series/135027/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_7898_BAT -> XEIGTPW_11313_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (5 -> 5)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_frontbuffer_tracking@basic:
    - bat-adlp-7:         [PASS][1] -> [DMESG-FAIL][2] ([Intel XE#324])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html

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


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

  * IGT: IGT_7898 -> IGTPW_11313
  * Linux: xe-1522-31d8e23bbf793469d597f3a17888fa55fffe7195 -> xe-1525-61dfb30a52fac9b1bb455a250799611682334cc3

  IGTPW_11313: 11313
  IGT_7898: a2600953b16d6628855b89ac40f477b58933b37b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1522-31d8e23bbf793469d597f3a17888fa55fffe7195: 31d8e23bbf793469d597f3a17888fa55fffe7195
  xe-1525-61dfb30a52fac9b1bb455a250799611682334cc3: 61dfb30a52fac9b1bb455a250799611682334cc3

== Logs ==

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

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

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

* ✗ Fi.CI.BAT: failure for tests/intel/xe_exec_store: Add basic_inst_benchmark (rev3)
  2024-06-25 13:08 [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark Nirmoy Das
  2024-06-25 14:11 ` ✓ CI.xeBAT: success for tests/intel/xe_exec_store: Add basic_inst_benchmark (rev3) Patchwork
@ 2024-06-25 14:22 ` Patchwork
  2024-06-25 16:07 ` ✓ CI.xeFULL: success " Patchwork
  2024-06-28 17:02 ` [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark Kamil Konieczny
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2024-06-25 14:22 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: igt-dev

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

== Series Details ==

Series: tests/intel/xe_exec_store: Add basic_inst_benchmark (rev3)
URL   : https://patchwork.freedesktop.org/series/135027/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14998 -> IGTPW_11313
====================================================

Summary
-------

  **FAILURE**

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

Participating hosts (42 -> 40)
------------------------------

  Additional (2): fi-kbl-8809g bat-jsl-3 
  Missing    (4): bat-mtlp-8 bat-mtlp-9 fi-snb-2520m fi-bsw-n3050 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live@active:
    - fi-rkl-11600:       [PASS][1] -> [DMESG-FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14998/fi-rkl-11600/igt@i915_selftest@live@active.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/fi-rkl-11600/igt@i915_selftest@live@active.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@debugfs_test@basic-hwmon:
    - bat-jsl-3:          NOTRUN -> [SKIP][3] ([i915#9318])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-jsl-3/igt@debugfs_test@basic-hwmon.html

  * igt@gem_huc_copy@huc-copy:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][4] ([i915#2190])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html
    - bat-jsl-3:          NOTRUN -> [SKIP][5] ([i915#2190])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-jsl-3/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - bat-jsl-3:          NOTRUN -> [SKIP][6] ([i915#4613]) +3 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-jsl-3/igt@gem_lmem_swapping@basic.html
    - fi-kbl-8809g:       NOTRUN -> [SKIP][7] ([i915#4613]) +3 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/fi-kbl-8809g/igt@gem_lmem_swapping@basic.html

  * igt@i915_pm_rpm@module-reload:
    - bat-adlp-6:         [PASS][8] -> [DMESG-WARN][9] ([i915#8449])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14998/bat-adlp-6/igt@i915_pm_rpm@module-reload.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-adlp-6/igt@i915_pm_rpm@module-reload.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-jsl-3:          NOTRUN -> [SKIP][10] ([i915#4103]) +1 other test skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-jsl-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-jsl-3:          NOTRUN -> [SKIP][11] ([i915#3555] / [i915#9886])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-jsl-3/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][12] +30 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/fi-kbl-8809g/igt@kms_force_connector_basic@force-load-detect.html
    - bat-jsl-3:          NOTRUN -> [SKIP][13]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-jsl-3/igt@kms_force_connector_basic@force-load-detect.html

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

  
#### Possible fixes ####

  * igt@i915_selftest@live@gt_lrc:
    - {bat-twl-1}:        [INCOMPLETE][15] ([i915#10886]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14998/bat-twl-1/igt@i915_selftest@live@gt_lrc.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-twl-1/igt@i915_selftest@live@gt_lrc.html
    - bat-rplp-1:         [DMESG-FAIL][17] ([i915#11330]) -> [PASS][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14998/bat-rplp-1/igt@i915_selftest@live@gt_lrc.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-rplp-1/igt@i915_selftest@live@gt_lrc.html

  * igt@i915_selftest@live@workarounds:
    - bat-adlp-6:         [INCOMPLETE][19] ([i915#9413]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14998/bat-adlp-6/igt@i915_selftest@live@workarounds.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-adlp-6/igt@i915_selftest@live@workarounds.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-arls-2:         [DMESG-WARN][21] ([i915#7507]) -> [PASS][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14998/bat-arls-2/igt@kms_frontbuffer_tracking@basic.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-arls-2/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-dp-1:
    - bat-dg2-8:          [FAIL][23] ([i915#11379]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14998/bat-dg2-8/igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-dp-1.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11313/bat-dg2-8/igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-dp-1.html

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

  [i915#10886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10886
  [i915#11330]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11330
  [i915#11379]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11379
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#7507]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7507
  [i915#8449]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8449
  [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
  [i915#9413]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9413
  [i915#9886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9886


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7898 -> IGTPW_11313

  CI-20190529: 20190529
  CI_DRM_14998: 61dfb30a52fac9b1bb455a250799611682334cc3 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_11313: 11313
  IGT_7898: a2600953b16d6628855b89ac40f477b58933b37b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* ✓ CI.xeFULL: success for tests/intel/xe_exec_store: Add basic_inst_benchmark (rev3)
  2024-06-25 13:08 [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark Nirmoy Das
  2024-06-25 14:11 ` ✓ CI.xeBAT: success for tests/intel/xe_exec_store: Add basic_inst_benchmark (rev3) Patchwork
  2024-06-25 14:22 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2024-06-25 16:07 ` Patchwork
  2024-06-28 17:02 ` [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark Kamil Konieczny
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2024-06-25 16:07 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: igt-dev

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

== Series Details ==

Series: tests/intel/xe_exec_store: Add basic_inst_benchmark (rev3)
URL   : https://patchwork.freedesktop.org/series/135027/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_7898_full -> XEIGTPW_11313_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (3 -> 3)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Suppressed ####

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

  * igt@xe_vm@mixed-misaligned-binds-3145728:
    - {shard-lnl}:        [PASS][1] -> [INCOMPLETE][2] +1 other test incomplete
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-lnl-5/igt@xe_vm@mixed-misaligned-binds-3145728.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-lnl-1/igt@xe_vm@mixed-misaligned-binds-3145728.html

  
New tests
---------

  New tests have been introduced between XEIGT_7898_full and XEIGTPW_11313_full:

### New IGT tests (3) ###

  * igt@xe_exec_store@basic-store-benchmark:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [0.0, 0.65] s

  * igt@xe_exec_store@basic-store-benchmark@wb:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@xe_exec_store@basic-store-benchmark@wc:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_big_fb@linear-32bpp-rotate-270:
    - shard-dg2-set2:     NOTRUN -> [SKIP][3] ([Intel XE#316])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_big_fb@linear-32bpp-rotate-270.html

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

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

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][6] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +3 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-463/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-d-dp-4.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-xe2-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][7] ([Intel XE#1252])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-xe2-ccs.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-a-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][8] ([Intel XE#1201] / [Intel XE#787]) +13 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-a-dp-4.html

  * igt@kms_chamelium_color@ctm-0-25:
    - shard-dg2-set2:     NOTRUN -> [SKIP][9] ([Intel XE#1201] / [Intel XE#306])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@kms_chamelium_color@ctm-0-25.html

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

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-dg2-set2:     NOTRUN -> [SKIP][11] ([Intel XE#1201] / [Intel XE#308])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
    - shard-dg2-set2:     NOTRUN -> [SKIP][12] ([Intel XE#1201] / [Intel XE#455]) +4 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-463/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][13] ([Intel XE#1201] / [Intel XE#651])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-msflip-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][14] ([Intel XE#651]) +1 other test skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
    - shard-dg2-set2:     NOTRUN -> [SKIP][15] ([Intel XE#1201] / [Intel XE#658])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-onoff:
    - shard-dg2-set2:     NOTRUN -> [SKIP][16] ([Intel XE#653])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary:
    - shard-dg2-set2:     NOTRUN -> [SKIP][17] ([Intel XE#1201] / [Intel XE#653]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary.html

  * igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf:
    - shard-dg2-set2:     NOTRUN -> [SKIP][18] ([Intel XE#1201] / [Intel XE#1489])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr@fbc-pr-suspend:
    - shard-dg2-set2:     NOTRUN -> [SKIP][19] ([Intel XE#1201] / [Intel XE#929])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-434/igt@kms_psr@fbc-pr-suspend.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-dg2-set2:     NOTRUN -> [SKIP][20] ([Intel XE#756])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_writeback@writeback-check-output-xrgb2101010.html

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

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

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-dg2-set2:     [PASS][23] -> [TIMEOUT][24] ([Intel XE#1473] / [Intel XE#402])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-464/igt@xe_evict@evict-beng-mixed-many-threads-small.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_evict@evict-beng-threads-large:
    - shard-dg2-set2:     [PASS][25] -> [TIMEOUT][26] ([Intel XE#1473])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-435/igt@xe_evict@evict-beng-threads-large.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-436/igt@xe_evict@evict-beng-threads-large.html

  * igt@xe_evict@evict-mixed-threads-large:
    - shard-dg2-set2:     [PASS][27] -> [INCOMPLETE][28] ([Intel XE#1195] / [Intel XE#1473] / [Intel XE#392])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-435/igt@xe_evict@evict-mixed-threads-large.html
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-466/igt@xe_evict@evict-mixed-threads-large.html

  * igt@xe_evict@evict-threads-large:
    - shard-dg2-set2:     [PASS][29] -> [TIMEOUT][30] ([Intel XE#1473] / [Intel XE#392])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-433/igt@xe_evict@evict-threads-large.html
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-463/igt@xe_evict@evict-threads-large.html

  * igt@xe_exec_fault_mode@many-bindexecqueue-userptr-rebind:
    - shard-dg2-set2:     NOTRUN -> [SKIP][31] ([Intel XE#288])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-rebind.html

  * igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-rebind:
    - shard-dg2-set2:     NOTRUN -> [SKIP][32] ([Intel XE#1201] / [Intel XE#288])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-rebind.html

  * {igt@xe_exec_store@basic-store-benchmark} (NEW):
    - shard-dg2-set2:     NOTRUN -> [SKIP][33] ([Intel XE#1201])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@xe_exec_store@basic-store-benchmark.html

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

  * igt@xe_pm@s3-basic-exec:
    - shard-dg2-set2:     [PASS][35] -> [DMESG-WARN][36] ([Intel XE#1214] / [Intel XE#1551] / [Intel XE#569])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-435/igt@xe_pm@s3-basic-exec.html
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-466/igt@xe_pm@s3-basic-exec.html

  * igt@xe_pm@s3-vm-bind-unbind-all:
    - shard-dg2-set2:     [PASS][37] -> [DMESG-WARN][38] ([Intel XE#1162] / [Intel XE#1214] / [Intel XE#1941])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-433/igt@xe_pm@s3-vm-bind-unbind-all.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-466/igt@xe_pm@s3-vm-bind-unbind-all.html

  * igt@xe_query@multigpu-query-invalid-extension:
    - shard-dg2-set2:     NOTRUN -> [SKIP][39] ([Intel XE#1201] / [Intel XE#944])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-434/igt@xe_query@multigpu-query-invalid-extension.html

  
#### Possible fixes ####

  * igt@fbdev@read:
    - {shard-lnl}:        [INCOMPLETE][40] -> [PASS][41]
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-lnl-8/igt@fbdev@read.html
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-lnl-1/igt@fbdev@read.html

  * igt@kms_cursor_crc@cursor-rapid-movement-256x256@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [DMESG-WARN][42] ([Intel XE#282]) -> [PASS][43] +5 other tests pass
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_cursor_crc@cursor-rapid-movement-256x256@pipe-d-hdmi-a-6.html
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-463/igt@kms_cursor_crc@cursor-rapid-movement-256x256@pipe-d-hdmi-a-6.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
    - shard-dg2-set2:     [DMESG-WARN][44] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#910]) -> [PASS][45] +4 other tests pass
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-464/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-463/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions:
    - shard-dg2-set2:     [DMESG-WARN][46] ([Intel XE#1214] / [Intel XE#282]) -> [PASS][47] +45 other tests pass
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-435/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions.html
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank:
    - {shard-lnl}:        [FAIL][48] ([Intel XE#886]) -> [PASS][49] +2 other tests pass
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-lnl-2/igt@kms_flip@flip-vs-absolute-wf_vblank.html
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-lnl-4/igt@kms_flip@flip-vs-absolute-wf_vblank.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-dg2-set2:     [SKIP][50] ([Intel XE#1201] / [Intel XE#417]) -> [PASS][51]
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-466/igt@kms_hdmi_inject@inject-audio.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_pipe_crc_basic@suspend-read-crc:
    - shard-dg2-set2:     [DMESG-WARN][52] ([Intel XE#1162]) -> [PASS][53]
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_pipe_crc_basic@suspend-read-crc.html
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-436/igt@kms_pipe_crc_basic@suspend-read-crc.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-4:
    - shard-dg2-set2:     [DMESG-WARN][54] -> [PASS][55]
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-4.html
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-436/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-4.html

  * igt@kms_universal_plane@cursor-fb-leak:
    - shard-dg2-set2:     [FAIL][56] ([Intel XE#771] / [Intel XE#899]) -> [PASS][57]
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_universal_plane@cursor-fb-leak.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_universal_plane@cursor-fb-leak.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [FAIL][58] ([Intel XE#899]) -> [PASS][59]
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-6.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-6.html

  * igt@xe_ccs@suspend-resume@linear-compressed-compfmt0-system-system:
    - {shard-lnl}:        [DMESG-WARN][60] ([Intel XE#2052]) -> [PASS][61] +2 other tests pass
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-lnl-8/igt@xe_ccs@suspend-resume@linear-compressed-compfmt0-system-system.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-lnl-5/igt@xe_ccs@suspend-resume@linear-compressed-compfmt0-system-system.html

  * igt@xe_gt_freq@freq_fixed_exec:
    - shard-dg2-set2:     [FAIL][62] ([Intel XE#1414]) -> [PASS][63]
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-435/igt@xe_gt_freq@freq_fixed_exec.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-433/igt@xe_gt_freq@freq_fixed_exec.html

  * igt@xe_gt_freq@freq_low_max:
    - {shard-lnl}:        [FAIL][64] ([Intel XE#1045]) -> [PASS][65]
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-lnl-4/igt@xe_gt_freq@freq_low_max.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-lnl-1/igt@xe_gt_freq@freq_low_max.html

  * igt@xe_pm@s3-vm-bind-prefetch:
    - shard-dg2-set2:     [DMESG-WARN][66] ([Intel XE#1214] / [Intel XE#569]) -> [PASS][67]
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-466/igt@xe_pm@s3-vm-bind-prefetch.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@xe_pm@s3-vm-bind-prefetch.html

  * igt@xe_pm@s4-basic-exec:
    - shard-dg2-set2:     [DMESG-WARN][68] ([Intel XE#1214]) -> [PASS][69]
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@xe_pm@s4-basic-exec.html
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-466/igt@xe_pm@s4-basic-exec.html

  
#### Warnings ####

  * igt@kms_big_fb@4-tiled-8bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][70] ([Intel XE#1201] / [Intel XE#316]) -> [SKIP][71] ([Intel XE#316]) +2 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-434/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@linear-16bpp-rotate-270:
    - shard-dg2-set2:     [SKIP][72] ([Intel XE#316]) -> [SKIP][73] ([Intel XE#1201] / [Intel XE#316]) +2 other tests skip
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_big_fb@linear-16bpp-rotate-270.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_big_fb@linear-16bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-16bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][74] ([Intel XE#1124]) -> [SKIP][75] ([Intel XE#1124] / [Intel XE#1201]) +3 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_big_fb@y-tiled-16bpp-rotate-90.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-463/igt@kms_big_fb@y-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-dg2-set2:     [SKIP][76] ([Intel XE#1124] / [Intel XE#1201]) -> [SKIP][77] ([Intel XE#1124]) +7 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_bw@linear-tiling-4-displays-2160x1440p:
    - shard-dg2-set2:     [SKIP][78] ([Intel XE#1201] / [Intel XE#367]) -> [SKIP][79] ([Intel XE#367]) +1 other test skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-435/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs:
    - shard-dg2-set2:     [SKIP][80] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][81] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +7 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][82] ([Intel XE#787]) -> [SKIP][83] ([Intel XE#1201] / [Intel XE#787]) +27 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-6.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-6.html

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

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs:
    - shard-dg2-set2:     [SKIP][86] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) -> [SKIP][87] ([Intel XE#455] / [Intel XE#787]) +13 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-434/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs:
    - shard-dg2-set2:     [SKIP][88] ([Intel XE#1201] / [Intel XE#1252]) -> [SKIP][89] ([Intel XE#1252])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs.html

  * igt@kms_chamelium_color@ctm-blue-to-red:
    - shard-dg2-set2:     [SKIP][90] ([Intel XE#306]) -> [SKIP][91] ([Intel XE#1201] / [Intel XE#306])
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_chamelium_color@ctm-blue-to-red.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-466/igt@kms_chamelium_color@ctm-blue-to-red.html

  * igt@kms_chamelium_color@gamma:
    - shard-dg2-set2:     [SKIP][92] ([Intel XE#1201] / [Intel XE#306]) -> [SKIP][93] ([Intel XE#306])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_chamelium_color@gamma.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_chamelium_color@gamma.html

  * igt@kms_chamelium_frames@vga-frame-dump:
    - shard-dg2-set2:     [SKIP][94] ([Intel XE#1201] / [Intel XE#373]) -> [SKIP][95] ([Intel XE#373]) +5 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-433/igt@kms_chamelium_frames@vga-frame-dump.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_chamelium_frames@vga-frame-dump.html

  * igt@kms_chamelium_hpd@vga-hpd:
    - shard-dg2-set2:     [SKIP][96] ([Intel XE#373]) -> [SKIP][97] ([Intel XE#1201] / [Intel XE#373]) +3 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_chamelium_hpd@vga-hpd.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@kms_chamelium_hpd@vga-hpd.html

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

  * igt@kms_cursor_crc@cursor-offscreen-512x170:
    - shard-dg2-set2:     [SKIP][100] ([Intel XE#1201] / [Intel XE#308]) -> [SKIP][101] ([Intel XE#308])
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_cursor_crc@cursor-offscreen-512x170.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_cursor_crc@cursor-offscreen-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-max-size:
    - shard-dg2-set2:     [SKIP][102] ([Intel XE#1201] / [Intel XE#455]) -> [SKIP][103] ([Intel XE#455]) +13 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html

  * igt@kms_cursor_crc@cursor-suspend@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [DMESG-FAIL][104] ([Intel XE#1551]) -> [FAIL][105] ([Intel XE#616]) +1 other test fail
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-434/igt@kms_cursor_crc@cursor-suspend@pipe-d-hdmi-a-6.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-434/igt@kms_cursor_crc@cursor-suspend@pipe-d-hdmi-a-6.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - shard-dg2-set2:     [SKIP][106] ([Intel XE#1201] / [Intel XE#323]) -> [SKIP][107] ([Intel XE#323]) +1 other test skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-464/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg2-set2:     [SKIP][108] ([Intel XE#1135] / [Intel XE#1201]) -> [SKIP][109] ([Intel XE#1135])
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_feature_discovery@psr1.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a6-dp4:
    - shard-dg2-set2:     [DMESG-WARN][110] -> [DMESG-WARN][111] ([Intel XE#1214]) +1 other test dmesg-warn
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a6-dp4.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-466/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-hdmi-a6-dp4.html

  * igt@kms_flip@flip-vs-suspend@a-hdmi-a6:
    - shard-dg2-set2:     [DMESG-WARN][112] ([Intel XE#1551]) -> [DMESG-WARN][113] ([Intel XE#1214] / [Intel XE#1551]) +1 other test dmesg-warn
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_flip@flip-vs-suspend@a-hdmi-a6.html
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_flip@flip-vs-suspend@a-hdmi-a6.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling:
    - shard-dg2-set2:     [SKIP][114] ([Intel XE#455]) -> [SKIP][115] ([Intel XE#1201] / [Intel XE#455]) +1 other test skip
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt:
    - shard-dg2-set2:     [SKIP][116] ([Intel XE#1201] / [Intel XE#651]) -> [SKIP][117] ([Intel XE#651]) +16 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-433/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt:
    - shard-dg2-set2:     [SKIP][118] ([Intel XE#651]) -> [SKIP][119] ([Intel XE#1201] / [Intel XE#651]) +7 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-436/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render:
    - shard-dg2-set2:     [SKIP][120] ([Intel XE#653]) -> [SKIP][121] ([Intel XE#1201] / [Intel XE#653]) +10 other tests skip
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff:
    - shard-dg2-set2:     [SKIP][122] ([Intel XE#1201] / [Intel XE#653]) -> [SKIP][123] ([Intel XE#653]) +16 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-463/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff.html
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-dg2-set2:     [SKIP][124] ([Intel XE#1201] / [Intel XE#356]) -> [SKIP][125] ([Intel XE#356])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-433/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format:
    - shard-dg2-set2:     [SKIP][126] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#498]) -> [SKIP][127] ([Intel XE#455] / [Intel XE#498]) +1 other test skip
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][128] ([Intel XE#1201] / [Intel XE#498]) -> [SKIP][129] ([Intel XE#498]) +2 other tests skip
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-c-hdmi-a-6.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-c-hdmi-a-6.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-dg2-set2:     [SKIP][130] ([Intel XE#1201] / [Intel XE#870]) -> [SKIP][131] ([Intel XE#870])
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-435/igt@kms_pm_backlight@fade-with-suspend.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-dg2-set2:     [SKIP][132] ([Intel XE#1129] / [Intel XE#1201]) -> [SKIP][133] ([Intel XE#1129])
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-464/igt@kms_pm_dc@dc6-psr.html
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-sf:
    - shard-dg2-set2:     [SKIP][134] ([Intel XE#1201]) -> [SKIP][135] ([Intel XE#1201] / [Intel XE#1489]) +18 other tests skip
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-466/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-sf.html
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area:
    - shard-dg2-set2:     [SKIP][136] ([Intel XE#1201]) -> [SKIP][137] ([Intel XE#1489]) +2 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr@fbc-pr-no-drrs:
    - shard-dg2-set2:     [SKIP][138] ([Intel XE#929]) -> [SKIP][139] ([Intel XE#1201] / [Intel XE#929]) +6 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@kms_psr@fbc-pr-no-drrs.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-436/igt@kms_psr@fbc-pr-no-drrs.html

  * igt@kms_psr@psr-cursor-plane-move:
    - shard-dg2-set2:     [SKIP][140] ([Intel XE#1201] / [Intel XE#929]) -> [SKIP][141] ([Intel XE#929]) +10 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-466/igt@kms_psr@psr-cursor-plane-move.html
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_psr@psr-cursor-plane-move.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-dg2-set2:     [SKIP][142] ([Intel XE#1127] / [Intel XE#1201]) -> [SKIP][143] ([Intel XE#1127])
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-466/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-dg2-set2:     [SKIP][144] ([Intel XE#1201] / [Intel XE#1500]) -> [SKIP][145] ([Intel XE#1500])
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-435/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_vblank@ts-continuation-dpms-suspend:
    - shard-dg2-set2:     [DMESG-WARN][146] ([Intel XE#1214] / [Intel XE#1551]) -> [DMESG-WARN][147] ([Intel XE#1551]) +1 other test dmesg-warn
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-434/igt@kms_vblank@ts-continuation-dpms-suspend.html
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@kms_vblank@ts-continuation-dpms-suspend.html

  * igt@sriov_basic@bind-unbind-vf:
    - shard-dg2-set2:     [SKIP][148] ([Intel XE#1091]) -> [SKIP][149] ([Intel XE#1091] / [Intel XE#1201])
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@sriov_basic@bind-unbind-vf.html
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@sriov_basic@bind-unbind-vf.html

  * igt@xe_compute_preempt@compute-preempt-many:
    - shard-dg2-set2:     [SKIP][150] ([Intel XE#1201] / [Intel XE#1280] / [Intel XE#455]) -> [SKIP][151] ([Intel XE#1280] / [Intel XE#455]) +1 other test skip
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-464/igt@xe_compute_preempt@compute-preempt-many.html
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@xe_compute_preempt@compute-preempt-many.html

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

  * igt@xe_copy_basic@mem-set-linear-0x3fff:
    - shard-dg2-set2:     [SKIP][154] ([Intel XE#1126]) -> [SKIP][155] ([Intel XE#1126] / [Intel XE#1201])
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@xe_copy_basic@mem-set-linear-0x3fff.html
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-466/igt@xe_copy_basic@mem-set-linear-0x3fff.html

  * igt@xe_evict@evict-beng-cm-threads-large:
    - shard-dg2-set2:     [INCOMPLETE][156] ([Intel XE#1473] / [Intel XE#392]) -> [INCOMPLETE][157] ([Intel XE#1195] / [Intel XE#1473] / [Intel XE#392])
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@xe_evict@evict-beng-cm-threads-large.html
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@xe_evict@evict-beng-cm-threads-large.html

  * igt@xe_evict@evict-beng-mixed-many-threads-large:
    - shard-dg2-set2:     [INCOMPLETE][158] ([Intel XE#1195] / [Intel XE#1473] / [Intel XE#392]) -> [TIMEOUT][159] ([Intel XE#1041] / [Intel XE#1473] / [Intel XE#392])
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-434/igt@xe_evict@evict-beng-mixed-many-threads-large.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@xe_evict@evict-beng-mixed-many-threads-large.html

  * igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-race:
    - shard-dg2-set2:     [SKIP][160] ([Intel XE#1201] / [Intel XE#288]) -> [SKIP][161] ([Intel XE#288]) +15 other tests skip
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-race.html
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-race.html

  * igt@xe_exec_fault_mode@once-bindexecqueue-rebind-prefetch:
    - shard-dg2-set2:     [SKIP][162] ([Intel XE#288]) -> [SKIP][163] ([Intel XE#1201] / [Intel XE#288]) +9 other tests skip
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@xe_exec_fault_mode@once-bindexecqueue-rebind-prefetch.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-433/igt@xe_exec_fault_mode@once-bindexecqueue-rebind-prefetch.html

  * igt@xe_live_ktest@xe_mocs:
    - shard-dg2-set2:     [FAIL][164] ([Intel XE#1999]) -> [SKIP][165] ([Intel XE#1192] / [Intel XE#1201])
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-435/igt@xe_live_ktest@xe_mocs.html
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-466/igt@xe_live_ktest@xe_mocs.html

  * igt@xe_media_fill@media-fill:
    - shard-dg2-set2:     [SKIP][166] ([Intel XE#1201] / [Intel XE#560]) -> [SKIP][167] ([Intel XE#560])
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-435/igt@xe_media_fill@media-fill.html
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@xe_media_fill@media-fill.html

  * igt@xe_pat@pat-index-xe2:
    - shard-dg2-set2:     [SKIP][168] ([Intel XE#1201] / [Intel XE#977]) -> [SKIP][169] ([Intel XE#977])
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@xe_pat@pat-index-xe2.html
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pm@d3cold-multiple-execs:
    - shard-dg2-set2:     [SKIP][170] ([Intel XE#366]) -> [SKIP][171] ([Intel XE#1201] / [Intel XE#366])
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-432/igt@xe_pm@d3cold-multiple-execs.html
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-466/igt@xe_pm@d3cold-multiple-execs.html

  * igt@xe_pm@s3-d3hot-basic-exec:
    - shard-dg2-set2:     [INCOMPLETE][172] ([Intel XE#1195] / [Intel XE#1358] / [Intel XE#569]) -> [DMESG-WARN][173] ([Intel XE#1214] / [Intel XE#1551] / [Intel XE#569])
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-434/igt@xe_pm@s3-d3hot-basic-exec.html
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-464/igt@xe_pm@s3-d3hot-basic-exec.html

  * igt@xe_query@multigpu-query-hwconfig:
    - shard-dg2-set2:     [SKIP][174] ([Intel XE#1201] / [Intel XE#944]) -> [SKIP][175] ([Intel XE#944])
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7898/shard-dg2-436/igt@xe_query@multigpu-query-hwconfig.html
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11313/shard-dg2-432/igt@xe_query@multigpu-query-hwconfig.html

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

  [Intel XE#1041]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1041
  [Intel XE#1045]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1045
  [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#1125]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1125
  [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
  [Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
  [Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
  [Intel XE#1162]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1162
  [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
  [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
  [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
  [Intel XE#1214]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1214
  [Intel XE#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [Intel XE#1399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1399
  [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1413
  [Intel XE#1414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1414
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1430]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1430
  [Intel XE#1437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1437
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1467]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1467
  [Intel XE#1468]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1468
  [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1477]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1477
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1522
  [Intel XE#1551]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1551
  [Intel XE#1620]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1620
  [Intel XE#1659]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1659
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1941]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1941
  [Intel XE#1948]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1948
  [Intel XE#1999]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1999
  [Intel XE#2052]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2052
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#282]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/282
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/294
  [Intel XE#305]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/305
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/314
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356
  [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#374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/374
  [Intel XE#392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/392
  [Intel XE#402]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/402
  [Intel XE#417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/417
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#498]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/498
  [Intel XE#560]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/560
  [Intel XE#569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/569
  [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
  [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
  [Intel XE#664]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/664
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#702]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/702
  [Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
  [Intel XE#771]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/771
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
  [Intel XE#910]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/910
  [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#958]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/958
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977


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

  * IGT: IGT_7898 -> IGTPW_11313
  * Linux: xe-1522-31d8e23bbf793469d597f3a17888fa55fffe7195 -> xe-1525-61dfb30a52fac9b1bb455a250799611682334cc3

  IGTPW_11313: 11313
  IGT_7898: a2600953b16d6628855b89ac40f477b58933b37b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1522-31d8e23bbf793469d597f3a17888fa55fffe7195: 31d8e23bbf793469d597f3a17888fa55fffe7195
  xe-1525-61dfb30a52fac9b1bb455a250799611682334cc3: 61dfb30a52fac9b1bb455a250799611682334cc3

== Logs ==

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

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

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

* Re: [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark
  2024-06-25 13:08 [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark Nirmoy Das
                   ` (2 preceding siblings ...)
  2024-06-25 16:07 ` ✓ CI.xeFULL: success " Patchwork
@ 2024-06-28 17:02 ` Kamil Konieczny
  2024-07-01  7:59   ` Nirmoy Das
  3 siblings, 1 reply; 8+ messages in thread
From: Kamil Konieczny @ 2024-06-28 17:02 UTC (permalink / raw)
  To: igt-dev; +Cc: Nirmoy Das

Hi Nirmoy,
On 2024-06-25 at 15:08:16 +0200, Nirmoy Das wrote:

test names should use '-' as separator, you also used other
name so:
[PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark

should be:
[PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic-store-benchmark

> Add basic_inst_benchmark to benchmark this basic operation
---------- ^----^
Same here, use '-' as separator, s/_inst_/-store-/

> for BO sizes to get basic understanding how long it takes
> bind a BO and run simple GPU command on it.
> 
> This not a CI test but rather for developer to identify various
> bottleneck/regression in  BO binding.
> 
> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
> ---
>  tests/intel/xe_exec_store.c | 112 ++++++++++++++++++++++++++++++------
>  1 file changed, 94 insertions(+), 18 deletions(-)
> 
> diff --git a/tests/intel/xe_exec_store.c b/tests/intel/xe_exec_store.c
> index c872c22d5..aaabdbec3 100644
> --- a/tests/intel/xe_exec_store.c
> +++ b/tests/intel/xe_exec_store.c
> @@ -93,15 +93,10 @@ static void persistance_batch(struct data *data, uint64_t addr)
>  	data->addr = batch_addr;
>  
>  }
> -/**
> - * SUBTEST: basic-store
> - * Description: Basic test to verify store dword.
> - * SUBTEST: basic-cond-batch
> - * Description: Basic test to verify cond batch end instruction.
> - * SUBTEST: basic-all
> - * Description: Test to verify store dword on all available engines.
> - */
> -static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instance *eci)
> +
> +static void basic_inst_size(int fd, int inst_type,
> +			    struct drm_xe_engine_class_instance *eci,
> +			    uint16_t cpu_caching, size_t bo_size)
>  {
>  	struct drm_xe_sync sync[2] = {
>  		{ .type = DRM_XE_SYNC_TYPE_SYNCOBJ, .flags = DRM_XE_SYNC_FLAG_SIGNAL, },
> @@ -117,7 +112,6 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
>  	uint32_t exec_queue;
>  	uint32_t bind_engine;
>  	uint32_t syncobj;
> -	size_t bo_size;
>  	int value = 0x123456;
>  	uint64_t addr = 0x100000;
>  	uint32_t bo = 0;
> @@ -127,12 +121,16 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
>  	sync[1].handle = syncobj;
>  
>  	vm = xe_vm_create(fd, 0, 0);
> -	bo_size = sizeof(*data);
> -	bo_size = xe_bb_size(fd, bo_size);
>  
> -	bo = xe_bo_create(fd, vm, bo_size,
> -			  vram_if_possible(fd, eci->gt_id),
> -			  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
> +	if (cpu_caching)
> +		bo = xe_bo_create_caching(fd, vm, bo_size,
> +					  vram_if_possible(fd, eci->gt_id),
> +					  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM,
> +					  cpu_caching);
> +	else
> +		bo = xe_bo_create(fd, vm, bo_size,
> +				  vram_if_possible(fd, eci->gt_id),
> +				  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
>  
>  	exec_queue = xe_exec_queue_create(fd, vm, eci, 0);
>  	bind_engine = xe_bind_exec_queue_create(fd, vm, 0);
> @@ -167,6 +165,66 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
>  	xe_vm_destroy(fd, vm);
>  }
>  
> +
> +/**
> + * SUBTEST: basic-store
> + * Description: Basic test to verify store dword.
> + * SUBTEST: basic-cond-batch
> + * Description: Basic test to verify cond batch end instruction.
> + * SUBTEST: basic-all
> + * Description: Test to verify store dword on all available engines.
> + */
> +static void basic_inst(int fd, int inst_type,
> +		       struct drm_xe_engine_class_instance *eci,
> +		       uint16_t cpu_caching)
> +{
> +	size_t bo_size;
> +
> +	bo_size = sizeof(struct data);
> +	bo_size = xe_bb_size(fd, bo_size);
> +
> +	basic_inst_size(fd, inst_type, eci, cpu_caching, bo_size);
> +}
> +
> +/**
> + * SUBTEST: basic-store-benchmark
> + * Description: Basic test to verify time taken for doing store dword with various size.
> + */
> +static void basic_inst_benchmark(int fd, int inst_type,
> +				 struct drm_xe_engine_class_instance *eci,
> +				 uint16_t cpu_caching)
> +{
> +	struct {
> +		size_t size;
> +		const char *name;
> +	} sizes[] = {
> +		{SZ_4K, "SZ_4K"},
> +		{SZ_2M, "SZ_2M"},
> +		{SZ_64M, "SZ_64M"},
> +		{SZ_128M, "SZ_128M"},
> +		{SZ_256M, "SZ_256M"},
> +		{SZ_1G, "SZ_1G"}

Could you use more human-friendly strings here? 4KB, 2MB, ...1GB

> +	};
> +
> +	struct timeval start, end;
> +	long seconds, useconds, utime;
> +
> +	for (size_t i = 0; i < ARRAY_SIZE(sizes); ++i) {
> +		size_t bo_size = sizes[i].size;
> +		const char *size_name = sizes[i].name;
> +
> +		gettimeofday(&start, NULL);
> +		basic_inst_size(fd, inst_type, eci, cpu_caching, bo_size);
> +		gettimeofday(&end, NULL);
> +
> +		seconds = end.tv_sec - start.tv_sec;
> +		useconds = end.tv_usec - start.tv_usec;
> +		utime = (seconds * 1000000) + useconds;

imho there is igt function for such time measure.

> +
> +		igt_info("Time taken for size %s: %ld us\n", size_name, utime);
> +	}
> +}
> +
>  #define PAGES 1
>  #define NCACHELINES (4096/64)
>  /**
> @@ -342,12 +400,30 @@ igt_main
>  
>  	igt_subtest("basic-store") {
>  		engine = xe_engine(fd, 1);
> -		basic_inst(fd, STORE, &engine->instance);
> +		basic_inst(fd, COND_BATCH, &engine->instance, 0);
> +	}
> +
> +	igt_subtest_with_dynamic("basic-store-benchmark") {
> +		struct dyn {
> +			const char *name;
> +			int cache;
> +		} tests[] = {
> +			{"WC", DRM_XE_GEM_CPU_CACHING_WC},
> +			{"WB", DRM_XE_GEM_CPU_CACHING_WB}
> +		};
> +		/* Enable for iGFX only for now */
> +		igt_require(! xe_has_vram(fd));
-------------------- ^
Please use checkpatch.pl for similar hints.

Could you test with 0 for dGFX?

> +
> +		for (int i = 0; i < ARRAY_SIZE(tests); i++) {
> +			igt_dynamic_f("%s", tests[i].name);
----------------------------------------------^
This is the reason you didn't see dynamic tests running with
--dyn WC, it should be:

> +			engine = xe_engine(fd, 1);
> +			basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
> +		}
			igt_dynamic_f("%s", tests[i].name) {
    			engine = xe_engine(fd, 1);
	    		basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
            }

Btw should you add a skip if engine == NULL?

> +		}
>  	}
>  
>  	igt_subtest("basic-cond-batch") {
>  		engine = xe_engine(fd, 1);
> -		basic_inst(fd, COND_BATCH, &engine->instance);
> +		basic_inst(fd, COND_BATCH, &engine->instance, 0);
>  	}
>  
>  	igt_subtest_with_dynamic("basic-all") {
> @@ -356,7 +432,7 @@ igt_main
>  				      xe_engine_class_string(hwe->engine_class),
>  				      hwe->engine_instance,
>  				      hwe->gt_id);
> -			basic_inst(fd, STORE, hwe);
> +			basic_inst(fd, STORE, hwe, 0);
>  		}
>  	}
>  
> -- 
> 2.42.0
> 

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

* Re: [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark
  2024-06-28 17:02 ` [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark Kamil Konieczny
@ 2024-07-01  7:59   ` Nirmoy Das
  2024-07-01 18:12     ` Kamil Konieczny
  0 siblings, 1 reply; 8+ messages in thread
From: Nirmoy Das @ 2024-07-01  7:59 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, Nirmoy Das

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

Hi Kamil,

On 6/28/2024 7:02 PM, Kamil Konieczny wrote:
> Hi Nirmoy,
> On 2024-06-25 at 15:08:16 +0200, Nirmoy Das wrote:
>
> test names should use '-' as separator, you also used other
> name so:
> [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark
>
> should be:
> [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic-store-benchmark
Looks like I misunderstood your last comment. Will fix it.
>
>> Add basic_inst_benchmark to benchmark this basic operation
> ---------- ^----^
> Same here, use '-' as separator, s/_inst_/-store-/
>
>> for BO sizes to get basic understanding how long it takes
>> bind a BO and run simple GPU command on it.
>>
>> This not a CI test but rather for developer to identify various
>> bottleneck/regression in  BO binding.
>>
>> Signed-off-by: Nirmoy Das<nirmoy.das@intel.com>
>> ---
>>   tests/intel/xe_exec_store.c | 112 ++++++++++++++++++++++++++++++------
>>   1 file changed, 94 insertions(+), 18 deletions(-)
>>
>> diff --git a/tests/intel/xe_exec_store.c b/tests/intel/xe_exec_store.c
>> index c872c22d5..aaabdbec3 100644
>> --- a/tests/intel/xe_exec_store.c
>> +++ b/tests/intel/xe_exec_store.c
>> @@ -93,15 +93,10 @@ static void persistance_batch(struct data *data, uint64_t addr)
>>   	data->addr = batch_addr;
>>   
>>   }
>> -/**
>> - * SUBTEST: basic-store
>> - * Description: Basic test to verify store dword.
>> - * SUBTEST: basic-cond-batch
>> - * Description: Basic test to verify cond batch end instruction.
>> - * SUBTEST: basic-all
>> - * Description: Test to verify store dword on all available engines.
>> - */
>> -static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instance *eci)
>> +
>> +static void basic_inst_size(int fd, int inst_type,
>> +			    struct drm_xe_engine_class_instance *eci,
>> +			    uint16_t cpu_caching, size_t bo_size)
>>   {
>>   	struct drm_xe_sync sync[2] = {
>>   		{ .type = DRM_XE_SYNC_TYPE_SYNCOBJ, .flags = DRM_XE_SYNC_FLAG_SIGNAL, },
>> @@ -117,7 +112,6 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
>>   	uint32_t exec_queue;
>>   	uint32_t bind_engine;
>>   	uint32_t syncobj;
>> -	size_t bo_size;
>>   	int value = 0x123456;
>>   	uint64_t addr = 0x100000;
>>   	uint32_t bo = 0;
>> @@ -127,12 +121,16 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
>>   	sync[1].handle = syncobj;
>>   
>>   	vm = xe_vm_create(fd, 0, 0);
>> -	bo_size = sizeof(*data);
>> -	bo_size = xe_bb_size(fd, bo_size);
>>   
>> -	bo = xe_bo_create(fd, vm, bo_size,
>> -			  vram_if_possible(fd, eci->gt_id),
>> -			  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
>> +	if (cpu_caching)
>> +		bo = xe_bo_create_caching(fd, vm, bo_size,
>> +					  vram_if_possible(fd, eci->gt_id),
>> +					  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM,
>> +					  cpu_caching);
>> +	else
>> +		bo = xe_bo_create(fd, vm, bo_size,
>> +				  vram_if_possible(fd, eci->gt_id),
>> +				  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
>>   
>>   	exec_queue = xe_exec_queue_create(fd, vm, eci, 0);
>>   	bind_engine = xe_bind_exec_queue_create(fd, vm, 0);
>> @@ -167,6 +165,66 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
>>   	xe_vm_destroy(fd, vm);
>>   }
>>   
>> +
>> +/**
>> + * SUBTEST: basic-store
>> + * Description: Basic test to verify store dword.
>> + * SUBTEST: basic-cond-batch
>> + * Description: Basic test to verify cond batch end instruction.
>> + * SUBTEST: basic-all
>> + * Description: Test to verify store dword on all available engines.
>> + */
>> +static void basic_inst(int fd, int inst_type,
>> +		       struct drm_xe_engine_class_instance *eci,
>> +		       uint16_t cpu_caching)
>> +{
>> +	size_t bo_size;
>> +
>> +	bo_size = sizeof(struct data);
>> +	bo_size = xe_bb_size(fd, bo_size);
>> +
>> +	basic_inst_size(fd, inst_type, eci, cpu_caching, bo_size);
>> +}
>> +
>> +/**
>> + * SUBTEST: basic-store-benchmark
>> + * Description: Basic test to verify time taken for doing store dword with various size.
>> + */
>> +static void basic_inst_benchmark(int fd, int inst_type,
>> +				 struct drm_xe_engine_class_instance *eci,
>> +				 uint16_t cpu_caching)
>> +{
>> +	struct {
>> +		size_t size;
>> +		const char *name;
>> +	} sizes[] = {
>> +		{SZ_4K, "SZ_4K"},
>> +		{SZ_2M, "SZ_2M"},
>> +		{SZ_64M, "SZ_64M"},
>> +		{SZ_128M, "SZ_128M"},
>> +		{SZ_256M, "SZ_256M"},
>> +		{SZ_1G, "SZ_1G"}
> Could you use more human-friendly strings here? 4KB, 2MB, ...1GB
Sure, will do that.
>
>> +	};
>> +
>> +	struct timeval start, end;
>> +	long seconds, useconds, utime;
>> +
>> +	for (size_t i = 0; i < ARRAY_SIZE(sizes); ++i) {
>> +		size_t bo_size = sizes[i].size;
>> +		const char *size_name = sizes[i].name;
>> +
>> +		gettimeofday(&start, NULL);
>> +		basic_inst_size(fd, inst_type, eci, cpu_caching, bo_size);
>> +		gettimeofday(&end, NULL);
>> +
>> +		seconds = end.tv_sec - start.tv_sec;
>> +		useconds = end.tv_usec - start.tv_usec;
>> +		utime = (seconds * 1000000) + useconds;
> imho there is igt function for such time measure.
Do you mean igt_nsec_elapsed()
>
>> +
>> +		igt_info("Time taken for size %s: %ld us\n", size_name, utime);
>> +	}
>> +}
>> +
>>   #define PAGES 1
>>   #define NCACHELINES (4096/64)
>>   /**
>> @@ -342,12 +400,30 @@ igt_main
>>   
>>   	igt_subtest("basic-store") {
>>   		engine = xe_engine(fd, 1);
>> -		basic_inst(fd, STORE, &engine->instance);
>> +		basic_inst(fd, COND_BATCH, &engine->instance, 0);
>> +	}
>> +
>> +	igt_subtest_with_dynamic("basic-store-benchmark") {
>> +		struct dyn {
>> +			const char *name;
>> +			int cache;
>> +		} tests[] = {
>> +			{"WC", DRM_XE_GEM_CPU_CACHING_WC},
>> +			{"WB", DRM_XE_GEM_CPU_CACHING_WB}
>> +		};
>> +		/* Enable for iGFX only for now */
>> +		igt_require(! xe_has_vram(fd));
> -------------------- ^
> Please use checkpatch.pl for similar hints.
Took me a while find the issue :D. I tend to do that but I guess I have 
to add a alias that will do a check patch before sending.
>
> Could you test with 0 for dGFX?

with fd == 0 ?

I think DRM_XE_GEM_CPU_CACHING_WB doesn't work for dGPU. I have to check 
that on live machine.

>
>> +
>> +		for (int i = 0; i < ARRAY_SIZE(tests); i++) {
>> +			igt_dynamic_f("%s", tests[i].name);
> ----------------------------------------------^
> This is the reason you didn't see dynamic tests running with
> --dyn WC, it should be:
it should be what ? You are keep a secret :)
>
>> +			engine = xe_engine(fd, 1);
>> +			basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
>> +		}
> 			igt_dynamic_f("%s", tests[i].name) {
>      			engine = xe_engine(fd, 1);
> 	    		basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
>              }
>
> Btw should you add a skip if engine == NULL?

Yes, that should be safer.


Thanks,

Nirmoy

>
>> +		}
>>   	}
>>   
>>   	igt_subtest("basic-cond-batch") {
>>   		engine = xe_engine(fd, 1);
>> -		basic_inst(fd, COND_BATCH, &engine->instance);
>> +		basic_inst(fd, COND_BATCH, &engine->instance, 0);
>>   	}
>>   
>>   	igt_subtest_with_dynamic("basic-all") {
>> @@ -356,7 +432,7 @@ igt_main
>>   				      xe_engine_class_string(hwe->engine_class),
>>   				      hwe->engine_instance,
>>   				      hwe->gt_id);
>> -			basic_inst(fd, STORE, hwe);
>> +			basic_inst(fd, STORE, hwe, 0);
>>   		}
>>   	}
>>   
>> -- 
>> 2.42.0
>>

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

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

* Re: [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark
  2024-07-01  7:59   ` Nirmoy Das
@ 2024-07-01 18:12     ` Kamil Konieczny
  2024-07-03 14:30       ` Nirmoy Das
  0 siblings, 1 reply; 8+ messages in thread
From: Kamil Konieczny @ 2024-07-01 18:12 UTC (permalink / raw)
  To: igt-dev; +Cc: Nirmoy Das, Nirmoy Das

Hi Nirmoy,
On 2024-07-01 at 09:59:28 +0200, Nirmoy Das wrote:
> Hi Kamil,
> 
> On 6/28/2024 7:02 PM, Kamil Konieczny wrote:
> > Hi Nirmoy,
> > On 2024-06-25 at 15:08:16 +0200, Nirmoy Das wrote:
> > 
> > test names should use '-' as separator, you also used other
> > name so:
> > [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark
> > 
> > should be:
> > [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic-store-benchmark
> Looks like I misunderstood your last comment. Will fix it.
> > 
> > > Add basic_inst_benchmark to benchmark this basic operation
> > ---------- ^----^
> > Same here, use '-' as separator, s/_inst_/-store-/
> > 
> > > for BO sizes to get basic understanding how long it takes
> > > bind a BO and run simple GPU command on it.
> > > 
> > > This not a CI test but rather for developer to identify various
> > > bottleneck/regression in  BO binding.
> > > 
> > > Signed-off-by: Nirmoy Das<nirmoy.das@intel.com>
> > > ---
> > >   tests/intel/xe_exec_store.c | 112 ++++++++++++++++++++++++++++++------
> > >   1 file changed, 94 insertions(+), 18 deletions(-)
> > > 
> > > diff --git a/tests/intel/xe_exec_store.c b/tests/intel/xe_exec_store.c
> > > index c872c22d5..aaabdbec3 100644
> > > --- a/tests/intel/xe_exec_store.c
> > > +++ b/tests/intel/xe_exec_store.c
> > > @@ -93,15 +93,10 @@ static void persistance_batch(struct data *data, uint64_t addr)
> > >   	data->addr = batch_addr;
> > >   }
> > > -/**
> > > - * SUBTEST: basic-store
> > > - * Description: Basic test to verify store dword.
> > > - * SUBTEST: basic-cond-batch
> > > - * Description: Basic test to verify cond batch end instruction.
> > > - * SUBTEST: basic-all
> > > - * Description: Test to verify store dword on all available engines.
> > > - */
> > > -static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instance *eci)
> > > +
> > > +static void basic_inst_size(int fd, int inst_type,
> > > +			    struct drm_xe_engine_class_instance *eci,
> > > +			    uint16_t cpu_caching, size_t bo_size)
> > >   {
> > >   	struct drm_xe_sync sync[2] = {
> > >   		{ .type = DRM_XE_SYNC_TYPE_SYNCOBJ, .flags = DRM_XE_SYNC_FLAG_SIGNAL, },
> > > @@ -117,7 +112,6 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
> > >   	uint32_t exec_queue;
> > >   	uint32_t bind_engine;
> > >   	uint32_t syncobj;
> > > -	size_t bo_size;
> > >   	int value = 0x123456;
> > >   	uint64_t addr = 0x100000;
> > >   	uint32_t bo = 0;
> > > @@ -127,12 +121,16 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
> > >   	sync[1].handle = syncobj;
> > >   	vm = xe_vm_create(fd, 0, 0);
> > > -	bo_size = sizeof(*data);
> > > -	bo_size = xe_bb_size(fd, bo_size);
> > > -	bo = xe_bo_create(fd, vm, bo_size,
> > > -			  vram_if_possible(fd, eci->gt_id),
> > > -			  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
> > > +	if (cpu_caching)
> > > +		bo = xe_bo_create_caching(fd, vm, bo_size,
> > > +					  vram_if_possible(fd, eci->gt_id),
> > > +					  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM,
> > > +					  cpu_caching);
> > > +	else
> > > +		bo = xe_bo_create(fd, vm, bo_size,
> > > +				  vram_if_possible(fd, eci->gt_id),
> > > +				  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
> > >   	exec_queue = xe_exec_queue_create(fd, vm, eci, 0);
> > >   	bind_engine = xe_bind_exec_queue_create(fd, vm, 0);
> > > @@ -167,6 +165,66 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
> > >   	xe_vm_destroy(fd, vm);
> > >   }
> > > +
> > > +/**
> > > + * SUBTEST: basic-store
> > > + * Description: Basic test to verify store dword.
> > > + * SUBTEST: basic-cond-batch
> > > + * Description: Basic test to verify cond batch end instruction.
> > > + * SUBTEST: basic-all
> > > + * Description: Test to verify store dword on all available engines.
> > > + */
> > > +static void basic_inst(int fd, int inst_type,
> > > +		       struct drm_xe_engine_class_instance *eci,
> > > +		       uint16_t cpu_caching)
> > > +{
> > > +	size_t bo_size;
> > > +
> > > +	bo_size = sizeof(struct data);
> > > +	bo_size = xe_bb_size(fd, bo_size);
> > > +
> > > +	basic_inst_size(fd, inst_type, eci, cpu_caching, bo_size);
> > > +}
> > > +
> > > +/**
> > > + * SUBTEST: basic-store-benchmark
> > > + * Description: Basic test to verify time taken for doing store dword with various size.
> > > + */
> > > +static void basic_inst_benchmark(int fd, int inst_type,
> > > +				 struct drm_xe_engine_class_instance *eci,
> > > +				 uint16_t cpu_caching)
> > > +{
> > > +	struct {
> > > +		size_t size;
> > > +		const char *name;
> > > +	} sizes[] = {
> > > +		{SZ_4K, "SZ_4K"},
> > > +		{SZ_2M, "SZ_2M"},
> > > +		{SZ_64M, "SZ_64M"},
> > > +		{SZ_128M, "SZ_128M"},
> > > +		{SZ_256M, "SZ_256M"},
> > > +		{SZ_1G, "SZ_1G"}
> > Could you use more human-friendly strings here? 4KB, 2MB, ...1GB
> Sure, will do that.
> > 
> > > +	};
> > > +
> > > +	struct timeval start, end;
> > > +	long seconds, useconds, utime;
> > > +
> > > +	for (size_t i = 0; i < ARRAY_SIZE(sizes); ++i) {
> > > +		size_t bo_size = sizes[i].size;
> > > +		const char *size_name = sizes[i].name;
> > > +
> > > +		gettimeofday(&start, NULL);
> > > +		basic_inst_size(fd, inst_type, eci, cpu_caching, bo_size);
> > > +		gettimeofday(&end, NULL);
> > > +
> > > +		seconds = end.tv_sec - start.tv_sec;
> > > +		useconds = end.tv_usec - start.tv_usec;
> > > +		utime = (seconds * 1000000) + useconds;
> > imho there is igt function for such time measure.
> Do you mean igt_nsec_elapsed()

There are:

igt_core.h:double igt_time_elapsed(struct timespec *then,

igt_core.h:uint64_t igt_nsec_elapsed(struct timespec *start);

igt_core.h:static inline uint32_t igt_seconds_elapsed(struct timespec *start)

Choose what you need.

> > 
> > > +
> > > +		igt_info("Time taken for size %s: %ld us\n", size_name, utime);
> > > +	}
> > > +}
> > > +
> > >   #define PAGES 1
> > >   #define NCACHELINES (4096/64)
> > >   /**
> > > @@ -342,12 +400,30 @@ igt_main
> > >   	igt_subtest("basic-store") {
> > >   		engine = xe_engine(fd, 1);
> > > -		basic_inst(fd, STORE, &engine->instance);
> > > +		basic_inst(fd, COND_BATCH, &engine->instance, 0);
> > > +	}
> > > +
> > > +	igt_subtest_with_dynamic("basic-store-benchmark") {
> > > +		struct dyn {
> > > +			const char *name;
> > > +			int cache;
> > > +		} tests[] = {
> > > +			{"WC", DRM_XE_GEM_CPU_CACHING_WC},
> > > +			{"WB", DRM_XE_GEM_CPU_CACHING_WB}
> > > +		};
> > > +		/* Enable for iGFX only for now */
> > > +		igt_require(! xe_has_vram(fd));
> > -------------------- ^
> > Please use checkpatch.pl for similar hints.
> Took me a while find the issue :D. I tend to do that but I guess I have to
> add a alias that will do a check patch before sending.
> > 
> > Could you test with 0 for dGFX?
> 
> with fd == 0 ?
> 
> I think DRM_XE_GEM_CPU_CACHING_WB doesn't work for dGPU. I have to check
> that on live machine.
> 
> > 
> > > +
> > > +		for (int i = 0; i < ARRAY_SIZE(tests); i++) {
> > > +			igt_dynamic_f("%s", tests[i].name);
> > ----------------------------------------------^
> > This is the reason you didn't see dynamic tests running with
> > --dyn WC, it should be:
> it should be what ? You are keep a secret :)

I see, I should explicitly point semicolon there ';'
This will run empty dynamic subtest:

	igt_dynamic_f("%s", tests[i].name);

While what you wanted was written below, let me copy-paste:

    igt_dynamic_f("%s", tests[i].name) {
        engine = xe_engine(fd, 1);
        basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
    }

What I was asking was does it make sense to benchmark with
cache value 0 on dGPU?

Regards,
Kamil

> > 
> > > +			engine = xe_engine(fd, 1);
> > > +			basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
> > > +		}
> > 			igt_dynamic_f("%s", tests[i].name) {
> >      			engine = xe_engine(fd, 1);
> > 	    		basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
> >              }
> > 
> > Btw should you add a skip if engine == NULL?
> 
> Yes, that should be safer.
> 
> 
> Thanks,
> 
> Nirmoy
> 
> > 
> > > +		}
> > >   	}
> > >   	igt_subtest("basic-cond-batch") {
> > >   		engine = xe_engine(fd, 1);
> > > -		basic_inst(fd, COND_BATCH, &engine->instance);
> > > +		basic_inst(fd, COND_BATCH, &engine->instance, 0);
> > >   	}
> > >   	igt_subtest_with_dynamic("basic-all") {
> > > @@ -356,7 +432,7 @@ igt_main
> > >   				      xe_engine_class_string(hwe->engine_class),
> > >   				      hwe->engine_instance,
> > >   				      hwe->gt_id);
> > > -			basic_inst(fd, STORE, hwe);
> > > +			basic_inst(fd, STORE, hwe, 0);
> > >   		}
> > >   	}
> > > -- 
> > > 2.42.0
> > > 

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

* Re: [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark
  2024-07-01 18:12     ` Kamil Konieczny
@ 2024-07-03 14:30       ` Nirmoy Das
  0 siblings, 0 replies; 8+ messages in thread
From: Nirmoy Das @ 2024-07-03 14:30 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, Nirmoy Das

Hi Kamil,

On 7/1/2024 8:12 PM, Kamil Konieczny wrote:
> Hi Nirmoy,
> On 2024-07-01 at 09:59:28 +0200, Nirmoy Das wrote:
>> Hi Kamil,
>>
>> On 6/28/2024 7:02 PM, Kamil Konieczny wrote:
>>> Hi Nirmoy,
>>> On 2024-06-25 at 15:08:16 +0200, Nirmoy Das wrote:
>>>
>>> test names should use '-' as separator, you also used other
>>> name so:
>>> [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark
>>>
>>> should be:
>>> [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic-store-benchmark
>> Looks like I misunderstood your last comment. Will fix it.
>>>> Add basic_inst_benchmark to benchmark this basic operation
>>> ---------- ^----^
>>> Same here, use '-' as separator, s/_inst_/-store-/
>>>
>>>> for BO sizes to get basic understanding how long it takes
>>>> bind a BO and run simple GPU command on it.
>>>>
>>>> This not a CI test but rather for developer to identify various
>>>> bottleneck/regression in  BO binding.
>>>>
>>>> Signed-off-by: Nirmoy Das<nirmoy.das@intel.com>
>>>> ---
>>>>    tests/intel/xe_exec_store.c | 112 ++++++++++++++++++++++++++++++------
>>>>    1 file changed, 94 insertions(+), 18 deletions(-)
>>>>
>>>> diff --git a/tests/intel/xe_exec_store.c b/tests/intel/xe_exec_store.c
>>>> index c872c22d5..aaabdbec3 100644
>>>> --- a/tests/intel/xe_exec_store.c
>>>> +++ b/tests/intel/xe_exec_store.c
>>>> @@ -93,15 +93,10 @@ static void persistance_batch(struct data *data, uint64_t addr)
>>>>    	data->addr = batch_addr;
>>>>    }
>>>> -/**
>>>> - * SUBTEST: basic-store
>>>> - * Description: Basic test to verify store dword.
>>>> - * SUBTEST: basic-cond-batch
>>>> - * Description: Basic test to verify cond batch end instruction.
>>>> - * SUBTEST: basic-all
>>>> - * Description: Test to verify store dword on all available engines.
>>>> - */
>>>> -static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instance *eci)
>>>> +
>>>> +static void basic_inst_size(int fd, int inst_type,
>>>> +			    struct drm_xe_engine_class_instance *eci,
>>>> +			    uint16_t cpu_caching, size_t bo_size)
>>>>    {
>>>>    	struct drm_xe_sync sync[2] = {
>>>>    		{ .type = DRM_XE_SYNC_TYPE_SYNCOBJ, .flags = DRM_XE_SYNC_FLAG_SIGNAL, },
>>>> @@ -117,7 +112,6 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
>>>>    	uint32_t exec_queue;
>>>>    	uint32_t bind_engine;
>>>>    	uint32_t syncobj;
>>>> -	size_t bo_size;
>>>>    	int value = 0x123456;
>>>>    	uint64_t addr = 0x100000;
>>>>    	uint32_t bo = 0;
>>>> @@ -127,12 +121,16 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
>>>>    	sync[1].handle = syncobj;
>>>>    	vm = xe_vm_create(fd, 0, 0);
>>>> -	bo_size = sizeof(*data);
>>>> -	bo_size = xe_bb_size(fd, bo_size);
>>>> -	bo = xe_bo_create(fd, vm, bo_size,
>>>> -			  vram_if_possible(fd, eci->gt_id),
>>>> -			  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
>>>> +	if (cpu_caching)
>>>> +		bo = xe_bo_create_caching(fd, vm, bo_size,
>>>> +					  vram_if_possible(fd, eci->gt_id),
>>>> +					  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM,
>>>> +					  cpu_caching);
>>>> +	else
>>>> +		bo = xe_bo_create(fd, vm, bo_size,
>>>> +				  vram_if_possible(fd, eci->gt_id),
>>>> +				  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
>>>>    	exec_queue = xe_exec_queue_create(fd, vm, eci, 0);
>>>>    	bind_engine = xe_bind_exec_queue_create(fd, vm, 0);
>>>> @@ -167,6 +165,66 @@ static void basic_inst(int fd, int inst_type, struct drm_xe_engine_class_instanc
>>>>    	xe_vm_destroy(fd, vm);
>>>>    }
>>>> +
>>>> +/**
>>>> + * SUBTEST: basic-store
>>>> + * Description: Basic test to verify store dword.
>>>> + * SUBTEST: basic-cond-batch
>>>> + * Description: Basic test to verify cond batch end instruction.
>>>> + * SUBTEST: basic-all
>>>> + * Description: Test to verify store dword on all available engines.
>>>> + */
>>>> +static void basic_inst(int fd, int inst_type,
>>>> +		       struct drm_xe_engine_class_instance *eci,
>>>> +		       uint16_t cpu_caching)
>>>> +{
>>>> +	size_t bo_size;
>>>> +
>>>> +	bo_size = sizeof(struct data);
>>>> +	bo_size = xe_bb_size(fd, bo_size);
>>>> +
>>>> +	basic_inst_size(fd, inst_type, eci, cpu_caching, bo_size);
>>>> +}
>>>> +
>>>> +/**
>>>> + * SUBTEST: basic-store-benchmark
>>>> + * Description: Basic test to verify time taken for doing store dword with various size.
>>>> + */
>>>> +static void basic_inst_benchmark(int fd, int inst_type,
>>>> +				 struct drm_xe_engine_class_instance *eci,
>>>> +				 uint16_t cpu_caching)
>>>> +{
>>>> +	struct {
>>>> +		size_t size;
>>>> +		const char *name;
>>>> +	} sizes[] = {
>>>> +		{SZ_4K, "SZ_4K"},
>>>> +		{SZ_2M, "SZ_2M"},
>>>> +		{SZ_64M, "SZ_64M"},
>>>> +		{SZ_128M, "SZ_128M"},
>>>> +		{SZ_256M, "SZ_256M"},
>>>> +		{SZ_1G, "SZ_1G"}
>>> Could you use more human-friendly strings here? 4KB, 2MB, ...1GB
>> Sure, will do that.
>>>> +	};
>>>> +
>>>> +	struct timeval start, end;
>>>> +	long seconds, useconds, utime;
>>>> +
>>>> +	for (size_t i = 0; i < ARRAY_SIZE(sizes); ++i) {
>>>> +		size_t bo_size = sizes[i].size;
>>>> +		const char *size_name = sizes[i].name;
>>>> +
>>>> +		gettimeofday(&start, NULL);
>>>> +		basic_inst_size(fd, inst_type, eci, cpu_caching, bo_size);
>>>> +		gettimeofday(&end, NULL);
>>>> +
>>>> +		seconds = end.tv_sec - start.tv_sec;
>>>> +		useconds = end.tv_usec - start.tv_usec;
>>>> +		utime = (seconds * 1000000) + useconds;
>>> imho there is igt function for such time measure.
>> Do you mean igt_nsec_elapsed()
> There are:
>
> igt_core.h:double igt_time_elapsed(struct timespec *then,
>
> igt_core.h:uint64_t igt_nsec_elapsed(struct timespec *start);
>
> igt_core.h:static inline uint32_t igt_seconds_elapsed(struct timespec *start)
>
> Choose what you need.
>
>>>> +
>>>> +		igt_info("Time taken for size %s: %ld us\n", size_name, utime);
>>>> +	}
>>>> +}
>>>> +
>>>>    #define PAGES 1
>>>>    #define NCACHELINES (4096/64)
>>>>    /**
>>>> @@ -342,12 +400,30 @@ igt_main
>>>>    	igt_subtest("basic-store") {
>>>>    		engine = xe_engine(fd, 1);
>>>> -		basic_inst(fd, STORE, &engine->instance);
>>>> +		basic_inst(fd, COND_BATCH, &engine->instance, 0);
>>>> +	}
>>>> +
>>>> +	igt_subtest_with_dynamic("basic-store-benchmark") {
>>>> +		struct dyn {
>>>> +			const char *name;
>>>> +			int cache;
>>>> +		} tests[] = {
>>>> +			{"WC", DRM_XE_GEM_CPU_CACHING_WC},
>>>> +			{"WB", DRM_XE_GEM_CPU_CACHING_WB}
>>>> +		};
>>>> +		/* Enable for iGFX only for now */
>>>> +		igt_require(! xe_has_vram(fd));
>>> -------------------- ^
>>> Please use checkpatch.pl for similar hints.
>> Took me a while find the issue :D. I tend to do that but I guess I have to
>> add a alias that will do a check patch before sending.
>>> Could you test with 0 for dGFX?
>> with fd == 0 ?
>>
>> I think DRM_XE_GEM_CPU_CACHING_WB doesn't work for dGPU. I have to check
>> that on live machine.
>>
>>>> +
>>>> +		for (int i = 0; i < ARRAY_SIZE(tests); i++) {
>>>> +			igt_dynamic_f("%s", tests[i].name);
>>> ----------------------------------------------^
>>> This is the reason you didn't see dynamic tests running with
>>> --dyn WC, it should be:
>> it should be what ? You are keep a secret :)
> I see, I should explicitly point semicolon there ';'
> This will run empty dynamic subtest:
>
> 	igt_dynamic_f("%s", tests[i].name);
>
> While what you wanted was written below, let me copy-paste:
>
>      igt_dynamic_f("%s", tests[i].name) {
>          engine = xe_engine(fd, 1);
>          basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
>      }
Ah, now I see my stupidity!
>
> What I was asking was does it make sense to benchmark with
> cache value 0 on dGPU?

Yes, with 0 then a default value will be picked which for dGPU is WC. I 
will disable WB cache on dGPU.


Thanks,

Nirmoy

>
> Regards,
> Kamil
>
>>>> +			engine = xe_engine(fd, 1);
>>>> +			basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
>>>> +		}
>>> 			igt_dynamic_f("%s", tests[i].name) {
>>>       			engine = xe_engine(fd, 1);
>>> 	    		basic_inst_benchmark(fd, STORE, &engine->instance, tests[i].cache);
>>>               }
>>>
>>> Btw should you add a skip if engine == NULL?
>> Yes, that should be safer.
>>
>>
>> Thanks,
>>
>> Nirmoy
>>
>>>> +		}
>>>>    	}
>>>>    	igt_subtest("basic-cond-batch") {
>>>>    		engine = xe_engine(fd, 1);
>>>> -		basic_inst(fd, COND_BATCH, &engine->instance);
>>>> +		basic_inst(fd, COND_BATCH, &engine->instance, 0);
>>>>    	}
>>>>    	igt_subtest_with_dynamic("basic-all") {
>>>> @@ -356,7 +432,7 @@ igt_main
>>>>    				      xe_engine_class_string(hwe->engine_class),
>>>>    				      hwe->engine_instance,
>>>>    				      hwe->gt_id);
>>>> -			basic_inst(fd, STORE, hwe);
>>>> +			basic_inst(fd, STORE, hwe, 0);
>>>>    		}
>>>>    	}
>>>> -- 
>>>> 2.42.0
>>>>

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

end of thread, other threads:[~2024-07-03 14:30 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-25 13:08 [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark Nirmoy Das
2024-06-25 14:11 ` ✓ CI.xeBAT: success for tests/intel/xe_exec_store: Add basic_inst_benchmark (rev3) Patchwork
2024-06-25 14:22 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-06-25 16:07 ` ✓ CI.xeFULL: success " Patchwork
2024-06-28 17:02 ` [PATCH i-g-t v3] tests/intel/xe_exec_store: Add basic_inst_benchmark Kamil Konieczny
2024-07-01  7:59   ` Nirmoy Das
2024-07-01 18:12     ` Kamil Konieczny
2024-07-03 14:30       ` Nirmoy Das

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