All of lore.kernel.org
 help / color / mirror / Atom feed
From: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
To: <priyanka.dandamudi@intel.com>
Cc: <igt-dev@lists.freedesktop.org>
Subject: Re: [PATCH i-g-t 2/7] tests/intel/xe_evict: Add basic multi queue test
Date: Wed, 31 Dec 2025 16:34:27 -0800	[thread overview]
Message-ID: <aVXBEzxYOBZW8nfF@nvishwa1-desk> (raw)
In-Reply-To: <20251219120154.695287-3-priyanka.dandamudi@intel.com>

On Fri, Dec 19, 2025 at 05:31:49PM +0530, priyanka.dandamudi@intel.com wrote:
>From: Priyanka Dandamudi <priyanka.dandamudi@intel.com>
>
>Added basic multi queue test for small buffer objects.
>

Just curious. Are evictions happening as expected?
Though in theory it should as all the test is doing is
grouping the exec queues together in a multi-queue group,
it is better to validate.

Niranjana

>Signed-off-by: Priyanka Dandamudi <priyanka.dandamudi@intel.com>
>Signed-off-by: Sai Gowtham Ch <sai.gowtham.ch@intel.com>
>---
> tests/intel/xe_evict.c | 62 +++++++++++++++++++++++++++++++++++-------
> 1 file changed, 52 insertions(+), 10 deletions(-)
>
>diff --git a/tests/intel/xe_evict.c b/tests/intel/xe_evict.c
>index 2350487c8..a62230ec6 100644
>--- a/tests/intel/xe_evict.c
>+++ b/tests/intel/xe_evict.c
>@@ -29,6 +29,7 @@
> #define COMPUTE_THREAD		(0x1 << 4)
> #define EXTERNAL_OBJ		(0x1 << 5)
> #define BIND_EXEC_QUEUE		(0x1 << 6)
>+#define MULTI_QUEUE		(0x1 << 7)
>
> static void
> test_evict(int fd, struct drm_xe_engine_class_instance *eci,
>@@ -80,7 +81,18 @@ test_evict(int fd, struct drm_xe_engine_class_instance *eci,
> 		if (flags & MULTI_VM)
> 			exec_queues[i] = xe_exec_queue_create(fd, i & 1 ? vm2 : vm ,
> 						      eci, 0);
>-		else
>+		else if (flags & MULTI_QUEUE) {
>+			struct drm_xe_ext_set_property multiq = {
>+				.base.next_extension = 0,
>+				.base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
>+				.property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP,
>+			};
>+			uint64_t ext = to_user_pointer(&multiq);
>+
>+			multiq.value = i ? exec_queues[0] : DRM_XE_MULTI_GROUP_CREATE;
>+			igt_assert_eq(__xe_exec_queue_create(fd, vm, 1, 1, eci,
>+							     ext, &exec_queues[i]), 0);
>+		} else
> 			exec_queues[i] = xe_exec_queue_create(fd, vm, eci, 0);
> 		syncobjs[i] = syncobj_create(fd, 0);
> 	};
>@@ -259,7 +271,18 @@ test_evict_cm(int fd, struct drm_xe_engine_class_instance *eci,
> 		if (flags & MULTI_VM)
> 			exec_queues[i] = xe_exec_queue_create(fd, i & 1 ? vm2 :
> 							      vm, eci, 0);
>-		else
>+		else if (flags & MULTI_QUEUE) {
>+			struct drm_xe_ext_set_property multiq = {
>+				.base.next_extension = 0,
>+				.base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
>+				.property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP,
>+			};
>+			uint64_t ext = to_user_pointer(&multiq);
>+
>+			multiq.value = i ? exec_queues[0] : DRM_XE_MULTI_GROUP_CREATE;
>+			igt_assert_eq(__xe_exec_queue_create(fd, vm, 1, 1, eci,
>+							     ext, &exec_queues[i]), 0);
>+		} else
> 			exec_queues[i] = xe_exec_queue_create(fd, vm, eci, 0);
> 	}
>
>@@ -516,6 +539,7 @@ static unsigned int working_set(uint64_t vram_size, uint64_t system_size,
>  * arg[1]:
>  *
>  * @small:			small
>+ * @small-multiqueue:		small multi queue
>  * @small-external:		small external
>  * @small-multi-vm:		small multi VM
>  * @beng-small:			small bind exec_queue
>@@ -546,6 +570,7 @@ static unsigned int working_set(uint64_t vram_size, uint64_t system_size,
>  * arg[1]:
>  *
>  * @small-cm:			small compute machine
>+ * @small-multiqueue-cm:	small multi queue compute machine
>  * @small-external-cm:		small external compute machine
>  * @small-multi-vm-cm:		small multi VM compute machine
>  * @beng-small-cm:		small bind exec_queue compute machine
>@@ -678,7 +703,7 @@ static unsigned int working_set(uint64_t vram_size, uint64_t system_size,
>  */
> int igt_main()
> {
>-	struct drm_xe_engine_class_instance *hwe;
>+	struct drm_xe_engine_class_instance *hwe, *multi_queue_hwe = NULL;
> 	const struct section {
> 		const char *name;
> 		int n_exec_queues;
>@@ -688,6 +713,7 @@ int igt_main()
> 		unsigned int flags;
> 	} sections[] = {
> 		{ "small", 16, 448, 1, 128, 0 },
>+		{ "small-multiqueue", 16, 448, 1, 128, MULTI_QUEUE },
> 		{ "small-external", 16, 448, 1, 128, EXTERNAL_OBJ },
> 		{ "small-multi-vm", 16, 256, 1, 128, MULTI_VM },
> 		{ "large", 4, 16, 1, 4, 0 },
>@@ -713,6 +739,7 @@ int igt_main()
> 		unsigned int flags;
> 	} sections_cm[] = {
> 		{ "small-cm", 16, 448, 1, 128, 0 },
>+		{ "small-multiqueue-cm", 16, 448, 1, 128, MULTI_QUEUE },
> 		{ "small-external-cm", 16, 448, 1, 128, EXTERNAL_OBJ },
> 		{ "small-multi-vm-cm", 16, 256, 1, 128, MULTI_VM },
> 		{ "large-cm", 4, 16, 1, 4, 0 },
>@@ -820,6 +847,9 @@ int igt_main()
> 		xe_for_each_engine(fd, hwe)
> 			if (hwe->engine_class != DRM_XE_ENGINE_CLASS_COPY)
> 				break;
>+
>+		xe_for_each_multi_queue_engine(fd, multi_queue_hwe)
>+			break;
> 	}
>
> 	for (const struct section *s = sections; s->name; s++) {
>@@ -829,9 +859,13 @@ int igt_main()
> 					     1, s->flags);
>
> 			igt_debug("Max working set %d n_execs %d\n", ws, s->n_execs);
>+			if (s->flags & MULTI_QUEUE) {
>+				igt_require(intel_graphics_ver(intel_get_drm_devid(fd)) >= IP_VER(35, 0));
>+				igt_require(multi_queue_hwe != NULL);
>+			}
> 			igt_skip_on_f(!ws, "System memory size is too small.\n");
>-			test_evict(fd, hwe, s->n_exec_queues,
>-				   min(ws, s->n_execs), bo_size,
>+			test_evict(fd, s->flags & MULTI_QUEUE ? multi_queue_hwe : hwe,
>+				   s->n_exec_queues, min(ws, s->n_execs), bo_size,
> 				   s->flags, NULL);
> 		}
> 	}
>@@ -843,10 +877,13 @@ int igt_main()
> 					     1, s->flags);
>
> 			igt_debug("Max working set %d n_execs %d\n", ws, s->n_execs);
>+			if (s->flags & MULTI_QUEUE) {
>+				igt_require(intel_graphics_ver(intel_get_drm_devid(fd)) >= IP_VER(35, 0));
>+				igt_require(multi_queue_hwe != NULL);
>+			}
> 			igt_skip_on_f(!ws, "System memory size is too small.\n");
>-			test_evict_cm(fd, hwe, s->n_exec_queues,
>-				      min(ws, s->n_execs), bo_size,
>-				      s->flags, NULL);
>+			test_evict_cm(fd, s->flags & MULTI_QUEUE ? multi_queue_hwe : hwe, s->n_exec_queues,
>+				      min(ws, s->n_execs), bo_size, s->flags, NULL);
> 		}
> 	}
>
>@@ -857,9 +894,14 @@ int igt_main()
> 					     s->n_threads, s->flags);
>
> 			igt_debug("Max working set %d n_execs %d\n", ws, s->n_execs);
>+			if (s->flags & MULTI_QUEUE) {
>+				igt_require(intel_graphics_ver(intel_get_drm_devid(fd)) >= IP_VER(35, 0));
>+				igt_require(multi_queue_hwe != NULL);
>+			}
> 			igt_skip_on_f(!ws, "System memory size is too small.\n");
>-			threads(fd, hwe, s->n_threads, s->n_exec_queues,
>-				min(ws, s->n_execs), bo_size, s->flags);
>+			threads(fd, s->flags & MULTI_QUEUE ? multi_queue_hwe : hwe,
>+				s->n_threads, s->n_exec_queues, min(ws, s->n_execs),
>+				bo_size, s->flags);
> 		}
> 	}
>
>-- 
>2.43.0
>

  parent reply	other threads:[~2026-01-01  0:34 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-19 12:01 [PATCH i-g-t 0/7] Extend multi queue feature validation support priyanka.dandamudi
2025-12-19 12:01 ` [PATCH i-g-t 1/7] tests/intel/xe_exec_fault_mode: Add multi queue test support priyanka.dandamudi
2025-12-31 19:55   ` Niranjana Vishwanathapura
2026-01-07  6:24     ` Dandamudi, Priyanka
2025-12-19 12:01 ` [PATCH i-g-t 2/7] tests/intel/xe_evict: Add basic multi queue test priyanka.dandamudi
2026-01-01  0:21   ` Niranjana Vishwanathapura
2026-01-07  6:25     ` Dandamudi, Priyanka
2026-01-01  0:34   ` Niranjana Vishwanathapura [this message]
2025-12-19 12:01 ` [PATCH i-g-t 3/7] tests/intel/xe_evict: Add priority for multi queue priyanka.dandamudi
2026-01-01  0:23   ` Niranjana Vishwanathapura
2026-01-14  6:29     ` Dandamudi, Priyanka
2025-12-19 12:01 ` [PATCH i-g-t 4/7] tests/intel/xe_evict: Enhance testing of multi queue functionality priyanka.dandamudi
2026-01-01  0:27   ` Niranjana Vishwanathapura
2026-01-14  6:32     ` Dandamudi, Priyanka
2025-12-19 12:01 ` [PATCH i-g-t 5/7] tests/intel/xe_exec_reset: Add multi queue subtests priyanka.dandamudi
2026-01-01  4:17   ` Niranjana Vishwanathapura
2026-01-14  6:39     ` Dandamudi, Priyanka
2025-12-19 12:01 ` [PATCH i-g-t 6/7] tests/intel/xe_exec_threads: Add multi queue basic test priyanka.dandamudi
2025-12-31 21:15   ` Niranjana Vishwanathapura
2026-01-01  4:19     ` Niranjana Vishwanathapura
2026-01-14  6:33       ` Dandamudi, Priyanka
2026-01-14  6:28     ` Dandamudi, Priyanka
2025-12-19 12:01 ` [PATCH i-g-t 7/7] tests/intel/xe_exec_threads: Extend multi queue testing priyanka.dandamudi
2025-12-31 21:34   ` Niranjana Vishwanathapura
2026-01-14  6:36     ` Dandamudi, Priyanka
2025-12-22 21:58 ` ✓ Xe.CI.BAT: success for Extend multi queue feature validation support (rev2) Patchwork
2025-12-22 22:11 ` ✓ i915.CI.BAT: " Patchwork
2025-12-23  4:36 ` ✗ Xe.CI.Full: failure " Patchwork
2025-12-24  6:06 ` ✗ i915.CI.Full: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aVXBEzxYOBZW8nfF@nvishwa1-desk \
    --to=niranjana.vishwanathapura@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=priyanka.dandamudi@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.