Home | History | Annotate | Line # | Download | only in radeon
      1  1.5  riastrad /*	$NetBSD: radeon_trace.h,v 1.5 2021/12/18 23:45:43 riastradh Exp $	*/
      2  1.3  riastrad 
      3  1.5  riastrad /* SPDX-License-Identifier: MIT */
      4  1.1  riastrad #if !defined(_RADEON_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
      5  1.1  riastrad #define _RADEON_TRACE_H_
      6  1.1  riastrad 
      7  1.1  riastrad #include <linux/stringify.h>
      8  1.5  riastrad #include <linux/tracepoint.h>
      9  1.1  riastrad #include <linux/types.h>
     10  1.1  riastrad 
     11  1.5  riastrad #include <drm/drm_file.h>
     12  1.1  riastrad 
     13  1.1  riastrad #undef TRACE_SYSTEM
     14  1.1  riastrad #define TRACE_SYSTEM radeon
     15  1.1  riastrad #define TRACE_INCLUDE_FILE radeon_trace
     16  1.1  riastrad 
     17  1.1  riastrad TRACE_EVENT(radeon_bo_create,
     18  1.1  riastrad 	    TP_PROTO(struct radeon_bo *bo),
     19  1.1  riastrad 	    TP_ARGS(bo),
     20  1.1  riastrad 	    TP_STRUCT__entry(
     21  1.1  riastrad 			     __field(struct radeon_bo *, bo)
     22  1.1  riastrad 			     __field(u32, pages)
     23  1.1  riastrad 			     ),
     24  1.1  riastrad 
     25  1.1  riastrad 	    TP_fast_assign(
     26  1.1  riastrad 			   __entry->bo = bo;
     27  1.1  riastrad 			   __entry->pages = bo->tbo.num_pages;
     28  1.1  riastrad 			   ),
     29  1.1  riastrad 	    TP_printk("bo=%p, pages=%u", __entry->bo, __entry->pages)
     30  1.1  riastrad );
     31  1.1  riastrad 
     32  1.1  riastrad TRACE_EVENT(radeon_cs,
     33  1.1  riastrad 	    TP_PROTO(struct radeon_cs_parser *p),
     34  1.1  riastrad 	    TP_ARGS(p),
     35  1.1  riastrad 	    TP_STRUCT__entry(
     36  1.1  riastrad 			     __field(u32, ring)
     37  1.1  riastrad 			     __field(u32, dw)
     38  1.1  riastrad 			     __field(u32, fences)
     39  1.1  riastrad 			     ),
     40  1.1  riastrad 
     41  1.1  riastrad 	    TP_fast_assign(
     42  1.1  riastrad 			   __entry->ring = p->ring;
     43  1.3  riastrad 			   __entry->dw = p->chunk_ib->length_dw;
     44  1.1  riastrad 			   __entry->fences = radeon_fence_count_emitted(
     45  1.1  riastrad 				p->rdev, p->ring);
     46  1.1  riastrad 			   ),
     47  1.1  riastrad 	    TP_printk("ring=%u, dw=%u, fences=%u",
     48  1.1  riastrad 		      __entry->ring, __entry->dw,
     49  1.1  riastrad 		      __entry->fences)
     50  1.1  riastrad );
     51  1.1  riastrad 
     52  1.1  riastrad TRACE_EVENT(radeon_vm_grab_id,
     53  1.1  riastrad 	    TP_PROTO(unsigned vmid, int ring),
     54  1.1  riastrad 	    TP_ARGS(vmid, ring),
     55  1.1  riastrad 	    TP_STRUCT__entry(
     56  1.1  riastrad 			     __field(u32, vmid)
     57  1.1  riastrad 			     __field(u32, ring)
     58  1.1  riastrad 			     ),
     59  1.1  riastrad 
     60  1.1  riastrad 	    TP_fast_assign(
     61  1.1  riastrad 			   __entry->vmid = vmid;
     62  1.1  riastrad 			   __entry->ring = ring;
     63  1.1  riastrad 			   ),
     64  1.1  riastrad 	    TP_printk("vmid=%u, ring=%u", __entry->vmid, __entry->ring)
     65  1.1  riastrad );
     66  1.1  riastrad 
     67  1.1  riastrad TRACE_EVENT(radeon_vm_bo_update,
     68  1.1  riastrad 	    TP_PROTO(struct radeon_bo_va *bo_va),
     69  1.1  riastrad 	    TP_ARGS(bo_va),
     70  1.1  riastrad 	    TP_STRUCT__entry(
     71  1.1  riastrad 			     __field(u64, soffset)
     72  1.1  riastrad 			     __field(u64, eoffset)
     73  1.1  riastrad 			     __field(u32, flags)
     74  1.1  riastrad 			     ),
     75  1.1  riastrad 
     76  1.1  riastrad 	    TP_fast_assign(
     77  1.3  riastrad 			   __entry->soffset = bo_va->it.start;
     78  1.3  riastrad 			   __entry->eoffset = bo_va->it.last + 1;
     79  1.1  riastrad 			   __entry->flags = bo_va->flags;
     80  1.1  riastrad 			   ),
     81  1.1  riastrad 	    TP_printk("soffs=%010llx, eoffs=%010llx, flags=%08x",
     82  1.1  riastrad 		      __entry->soffset, __entry->eoffset, __entry->flags)
     83  1.1  riastrad );
     84  1.1  riastrad 
     85  1.1  riastrad TRACE_EVENT(radeon_vm_set_page,
     86  1.1  riastrad 	    TP_PROTO(uint64_t pe, uint64_t addr, unsigned count,
     87  1.1  riastrad 		     uint32_t incr, uint32_t flags),
     88  1.1  riastrad 	    TP_ARGS(pe, addr, count, incr, flags),
     89  1.1  riastrad 	    TP_STRUCT__entry(
     90  1.1  riastrad 			     __field(u64, pe)
     91  1.1  riastrad 			     __field(u64, addr)
     92  1.1  riastrad 			     __field(u32, count)
     93  1.1  riastrad 			     __field(u32, incr)
     94  1.1  riastrad 			     __field(u32, flags)
     95  1.1  riastrad 			     ),
     96  1.1  riastrad 
     97  1.1  riastrad 	    TP_fast_assign(
     98  1.1  riastrad 			   __entry->pe = pe;
     99  1.1  riastrad 			   __entry->addr = addr;
    100  1.1  riastrad 			   __entry->count = count;
    101  1.1  riastrad 			   __entry->incr = incr;
    102  1.1  riastrad 			   __entry->flags = flags;
    103  1.1  riastrad 			   ),
    104  1.1  riastrad 	    TP_printk("pe=%010Lx, addr=%010Lx, incr=%u, flags=%08x, count=%u",
    105  1.1  riastrad 		      __entry->pe, __entry->addr, __entry->incr,
    106  1.1  riastrad 		      __entry->flags, __entry->count)
    107  1.1  riastrad );
    108  1.1  riastrad 
    109  1.3  riastrad TRACE_EVENT(radeon_vm_flush,
    110  1.3  riastrad 	    TP_PROTO(uint64_t pd_addr, unsigned ring, unsigned id),
    111  1.3  riastrad 	    TP_ARGS(pd_addr, ring, id),
    112  1.3  riastrad 	    TP_STRUCT__entry(
    113  1.3  riastrad 			     __field(u64, pd_addr)
    114  1.3  riastrad 			     __field(u32, ring)
    115  1.3  riastrad 			     __field(u32, id)
    116  1.3  riastrad 			     ),
    117  1.3  riastrad 
    118  1.3  riastrad 	    TP_fast_assign(
    119  1.3  riastrad 			   __entry->pd_addr = pd_addr;
    120  1.3  riastrad 			   __entry->ring = ring;
    121  1.3  riastrad 			   __entry->id = id;
    122  1.3  riastrad 			   ),
    123  1.3  riastrad 	    TP_printk("pd_addr=%010Lx, ring=%u, id=%u",
    124  1.3  riastrad 		      __entry->pd_addr, __entry->ring, __entry->id)
    125  1.3  riastrad );
    126  1.3  riastrad 
    127  1.1  riastrad DECLARE_EVENT_CLASS(radeon_fence_request,
    128  1.1  riastrad 
    129  1.1  riastrad 	    TP_PROTO(struct drm_device *dev, int ring, u32 seqno),
    130  1.1  riastrad 
    131  1.1  riastrad 	    TP_ARGS(dev, ring, seqno),
    132  1.1  riastrad 
    133  1.1  riastrad 	    TP_STRUCT__entry(
    134  1.1  riastrad 			     __field(u32, dev)
    135  1.1  riastrad 			     __field(int, ring)
    136  1.1  riastrad 			     __field(u32, seqno)
    137  1.1  riastrad 			     ),
    138  1.1  riastrad 
    139  1.1  riastrad 	    TP_fast_assign(
    140  1.1  riastrad 			   __entry->dev = dev->primary->index;
    141  1.1  riastrad 			   __entry->ring = ring;
    142  1.1  riastrad 			   __entry->seqno = seqno;
    143  1.1  riastrad 			   ),
    144  1.1  riastrad 
    145  1.1  riastrad 	    TP_printk("dev=%u, ring=%d, seqno=%u",
    146  1.1  riastrad 		      __entry->dev, __entry->ring, __entry->seqno)
    147  1.1  riastrad );
    148  1.1  riastrad 
    149  1.1  riastrad DEFINE_EVENT(radeon_fence_request, radeon_fence_emit,
    150  1.1  riastrad 
    151  1.1  riastrad 	    TP_PROTO(struct drm_device *dev, int ring, u32 seqno),
    152  1.1  riastrad 
    153  1.1  riastrad 	    TP_ARGS(dev, ring, seqno)
    154  1.1  riastrad );
    155  1.1  riastrad 
    156  1.1  riastrad DEFINE_EVENT(radeon_fence_request, radeon_fence_wait_begin,
    157  1.1  riastrad 
    158  1.1  riastrad 	    TP_PROTO(struct drm_device *dev, int ring, u32 seqno),
    159  1.1  riastrad 
    160  1.1  riastrad 	    TP_ARGS(dev, ring, seqno)
    161  1.1  riastrad );
    162  1.1  riastrad 
    163  1.1  riastrad DEFINE_EVENT(radeon_fence_request, radeon_fence_wait_end,
    164  1.1  riastrad 
    165  1.1  riastrad 	    TP_PROTO(struct drm_device *dev, int ring, u32 seqno),
    166  1.1  riastrad 
    167  1.1  riastrad 	    TP_ARGS(dev, ring, seqno)
    168  1.1  riastrad );
    169  1.1  riastrad 
    170  1.1  riastrad DECLARE_EVENT_CLASS(radeon_semaphore_request,
    171  1.1  riastrad 
    172  1.1  riastrad 	    TP_PROTO(int ring, struct radeon_semaphore *sem),
    173  1.1  riastrad 
    174  1.1  riastrad 	    TP_ARGS(ring, sem),
    175  1.1  riastrad 
    176  1.1  riastrad 	    TP_STRUCT__entry(
    177  1.1  riastrad 			     __field(int, ring)
    178  1.1  riastrad 			     __field(signed, waiters)
    179  1.1  riastrad 			     __field(uint64_t, gpu_addr)
    180  1.1  riastrad 			     ),
    181  1.1  riastrad 
    182  1.1  riastrad 	    TP_fast_assign(
    183  1.1  riastrad 			   __entry->ring = ring;
    184  1.1  riastrad 			   __entry->waiters = sem->waiters;
    185  1.1  riastrad 			   __entry->gpu_addr = sem->gpu_addr;
    186  1.1  riastrad 			   ),
    187  1.1  riastrad 
    188  1.1  riastrad 	    TP_printk("ring=%u, waiters=%d, addr=%010Lx", __entry->ring,
    189  1.1  riastrad 		      __entry->waiters, __entry->gpu_addr)
    190  1.1  riastrad );
    191  1.1  riastrad 
    192  1.1  riastrad DEFINE_EVENT(radeon_semaphore_request, radeon_semaphore_signale,
    193  1.1  riastrad 
    194  1.1  riastrad 	    TP_PROTO(int ring, struct radeon_semaphore *sem),
    195  1.1  riastrad 
    196  1.1  riastrad 	    TP_ARGS(ring, sem)
    197  1.1  riastrad );
    198  1.1  riastrad 
    199  1.1  riastrad DEFINE_EVENT(radeon_semaphore_request, radeon_semaphore_wait,
    200  1.1  riastrad 
    201  1.1  riastrad 	    TP_PROTO(int ring, struct radeon_semaphore *sem),
    202  1.1  riastrad 
    203  1.1  riastrad 	    TP_ARGS(ring, sem)
    204  1.1  riastrad );
    205  1.1  riastrad 
    206  1.1  riastrad #endif
    207  1.1  riastrad 
    208  1.1  riastrad /* This part must be outside protection */
    209  1.1  riastrad #undef TRACE_INCLUDE_PATH
    210  1.5  riastrad #define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/radeon
    211  1.1  riastrad #include <trace/define_trace.h>
    212