14241db42SJordan Crouse /* SPDX-License-Identifier: GPL-2.0 */ 24241db42SJordan Crouse #if !defined(_MSM_GPU_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) 34241db42SJordan Crouse #define _MSM_GPU_TRACE_H_ 44241db42SJordan Crouse 54241db42SJordan Crouse #include <linux/tracepoint.h> 64241db42SJordan Crouse 74241db42SJordan Crouse #undef TRACE_SYSTEM 8d934a712SRob Clark #define TRACE_SYSTEM drm_msm_gpu 94241db42SJordan Crouse #define TRACE_INCLUDE_FILE msm_gpu_trace 104241db42SJordan Crouse 114241db42SJordan Crouse TRACE_EVENT(msm_gpu_submit, 124241db42SJordan Crouse TP_PROTO(pid_t pid, u32 ringid, u32 id, u32 nr_bos, u32 nr_cmds), 134241db42SJordan Crouse TP_ARGS(pid, ringid, id, nr_bos, nr_cmds), 144241db42SJordan Crouse TP_STRUCT__entry( 154241db42SJordan Crouse __field(pid_t, pid) 164241db42SJordan Crouse __field(u32, id) 174241db42SJordan Crouse __field(u32, ringid) 184241db42SJordan Crouse __field(u32, nr_cmds) 194241db42SJordan Crouse __field(u32, nr_bos) 204241db42SJordan Crouse ), 214241db42SJordan Crouse TP_fast_assign( 224241db42SJordan Crouse __entry->pid = pid; 234241db42SJordan Crouse __entry->id = id; 244241db42SJordan Crouse __entry->ringid = ringid; 254241db42SJordan Crouse __entry->nr_bos = nr_bos; 264241db42SJordan Crouse __entry->nr_cmds = nr_cmds 274241db42SJordan Crouse ), 284241db42SJordan Crouse TP_printk("id=%d pid=%d ring=%d bos=%d cmds=%d", 294241db42SJordan Crouse __entry->id, __entry->pid, __entry->ringid, 304241db42SJordan Crouse __entry->nr_bos, __entry->nr_cmds) 314241db42SJordan Crouse ); 324241db42SJordan Crouse 334241db42SJordan Crouse TRACE_EVENT(msm_gpu_submit_flush, 344241db42SJordan Crouse TP_PROTO(struct msm_gem_submit *submit, u64 ticks), 354241db42SJordan Crouse TP_ARGS(submit, ticks), 364241db42SJordan Crouse TP_STRUCT__entry( 374241db42SJordan Crouse __field(pid_t, pid) 384241db42SJordan Crouse __field(u32, id) 394241db42SJordan Crouse __field(u32, ringid) 404241db42SJordan Crouse __field(u32, seqno) 414241db42SJordan Crouse __field(u64, ticks) 424241db42SJordan Crouse ), 434241db42SJordan Crouse TP_fast_assign( 444241db42SJordan Crouse __entry->pid = pid_nr(submit->pid); 454241db42SJordan Crouse __entry->id = submit->ident; 464241db42SJordan Crouse __entry->ringid = submit->ring->id; 474241db42SJordan Crouse __entry->seqno = submit->seqno; 484241db42SJordan Crouse __entry->ticks = ticks; 494241db42SJordan Crouse ), 504241db42SJordan Crouse TP_printk("id=%d pid=%d ring=%d:%d ticks=%lld", 514241db42SJordan Crouse __entry->id, __entry->pid, __entry->ringid, __entry->seqno, 524241db42SJordan Crouse __entry->ticks) 534241db42SJordan Crouse ); 544241db42SJordan Crouse 554241db42SJordan Crouse 564241db42SJordan Crouse TRACE_EVENT(msm_gpu_submit_retired, 574241db42SJordan Crouse TP_PROTO(struct msm_gem_submit *submit, u64 elapsed, u64 clock, 584241db42SJordan Crouse u64 start, u64 end), 594241db42SJordan Crouse TP_ARGS(submit, elapsed, clock, start, end), 604241db42SJordan Crouse TP_STRUCT__entry( 614241db42SJordan Crouse __field(pid_t, pid) 624241db42SJordan Crouse __field(u32, id) 634241db42SJordan Crouse __field(u32, ringid) 644241db42SJordan Crouse __field(u32, seqno) 654241db42SJordan Crouse __field(u64, elapsed) 664241db42SJordan Crouse __field(u64, clock) 674241db42SJordan Crouse __field(u64, start_ticks) 684241db42SJordan Crouse __field(u64, end_ticks) 694241db42SJordan Crouse ), 704241db42SJordan Crouse TP_fast_assign( 714241db42SJordan Crouse __entry->pid = pid_nr(submit->pid); 724241db42SJordan Crouse __entry->id = submit->ident; 734241db42SJordan Crouse __entry->ringid = submit->ring->id; 744241db42SJordan Crouse __entry->seqno = submit->seqno; 754241db42SJordan Crouse __entry->elapsed = elapsed; 764241db42SJordan Crouse __entry->clock = clock; 774241db42SJordan Crouse __entry->start_ticks = start; 784241db42SJordan Crouse __entry->end_ticks = end; 794241db42SJordan Crouse ), 804241db42SJordan Crouse TP_printk("id=%d pid=%d ring=%d:%d elapsed=%lld ns mhz=%lld start=%lld end=%lld", 814241db42SJordan Crouse __entry->id, __entry->pid, __entry->ringid, __entry->seqno, 824241db42SJordan Crouse __entry->elapsed, __entry->clock, 834241db42SJordan Crouse __entry->start_ticks, __entry->end_ticks) 844241db42SJordan Crouse ); 854241db42SJordan Crouse 8674c0a69cSRob Clark 8774c0a69cSRob Clark TRACE_EVENT(msm_gpu_freq_change, 8874c0a69cSRob Clark TP_PROTO(u32 freq), 8974c0a69cSRob Clark TP_ARGS(freq), 9074c0a69cSRob Clark TP_STRUCT__entry( 9174c0a69cSRob Clark __field(u32, freq) 9274c0a69cSRob Clark ), 9374c0a69cSRob Clark TP_fast_assign( 9474c0a69cSRob Clark /* trace freq in MHz to match intel_gpu_freq_change, to make life easier 9574c0a69cSRob Clark * for userspace 9674c0a69cSRob Clark */ 9774c0a69cSRob Clark __entry->freq = DIV_ROUND_UP(freq, 1000000); 9874c0a69cSRob Clark ), 9974c0a69cSRob Clark TP_printk("new_freq=%u", __entry->freq) 10074c0a69cSRob Clark ); 10174c0a69cSRob Clark 10274c0a69cSRob Clark 10374c0a69cSRob Clark TRACE_EVENT(msm_gmu_freq_change, 10474c0a69cSRob Clark TP_PROTO(u32 freq, u32 perf_index), 10574c0a69cSRob Clark TP_ARGS(freq, perf_index), 10674c0a69cSRob Clark TP_STRUCT__entry( 10774c0a69cSRob Clark __field(u32, freq) 10874c0a69cSRob Clark __field(u32, perf_index) 10974c0a69cSRob Clark ), 11074c0a69cSRob Clark TP_fast_assign( 11174c0a69cSRob Clark __entry->freq = freq; 11274c0a69cSRob Clark __entry->perf_index = perf_index; 11374c0a69cSRob Clark ), 11474c0a69cSRob Clark TP_printk("freq=%u, perf_index=%u", __entry->freq, __entry->perf_index) 11574c0a69cSRob Clark ); 11674c0a69cSRob Clark 117fdf38426SRob Clark 118dd2f0d78SRob Clark TRACE_EVENT(msm_gem_shrink, 119*025d2723SRob Clark TP_PROTO(u32 nr_to_scan, u32 purged, u32 evicted, 120*025d2723SRob Clark u32 active_purged, u32 active_evicted), 121*025d2723SRob Clark TP_ARGS(nr_to_scan, purged, evicted, active_purged, active_evicted), 122fdf38426SRob Clark TP_STRUCT__entry( 123dd2f0d78SRob Clark __field(u32, nr_to_scan) 124dd2f0d78SRob Clark __field(u32, purged) 125dd2f0d78SRob Clark __field(u32, evicted) 126*025d2723SRob Clark __field(u32, active_purged) 127*025d2723SRob Clark __field(u32, active_evicted) 128fdf38426SRob Clark ), 129fdf38426SRob Clark TP_fast_assign( 130dd2f0d78SRob Clark __entry->nr_to_scan = nr_to_scan; 131dd2f0d78SRob Clark __entry->purged = purged; 132dd2f0d78SRob Clark __entry->evicted = evicted; 133*025d2723SRob Clark __entry->active_purged = active_purged; 134*025d2723SRob Clark __entry->active_evicted = active_evicted; 135fdf38426SRob Clark ), 136*025d2723SRob Clark TP_printk("nr_to_scan=%u pg, purged=%u pg, evicted=%u pg, active_purged=%u pg, active_evicted=%u pg", 137*025d2723SRob Clark __entry->nr_to_scan, __entry->purged, __entry->evicted, 138*025d2723SRob Clark __entry->active_purged, __entry->active_evicted) 13963f17ef8SRob Clark ); 14063f17ef8SRob Clark 14163f17ef8SRob Clark 142fdf38426SRob Clark TRACE_EVENT(msm_gem_purge_vmaps, 143fdf38426SRob Clark TP_PROTO(u32 unmapped), 144fdf38426SRob Clark TP_ARGS(unmapped), 145fdf38426SRob Clark TP_STRUCT__entry( 146fdf38426SRob Clark __field(u32, unmapped) 147fdf38426SRob Clark ), 148fdf38426SRob Clark TP_fast_assign( 149fdf38426SRob Clark __entry->unmapped = unmapped; 150fdf38426SRob Clark ), 151fdf38426SRob Clark TP_printk("Purging %u vmaps", __entry->unmapped) 152fdf38426SRob Clark ); 153fdf38426SRob Clark 154ec1cb6e4SRob Clark 155ec1cb6e4SRob Clark TRACE_EVENT(msm_gpu_suspend, 156ec1cb6e4SRob Clark TP_PROTO(int dummy), 157ec1cb6e4SRob Clark TP_ARGS(dummy), 158ec1cb6e4SRob Clark TP_STRUCT__entry( 159ec1cb6e4SRob Clark __field(u32, dummy) 160ec1cb6e4SRob Clark ), 161ec1cb6e4SRob Clark TP_fast_assign( 162ec1cb6e4SRob Clark __entry->dummy = dummy; 163ec1cb6e4SRob Clark ), 164ec1cb6e4SRob Clark TP_printk("%u", __entry->dummy) 165ec1cb6e4SRob Clark ); 166ec1cb6e4SRob Clark 167ec1cb6e4SRob Clark 168ec1cb6e4SRob Clark TRACE_EVENT(msm_gpu_resume, 169ec1cb6e4SRob Clark TP_PROTO(int dummy), 170ec1cb6e4SRob Clark TP_ARGS(dummy), 171ec1cb6e4SRob Clark TP_STRUCT__entry( 172ec1cb6e4SRob Clark __field(u32, dummy) 173ec1cb6e4SRob Clark ), 174ec1cb6e4SRob Clark TP_fast_assign( 175ec1cb6e4SRob Clark __entry->dummy = dummy; 176ec1cb6e4SRob Clark ), 177ec1cb6e4SRob Clark TP_printk("%u", __entry->dummy) 178ec1cb6e4SRob Clark ); 179ec1cb6e4SRob Clark 1804241db42SJordan Crouse #endif 1814241db42SJordan Crouse 1824241db42SJordan Crouse #undef TRACE_INCLUDE_PATH 1834241db42SJordan Crouse #define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/msm 1844241db42SJordan Crouse #include <trace/define_trace.h> 185