drivers/gpu/drm/xe/xe_trace_bo.h

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

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/xe/xe_trace_bo.h
Extension
.h
Size
6305 bytes
Lines
264
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_BO_H_) || defined(TRACE_HEADER_MULTI_READ)
#define _XE_TRACE_BO_H_

#include <linux/tracepoint.h>
#include <linux/types.h>

#include "xe_bo.h"
#include "xe_bo_types.h"
#include "xe_vm.h"

#define __dev_name_bo(bo)	dev_name(xe_bo_device(bo)->drm.dev)
#define __dev_name_vm(vm)	dev_name((vm)->xe->drm.dev)
#define __dev_name_vma(vma)	__dev_name_vm(xe_vma_vm(vma))

DECLARE_EVENT_CLASS(xe_bo,
		    TP_PROTO(struct xe_bo *bo),
		    TP_ARGS(bo),

		    TP_STRUCT__entry(
			     __string(dev, __dev_name_bo(bo))
			     __field(size_t, size)
			     __field(u32, flags)
			     __field(struct xe_vm *, vm)
			     ),

		    TP_fast_assign(
			   __assign_str(dev);
			   __entry->size = xe_bo_size(bo);
			   __entry->flags = bo->flags;
			   __entry->vm = bo->vm;
			   ),

		    TP_printk("dev=%s, size=%zu, flags=0x%02x, vm=%p",
			      __get_str(dev), __entry->size,
			      __entry->flags, __entry->vm)
);

DEFINE_EVENT(xe_bo, xe_bo_cpu_fault,
	     TP_PROTO(struct xe_bo *bo),
	     TP_ARGS(bo)
);

DEFINE_EVENT(xe_bo, xe_bo_validate,
	     TP_PROTO(struct xe_bo *bo),
	     TP_ARGS(bo)
);

DEFINE_EVENT(xe_bo, xe_bo_create,
	     TP_PROTO(struct xe_bo *bo),
	     TP_ARGS(bo)
);

TRACE_EVENT(xe_bo_move,
	    TP_PROTO(struct xe_bo *bo, uint32_t new_placement, uint32_t old_placement,
		     bool move_lacks_source),
	    TP_ARGS(bo, new_placement, old_placement, move_lacks_source),
	    TP_STRUCT__entry(
		     __field(struct xe_bo *, bo)
		     __field(size_t, size)
		     __string(new_placement_name, xe_mem_type_to_name[new_placement])
		     __string(old_placement_name, xe_mem_type_to_name[old_placement])
		     __string(device_id, __dev_name_bo(bo))
		     __field(bool, move_lacks_source)
			),

	    TP_fast_assign(
		   __entry->bo      = bo;
		   __entry->size = xe_bo_size(bo);
		   __assign_str(new_placement_name);
		   __assign_str(old_placement_name);
		   __assign_str(device_id);
		   __entry->move_lacks_source = move_lacks_source;
		   ),
	    TP_printk("move_lacks_source:%s, migrate object %p [size %zu] from %s to %s device_id:%s",
		      __entry->move_lacks_source ? "yes" : "no", __entry->bo, __entry->size,
		      __get_str(old_placement_name),
		      __get_str(new_placement_name), __get_str(device_id))
);

DECLARE_EVENT_CLASS(xe_vma,
		    TP_PROTO(struct xe_vma *vma),
		    TP_ARGS(vma),

		    TP_STRUCT__entry(
			     __string(dev, __dev_name_vma(vma))
			     __field(struct xe_vma *, vma)
			     __field(struct xe_vm *, vm)

Annotation

Implementation Notes