1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #undef TRACE_SYSTEM 3 #define TRACE_SYSTEM dma_fence 4 5 #if !defined(_TRACE_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 TRACE_EVENT(dma_fence_annotate_wait_on, 13 14 /* fence: the fence waiting on f1, f1: the fence to be waited on. */ 15 TP_PROTO(struct dma_fence *fence, struct dma_fence *f1), 16 17 TP_ARGS(fence, f1), 18 19 TP_STRUCT__entry( 20 __string(driver, fence->ops->get_driver_name(fence)) 21 __string(timeline, fence->ops->get_timeline_name(fence)) 22 __field(unsigned int, context) 23 __field(unsigned int, seqno) 24 25 __string(waiting_driver, f1->ops->get_driver_name(f1)) 26 __string(waiting_timeline, f1->ops->get_timeline_name(f1)) 27 __field(unsigned int, waiting_context) 28 __field(unsigned int, waiting_seqno) 29 ), 30 31 TP_fast_assign( 32 __assign_str(driver, fence->ops->get_driver_name(fence)) 33 __assign_str(timeline, fence->ops->get_timeline_name(fence)) 34 __entry->context = fence->context; 35 __entry->seqno = fence->seqno; 36 37 __assign_str(waiting_driver, f1->ops->get_driver_name(f1)) 38 __assign_str(waiting_timeline, f1->ops->get_timeline_name(f1)) 39 __entry->waiting_context = f1->context; 40 __entry->waiting_seqno = f1->seqno; 41 42 ), 43 44 TP_printk("driver=%s timeline=%s context=%u seqno=%u " \ 45 "waits on driver=%s timeline=%s context=%u seqno=%u", 46 __get_str(driver), __get_str(timeline), __entry->context, 47 __entry->seqno, 48 __get_str(waiting_driver), __get_str(waiting_timeline), 49 __entry->waiting_context, __entry->waiting_seqno) 50 ); 51 52 DECLARE_EVENT_CLASS(dma_fence, 53 54 TP_PROTO(struct dma_fence *fence), 55 56 TP_ARGS(fence), 57 58 TP_STRUCT__entry( 59 __string(driver, fence->ops->get_driver_name(fence)) 60 __string(timeline, fence->ops->get_timeline_name(fence)) 61 __field(unsigned int, context) 62 __field(unsigned int, seqno) 63 ), 64 65 TP_fast_assign( 66 __assign_str(driver, fence->ops->get_driver_name(fence)) 67 __assign_str(timeline, fence->ops->get_timeline_name(fence)) 68 __entry->context = fence->context; 69 __entry->seqno = fence->seqno; 70 ), 71 72 TP_printk("driver=%s timeline=%s context=%u seqno=%u", 73 __get_str(driver), __get_str(timeline), __entry->context, 74 __entry->seqno) 75 ); 76 77 DEFINE_EVENT(dma_fence, dma_fence_emit, 78 79 TP_PROTO(struct dma_fence *fence), 80 81 TP_ARGS(fence) 82 ); 83 84 DEFINE_EVENT(dma_fence, dma_fence_init, 85 86 TP_PROTO(struct dma_fence *fence), 87 88 TP_ARGS(fence) 89 ); 90 91 DEFINE_EVENT(dma_fence, dma_fence_destroy, 92 93 TP_PROTO(struct dma_fence *fence), 94 95 TP_ARGS(fence) 96 ); 97 98 DEFINE_EVENT(dma_fence, dma_fence_enable_signal, 99 100 TP_PROTO(struct dma_fence *fence), 101 102 TP_ARGS(fence) 103 ); 104 105 DEFINE_EVENT(dma_fence, dma_fence_signaled, 106 107 TP_PROTO(struct dma_fence *fence), 108 109 TP_ARGS(fence) 110 ); 111 112 DEFINE_EVENT(dma_fence, dma_fence_wait_start, 113 114 TP_PROTO(struct dma_fence *fence), 115 116 TP_ARGS(fence) 117 ); 118 119 DEFINE_EVENT(dma_fence, dma_fence_wait_end, 120 121 TP_PROTO(struct dma_fence *fence), 122 123 TP_ARGS(fence) 124 ); 125 126 #endif /* _TRACE_DMA_FENCE_H */ 127 128 /* This part must be outside protection */ 129 #include <trace/define_trace.h> 130