Commit 464a0bc0 authored by Niranjana Vishwanathapura's avatar Niranjana Vishwanathapura
Browse files

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: default avatarNiranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: default avatarMatthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-27-niranjana.vishwanathapura@intel.com
parent 71e7d7e8
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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",
+13 −0
Original line number Diff line number Diff line
@@ -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 */