Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH 0/2] Test zero execs/binds with fences
@ 2023-12-05 20:42 Matthew Brost
  2023-12-05 20:42 ` [igt-dev] [PATCH 1/2] xe_vm: Add section to test zero number of VM binds Matthew Brost
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Matthew Brost @ 2023-12-05 20:42 UTC (permalink / raw)
  To: igt-dev

Tests new Xe driver behavior in [1].

Matt

[1] https://patchwork.freedesktop.org/series/126546/

Matthew Brost (2):
  xe_vm: Add section to test zero number of VM binds
  xe_exec_basic: Add section to test zero number of BB in exec IOCTL

 lib/xe/xe_ioctl.c           |  13 +++++
 lib/xe/xe_ioctl.h           |   2 +
 tests/intel/xe_exec_basic.c | 108 ++++++++++++++++++++++++++++++++++++
 tests/intel/xe_vm.c         |  63 +++++++++++++++++++++
 4 files changed, 186 insertions(+)

-- 
2.34.1

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

* [igt-dev] [PATCH 1/2] xe_vm: Add section to test zero number of VM binds
  2023-12-05 20:42 [igt-dev] [PATCH 0/2] Test zero execs/binds with fences Matthew Brost
@ 2023-12-05 20:42 ` Matthew Brost
  2023-12-05 20:42 ` [igt-dev] [PATCH 2/2] xe_exec_basic: Add section to test zero number of BB in exec IOCTL Matthew Brost
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Matthew Brost @ 2023-12-05 20:42 UTC (permalink / raw)
  To: igt-dev

Verify the bind queue ordering works wrt out-sync signaling when zero
number of binds passed to VM bind IOCTL.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 lib/xe/xe_ioctl.c   | 13 ++++++++++
 lib/xe/xe_ioctl.h   |  2 ++
 tests/intel/xe_vm.c | 63 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 78 insertions(+)

diff --git a/lib/xe/xe_ioctl.c b/lib/xe/xe_ioctl.c
index c91bf25c49..761e91eb3a 100644
--- a/lib/xe/xe_ioctl.c
+++ b/lib/xe/xe_ioctl.c
@@ -164,6 +164,19 @@ void xe_vm_bind_async(int fd, uint32_t vm, uint32_t exec_queue, uint32_t bo,
 			    num_syncs, 0, 0);
 }
 
+void xe_vm_bind_zero(int fd, uint32_t vm, uint32_t exec_queue,
+		     struct drm_xe_sync *sync, uint32_t num_syncs)
+{
+	struct drm_xe_vm_bind bind = {
+		.vm_id = vm,
+		.num_syncs = num_syncs,
+		.syncs = (uintptr_t)sync,
+		.exec_queue_id = exec_queue,
+	};
+
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_VM_BIND, &bind), 0);
+}
+
 void xe_vm_bind_async_flags(int fd, uint32_t vm, uint32_t exec_queue, uint32_t bo,
 			    uint64_t offset, uint64_t addr, uint64_t size,
 			    struct drm_xe_sync *sync, uint32_t num_syncs,
diff --git a/lib/xe/xe_ioctl.h b/lib/xe/xe_ioctl.h
index 32b34b15a3..a302418544 100644
--- a/lib/xe/xe_ioctl.h
+++ b/lib/xe/xe_ioctl.h
@@ -38,6 +38,8 @@ void xe_vm_prefetch_async(int fd, uint32_t vm, uint32_t exec_queue,
 void xe_vm_bind_async(int fd, uint32_t vm, uint32_t exec_queue, uint32_t bo,
 		      uint64_t offset, uint64_t addr, uint64_t size,
 		      struct drm_xe_sync *sync, uint32_t num_syncs);
+void xe_vm_bind_zero(int fd, uint32_t vm, uint32_t exec_queue,
+		     struct drm_xe_sync *sync, uint32_t num_syncs);
 void xe_vm_bind_userptr_async(int fd, uint32_t vm, uint32_t exec_queue,
 			      uint64_t userptr, uint64_t addr, uint64_t size,
 			      struct drm_xe_sync *sync, uint32_t num_syncs);
diff --git a/tests/intel/xe_vm.c b/tests/intel/xe_vm.c
index fb65793d11..62bf950504 100644
--- a/tests/intel/xe_vm.c
+++ b/tests/intel/xe_vm.c
@@ -730,6 +730,63 @@ test_bind_execqueues_independent(int fd, struct drm_xe_engine_class_instance *ec
 	xe_vm_destroy(fd, vm);
 }
 
+/**
+ * SUBTEST: zero-binds
+ * Description: Test zero binds in IOCTL
+ * Functionality: bind engines
+ * Run type: BAT
+ */
+
+static void test_zero_binds(int fd, struct drm_xe_engine_class_instance *eci)
+{
+	uint32_t vm;
+	uint64_t addr = 0x1a0000;
+	struct drm_xe_sync sync[1] = {
+		{ .flags = DRM_XE_SYNC_TYPE_SYNCOBJ | DRM_XE_SYNC_FLAG_SIGNAL, },
+	};
+	size_t bo_size;
+	uint32_t bo = 0;
+	struct xe_cork cork;
+
+	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_FLAG_ASYNC_DEFAULT, 0);
+	bo_size = ALIGN(xe_cs_prefetch_size(fd),
+			xe_get_default_alignment(fd));
+	bo = xe_bo_create(fd, vm, bo_size,
+			  vram_if_possible(fd, eci->gt_id),
+			  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
+
+	xe_cork_init(fd, eci, &cork);
+	xe_cork_wait_started(&cork);
+
+	/* Initial bind behind cork */
+	sync[0].handle = cork.syncobj;
+	sync[0].flags &= ~DRM_XE_SYNC_FLAG_SIGNAL;
+	xe_vm_bind_async(fd, vm, 0, bo, 0, addr, bo_size, sync, 1);
+
+	/* Bind /w num_binds == 0 */
+	sync[0].handle = syncobj_create(fd, 0);
+	sync[0].flags |= DRM_XE_SYNC_FLAG_SIGNAL;
+	xe_vm_bind_zero(fd, vm, 0, sync, 1);
+
+	/* Let jobs runs for a bit */
+	usleep(100000);
+
+	/* both binds are waiting */
+	igt_assert(!syncobj_wait(fd, &sync[0].handle, 1, 0, 0, NULL));
+
+	/* Release cork */
+	xe_cork_end(&cork);
+	xe_cork_wait_done(&cork);
+	xe_cork_fini(&cork);
+
+	/* both binds are done */
+	igt_assert(syncobj_wait(fd, &sync[0].handle, 1, INT64_MAX, 0, NULL));
+
+	syncobj_destroy(fd, sync[0].handle);
+	gem_close(fd, bo);
+	xe_vm_destroy(fd, vm);
+}
+
 #define BIND_ARRAY_BIND_EXEC_QUEUE_FLAG	(0x1 << 0)
 
 
@@ -1917,6 +1974,12 @@ igt_main
 		xe_for_each_engine(fd, hwe)
 			test_bind_execqueues_independent(fd, hwe, CONFLICT);
 
+	igt_subtest("zero-binds")
+		xe_for_each_engine(fd, hwe) {
+			test_zero_binds(fd, hwe);
+			break;
+		}
+
 	igt_subtest("bind-array-twice")
 		xe_for_each_engine(fd, hwe)
 			test_bind_array(fd, hwe, 2, 0);
-- 
2.34.1

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

* [igt-dev] [PATCH 2/2] xe_exec_basic: Add section to test zero number of BB in exec IOCTL
  2023-12-05 20:42 [igt-dev] [PATCH 0/2] Test zero execs/binds with fences Matthew Brost
  2023-12-05 20:42 ` [igt-dev] [PATCH 1/2] xe_vm: Add section to test zero number of VM binds Matthew Brost
