1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #undef TRACE_SYSTEM 3 #define TRACE_SYSTEM dma_fence 4 5 #if !defined(_TRACE_DMA_FENCE_H) || defined(TRACE_HEADER_MULTI_READ) 6 #define _TRACE_DMA_FENCE_H 7 8 #include <linux/tracepoint.h> 9 10 struct dma_fence; 11 12 DECLARE_EVENT_CLASS(dma_fence, 13 14 TP_PROTO(struct dma_fence *fence), 15 16 TP_ARGS(fence), 17 18 TP_STRUCT__entry( 19 __string(driver, dma_fence_driver_name(fence)) 20 __string(timeline, dma_fence_timeline_name(fence)) 21 __field(unsigned int, context) 22 __field(unsigned int, seqno) 23 ), 24 25 TP_fast_assign( 26 __assign_str(driver); 27 __assign_str(timeline); 28 __entry->context = fence->context; 29 __entry->seqno = fence->seqno; 30 ), 31 32 TP_printk("driver=%s timeline=%s context=%u seqno=%u", 33 __get_str(driver), __get_str(timeline), __entry->context, 34 __entry->seqno) 35 ); 36 37 /* 38 * Safe only for call sites which are guaranteed to not race with fence 39 * signaling, holding the fence->lock and having checked for not signaled, or 40 * the signaling path itself. 41 * 42 * TODO: Remove the need for this event class when drivers switch to independent 43 * fences. 44 */ 45 DECLARE_EVENT_CLASS(dma_fence_ops, 46 47 TP_PROTO(struct dma_fence *fence), 48 49 TP_ARGS(fence), 50 51 TP_STRUCT__entry( 52 __string(driver, fence->ops->get_driver_name(fence)) 53 __string(timeline, fence->ops->get_timeline_name(fence)) 54 __field(unsigned int, context) 55 __field(unsigned int, seqno) 56 ), 57 58 TP_fast_assign( 59 __assign_str(driver); 60 __assign_str(timeline); 61 __entry->context = fence->context; 62 __entry->seqno = fence->seqno; 63 ), 64 65 TP_printk("driver=%s timeline=%s context=%u seqno=%u", 66 __get_str(driver), __get_str(timeline), __entry->context, 67 __entry->seqno) 68 ); 69 70 DEFINE_EVENT(dma_fence, dma_fence_emit, 71 72 TP_PROTO(struct dma_fence *fence), 73 74 TP_ARGS(fence) 75 ); 76 77 DEFINE_EVENT(dma_fence_ops, dma_fence_init, 78 79 TP_PROTO(struct dma_fence *fence), 80 81 TP_ARGS(fence) 82 ); 83 84 DEFINE_EVENT(dma_fence, dma_fence_destroy, 85 86 TP_PROTO(struct dma_fence *fence), 87 88 TP_ARGS(fence) 89 ); 90 91 DEFINE_EVENT(dma_fence_ops, dma_fence_enable_signal, 92 93 TP_PROTO(struct dma_fence *fence), 94 95 TP_ARGS(fence) 96 ); 97 98 DEFINE_EVENT(dma_fence_ops, dma_fence_signaled, 99 100 TP_PROTO(struct dma_fence *fence), 101 102 TP_ARGS(fence) 103 ); 104 105 DEFINE_EVENT(dma_fence, dma_fence_wait_start, 106 107 TP_PROTO(struct dma_fence *fence), 108 109 TP_ARGS(fence) 110 ); 111 112 DEFINE_EVENT(dma_fence, dma_fence_wait_end, 113 114 TP_PROTO(struct dma_fence *fence), 115 116 TP_ARGS(fence) 117 ); 118 119 #endif /* _TRACE_DMA_FENCE_H */ 120 121 /* This part must be outside protection */ 122 #include <trace/define_trace.h> 123