Commit 91abe57c authored by Niranjana Vishwanathapura's avatar Niranjana Vishwanathapura
Browse files

drm/xe/multi_queue: Tracepoint support

parent 8b81c768
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -2024,6 +2024,9 @@ static int guc_exec_queue_init(struct xe_exec_queue *q)
		mutex_unlock(&group->list_lock);
	}

	if (xe_exec_queue_is_multi_queue(q))
		trace_xe_exec_queue_create_multi_queue(q);
	else
		trace_xe_exec_queue_create(q);

	return 0;
+41 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@
#include <linux/types.h>

#include "xe_exec_queue_types.h"
#include "xe_exec_queue.h"
#include "xe_gpu_scheduler_types.h"
#include "xe_gt_types.h"
#include "xe_guc_exec_queue_types.h"
@@ -97,11 +98,51 @@ DECLARE_EVENT_CLASS(xe_exec_queue,
			      __entry->guc_state, __entry->flags)
);

DECLARE_EVENT_CLASS(xe_exec_queue_multi_queue,
		    TP_PROTO(struct xe_exec_queue *q),
		    TP_ARGS(q),

		    TP_STRUCT__entry(
			     __string(dev, __dev_name_eq(q))
			     __field(enum xe_engine_class, class)
			     __field(u32, logical_mask)
			     __field(u8, gt_id)
			     __field(u16, width)
			     __field(u32, guc_id)
			     __field(u32, guc_state)
			     __field(u32, flags)
			     __field(u32, primary)
			     ),

		    TP_fast_assign(
			   __assign_str(dev);
			   __entry->class = q->class;
			   __entry->logical_mask = q->logical_mask;
			   __entry->gt_id = q->gt->info.id;
			   __entry->width = q->width;
			   __entry->guc_id = q->guc->id;
			   __entry->guc_state = atomic_read(&q->guc->state);
			   __entry->flags = q->flags;
			   __entry->primary = xe_exec_queue_multi_queue_primary(q)->guc->id;
			   ),

		    TP_printk("dev=%s, %d:0x%x, gt=%d, width=%d guc_id=%d, guc_state=0x%x, flags=0x%x, primary=%d",
			      __get_str(dev), __entry->class, __entry->logical_mask,
			      __entry->gt_id, __entry->width, __entry->guc_id,
			      __entry->guc_state, __entry->flags,
			      __entry->primary)
);

DEFINE_EVENT(xe_exec_queue, xe_exec_queue_create,
	     TP_PROTO(struct xe_exec_queue *q),
	     TP_ARGS(q)
);

DEFINE_EVENT(xe_exec_queue_multi_queue, xe_exec_queue_create_multi_queue,
	     TP_PROTO(struct xe_exec_queue *q),
	     TP_ARGS(q)
);

DEFINE_EVENT(xe_exec_queue, xe_exec_queue_supress_resume,
	     TP_PROTO(struct xe_exec_queue *q),
	     TP_ARGS(q)