@ 2023-12-05 20:42 ` Matthew Brost
  2023-12-06  4:49   ` Ch, Sai Gowtham
  2023-12-05 21:47 ` [igt-dev] ✗ Fi.CI.BAT: failure for Test zero execs/binds with fences Patchwork
  2023-12-05 22:13 ` [igt-dev] ✓ CI.xeBAT: success " Patchwork
  3 siblings, 1 reply; 7+ messages in thread
From: Matthew Brost @ 2023-12-05 20:42 UTC (permalink / raw)
  To: igt-dev

Verify the exec queue ordering works wrt out-sync signaling when zero
number of BB passed to exec IOCTL.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 tests/intel/xe_exec_basic.c | 108 ++++++++++++++++++++++++++++++++++++
 1 file changed, 108 insertions(+)

diff --git a/tests/intel/xe_exec_basic.c b/tests/intel/xe_exec_basic.c
index 2defd1e358..b20581382c 100644
--- a/tests/intel/xe_exec_basic.c
+++ b/tests/intel/xe_exec_basic.c
@@ -17,6 +17,7 @@
 
 #include "xe/xe_ioctl.h"
 #include "xe/xe_query.h"
+#include "xe/xe_spin.h"
 #include <string.h>
 
 #define MAX_N_EXEC_QUEUES 16
@@ -300,6 +301,109 @@ test_exec(int fd, struct drm_xe_engine_class_instance *eci,
 	}
 }
 
