Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: MIT */
0002 #if !defined(_RADEON_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
0003 #define _RADEON_TRACE_H_
0004 
0005 #include <linux/stringify.h>
0006 #include <linux/tracepoint.h>
0007 #include <linux/types.h>
0008 
0009 #include <drm/drm_file.h>
0010 
0011 #undef TRACE_SYSTEM
0012 #define TRACE_SYSTEM radeon
0013 #define TRACE_INCLUDE_FILE radeon_trace
0014 
0015 TRACE_EVENT(radeon_bo_create,
0016         TP_PROTO(struct radeon_bo *bo),
0017         TP_ARGS(bo),
0018         TP_STRUCT__entry(
0019                  __field(struct radeon_bo *, bo)
0020                  __field(u32, pages)
0021                  ),
0022 
0023         TP_fast_assign(
0024                __entry->bo = bo;
0025                __entry->pages = bo->tbo.resource->num_pages;
0026                ),
0027         TP_printk("bo=%p, pages=%u", __entry->bo, __entry->pages)
0028 );
0029 
0030 TRACE_EVENT(radeon_cs,
0031         TP_PROTO(struct radeon_cs_parser *p),
0032         TP_ARGS(p),
0033         TP_STRUCT__entry(
0034                  __field(u32, ring)
0035                  __field(u32, dw)
0036                  __field(u32, fences)
0037                  ),
0038 
0039         TP_fast_assign(
0040                __entry->ring = p->ring;
0041                __entry->dw = p->chunk_ib->length_dw;
0042                __entry->fences = radeon_fence_count_emitted(
0043                 p->rdev, p->ring);
0044                ),
0045         TP_printk("ring=%u, dw=%u, fences=%u",
0046               __entry->ring, __entry->dw,
0047               __entry->fences)
0048 );
0049 
0050 TRACE_EVENT(radeon_vm_grab_id,
0051         TP_PROTO(unsigned vmid, int ring),
0052         TP_ARGS(vmid, ring),
0053         TP_STRUCT__entry(
0054                  __field(u32, vmid)
0055                  __field(u32, ring)
0056                  ),
0057 
0058         TP_fast_assign(
0059                __entry->vmid = vmid;
0060                __entry->ring = ring;
0061                ),
0062         TP_printk("vmid=%u, ring=%u", __entry->vmid, __entry->ring)
0063 );
0064 
0065 TRACE_EVENT(radeon_vm_bo_update,
0066         TP_PROTO(struct radeon_bo_va *bo_va),
0067         TP_ARGS(bo_va),
0068         TP_STRUCT__entry(
0069                  __field(u64, soffset)
0070                  __field(u64, eoffset)
0071                  __field(u32, flags)
0072                  ),
0073 
0074         TP_fast_assign(
0075                __entry->soffset = bo_va->it.start;
0076                __entry->eoffset = bo_va->it.last + 1;
0077                __entry->flags = bo_va->flags;
0078                ),
0079         TP_printk("soffs=%010llx, eoffs=%010llx, flags=%08x",
0080               __entry->soffset, __entry->eoffset, __entry->flags)
0081 );
0082 
0083 TRACE_EVENT(radeon_vm_set_page,
0084         TP_PROTO(uint64_t pe, uint64_t addr, unsigned count,
0085              uint32_t incr, uint32_t flags),
0086         TP_ARGS(pe, addr, count, incr, flags),
0087         TP_STRUCT__entry(
0088                  __field(u64, pe)
0089                  __field(u64, addr)
0090                  __field(u32, count)
0091                  __field(u32, incr)
0092                  __field(u32, flags)
0093                  ),
0094 
0095         TP_fast_assign(
0096                __entry->pe = pe;
0097                __entry->addr = addr;
0098                __entry->count = count;
0099                __entry->incr = incr;
0100                __entry->flags = flags;
0101                ),
0102         TP_printk("pe=%010Lx, addr=%010Lx, incr=%u, flags=%08x, count=%u",
0103               __entry->pe, __entry->addr, __entry->incr,
0104               __entry->flags, __entry->count)
0105 );
0106 
0107 TRACE_EVENT(radeon_vm_flush,
0108         TP_PROTO(uint64_t pd_addr, unsigned ring, unsigned id),
0109         TP_ARGS(pd_addr, ring, id),
0110         TP_STRUCT__entry(
0111                  __field(u64, pd_addr)
0112                  __field(u32, ring)
0113                  __field(u32, id)
0114                  ),
0115 
0116         TP_fast_assign(
0117                __entry->pd_addr = pd_addr;
0118                __entry->ring = ring;
0119                __entry->id = id;
0120                ),
0121         TP_printk("pd_addr=%010Lx, ring=%u, id=%u",
0122               __entry->pd_addr, __entry->ring, __entry->id)
0123 );
0124 
0125 DECLARE_EVENT_CLASS(radeon_fence_request,
0126 
0127         TP_PROTO(struct drm_device *dev, int ring, u32 seqno),
0128 
0129         TP_ARGS(dev, ring, seqno),
0130 
0131         TP_STRUCT__entry(
0132                  __field(u32, dev)
0133                  __field(int, ring)
0134                  __field(u32, seqno)
0135                  ),
0136 
0137         TP_fast_assign(
0138                __entry->dev = dev->primary->index;
0139                __entry->ring = ring;
0140                __entry->seqno = seqno;
0141                ),
0142 
0143         TP_printk("dev=%u, ring=%d, seqno=%u",
0144               __entry->dev, __entry->ring, __entry->seqno)
0145 );
0146 
0147 DEFINE_EVENT(radeon_fence_request, radeon_fence_emit,
0148 
0149         TP_PROTO(struct drm_device *dev, int ring, u32 seqno),
0150 
0151         TP_ARGS(dev, ring, seqno)
0152 );
0153 
0154 DEFINE_EVENT(radeon_fence_request, radeon_fence_wait_begin,
0155 
0156         TP_PROTO(struct drm_device *dev, int ring, u32 seqno),
0157 
0158         TP_ARGS(dev, ring, seqno)
0159 );
0160 
0161 DEFINE_EVENT(radeon_fence_request, radeon_fence_wait_end,
0162 
0163         TP_PROTO(struct drm_device *dev, int ring, u32 seqno),
0164 
0165         TP_ARGS(dev, ring, seqno)
0166 );
0167 
0168 DECLARE_EVENT_CLASS(radeon_semaphore_request,
0169 
0170         TP_PROTO(int ring, struct radeon_semaphore *sem),
0171 
0172         TP_ARGS(ring, sem),
0173 
0174         TP_STRUCT__entry(
0175                  __field(int, ring)
0176                  __field(signed, waiters)
0177                  __field(uint64_t, gpu_addr)
0178                  ),
0179 
0180         TP_fast_assign(
0181                __entry->ring = ring;
0182                __entry->waiters = sem->waiters;
0183                __entry->gpu_addr = sem->gpu_addr;
0184                ),
0185 
0186         TP_printk("ring=%u, waiters=%d, addr=%010Lx", __entry->ring,
0187               __entry->waiters, __entry->gpu_addr)
0188 );
0189 
0190 DEFINE_EVENT(radeon_semaphore_request, radeon_semaphore_signale,
0191 
0192         TP_PROTO(int ring, struct radeon_semaphore *sem),
0193 
0194         TP_ARGS(ring, sem)
0195 );
0196 
0197 DEFINE_EVENT(radeon_semaphore_request, radeon_semaphore_wait,
0198 
0199         TP_PROTO(int ring, struct radeon_semaphore *sem),
0200 
0201         TP_ARGS(ring, sem)
0202 );
0203 
0204 #endif
0205 
0206 /* This part must be outside protection */
0207 #undef TRACE_INCLUDE_PATH
0208 #define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/radeon
0209 #include <trace/define_trace.h>