brintos

brintos / linux-shallow public Read only

0
0
Text · 11.2 KiB · 8573d7a Raw
432 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright © 2022 Intel Corporation4 */5 6#undef TRACE_SYSTEM7#define TRACE_SYSTEM xe8 9#if !defined(_XE_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)10#define _XE_TRACE_H_11 12#include <linux/tracepoint.h>13#include <linux/types.h>14 15#include "xe_exec_queue_types.h"16#include "xe_gpu_scheduler_types.h"17#include "xe_gt_tlb_invalidation_types.h"18#include "xe_gt_types.h"19#include "xe_guc_exec_queue_types.h"20#include "xe_sched_job.h"21#include "xe_vm.h"22 23#define __dev_name_xe(xe)	dev_name((xe)->drm.dev)24#define __dev_name_gt(gt)	__dev_name_xe(gt_to_xe((gt)))25#define __dev_name_eq(q)	__dev_name_gt((q)->gt)26 27DECLARE_EVENT_CLASS(xe_gt_tlb_invalidation_fence,28		    TP_PROTO(struct xe_device *xe, struct xe_gt_tlb_invalidation_fence *fence),29		    TP_ARGS(xe, fence),30 31		    TP_STRUCT__entry(32			     __string(dev, __dev_name_xe(xe))33			     __field(struct xe_gt_tlb_invalidation_fence *, fence)34			     __field(int, seqno)35			     ),36 37		    TP_fast_assign(38			   __assign_str(dev);39			   __entry->fence = fence;40			   __entry->seqno = fence->seqno;41			   ),42 43		    TP_printk("dev=%s, fence=%p, seqno=%d",44			      __get_str(dev), __entry->fence, __entry->seqno)45);46 47DEFINE_EVENT(xe_gt_tlb_invalidation_fence, xe_gt_tlb_invalidation_fence_create,48	     TP_PROTO(struct xe_device *xe, struct xe_gt_tlb_invalidation_fence *fence),49	     TP_ARGS(xe, fence)50);51 52DEFINE_EVENT(xe_gt_tlb_invalidation_fence,53	     xe_gt_tlb_invalidation_fence_work_func,54	     TP_PROTO(struct xe_device *xe, struct xe_gt_tlb_invalidation_fence *fence),55	     TP_ARGS(xe, fence)56);57 58DEFINE_EVENT(xe_gt_tlb_invalidation_fence, xe_gt_tlb_invalidation_fence_cb,59	     TP_PROTO(struct xe_device *xe, struct xe_gt_tlb_invalidation_fence *fence),60	     TP_ARGS(xe, fence)61);62 63DEFINE_EVENT(xe_gt_tlb_invalidation_fence, xe_gt_tlb_invalidation_fence_send,64	     TP_PROTO(struct xe_device *xe, struct xe_gt_tlb_invalidation_fence *fence),65	     TP_ARGS(xe, fence)66);67 68DEFINE_EVENT(xe_gt_tlb_invalidation_fence, xe_gt_tlb_invalidation_fence_recv,69	     TP_PROTO(struct xe_device *xe, struct xe_gt_tlb_invalidation_fence *fence),70	     TP_ARGS(xe, fence)71);72 73DEFINE_EVENT(xe_gt_tlb_invalidation_fence, xe_gt_tlb_invalidation_fence_signal,74	     TP_PROTO(struct xe_device *xe, struct xe_gt_tlb_invalidation_fence *fence),75	     TP_ARGS(xe, fence)76);77 78DEFINE_EVENT(xe_gt_tlb_invalidation_fence, xe_gt_tlb_invalidation_fence_timeout,79	     TP_PROTO(struct xe_device *xe, struct xe_gt_tlb_invalidation_fence *fence),80	     TP_ARGS(xe, fence)81);82 83DECLARE_EVENT_CLASS(xe_exec_queue,84		    TP_PROTO(struct xe_exec_queue *q),85		    TP_ARGS(q),86 87		    TP_STRUCT__entry(88			     __string(dev, __dev_name_eq(q))89			     __field(enum xe_engine_class, class)90			     __field(u32, logical_mask)91			     __field(u8, gt_id)92			     __field(u16, width)93			     __field(u16, guc_id)94			     __field(u32, guc_state)95			     __field(u32, flags)96			     ),97 98		    TP_fast_assign(99			   __assign_str(dev);100			   __entry->class = q->class;101			   __entry->logical_mask = q->logical_mask;102			   __entry->gt_id = q->gt->info.id;103			   __entry->width = q->width;104			   __entry->guc_id = q->guc->id;105			   __entry->guc_state = atomic_read(&q->guc->state);106			   __entry->flags = q->flags;107			   ),108 109		    TP_printk("dev=%s, %d:0x%x, gt=%d, width=%d, guc_id=%d, guc_state=0x%x, flags=0x%x",110			      __get_str(dev), __entry->class, __entry->logical_mask,111			      __entry->gt_id, __entry->width, __entry->guc_id,112			      __entry->guc_state, __entry->flags)113);114 115DEFINE_EVENT(xe_exec_queue, xe_exec_queue_create,116	     TP_PROTO(struct xe_exec_queue *q),117	     TP_ARGS(q)118);119 120DEFINE_EVENT(xe_exec_queue, xe_exec_queue_supress_resume,121	     TP_PROTO(struct xe_exec_queue *q),122	     TP_ARGS(q)123);124 125DEFINE_EVENT(xe_exec_queue, xe_exec_queue_submit,126	     TP_PROTO(struct xe_exec_queue *q),127	     TP_ARGS(q)128);129 130DEFINE_EVENT(xe_exec_queue, xe_exec_queue_scheduling_enable,131	     TP_PROTO(struct xe_exec_queue *q),132	     TP_ARGS(q)133);134 135DEFINE_EVENT(xe_exec_queue, xe_exec_queue_scheduling_disable,136	     TP_PROTO(struct xe_exec_queue *q),137	     TP_ARGS(q)138);139 140DEFINE_EVENT(xe_exec_queue, xe_exec_queue_scheduling_done,141	     TP_PROTO(struct xe_exec_queue *q),142	     TP_ARGS(q)143);144 145DEFINE_EVENT(xe_exec_queue, xe_exec_queue_register,146	     TP_PROTO(struct xe_exec_queue *q),147	     TP_ARGS(q)148);149 150DEFINE_EVENT(xe_exec_queue, xe_exec_queue_deregister,151	     TP_PROTO(struct xe_exec_queue *q),152	     TP_ARGS(q)153);154 155DEFINE_EVENT(xe_exec_queue, xe_exec_queue_deregister_done,156	     TP_PROTO(struct xe_exec_queue *q),157	     TP_ARGS(q)158);159 160DEFINE_EVENT(xe_exec_queue, xe_exec_queue_close,161	     TP_PROTO(struct xe_exec_queue *q),162	     TP_ARGS(q)163);164 165DEFINE_EVENT(xe_exec_queue, xe_exec_queue_kill,166	     TP_PROTO(struct xe_exec_queue *q),167	     TP_ARGS(q)168);169 170DEFINE_EVENT(xe_exec_queue, xe_exec_queue_cleanup_entity,171	     TP_PROTO(struct xe_exec_queue *q),172	     TP_ARGS(q)173);174 175DEFINE_EVENT(xe_exec_queue, xe_exec_queue_destroy,176	     TP_PROTO(struct xe_exec_queue *q),177	     TP_ARGS(q)178);179 180DEFINE_EVENT(xe_exec_queue, xe_exec_queue_reset,181	     TP_PROTO(struct xe_exec_queue *q),182	     TP_ARGS(q)183);184 185DEFINE_EVENT(xe_exec_queue, xe_exec_queue_memory_cat_error,186	     TP_PROTO(struct xe_exec_queue *q),187	     TP_ARGS(q)188);189 190DEFINE_EVENT(xe_exec_queue, xe_exec_queue_stop,191	     TP_PROTO(struct xe_exec_queue *q),192	     TP_ARGS(q)193);194 195DEFINE_EVENT(xe_exec_queue, xe_exec_queue_resubmit,196	     TP_PROTO(struct xe_exec_queue *q),197	     TP_ARGS(q)198);199 200DEFINE_EVENT(xe_exec_queue, xe_exec_queue_lr_cleanup,201	     TP_PROTO(struct xe_exec_queue *q),202	     TP_ARGS(q)203);204 205DECLARE_EVENT_CLASS(xe_sched_job,206		    TP_PROTO(struct xe_sched_job *job),207		    TP_ARGS(job),208 209		    TP_STRUCT__entry(210			     __string(dev, __dev_name_eq(job->q))211			     __field(u32, seqno)212			     __field(u32, lrc_seqno)213			     __field(u16, guc_id)214			     __field(u32, guc_state)215			     __field(u32, flags)216			     __field(int, error)217			     __field(struct dma_fence *, fence)218			     __field(u64, batch_addr)219			     ),220 221		    TP_fast_assign(222			   __assign_str(dev);223			   __entry->seqno = xe_sched_job_seqno(job);224			   __entry->lrc_seqno = xe_sched_job_lrc_seqno(job);225			   __entry->guc_id = job->q->guc->id;226			   __entry->guc_state =227			   atomic_read(&job->q->guc->state);228			   __entry->flags = job->q->flags;229			   __entry->error = job->fence ? job->fence->error : 0;230			   __entry->fence = job->fence;231			   __entry->batch_addr = (u64)job->ptrs[0].batch_addr;232			   ),233 234		    TP_printk("dev=%s, fence=%p, seqno=%u, lrc_seqno=%u, guc_id=%d, batch_addr=0x%012llx, guc_state=0x%x, flags=0x%x, error=%d",235			      __get_str(dev), __entry->fence, __entry->seqno,236			      __entry->lrc_seqno, __entry->guc_id,237			      __entry->batch_addr, __entry->guc_state,238			      __entry->flags, __entry->error)239);240 241DEFINE_EVENT(xe_sched_job, xe_sched_job_create,242	     TP_PROTO(struct xe_sched_job *job),243	     TP_ARGS(job)244);245 246DEFINE_EVENT(xe_sched_job, xe_sched_job_exec,247	     TP_PROTO(struct xe_sched_job *job),248	     TP_ARGS(job)249);250 251DEFINE_EVENT(xe_sched_job, xe_sched_job_run,252	     TP_PROTO(struct xe_sched_job *job),253	     TP_ARGS(job)254);255 256DEFINE_EVENT(xe_sched_job, xe_sched_job_free,257	     TP_PROTO(struct xe_sched_job *job),258	     TP_ARGS(job)259);260 261DEFINE_EVENT(xe_sched_job, xe_sched_job_timedout,262	     TP_PROTO(struct xe_sched_job *job),263	     TP_ARGS(job)264);265 266DEFINE_EVENT(xe_sched_job, xe_sched_job_set_error,267	     TP_PROTO(struct xe_sched_job *job),268	     TP_ARGS(job)269);270 271DEFINE_EVENT(xe_sched_job, xe_sched_job_ban,272	     TP_PROTO(struct xe_sched_job *job),273	     TP_ARGS(job)274);275 276DECLARE_EVENT_CLASS(xe_sched_msg,277		    TP_PROTO(struct xe_sched_msg *msg),278		    TP_ARGS(msg),279 280		    TP_STRUCT__entry(281			     __string(dev, __dev_name_eq(((struct xe_exec_queue *)msg->private_data)))282			     __field(u32, opcode)283			     __field(u16, guc_id)284			     ),285 286		    TP_fast_assign(287			   __assign_str(dev);288			   __entry->opcode = msg->opcode;289			   __entry->guc_id =290			   ((struct xe_exec_queue *)msg->private_data)->guc->id;291			   ),292 293		    TP_printk("dev=%s, guc_id=%d, opcode=%u", __get_str(dev), __entry->guc_id,294			      __entry->opcode)295);296 297DEFINE_EVENT(xe_sched_msg, xe_sched_msg_add,298	     TP_PROTO(struct xe_sched_msg *msg),299	     TP_ARGS(msg)300);301 302DEFINE_EVENT(xe_sched_msg, xe_sched_msg_recv,303	     TP_PROTO(struct xe_sched_msg *msg),304	     TP_ARGS(msg)305);306 307DECLARE_EVENT_CLASS(xe_hw_fence,308		    TP_PROTO(struct xe_hw_fence *fence),309		    TP_ARGS(fence),310 311		    TP_STRUCT__entry(312			     __string(dev, __dev_name_xe(fence->xe))313			     __field(u64, ctx)314			     __field(u32, seqno)315			     __field(struct xe_hw_fence *, fence)316			     ),317 318		    TP_fast_assign(319			   __assign_str(dev);320			   __entry->ctx = fence->dma.context;321			   __entry->seqno = fence->dma.seqno;322			   __entry->fence = fence;323			   ),324 325		    TP_printk("dev=%s, ctx=0x%016llx, fence=%p, seqno=%u",326			      __get_str(dev), __entry->ctx, __entry->fence, __entry->seqno)327);328 329DEFINE_EVENT(xe_hw_fence, xe_hw_fence_create,330	     TP_PROTO(struct xe_hw_fence *fence),331	     TP_ARGS(fence)332);333 334DEFINE_EVENT(xe_hw_fence, xe_hw_fence_signal,335	     TP_PROTO(struct xe_hw_fence *fence),336	     TP_ARGS(fence)337);338 339DEFINE_EVENT(xe_hw_fence, xe_hw_fence_try_signal,340	     TP_PROTO(struct xe_hw_fence *fence),341	     TP_ARGS(fence)342);343 344TRACE_EVENT(xe_reg_rw,345	TP_PROTO(struct xe_gt *gt, bool write, u32 reg, u64 val, int len),346 347	TP_ARGS(gt, write, reg, val, len),348 349	TP_STRUCT__entry(350		__string(dev, __dev_name_gt(gt))351		__field(u64, val)352		__field(u32, reg)353		__field(u16, write)354		__field(u16, len)355		),356 357	TP_fast_assign(358		__assign_str(dev);359		__entry->val = val;360		__entry->reg = reg;361		__entry->write = write;362		__entry->len = len;363		),364 365	TP_printk("dev=%s, %s reg=0x%x, len=%d, val=(0x%x, 0x%x)",366		  __get_str(dev), __entry->write ? "write" : "read",367		  __entry->reg, __entry->len,368		  (u32)(__entry->val & 0xffffffff),369		  (u32)(__entry->val >> 32))370);371 372DECLARE_EVENT_CLASS(xe_pm_runtime,373		    TP_PROTO(struct xe_device *xe, void *caller),374		    TP_ARGS(xe, caller),375 376		    TP_STRUCT__entry(377			     __string(dev, __dev_name_xe(xe))378			     __field(void *, caller)379			     ),380 381		    TP_fast_assign(382			   __assign_str(dev);383			   __entry->caller = caller;384			   ),385 386		    TP_printk("dev=%s caller_function=%pS", __get_str(dev), __entry->caller)387);388 389DEFINE_EVENT(xe_pm_runtime, xe_pm_runtime_get,390	     TP_PROTO(struct xe_device *xe, void *caller),391	     TP_ARGS(xe, caller)392);393 394DEFINE_EVENT(xe_pm_runtime, xe_pm_runtime_put,395	     TP_PROTO(struct xe_device *xe, void *caller),396	     TP_ARGS(xe, caller)397);398 399DEFINE_EVENT(xe_pm_runtime, xe_pm_resume,400	     TP_PROTO(struct xe_device *xe, void *caller),401	     TP_ARGS(xe, caller)402);403 404DEFINE_EVENT(xe_pm_runtime, xe_pm_suspend,405	     TP_PROTO(struct xe_device *xe, void *caller),406	     TP_ARGS(xe, caller)407);408 409DEFINE_EVENT(xe_pm_runtime, xe_pm_runtime_resume,410	     TP_PROTO(struct xe_device *xe, void *caller),411	     TP_ARGS(xe, caller)412);413 414DEFINE_EVENT(xe_pm_runtime, xe_pm_runtime_suspend,415	     TP_PROTO(struct xe_device *xe, void *caller),416	     TP_ARGS(xe, caller)417);418 419DEFINE_EVENT(xe_pm_runtime, xe_pm_runtime_get_ioctl,420	     TP_PROTO(struct xe_device *xe, void *caller),421	     TP_ARGS(xe, caller)422);423 424#endif425 426/* This part must be outside protection */427#undef TRACE_INCLUDE_PATH428#undef TRACE_INCLUDE_FILE429#define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/xe430#define TRACE_INCLUDE_FILE xe_trace431#include <trace/define_trace.h>432