+/**
+ * SUBTEST: zero-execs
+ * Description: Test zero execs in IOCTL
+ * Functionality: exec IOCTL
+ * Run type: BAT
+ */
+
+static void test_zero_execs(int fd, struct drm_xe_engine_class_instance *eci,
+			    int n_execs)
+{
+	uint32_t vm;
+	uint64_t addr = 0x1a0000;
+	struct drm_xe_sync sync[2] = {
+		{ .flags = DRM_XE_SYNC_TYPE_SYNCOBJ | DRM_XE_SYNC_FLAG_SIGNAL, },
+		{ .flags = DRM_XE_SYNC_TYPE_SYNCOBJ | DRM_XE_SYNC_FLAG_SIGNAL, },
+	};
+	struct drm_xe_exec exec = {
+		.num_batch_buffer = 1,
+		.num_syncs = 1,
+		.syncs = to_user_pointer(sync),
+	};
+	size_t bo_size;
+	uint32_t bo = 0;
+	uint32_t syncobj;
+	uint32_t exec_queue;
+	struct xe_cork cork;
+	struct {
+		uint32_t batch[16];
+		uint64_t pad;
+		uint32_t data;
+	} *data;
+	int i, b;
+
+	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_FLAG_ASYNC_DEFAULT, 0);
+	bo_size = sizeof(*data) * n_execs;
+	bo_size = ALIGN(bo_size + xe_cs_prefetch_size(fd),
+			xe_get_default_alignment(fd));
+	bo = xe_bo_create(fd, vm, bo_size,
+			  vram_if_possible(fd, eci->gt_id),
+			  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
+	data = xe_bo_map(fd, bo, bo_size);
+	exec_queue = xe_exec_queue_create(fd, vm, eci, 0);
+
+	xe_cork_init(fd, eci, &cork);
+	xe_cork_wait_started(&cork);
+
+	/* Initial bind behind cork */
+	sync[0].handle = syncobj = syncobj_create(fd, 0);
+	sync[0].flags |= DRM_XE_SYNC_FLAG_SIGNAL;
+	sync[1].handle = cork.syncobj;
+	sync[1].flags &= ~DRM_XE_SYNC_FLAG_SIGNAL;
+	xe_vm_bind_async(fd, vm, 0, bo, 0, addr, bo_size, sync, 2);
+
+	/* Exec behind bind */
+	for (i = 0; i < n_execs; i++) {
+		uint64_t batch_offset = (char *)&data[i].batch - (char *)data;
+		uint64_t batch_addr = addr + batch_offset;
+		uint64_t sdi_offset = (char *)&data[i].data - (char *)data;
+		uint64_t sdi_addr = addr + sdi_offset;
+
+		b = 0;
+		data[i].batch[b++] = MI_STORE_DWORD_IMM_GEN4;
+		data[i].batch[b++] = sdi_addr;
+		data[i].batch[b++] = sdi_addr >> 32;
+		data[i].batch[b++] = 0xc0ffee;
+		data[i].batch[b++] = MI_BATCH_BUFFER_END;
+		igt_assert(b <= ARRAY_SIZE(data[i].batch));
+
+		sync[0].flags &= ~DRM_XE_SYNC_FLAG_SIGNAL;
+
+		exec.exec_queue_id = exec_queue;
+		exec.address = batch_addr;
+		xe_exec(fd, &exec);
+	}
+
+	/* Exec with no batch buffer */
+	sync[0].handle = syncobj_create(fd, 0);
+	sync[0].flags |= DRM_XE_SYNC_FLAG_SIGNAL;
+	exec.num_batch_buffer = 0;
+	exec.address = 0;
+	xe_exec(fd, &exec);
+
+	/* Let jobs runs for a bit */
+	usleep(100000);
+
+	/* both bind and execs are waiting */
+	igt_assert(!syncobj_wait(fd, &syncobj, 1, 0, 0, NULL));
+	igt_assert(!syncobj_wait(fd, &sync[0].handle, 1, 0, 0, NULL));
+
+	/* Release cork */
+	xe_cork_end(&cork);
+	xe_cork_wait_done(&cork);
+	xe_cork_fini(&cork);
+
+	/* both binds are done */
+	igt_assert(syncobj_wait(fd, &syncobj, 1, INT64_MAX, 0, NULL));
+	igt_assert(syncobj_wait(fd, &sync[0].handle, 1, INT64_MAX, 0, NULL));
+
+	syncobj_destroy(fd, sync[0].handle);
+	gem_close(fd, bo);
+	xe_vm_destroy(fd, vm);
+}
+
 igt_main
 {
 	struct drm_xe_engine_class_instance *hwe;
@@ -369,6 +473,10 @@ igt_main
 				test_exec(fd, hwe, 1, 0, 1, s->flags);
 	}
 
