From: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
To: <priyanka.dandamudi@intel.com>
Cc: <igt-dev@lists.freedesktop.org>
Subject: Re: [PATCH i-g-t 1/7] tests/intel/xe_exec_fault_mode: Add multi queue test support
Date: Wed, 31 Dec 2025 11:55:53 -0800 [thread overview]
Message-ID: <aVV_yaxXWCfYkc4r@nvishwa1-desk> (raw)
In-Reply-To: <20251219120154.695287-2-priyanka.dandamudi@intel.com>
On Fri, Dec 19, 2025 at 05:31:48PM +0530, priyanka.dandamudi@intel.com wrote:
>From: Janga Rahul Kumar <janga.rahul.kumar@intel.com>
>
Remove email ids that is no longer valid.
>Extend fault mode test to cover multi queue test scenarios.
>
>Signed-off-by: Janga Rahul Kumar <janga.rahul.kumar@intel.com>
Remove email ids that is no longer valid.
>Signed-off-by: Priyanka Dandamudi <priyanka.dandamudi@intel.com>
>---
> tests/intel/xe_exec_fault_mode.c | 140 +++++++++++++++++++++++++++----
> 1 file changed, 125 insertions(+), 15 deletions(-)
>
>diff --git a/tests/intel/xe_exec_fault_mode.c b/tests/intel/xe_exec_fault_mode.c
>index 5f42051a1..40612449f 100644
>--- a/tests/intel/xe_exec_fault_mode.c
>+++ b/tests/intel/xe_exec_fault_mode.c
>@@ -35,6 +35,7 @@
> #define INVALID_FAULT (0x1 << 7)
> #define INVALID_VA (0x1 << 8)
> #define ENABLE_SCRATCH (0x1 << 9)
>+#define MULTI_QUEUE (0x1 << 10)
>
> /**
> * SUBTEST: invalid-va
>@@ -109,6 +110,62 @@
> * @invalid-fault: invalid fault
> * @invalid-userptr-fault: invalid userptr fault
> */
>+/**
>+ * SUBTEST: once-%s
>+ * Mega feature: MultiQ
>+ * Sub-category: MultiQ tests
>+ * Description: Run %arg[1] fault mode test only once
>+ * Test category: functionality test
Bit confusing as 'SUBTEST: once-%s' is already present above.
So, the reason we are adding new SUBEST sections is just to
specify Multi Queue Mega feature and sub-category.
May be make it as 'SUBEST: once-multi-queue-%s' and adjust
the below naming?
Also, don't use 'MultiQ' instead use 'Multi Queue' that way
naming is more consistent.
Niranjana
>+ *
>+ * SUBTEST: twice-%s
>+ * Mega feature: MultiQ
>+ * Sub-category: MultiQ tests
>+ * Description: Run %arg[1] fault mode test twice
>+ * Test category: functionality test
>+ *
>+ * SUBTEST: many-%s
>+ * Mega feature: MultiQ
>+ * Sub-category: MultiQ tests
>+ * Description: Run %arg[1] fault mode test many times
>+ * Test category: stress test
>+ *
>+ * SUBTEST: many-execqueues-%s
>+ * Mega feature: MultiQ
>+ * Sub-category: MultiQ tests
>+ * Description: Run %arg[1] fault mode test on many exec_queues
>+ * Test category: stress test
>+ *
>+ * arg[1]:
>+ *
>+ * @multi-queue: multi-queue
>+ * @multi-queue-userptr: multi-queue userptr
>+ * @multi-queue-rebind: multi-queue rebind
>+ * @multi-queue-userptr-rebind: multi-queue userptr rebind
>+ * @multi-queue-userptr-invalidate:
>+ * multi-queue userptr invalidate
>+ * @multi-queue-userptr-invalidate-race:
>+ * multi-queue userptr invalidate race
>+ * @multi-queue-imm: multi-queue imm
>+ * @multi-queue-userptr-imm: multi-queue userptr imm
>+ * @multi-queue-rebind-imm: multi-queue rebind imm
>+ * @multi-queue-userptr-rebind-imm:
>+ * multi-queue userptr rebind imm
>+ * @multi-queue-userptr-invalidate-imm:
>+ * multi-queue userptr invalidate imm
>+ * @multi-queue-userptr-invalidate-race-imm:
>+ * multi-queue userptr invalidate race imm
>+ * @multi-queue-prefetch: multi-queue prefetch
>+ * @multi-queue-userptr-prefetch: multi-queue userptr prefetch
>+ * @multi-queue-rebind-prefetch: multi-queue rebind prefetch
>+ * @multi-queue-userptr-rebind-prefetch: multi-queue userptr rebind prefetch
>+ * @multi-queue-userptr-invalidate-prefetch:
>+ * multi-queue userptr invalidate prefetch
>+ * @multi-queue-userptr-invalidate-race-prefetch:
>+ * multi-queue userptr invalidate race prefetch
>+ * @multi-queue-invalid-fault: multi-queue invalid fault
>+ * @multi-queue-invalid-userptr-fault: multi-queue invalid userptr fault
>+ */
>+
>
> static void
> test_exec(int fd, struct drm_xe_engine_class_instance *eci,
>@@ -188,7 +245,19 @@ test_exec(int fd, struct drm_xe_engine_class_instance *eci,
> memset(exec_sync, 0, sync_size);
>
> for (i = 0; i < n_exec_queues; i++) {
>- exec_queues[i] = xe_exec_queue_create(fd, vm, eci, 0);
>+ if (flags & MULTI_QUEUE) {
>+ struct drm_xe_ext_set_property multi_queue = {
>+ .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(&multi_queue);
>+
>+ multi_queue.value = i ? exec_queues[0] : DRM_XE_MULTI_GROUP_CREATE;
>+ exec_queues[i] = xe_exec_queue_create(fd, vm, eci, ext);
>+ } else
>+ exec_queues[i] = xe_exec_queue_create(fd, vm, eci, 0);
>+
> if (flags & BIND_EXEC_QUEUE)
> bind_exec_queues[i] =
> xe_bind_exec_queue_create(fd, vm, 0);
>@@ -398,6 +467,21 @@ test_exec(int fd, struct drm_xe_engine_class_instance *eci,
> close(map_fd);
> }
>
>+static void
>+test_exec_main(int fd, int n_exec_queues, int n_execs, unsigned int flags)
>+{
>+ struct drm_xe_engine_class_instance *hwe;
>+
>+ if (flags & MULTI_QUEUE) {
>+ igt_require(intel_graphics_ver(intel_get_drm_devid(fd)) >= IP_VER(35, 0));
>+ xe_for_each_multi_queue_engine(fd, hwe)
>+ test_exec(fd, hwe, n_exec_queues, n_execs, flags);
>+ } else {
>+ xe_for_each_engine(fd, hwe)
>+ test_exec(fd, hwe, n_exec_queues, n_execs, flags);
>+ }
>+}
>+
> int igt_main()
> {
> struct drm_xe_engine_class_instance *hwe;
>@@ -420,6 +504,15 @@ int igt_main()
> INVALIDATE },
> { "bindexecqueue-userptr-invalidate-race", BIND_EXEC_QUEUE | USERPTR |
> INVALIDATE | RACE },
>+ { "multi-queue", MULTI_QUEUE },
>+ { "multi-queue-userptr", MULTI_QUEUE | USERPTR },
>+ { "multi-queue-rebind", MULTI_QUEUE | REBIND },
>+ { "multi-queue-userptr-rebind", MULTI_QUEUE | USERPTR | REBIND },
>+ { "multi-queue-userptr-invalidate", MULTI_QUEUE | USERPTR |
>+ INVALIDATE },
>+ { "multi-queue-userptr-invalidate-race", MULTI_QUEUE | USERPTR |
>+ INVALIDATE | RACE },
>+
> { "basic-imm", IMMEDIATE },
> { "userptr-imm", IMMEDIATE | USERPTR },
> { "rebind-imm", IMMEDIATE | REBIND },
>@@ -436,6 +529,15 @@ int igt_main()
> USERPTR | INVALIDATE },
> { "bindexecqueue-userptr-invalidate-race-imm", IMMEDIATE |
> BIND_EXEC_QUEUE | USERPTR | INVALIDATE | RACE },
>+ { "multi-queue-imm", IMMEDIATE | MULTI_QUEUE },
>+ { "multi-queue-userptr-imm", IMMEDIATE | MULTI_QUEUE | USERPTR },
>+ { "multi-queue-rebind-imm", IMMEDIATE | MULTI_QUEUE | REBIND },
>+ { "multi-queue-userptr-rebind-imm", IMMEDIATE | MULTI_QUEUE |
>+ USERPTR | REBIND },
>+ { "multi-queue-userptr-invalidate-imm", IMMEDIATE | MULTI_QUEUE |
>+ USERPTR | INVALIDATE },
>+ { "multi-queue-userptr-invalidate-race-imm", IMMEDIATE |
>+ MULTI_QUEUE | USERPTR | INVALIDATE | RACE },
>
> { "basic-prefetch", PREFETCH },
> { "userptr-prefetch", PREFETCH | USERPTR },
>@@ -453,8 +555,20 @@ int igt_main()
> USERPTR | INVALIDATE },
> { "bindexecqueue-userptr-invalidate-race-prefetch", PREFETCH |
> BIND_EXEC_QUEUE | USERPTR | INVALIDATE | RACE },
>+ { "multi-queue-prefetch", PREFETCH | MULTI_QUEUE },
>+ { "multi-queue-userptr-prefetch", PREFETCH | MULTI_QUEUE | USERPTR },
>+ { "multi-queue-rebind-prefetch", PREFETCH | MULTI_QUEUE | REBIND },
>+ { "multi-queue-userptr-rebind-prefetch", PREFETCH | MULTI_QUEUE |
>+ USERPTR | REBIND },
>+ { "multi-queue-userptr-invalidate-prefetch", PREFETCH | MULTI_QUEUE |
>+ USERPTR | INVALIDATE },
>+ { "multi-queue-userptr-invalidate-race-prefetch", PREFETCH |
>+ MULTI_QUEUE | USERPTR | INVALIDATE | RACE },
> { "invalid-fault", INVALID_FAULT },
> { "invalid-userptr-fault", INVALID_FAULT | USERPTR },
>+ { "multi-queue-invalid-fault", MULTI_QUEUE | INVALID_FAULT },
>+ { "multi-queue-invalid-userptr-fault", MULTI_QUEUE | INVALID_FAULT | USERPTR },
>+
> { NULL },
> };
> int fd;
>@@ -478,26 +592,22 @@ int igt_main()
>
> for (const struct section *s = sections; s->name; s++) {
> igt_subtest_f("once-%s", s->name)
>- xe_for_each_engine(fd, hwe)
>- test_exec(fd, hwe, 1, 1, s->flags);
>+ test_exec_main(fd, 1, 1, s->flags);
>
> igt_subtest_f("twice-%s", s->name)
>- xe_for_each_engine(fd, hwe)
>- test_exec(fd, hwe, 1, 2, s->flags);
>+ test_exec_main(fd, 1, 2, s->flags);
>
> igt_subtest_f("many-%s", s->name)
>- xe_for_each_engine(fd, hwe)
>- test_exec(fd, hwe, 1,
>- s->flags & (REBIND | INVALIDATE) ?
>- 64 : 128,
>- s->flags);
>+ test_exec_main(fd, 1,
>+ s->flags & (REBIND | INVALIDATE) ?
>+ 64 : 128,
>+ s->flags);
>
> igt_subtest_f("many-execqueues-%s", s->name)
>- xe_for_each_engine(fd, hwe)
>- test_exec(fd, hwe, 16,
>- s->flags & (REBIND | INVALIDATE) ?
>- 64 : 128,
>- s->flags);
>+ test_exec_main(fd, 16,
>+ s->flags & (REBIND | INVALIDATE) ?
>+ 64 : 128,
>+ s->flags);
> }
>
> igt_subtest("invalid-va")
>--
>2.43.0
>
next prev parent reply other threads:[~2025-12-31 19:56 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 [this message]
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
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=aVV_yaxXWCfYkc4r@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.