162306a36Sopenharmony_ci/* SPDX-License-Identifier: MIT */ 262306a36Sopenharmony_ci#if !defined(_RADEON_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 362306a36Sopenharmony_ci#define _RADEON_TRACE_H_ 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/stringify.h> 662306a36Sopenharmony_ci#include <linux/tracepoint.h> 762306a36Sopenharmony_ci#include <linux/types.h> 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <drm/drm_file.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#undef TRACE_SYSTEM 1262306a36Sopenharmony_ci#define TRACE_SYSTEM radeon 1362306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE radeon_trace 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciTRACE_EVENT(radeon_bo_create, 1662306a36Sopenharmony_ci TP_PROTO(struct radeon_bo *bo), 1762306a36Sopenharmony_ci TP_ARGS(bo), 1862306a36Sopenharmony_ci TP_STRUCT__entry( 1962306a36Sopenharmony_ci __field(struct radeon_bo *, bo) 2062306a36Sopenharmony_ci __field(u32, pages) 2162306a36Sopenharmony_ci ), 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci TP_fast_assign( 2462306a36Sopenharmony_ci __entry->bo = bo; 2562306a36Sopenharmony_ci __entry->pages = PFN_UP(bo->tbo.resource->size); 2662306a36Sopenharmony_ci ), 2762306a36Sopenharmony_ci TP_printk("bo=%p, pages=%u", __entry->bo, __entry->pages) 2862306a36Sopenharmony_ci); 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciTRACE_EVENT(radeon_cs, 3162306a36Sopenharmony_ci TP_PROTO(struct radeon_cs_parser *p), 3262306a36Sopenharmony_ci TP_ARGS(p), 3362306a36Sopenharmony_ci TP_STRUCT__entry( 3462306a36Sopenharmony_ci __field(u32, ring) 3562306a36Sopenharmony_ci __field(u32, dw) 3662306a36Sopenharmony_ci __field(u32, fences) 3762306a36Sopenharmony_ci ), 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci TP_fast_assign( 4062306a36Sopenharmony_ci __entry->ring = p->ring; 4162306a36Sopenharmony_ci __entry->dw = p->chunk_ib->length_dw; 4262306a36Sopenharmony_ci __entry->fences = radeon_fence_count_emitted( 4362306a36Sopenharmony_ci p->rdev, p->ring); 4462306a36Sopenharmony_ci ), 4562306a36Sopenharmony_ci TP_printk("ring=%u, dw=%u, fences=%u", 4662306a36Sopenharmony_ci __entry->ring, __entry->dw, 4762306a36Sopenharmony_ci __entry->fences) 4862306a36Sopenharmony_ci); 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ciTRACE_EVENT(radeon_vm_grab_id, 5162306a36Sopenharmony_ci TP_PROTO(unsigned vmid, int ring), 5262306a36Sopenharmony_ci TP_ARGS(vmid, ring), 5362306a36Sopenharmony_ci TP_STRUCT__entry( 5462306a36Sopenharmony_ci __field(u32, vmid) 5562306a36Sopenharmony_ci __field(u32, ring) 5662306a36Sopenharmony_ci ), 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci TP_fast_assign( 5962306a36Sopenharmony_ci __entry->vmid = vmid; 6062306a36Sopenharmony_ci __entry->ring = ring; 6162306a36Sopenharmony_ci ), 6262306a36Sopenharmony_ci TP_printk("vmid=%u, ring=%u", __entry->vmid, __entry->ring) 6362306a36Sopenharmony_ci); 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ciTRACE_EVENT(radeon_vm_bo_update, 6662306a36Sopenharmony_ci TP_PROTO(struct radeon_bo_va *bo_va), 6762306a36Sopenharmony_ci TP_ARGS(bo_va), 6862306a36Sopenharmony_ci TP_STRUCT__entry( 6962306a36Sopenharmony_ci __field(u64, soffset) 7062306a36Sopenharmony_ci __field(u64, eoffset) 7162306a36Sopenharmony_ci __field(u32, flags) 7262306a36Sopenharmony_ci ), 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci TP_fast_assign( 7562306a36Sopenharmony_ci __entry->soffset = bo_va->it.start; 7662306a36Sopenharmony_ci __entry->eoffset = bo_va->it.last + 1; 7762306a36Sopenharmony_ci __entry->flags = bo_va->flags; 7862306a36Sopenharmony_ci ), 7962306a36Sopenharmony_ci TP_printk("soffs=%010llx, eoffs=%010llx, flags=%08x", 8062306a36Sopenharmony_ci __entry->soffset, __entry->eoffset, __entry->flags) 8162306a36Sopenharmony_ci); 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ciTRACE_EVENT(radeon_vm_set_page, 8462306a36Sopenharmony_ci TP_PROTO(uint64_t pe, uint64_t addr, unsigned count, 8562306a36Sopenharmony_ci uint32_t incr, uint32_t flags), 8662306a36Sopenharmony_ci TP_ARGS(pe, addr, count, incr, flags), 8762306a36Sopenharmony_ci TP_STRUCT__entry( 8862306a36Sopenharmony_ci __field(u64, pe) 8962306a36Sopenharmony_ci __field(u64, addr) 9062306a36Sopenharmony_ci __field(u32, count) 9162306a36Sopenharmony_ci __field(u32, incr) 9262306a36Sopenharmony_ci __field(u32, flags) 9362306a36Sopenharmony_ci ), 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci TP_fast_assign( 9662306a36Sopenharmony_ci __entry->pe = pe; 9762306a36Sopenharmony_ci __entry->addr = addr; 9862306a36Sopenharmony_ci __entry->count = count; 9962306a36Sopenharmony_ci __entry->incr = incr; 10062306a36Sopenharmony_ci __entry->flags = flags; 10162306a36Sopenharmony_ci ), 10262306a36Sopenharmony_ci TP_printk("pe=%010Lx, addr=%010Lx, incr=%u, flags=%08x, count=%u", 10362306a36Sopenharmony_ci __entry->pe, __entry->addr, __entry->incr, 10462306a36Sopenharmony_ci __entry->flags, __entry->count) 10562306a36Sopenharmony_ci); 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ciTRACE_EVENT(radeon_vm_flush, 10862306a36Sopenharmony_ci TP_PROTO(uint64_t pd_addr, unsigned ring, unsigned id), 10962306a36Sopenharmony_ci TP_ARGS(pd_addr, ring, id), 11062306a36Sopenharmony_ci TP_STRUCT__entry( 11162306a36Sopenharmony_ci __field(u64, pd_addr) 11262306a36Sopenharmony_ci __field(u32, ring) 11362306a36Sopenharmony_ci __field(u32, id) 11462306a36Sopenharmony_ci ), 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ci TP_fast_assign( 11762306a36Sopenharmony_ci __entry->pd_addr = pd_addr; 11862306a36Sopenharmony_ci __entry->ring = ring; 11962306a36Sopenharmony_ci __entry->id = id; 12062306a36Sopenharmony_ci ), 12162306a36Sopenharmony_ci TP_printk("pd_addr=%010Lx, ring=%u, id=%u", 12262306a36Sopenharmony_ci __entry->pd_addr, __entry->ring, __entry->id) 12362306a36Sopenharmony_ci); 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(radeon_fence_request, 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci TP_PROTO(struct drm_device *dev, int ring, u32 seqno), 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci TP_ARGS(dev, ring, seqno), 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci TP_STRUCT__entry( 13262306a36Sopenharmony_ci __field(u32, dev) 13362306a36Sopenharmony_ci __field(int, ring) 13462306a36Sopenharmony_ci __field(u32, seqno) 13562306a36Sopenharmony_ci ), 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci TP_fast_assign( 13862306a36Sopenharmony_ci __entry->dev = dev->primary->index; 13962306a36Sopenharmony_ci __entry->ring = ring; 14062306a36Sopenharmony_ci __entry->seqno = seqno; 14162306a36Sopenharmony_ci ), 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci TP_printk("dev=%u, ring=%d, seqno=%u", 14462306a36Sopenharmony_ci __entry->dev, __entry->ring, __entry->seqno) 14562306a36Sopenharmony_ci); 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ciDEFINE_EVENT(radeon_fence_request, radeon_fence_emit, 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ci TP_PROTO(struct drm_device *dev, int ring, u32 seqno), 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci TP_ARGS(dev, ring, seqno) 15262306a36Sopenharmony_ci); 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ciDEFINE_EVENT(radeon_fence_request, radeon_fence_wait_begin, 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci TP_PROTO(struct drm_device *dev, int ring, u32 seqno), 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ci TP_ARGS(dev, ring, seqno) 15962306a36Sopenharmony_ci); 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_ciDEFINE_EVENT(radeon_fence_request, radeon_fence_wait_end, 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci TP_PROTO(struct drm_device *dev, int ring, u32 seqno), 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci TP_ARGS(dev, ring, seqno) 16662306a36Sopenharmony_ci); 16762306a36Sopenharmony_ci 16862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(radeon_semaphore_request, 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci TP_PROTO(int ring, struct radeon_semaphore *sem), 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci TP_ARGS(ring, sem), 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_ci TP_STRUCT__entry( 17562306a36Sopenharmony_ci __field(int, ring) 17662306a36Sopenharmony_ci __field(signed, waiters) 17762306a36Sopenharmony_ci __field(uint64_t, gpu_addr) 17862306a36Sopenharmony_ci ), 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci TP_fast_assign( 18162306a36Sopenharmony_ci __entry->ring = ring; 18262306a36Sopenharmony_ci __entry->waiters = sem->waiters; 18362306a36Sopenharmony_ci __entry->gpu_addr = sem->gpu_addr; 18462306a36Sopenharmony_ci ), 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci TP_printk("ring=%u, waiters=%d, addr=%010Lx", __entry->ring, 18762306a36Sopenharmony_ci __entry->waiters, __entry->gpu_addr) 18862306a36Sopenharmony_ci); 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ciDEFINE_EVENT(radeon_semaphore_request, radeon_semaphore_signale, 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ci TP_PROTO(int ring, struct radeon_semaphore *sem), 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci TP_ARGS(ring, sem) 19562306a36Sopenharmony_ci); 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ciDEFINE_EVENT(radeon_semaphore_request, radeon_semaphore_wait, 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci TP_PROTO(int ring, struct radeon_semaphore *sem), 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci TP_ARGS(ring, sem) 20262306a36Sopenharmony_ci); 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci#endif 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci/* This part must be outside protection */ 20762306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 20862306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/radeon 20962306a36Sopenharmony_ci#include <trace/define_trace.h> 210