+	igt_subtest("zero-execs")
+		xe_for_each_engine(fd, hwe)
+			test_zero_execs(fd, hwe, 1);
+
 	igt_fixture
 		drm_close_driver(fd);
 }
-- 
2.34.1

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

* [igt-dev] ✗ Fi.CI.BAT: failure for Test zero execs/binds with fences
  2023-12-05 20:42 [igt-dev] [PATCH 0/2] Test zero execs/binds with fences Matthew Brost
  2023-12-05 20:42 ` [igt-dev] [PATCH 1/2] xe_vm: Add section to test zero number of VM binds Matthew Brost
  2023-12-05 20:42 ` [igt-dev] [PATCH 2/2] xe_exec_basic: Add section to test zero number of BB in exec IOCTL Matthew Brost
@ 2023-12-05 21:47 ` Patchwork
  2023-12-05 22:13 ` [igt-dev] ✓ CI.xeBAT: success " Patchwork
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2023-12-05 21:47 UTC (permalink / raw)
  To: Matthew Brost; +Cc: igt-dev

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

== Series Details ==

Series: Test zero execs/binds with fences
URL   : https://patchwork.freedesktop.org/series/127388/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_13983 -> IGTPW_10344
====================================================

Summary
-------

  **FAILURE**

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

Participating hosts (35 -> 36)
------------------------------

  Additional (2): bat-dg2-8 bat-mtlp-8 
  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_psr@psr_cursor_plane_move:
    - bat-mtlp-8:         NOTRUN -> [SKIP][1] +3 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-mtlp-8/igt@kms_psr@psr_cursor_plane_move.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@core_hotunplug@unbind-rebind:
    - bat-mtlp-8:         NOTRUN -> [ABORT][2] ([i915#8213] / [i915#8668])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-mtlp-8/igt@core_hotunplug@unbind-rebind.html
    - bat-dg2-8:          NOTRUN -> [ABORT][3] ([i915#8213])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@core_hotunplug@unbind-rebind.html

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

  * igt@gem_mmap@basic:
    - bat-mtlp-8:         NOTRUN -> [SKIP][5] ([i915#4083])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-mtlp-8/igt@gem_mmap@basic.html
    - bat-dg2-8:          NOTRUN -> [SKIP][6] ([i915#4083])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@gem_mmap@basic.html

  * igt@gem_mmap_gtt@basic:
    - bat-mtlp-8:         NOTRUN -> [SKIP][7] ([i915#4077]) +2 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-mtlp-8/igt@gem_mmap_gtt@basic.html
    - bat-dg2-8:          NOTRUN -> [SKIP][8] ([i915#4077]) +2 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@gem_mmap_gtt@basic.html

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

  * igt@gem_tiled_pread_basic:
    - bat-dg2-8:          NOTRUN -> [SKIP][10] ([i915#4079]) +1 other test skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@gem_tiled_pread_basic.html

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

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

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

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - bat-dg2-8:          NOTRUN -> [SKIP][17] ([i915#4212]) +6 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@tile-pitch-mismatch:
    - bat-dg2-8:          NOTRUN -> [SKIP][18] ([i915#4212] / [i915#5608])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@kms_addfb_basic@tile-pitch-mismatch.html

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

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

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-mtlp-8:         NOTRUN -> [SKIP][22] ([fdo#109285])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-mtlp-8/igt@kms_force_connector_basic@force-load-detect.html
    - bat-dg2-8:          NOTRUN -> [SKIP][23] ([fdo#109285])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-mtlp-8:         NOTRUN -> [SKIP][24] ([i915#5274])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-mtlp-8/igt@kms_force_connector_basic@prune-stale-modes.html
    - bat-dg2-8:          NOTRUN -> [SKIP][25] ([i915#5274])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-dg2-8:          NOTRUN -> [SKIP][26] ([i915#5354])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr_cursor_plane_move:
    - bat-dg2-8:          NOTRUN -> [SKIP][27] ([i915#9673] / [i915#9736]) +3 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@kms_psr@psr_cursor_plane_move.html

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

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

  * igt@prime_vgem@basic-fence-mmap:
    - bat-dg2-8:          NOTRUN -> [SKIP][31] ([i915#3708] / [i915#4077]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-dg2-8/igt@prime_vgem@basic-fence-mmap.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][32] ([i915#3708] / [i915#4077]) +1 other test skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-mtlp-8/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-fence-read:
    - bat-mtlp-8:         NOTRUN -> [SKIP][33] ([i915#3708]) +2 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/bat-mtlp-8/igt@prime_vgem@basic-fence-read.html

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

  
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5608]: https://gitlab.freedesktop.org/drm/intel/issues/5608
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213
  [i915#8668]: https://gitlab.freedesktop.org/drm/intel/issues/8668
  [i915#8809]: https://gitlab.freedesktop.org/drm/intel/issues/8809
  [i915#9159]: https://gitlab.freedesktop.org/drm/intel/issues/9159
  [i915#9318]: https://gitlab.freedesktop.org/drm/intel/issues/9318
  [i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673
  [i915#9736]: https://gitlab.freedesktop.org/drm/intel/issues/9736


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7622 -> IGTPW_10344

  CI-20190529: 20190529
  CI_DRM_13983: a9d99261a978835b02e248fe18af3026416af3e8 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_10344: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/index.html
  IGT_7622: 48a47d91b7727215b965690c69d84159c8fb1aa2 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git


Testlist changes
----------------

+igt@xe_exec_basic@zero-execs
+igt@xe_vm@zero-binds
-igt@xe_spin_batch@spin-fixed-duration-with-preempter

== Logs ==

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

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

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

* [igt-dev] ✓ CI.xeBAT: success for Test zero execs/binds with fences
  2023-12-05 20:42 [igt-dev] [PATCH 0/2] Test zero execs/binds with fences Matthew Brost
                   ` (2 preceding siblings ...)
  2023-12-05 21:47 ` [igt-dev] ✗ Fi.CI.BAT: failure for Test zero execs/binds with fences Patchwork
@ 2023-12-05 22:13 ` Patchwork
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2023-12-05 22:13 UTC (permalink / raw)
  To: Matthew Brost; +Cc: igt-dev

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

== Series Details ==

Series: Test zero execs/binds with fences
URL   : https://patchwork.freedesktop.org/series/127388/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_7622_BAT -> XEIGTPW_10344_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  Missing    (1): bat-adlp-7 


Changes
-------

  No changes found


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

  * IGT: IGT_7622 -> IGTPW_10344

  IGTPW_10344: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10344/index.html
  IGT_7622: 48a47d91b7727215b965690c69d84159c8fb1aa2 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-550-ac7b89571d802765762e7c15d78a6dcd5d92c41b: ac7b89571d802765762e7c15d78a6dcd5d92c41b

== Logs ==

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

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

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

* Re: [igt-dev] [PATCH 2/2] xe_exec_basic: Add section to test zero number of BB in exec IOCTL
  2023-12-06  4:49   ` Ch, Sai Gowtham
@ 2023-12-05 22:22     ` Matthew Brost
  0 siblings, 0 replies; 7+ messages in thread
From: Matthew Brost @ 2023-12-05 22:22 UTC (permalink / raw)
  To: Ch, Sai Gowtham; +Cc: igt-dev@lists.freedesktop.org

On Tue, Dec 05, 2023 at 09:49:00PM -0700, Ch, Sai Gowtham wrote:
> 
> 
> >-----Original Message-----
> >From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Matthew
> >Brost
> >Sent: Wednesday, December 6, 2023 2:12 AM
> >To: igt-dev@lists.freedesktop.org
> >Subject: [igt-dev] [PATCH 2/2] xe_exec_basic: Add section to test zero number of
> >BB in exec IOCTL
> >
> >Verify the exec queue ordering works wrt out-sync signaling when zero number of
> >BB passed to exec IOCTL.
> >
> >Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> >---
> > tests/intel/xe_exec_basic.c | 108 ++++++++++++++++++++++++++++++++++++
> > 1 file changed, 108 insertions(+)
> >
> >diff --git a/tests/intel/xe_exec_basic.c b/tests/intel/xe_exec_basic.c index
> >2defd1e358..b20581382c 100644
> >--- a/tests/intel/xe_exec_basic.c
> >+++ b/tests/intel/xe_exec_basic.c
> >@@ -17,6 +17,7 @@
> >
> > #include "xe/xe_ioctl.h"
> > #include "xe/xe_query.h"
> >+#include "xe/xe_spin.h"
> > #include <string.h>
> >
> > #define MAX_N_EXEC_QUEUES 16
> >@@ -300,6 +301,109 @@ test_exec(int fd, struct drm_xe_engine_class_instance
> >*eci,
> > 	}
> > }
> >
> >+/**
> >+ * SUBTEST: zero-execs
> >+ * Description: Test zero execs in IOCTL
> >+ * Functionality: exec IOCTL
> >+ * Run type: BAT
> >+ */
> >+
> >+static void test_zero_execs(int fd, struct drm_xe_engine_class_instance *eci,
> >+			    int n_execs)
> >+{
> >+	uint32_t vm;
> >+	uint64_t addr = 0x1a0000;
> >+	struct drm_xe_sync sync[2] = {
> >+		{ .flags = DRM_XE_SYNC_TYPE_SYNCOBJ |
> >DRM_XE_SYNC_FLAG_SIGNAL, },
> >+		{ .flags = DRM_XE_SYNC_TYPE_SYNCOBJ |
> >DRM_XE_SYNC_FLAG_SIGNAL, },
> >+	};
> >+	struct drm_xe_exec exec = {
> >+		.num_batch_buffer = 1,
> >+		.num_syncs = 1,
> >+		.syncs = to_user_pointer(sync),
> >+	};
> >+	size_t bo_size;
> >+	uint32_t bo = 0;
> >+	uint32_t syncobj;
> >+	uint32_t exec_queue;
> >+	struct xe_cork cork;
> >+	struct {
> >+		uint32_t batch[16];
> >+		uint64_t pad;
> >+		uint32_t data;
> >+	} *data;
> >+	int i, b;
> >+
> >+	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_FLAG_ASYNC_DEFAULT, 0);
> >+	bo_size = sizeof(*data) * n_execs;
> >+	bo_size = ALIGN(bo_size + xe_cs_prefetch_size(fd),
> >+			xe_get_default_alignment(fd));
> >+	bo = xe_bo_create(fd, vm, bo_size,
> >+			  vram_if_possible(fd, eci->gt_id),
> >+			  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
> >+	data = xe_bo_map(fd, bo, bo_size);
> >+	exec_queue = xe_exec_queue_create(fd, vm, eci, 0);
> >+
> >+	xe_cork_init(fd, eci, &cork);
> >+	xe_cork_wait_started(&cork);
> >+
> >+	/* Initial bind behind cork */
> >+	sync[0].handle = syncobj = syncobj_create(fd, 0);
> >+	sync[0].flags |= DRM_XE_SYNC_FLAG_SIGNAL;
> >+	sync[1].handle = cork.syncobj;
> >+	sync[1].flags &= ~DRM_XE_SYNC_FLAG_SIGNAL;
> >+	xe_vm_bind_async(fd, vm, 0, bo, 0, addr, bo_size, sync, 2);
> >+
> >+	/* Exec behind bind */
> >+	for (i = 0; i < n_execs; i++) {
> >+		uint64_t batch_offset = (char *)&data[i].batch - (char *)data;
> >+		uint64_t batch_addr = addr + batch_offset;
> >+		uint64_t sdi_offset = (char *)&data[i].data - (char *)data;
> >+		uint64_t sdi_addr = addr + sdi_offset;
> >+
> >+		b = 0;
> >+		data[i].batch[b++] = MI_STORE_DWORD_IMM_GEN4;
> >+		data[i].batch[b++] = sdi_addr;
> >+		data[i].batch[b++] = sdi_addr >> 32;
> >+		data[i].batch[b++] = 0xc0ffee;
> >+		data[i].batch[b++] = MI_BATCH_BUFFER_END;
> >+		igt_assert(b <= ARRAY_SIZE(data[i].batch));
> >+
> >+		sync[0].flags &= ~DRM_XE_SYNC_FLAG_SIGNAL;
> >+
> >+		exec.exec_queue_id = exec_queue;
> >+		exec.address = batch_addr;
> >+		xe_exec(fd, &exec);
> Why are you submitting jobs first ? when the intension is to just check exec IOCTL with zero number of bb,

It is test that a exec with 0 batches is ordered on the queue behind any
existing batches.  

> I could be a simple test with num_batch_buffer = 0 with a dummy workload just submitting  MI_BATCH_BUFFER_END. 
> 

A workload with MI_BATCH_BUFFER_END is not required, that is the point
of allowinf num_batch_buffer == 0.

> >+	}
> >+
> >+	/* Exec with no batch buffer */
> >+	sync[0].handle = syncobj_create(fd, 0);
> >+	sync[0].flags |= DRM_XE_SYNC_FLAG_SIGNAL;
> >+	exec.num_batch_buffer = 0;
> What happens if we give valid exec.address with zero number of BB ?
> 

The address is ignored. It can be valid or invalid.

Matt

> --
> Sai Gowtham Ch
> >+	exec.address = 0;
> >+	xe_exec(fd, &exec);
> >+
> >+	/* Let jobs runs for a bit */
> >+	usleep(100000);
> >+
> >+	/* both bind and execs are waiting */
> >+	igt_assert(!syncobj_wait(fd, &syncobj, 1, 0, 0, NULL));
> >+	igt_assert(!syncobj_wait(fd, &sync[0].handle, 1, 0, 0, NULL));
> >+
> >+	/* Release cork */
> >+	xe_cork_end(&cork);
> >+	xe_cork_wait_done(&cork);
> >+	xe_cork_fini(&cork);
> >+
> >+	/* both binds are done */
> >+	igt_assert(syncobj_wait(fd, &syncobj, 1, INT64_MAX, 0, NULL));
> >+	igt_assert(syncobj_wait(fd, &sync[0].handle, 1, INT64_MAX, 0, NULL));
> >+
> >+	syncobj_destroy(fd, sync[0].handle);
> >+	gem_close(fd, bo);
> >+	xe_vm_destroy(fd, vm);
> >+}
> >+
> > igt_main
> > {
> > 	struct drm_xe_engine_class_instance *hwe; @@ -369,6 +473,10 @@
> >igt_main
> > 				test_exec(fd, hwe, 1, 0, 1, s->flags);
> > 	}
> >
> >+	igt_subtest("zero-execs")
> >+		xe_for_each_engine(fd, hwe)
> >+			test_zero_execs(fd, hwe, 1);
> >+
> > 	igt_fixture
> > 		drm_close_driver(fd);
> > }
> >--
> >2.34.1
> 

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

* Re: [igt-dev] [PATCH 2/2] xe_exec_basic: Add section to test zero number of BB in exec IOCTL
  2023-12-05 20:42 ` [igt-dev] [PATCH 2/2] xe_exec_basic: Add section to test zero number of BB in exec IOCTL Matthew Brost
@ 2023-12-06  4:49   ` Ch, Sai Gowtham
  2023-12-05 22:22     ` Matthew Brost
  0 siblings, 1 reply; 7+ messages in thread
From: Ch, Sai Gowtham @ 2023-12-06  4:49 UTC (permalink / raw)
  To: Brost, Matthew, igt-dev@lists.freedesktop.org



>-----Original Message-----
>From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Matthew
>Brost
>Sent: Wednesday, December 6, 2023 2:12 AM
>To: igt-dev@lists.freedesktop.org
>Subject: [igt-dev] [PATCH 2/2] xe_exec_basic: Add section to test zero number of
>BB in exec IOCTL
>
>Verify the exec queue ordering works wrt out-sync signaling when zero number of
>BB passed to exec IOCTL.
>
>Signed-off-by: Matthew Brost <matthew.brost@intel.com>
>---
> tests/intel/xe_exec_basic.c | 108 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 108 insertions(+)
>
>diff --git a/tests/intel/xe_exec_basic.c b/tests/intel/xe_exec_basic.c index
>2defd1e358..b20581382c 100644
>--- a/tests/intel/xe_exec_basic.c
>+++ b/tests/intel/xe_exec_basic.c
>@@ -17,6 +17,7 @@
>
> #include "xe/xe_ioctl.h"
> #include "xe/xe_query.h"
>+#include "xe/xe_spin.h"
> #include <string.h>
>
> #define MAX_N_EXEC_QUEUES 16
>@@ -300,6 +301,109 @@ test_exec(int fd, struct drm_xe_engine_class_instance
>*eci,
> 	}
> }
>
>+/**
>+ * SUBTEST: zero-execs
>+ * Description: Test zero execs in IOCTL
>+ * Functionality: exec IOCTL
>+ * Run type: BAT
>+ */
>+
>+static void test_zero_execs(int fd, struct drm_xe_engine_class_instance *eci,
>+			    int n_execs)
>+{
>+	uint32_t vm;
>+	uint64_t addr = 0x1a0000;
>+	struct drm_xe_sync sync[2] = {
>+		{ .flags = DRM_XE_SYNC_TYPE_SYNCOBJ |
>DRM_XE_SYNC_FLAG_SIGNAL, },
>+		{ .flags = DRM_XE_SYNC_TYPE_SYNCOBJ |
>DRM_XE_SYNC_FLAG_SIGNAL, },
>+	};
>+	struct drm_xe_exec exec = {
>+		.num_batch_buffer = 1,
>+		.num_syncs = 1,
>+		.syncs = to_user_pointer(sync),
>+	};
>+	size_t bo_size;
>+	uint32_t bo = 0;
>+	uint32_t syncobj;
>+	uint32_t exec_queue;
>+	struct xe_cork cork;
>+	struct {
>+		uint32_t batch[16];
>+		uint64_t pad;
>+		uint32_t data;
>+	} *data;
>+	int i, b;
>+
>+	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_FLAG_ASYNC_DEFAULT, 0);
>+	bo_size = sizeof(*data) * n_execs;
>+	bo_size = ALIGN(bo_size + xe_cs_prefetch_size(fd),
>+			xe_get_default_alignment(fd));
>+	bo = xe_bo_create(fd, vm, bo_size,
>+			  vram_if_possible(fd, eci->gt_id),
>+			  DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
>+	data = xe_bo_map(fd, bo, bo_size);
>+	exec_queue = xe_exec_queue_create(fd, vm, eci, 0);
>+
>+	xe_cork_init(fd, eci, &cork);
>+	xe_cork_wait_started(&cork);
>+
>+	/* Initial bind behind cork */
>+	sync[0].handle = syncobj = syncobj_create(fd, 0);
>+	sync[0].flags |= DRM_XE_SYNC_FLAG_SIGNAL;
>+	sync[1].handle = cork.syncobj;
>+	sync[1].flags &= ~DRM_XE_SYNC_FLAG_SIGNAL;
>+	xe_vm_bind_async(fd, vm, 0, bo, 0, addr, bo_size, sync, 2);
>+
>+	/* Exec behind bind */
>+	for (i = 0; i < n_execs; i++) {
>+		uint64_t batch_offset = (char *)&data[i].batch - (char *)data;
>+		uint64_t batch_addr = addr + batch_offset;
>+		uint64_t sdi_offset = (char *)&data[i].data - (char *)data;
>+		uint64_t sdi_addr = addr + sdi_offset;
>+
>+		b = 0;
>+		data[i].batch[b++] = MI_STORE_DWORD_IMM_GEN4;
>+		data[i].batch[b++] = sdi_addr;
>+		data[i].batch[b++] = sdi_addr >> 32;
>+		data[i].batch[b++] = 0xc0ffee;
>+		data[i].batch[b++] = MI_BATCH_BUFFER_END;
>+		igt_assert(b <= ARRAY_SIZE(data[i].batch));
>+
>+		sync[0].flags &= ~DRM_XE_SYNC_FLAG_SIGNAL;
>+
>+		exec.exec_queue_id = exec_queue;
>+		exec.address = batch_addr;
>+		xe_exec(fd, &exec);
Why are you submitting jobs first ? when the intension is to just check exec IOCTL with zero number of bb,
I could be a simple test with num_batch_buffer = 0 with a dummy workload just submitting  MI_BATCH_BUFFER_END. 

>+	}
>+
>+	/* Exec with no batch buffer */
>+	sync[0].handle = syncobj_create(fd, 0);
>+	sync[0].flags |= DRM_XE_SYNC_FLAG_SIGNAL;
>+	exec.num_batch_buffer = 0;
What happens if we give valid exec.address with zero number of BB ?

--
Sai Gowtham Ch
>+	exec.address = 0;
>+	xe_exec(fd, &exec);
>+
>+	/* Let jobs runs for a bit */
>+	usleep(100000);
>+
>+	/* both bind and execs are waiting */
>+	igt_assert(!syncobj_wait(fd, &syncobj, 1, 0, 0, NULL));
>+	igt_assert(!syncobj_wait(fd, &sync[0].handle, 1, 0, 0, NULL));
>+
>+	/* Release cork */
>+	xe_cork_end(&cork);
>+	xe_cork_wait_done(&cork);
>+	xe_cork_fini(&cork);
>+
>+	/* both binds are done */
>+	igt_assert(syncobj_wait(fd, &syncobj, 1, INT64_MAX, 0, NULL));
>+	igt_assert(syncobj_wait(fd, &sync[0].handle, 1, INT64_MAX, 0, NULL));
>+
>+	syncobj_destroy(fd, sync[0].handle);
>+	gem_close(fd, bo);
>+	xe_vm_destroy(fd, vm);
>+}
>+
> igt_main
> {
> 	struct drm_xe_engine_class_instance *hwe; @@ -369,6 +473,10 @@
>igt_main
> 				test_exec(fd, hwe, 1, 0, 1, s->flags);
> 	}
>
>+	igt_subtest("zero-execs")
>+		xe_for_each_engine(fd, hwe)
>+			test_zero_execs(fd, hwe, 1);
>+
> 	igt_fixture
> 		drm_close_driver(fd);
> }
>--
>2.34.1

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

end of thread, other threads:[~2023-12-06  5:23 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-05 20:42 [igt-dev] [PATCH 0/2] Test zero execs/binds with fences Matthew Brost
2023-12-05 20:42 ` [igt-dev] [PATCH 1/2] xe_vm: Add section to test zero number of VM binds Matthew Brost
2023-12-05 20:42 ` [igt-dev] [PATCH 2/2] xe_exec_basic: Add section to test zero number of BB in exec IOCTL Matthew Brost
2023-12-06  4:49   ` Ch, Sai Gowtham
2023-12-05 22:22     ` Matthew Brost
2023-12-05 21:47 ` [igt-dev] ✗ Fi.CI.BAT: failure for Test zero execs/binds with fences Patchwork
2023-12-05 22:13 ` [igt-dev] ✓ CI.xeBAT: success " Patchwork

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