1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #if !defined(_GPU_SCHED_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 3 #define _GPU_SCHED_TRACE_H_ 4 5 #include <linux/stringify.h> 6 #include <linux/types.h> 7 #include <linux/tracepoint.h> 8 9 #include <drm/drmP.h> 10 11 #undef TRACE_SYSTEM 12 #define TRACE_SYSTEM gpu_sched 13 #define TRACE_INCLUDE_FILE gpu_sched_trace 14 15 TRACE_EVENT(amd_sched_job, 16 TP_PROTO(struct amd_sched_job *sched_job), 17 TP_ARGS(sched_job), 18 TP_STRUCT__entry( 19 __field(struct amd_sched_entity *, entity) 20 __field(struct dma_fence *, fence) 21 __field(const char *, name) 22 __field(uint64_t, id) 23 __field(u32, job_count) 24 __field(int, hw_job_count) 25 ), 26 27 TP_fast_assign( 28 __entry->entity = sched_job->s_entity; 29 __entry->id = sched_job->id; 30 __entry->fence = &sched_job->s_fence->finished; 31 __entry->name = sched_job->sched->name; 32 __entry->job_count = kfifo_len( 33 &sched_job->s_entity->job_queue) / sizeof(sched_job); 34 __entry->hw_job_count = atomic_read( 35 &sched_job->sched->hw_rq_count); 36 ), 37 TP_printk("entity=%p, id=%llu, fence=%p, ring=%s, job count:%u, hw job count:%d", 38 __entry->entity, __entry->id, 39 __entry->fence, __entry->name, 40 __entry->job_count, __entry->hw_job_count) 41 ); 42 43 TRACE_EVENT(amd_sched_process_job, 44 TP_PROTO(struct amd_sched_fence *fence), 45 TP_ARGS(fence), 46 TP_STRUCT__entry( 47 __field(struct dma_fence *, fence) 48 ), 49 50 TP_fast_assign( 51 __entry->fence = &fence->finished; 52 ), 53 TP_printk("fence=%p signaled", __entry->fence) 54 ); 55 56 #endif 57 58 /* This part must be outside protection */ 59 #undef TRACE_INCLUDE_PATH 60 #define TRACE_INCLUDE_PATH . 61 #include <trace/define_trace.h> 62