drivers/gpu/drm/xe/xe_trace.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/xe/xe_trace.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/xe/xe_trace.h
Extension
.h
Size
14111 bytes
Lines
516
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#undef TRACE_SYSTEM
#define TRACE_SYSTEM xe

#if !defined(_XE_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
#define _XE_TRACE_H_

#include <linux/tracepoint.h>
#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"
#include "xe_sched_job.h"
#include "xe_tlb_inval_types.h"
#include "xe_vm.h"

#define __dev_name_xe(xe)	dev_name((xe)->drm.dev)
#define __dev_name_tile(tile)	__dev_name_xe(tile_to_xe((tile)))
#define __dev_name_gt(gt)	__dev_name_xe(gt_to_xe((gt)))
#define __dev_name_eq(q)	__dev_name_gt((q)->gt)

DECLARE_EVENT_CLASS(xe_tlb_inval_fence,
		    TP_PROTO(struct xe_device *xe, struct xe_tlb_inval_fence *fence),
		    TP_ARGS(xe, fence),

		    TP_STRUCT__entry(
			     __string(dev, __dev_name_xe(xe))
			     __field(struct xe_tlb_inval_fence *, fence)
			     __field(int, seqno)
			     ),

		    TP_fast_assign(
			   __assign_str(dev);
			   __entry->fence = fence;
			   __entry->seqno = fence->seqno;
			   ),

		    TP_printk("dev=%s, fence=%p, seqno=%d",
			      __get_str(dev), __entry->fence, __entry->seqno)
);

DEFINE_EVENT(xe_tlb_inval_fence, xe_tlb_inval_fence_send,
	     TP_PROTO(struct xe_device *xe, struct xe_tlb_inval_fence *fence),
	     TP_ARGS(xe, fence)
);

DEFINE_EVENT(xe_tlb_inval_fence, xe_tlb_inval_fence_recv,
	     TP_PROTO(struct xe_device *xe, struct xe_tlb_inval_fence *fence),
	     TP_ARGS(xe, fence)
);

DEFINE_EVENT(xe_tlb_inval_fence, xe_tlb_inval_fence_signal,
	     TP_PROTO(struct xe_device *xe, struct xe_tlb_inval_fence *fence),
	     TP_ARGS(xe, fence)
);

DEFINE_EVENT(xe_tlb_inval_fence, xe_tlb_inval_fence_timeout,
	     TP_PROTO(struct xe_device *xe, struct xe_tlb_inval_fence *fence),
	     TP_ARGS(xe, fence)
);

DECLARE_EVENT_CLASS(xe_exec_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(u16, guc_id)
			     __field(u32, guc_state)
			     __field(u32, flags)
			     ),

		    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;
			   ),

		    TP_printk("dev=%s, %d:0x%x, gt=%d, width=%d, guc_id=%d, guc_state=0x%x, flags=0x%x",

Annotation

Implementation Notes