From: nishit.sharma@intel.com
To: igt-dev@lists.freedesktop.org, kamil.konieczny@intel.com
Subject: [PATCH v2 1/9] tests/intel/xe_exec_reset: Add concurrent GT reset submit stress test
Date: Tue, 18 Aug 2026 04:08:37 +0000 [thread overview]
Message-ID: <20260818040845.548727-2-nishit.sharma@intel.com> (raw)
In-Reply-To: <20260818040845.548727-1-nishit.sharma@intel.com>
From: Nishit Sharma <nishit.sharma@intel.com>
Add a dedicated stress subtest for concurrent GT reset and job submission.
The new subtest exercises reset/submit overlap by running:
1. GT resets on a selected GT
2. Concurrent job submission threads creating queues and executing batches
Signed-off-by: Nishit Sharma <nishit.sharma@intel.com>
---
tests/intel/xe_exec_reset.c | 40 ++++++++++++++++++++++++++++++-------
1 file changed, 33 insertions(+), 7 deletions(-)
diff --git a/tests/intel/xe_exec_reset.c b/tests/intel/xe_exec_reset.c
index 044d8f007..134378974 100644
--- a/tests/intel/xe_exec_reset.c
+++ b/tests/intel/xe_exec_reset.c
@@ -650,6 +650,9 @@ struct gt_thread_data {
int *go;
int *exit;
int *num_reset;
+ int *num_submit;
+ int *num_submit_fail;
+ unsigned int flags;
bool do_reset;
};
@@ -671,7 +674,7 @@ static void submit_jobs(struct gt_thread_data *t)
uint32_t bo;
uint32_t *data;
- bo = xe_bo_create(fd, vm, bo_size, vram_if_possible(fd, 0),
+ bo = xe_bo_create(fd, vm, bo_size, vram_if_possible(fd, t->gt),
DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
data = xe_bo_map(fd, bo, bo_size);
data[0] = MI_BATCH_BUFFER_END;
@@ -682,7 +685,7 @@ static void submit_jobs(struct gt_thread_data *t)
struct drm_xe_engine_class_instance instance = {
.engine_class = DRM_XE_ENGINE_CLASS_COPY,
.engine_instance = 0,
- .gt_id = 0,
+ .gt_id = t->gt,
};
struct drm_xe_exec exec = {
.address = addr,
@@ -692,11 +695,14 @@ static void submit_jobs(struct gt_thread_data *t)
/* GuC IDs can get exhausted */
ret = __xe_exec_queue_create(fd, vm, 1, 1, &instance, 0, &exec.exec_queue_id);
- if (ret)
+ if (ret) {
+ (*t->num_submit_fail)++;
continue;
+ }
xe_exec(fd, &exec);
xe_exec_queue_destroy(fd, exec.exec_queue_id);
+ (*t->num_submit)++;
}
munmap(data, bo_size);
@@ -726,14 +732,19 @@ static void *gt_reset_thread(void *data)
* Description: Stress GT reset
* Test category: stress test
*
+ * SUBTEST: gt-stress-reset-concurrent-submit
+ * Description: Stress concurrent GT resets and job submissions
+ * Test category: stress test
+ *
*/
static void
-gt_reset(int fd, int n_threads, int n_sec)
+gt_reset(int fd, int gt, int n_threads, int n_sec, unsigned int flags)
{
struct gt_thread_data *threads;
pthread_mutex_t mutex;
pthread_cond_t cond;
int go = 0, exit = 0, num_reset = 0, i;
+ int num_submit = 0, num_submit_fail = 0;
threads = calloc(n_threads, sizeof(struct gt_thread_data));
igt_assert(threads);
@@ -745,10 +756,13 @@ gt_reset(int fd, int n_threads, int n_sec)
threads[i].mutex = &mutex;
threads[i].cond = &cond;
threads[i].fd = fd;
- threads[i].gt = 0;
+ threads[i].gt = gt;
+ threads[i].flags = flags;
threads[i].go = &go;
threads[i].exit = &exit;
threads[i].num_reset = &num_reset;
+ threads[i].num_submit = &num_submit;
+ threads[i].num_submit_fail = &num_submit_fail;
threads[i].do_reset = (i == 0);
pthread_create(&threads[i].thread, 0, gt_reset_thread,
@@ -766,8 +780,11 @@ gt_reset(int fd, int n_threads, int n_sec)
for (i = 0; i < n_threads; i++)
pthread_join(threads[i].thread, NULL);
- igt_info("number of resets %d\n", num_reset);
+ igt_info("number of resets %d, submissions %d, submit fails %d\n",
+ num_reset, num_submit, num_submit_fail);
+ igt_assert_neq(num_reset, 0);
+ igt_assert_neq(num_submit, 0);
free(threads);
}
@@ -934,6 +951,10 @@ int igt_main()
{ "parallel", PARALLEL },
{ NULL },
};
+ const struct section ssections[] = {
+ { "reset-concurrent-submit", 0 },
+ { NULL },
+ };
int gt;
int class;
int fd;
@@ -1126,7 +1147,12 @@ int igt_main()
}
igt_subtest("gt-reset-stress")
- gt_reset(fd, 4, 1);
+ gt_reset(fd, 0, 4, 1, 0);
+
+ for (const struct section *s = ssections; s->name; s++) {
+ igt_subtest_f("gt-stress-%s", s->name)
+ gt_reset(fd, 0, 8, 2, 0);
+ }
igt_subtest("gt-mocs-reset")
xe_for_each_gt(fd, gt)
--
2.43.0
next prev parent reply other threads:[~2026-08-18 4:13 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-18 4:08 [PATCH v2 0/9] extend GT reset stress coverage nishit.sharma
2026-08-18 4:08 ` nishit.sharma [this message]
2026-08-18 4:08 ` [PATCH v2 2/9] tests/intel/xe_exec_reset: add sync concurrent reset submit subtest nishit.sharma
2026-08-18 4:08 ` [PATCH v2 3/9] tests/intel/xe_exec_reset: add gt-stress-reset-memory-pressure subtest nishit.sharma
2026-08-18 4:08 ` [PATCH v2 4/9] tests/intel/xe_exec_reset: add gt-stress-reset-bo-invalidation subtest nishit.sharma
2026-08-18 4:08 ` [PATCH v2 5/9] tests/intel/xe_exec_reset: add gt-stress-reset-rapid-cycle subtest nishit.sharma
2026-08-18 4:08 ` [PATCH v2 6/9] tests/intel/xe_exec_reset: add gt-stress-reset-destroy-vm-context subtest nishit.sharma
2026-08-18 4:08 ` [PATCH v2 7/9] tests/intel/xe_exec_reset: add gt-stress-reset-mixed-engine-usage subtest nishit.sharma
2026-08-18 4:08 ` [PATCH v2 8/9] tests/intel/xe_exec_reset: add gt-stress-reset-pm-transition subtest nishit.sharma
2026-08-18 4:08 ` [PATCH v2 9/9] tests/intel/xe_exec_reset: add gt-stress-reset-engine-hang subtest nishit.sharma
2026-08-18 4:50 ` ✓ Xe.CI.BAT: success for extend GT reset stress coverage (rev2) Patchwork
2026-08-18 5:04 ` ✓ i915.CI.BAT: " Patchwork
2026-08-18 5:56 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-08-18 16:04 ` ✗ 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=20260818040845.548727-2-nishit.sharma@intel.com \
--to=nishit.sharma@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=kamil.konieczny@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox