diff options
| author | Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> | 2025-12-11 04:02:56 +0300 |
|---|---|---|
| committer | Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> | 2025-12-12 06:21:20 +0300 |
| commit | 464a0bc0235f8333f77131433bb389a24efaf287 (patch) | |
| tree | e61efc04c38804aede46d711536c92c4f7895186 | |
| parent | 71e7d7e81d6a08c2abb1bb1ff01107280db62abb (diff) | |
| download | linux-464a0bc0235f8333f77131433bb389a24efaf287.tar.xz | |
drm/xe/multi_queue: Add multi queue information to guc_info dump
Dump multi queue specific information in the guc exec queue
dump.
v2: Move multi queue related fields inside the multi_queue
sub-structure (Matt Brost)
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-27-niranjana.vishwanathapura@intel.com
| -rw-r--r-- | drivers/gpu/drm/xe/xe_guc_submit.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/xe/xe_guc_submit_types.h | 13 |
2 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c index 2f467cc1929f..d52b7b9bcedf 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit.c +++ b/drivers/gpu/drm/xe/xe_guc_submit.c @@ -3100,6 +3100,11 @@ xe_guc_exec_queue_snapshot_capture(struct xe_exec_queue *q) if (snapshot->parallel_execution) guc_exec_queue_wq_snapshot_capture(q, snapshot); + if (xe_exec_queue_is_multi_queue(q)) { + snapshot->multi_queue.valid = true; + snapshot->multi_queue.primary = xe_exec_queue_multi_queue_primary(q)->guc->id; + snapshot->multi_queue.pos = q->multi_queue.pos; + } spin_lock(&sched->base.job_list_lock); snapshot->pending_list_size = list_count_nodes(&sched->base.pending_list); snapshot->pending_list = kmalloc_array(snapshot->pending_list_size, @@ -3182,6 +3187,11 @@ xe_guc_exec_queue_snapshot_print(struct xe_guc_submit_exec_queue_snapshot *snaps if (snapshot->parallel_execution) guc_exec_queue_wq_snapshot_print(snapshot, p); + if (snapshot->multi_queue.valid) { + drm_printf(p, "\tMulti queue primary GuC ID: %d\n", snapshot->multi_queue.primary); + drm_printf(p, "\tMulti queue position: %d\n", snapshot->multi_queue.pos); + } + for (i = 0; snapshot->pending_list && i < snapshot->pending_list_size; i++) drm_printf(p, "\tJob: seqno=%d, fence=%d, finished=%d\n", diff --git a/drivers/gpu/drm/xe/xe_guc_submit_types.h b/drivers/gpu/drm/xe/xe_guc_submit_types.h index dc7456c34583..25e29e85502c 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit_types.h +++ b/drivers/gpu/drm/xe/xe_guc_submit_types.h @@ -135,6 +135,19 @@ struct xe_guc_submit_exec_queue_snapshot { u32 wq[WQ_SIZE / sizeof(u32)]; } parallel; + /** @multi_queue: snapshot of the multi queue information */ + struct { + /** + * @multi_queue.primary: GuC id of the primary exec queue + * of the multi queue group. + */ + u32 primary; + /** @multi_queue.pos: Position of the exec queue within the multi queue group */ + u8 pos; + /** @valid: The exec queue is part of a multi queue group */ + bool valid; + } multi_queue; + /** @pending_list_size: Size of the pending list snapshot array */ int pending_list_size; /** @pending_list: snapshot of the pending list info */ |
