1 /* 2 * 3 * (C) COPYRIGHT 2012-2016 ARM Limited. All rights reserved. 4 * 5 * This program is free software and is provided to you under the terms of the 6 * GNU General Public License version 2 as published by the Free Software 7 * Foundation, and any use by you of this program is subject to the terms 8 * of such GNU licence. 9 * 10 * A copy of the licence is included with the program, and can also be obtained 11 * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 12 * Boston, MA 02110-1301, USA. 13 * 14 */ 15 16 #ifndef H_MALI_TIMELINE_H 17 #define H_MALI_TIMELINE_H 18 19 #undef TRACE_SYSTEM 20 #define TRACE_SYSTEM mali_timeline 21 22 #if !defined(_MALI_TIMELINE_H) || defined(TRACE_HEADER_MULTI_READ) 23 #define _MALI_TIMELINE_H 24 25 #include <linux/tracepoint.h> 26 27 TRACE_EVENT(mali_timeline_atoms_in_flight, 28 29 TP_PROTO(u64 ts_sec, u32 ts_nsec, int tgid, int count), 30 31 TP_ARGS(ts_sec, ts_nsec, tgid, count), 32 33 TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, tgid) __field(int, count)), 34 35 TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->tgid = tgid; 36 __entry->count = count;), 37 38 TP_printk("%i,%i.%.9i,%i,%i", CTX_SET_NR_ATOMS_IN_FLIGHT, (int)__entry->ts_sec, (int)__entry->ts_nsec, 39 __entry->tgid, __entry->count)); 40 41 TRACE_EVENT(mali_timeline_atom, 42 43 TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int tgid, int atom_id), 44 45 TP_ARGS(ts_sec, ts_nsec, event_type, tgid, atom_id), 46 47 TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, tgid) 48 __field(int, atom_id)), 49 50 TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type; 51 __entry->tgid = tgid; __entry->atom_id = atom_id;), 52 53 TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec, 54 __entry->tgid, __entry->atom_id, __entry->atom_id)); 55 56 TRACE_EVENT(mali_timeline_gpu_slot_active, 57 58 TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int tgid, int js, int count), 59 60 TP_ARGS(ts_sec, ts_nsec, event_type, tgid, js, count), 61 62 TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, tgid) 63 __field(int, js) __field(int, count)), 64 65 TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type; 66 __entry->tgid = tgid; __entry->js = js; __entry->count = count;), 67 68 TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec, 69 __entry->tgid, __entry->js, __entry->count)); 70 71 TRACE_EVENT(mali_timeline_gpu_slot_action, 72 73 TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int tgid, int js, int count), 74 75 TP_ARGS(ts_sec, ts_nsec, event_type, tgid, js, count), 76 77 TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, tgid) 78 __field(int, js) __field(int, count)), 79 80 TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type; 81 __entry->tgid = tgid; __entry->js = js; __entry->count = count;), 82 83 TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec, 84 __entry->tgid, __entry->js, __entry->count)); 85 86 TRACE_EVENT(mali_timeline_gpu_power_active, 87 88 TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int active), 89 90 TP_ARGS(ts_sec, ts_nsec, event_type, active), 91 92 TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, active)), 93 94 TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type; 95 __entry->active = active;), 96 97 TP_printk("%i,%i.%.9i,0,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec, 98 __entry->active) 99 100 ); 101 102 TRACE_EVENT(mali_timeline_l2_power_active, 103 104 TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int state), 105 106 TP_ARGS(ts_sec, ts_nsec, event_type, state), 107 108 TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, state)), 109 110 TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type; 111 __entry->state = state;), 112 113 TP_printk("%i,%i.%.9i,0,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec, 114 __entry->state) 115 116 ); 117 TRACE_EVENT(mali_timeline_pm_event, 118 119 TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int pm_event_type, unsigned int pm_event_id), 120 121 TP_ARGS(ts_sec, ts_nsec, event_type, pm_event_type, pm_event_id), 122 123 TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) 124 __field(int, pm_event_type) __field(unsigned int, pm_event_id)), 125 126 TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type; 127 __entry->pm_event_type = pm_event_type; __entry->pm_event_id = pm_event_id;), 128 129 TP_printk("%i,%i.%.9i,0,%i,%u", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec, 130 __entry->pm_event_type, __entry->pm_event_id) 131 132 ); 133 134 TRACE_EVENT(mali_timeline_slot_atom, 135 136 TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int tgid, int js, int atom_id), 137 138 TP_ARGS(ts_sec, ts_nsec, event_type, tgid, js, atom_id), 139 140 TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, tgid) 141 __field(int, js) __field(int, atom_id)), 142 143 TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type; 144 __entry->tgid = tgid; __entry->js = js; __entry->atom_id = atom_id;), 145 146 TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec, 147 __entry->tgid, __entry->js, __entry->atom_id)); 148 149 TRACE_EVENT( 150 mali_timeline_pm_checktrans, 151 152 TP_PROTO(u64 ts_sec, u32 ts_nsec, int trans_code, int trans_id), 153 154 TP_ARGS(ts_sec, ts_nsec, trans_code, trans_id), 155 156 TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, trans_code) __field(int, trans_id)), 157 158 TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->trans_code = trans_code; 159 __entry->trans_id = trans_id;), 160 161 TP_printk("%i,%i.%.9i,0,%i", __entry->trans_code, (int)__entry->ts_sec, (int)__entry->ts_nsec, __entry->trans_id) 162 163 ); 164 165 TRACE_EVENT(mali_timeline_context_active, 166 167 TP_PROTO(u64 ts_sec, u32 ts_nsec, int count), 168 169 TP_ARGS(ts_sec, ts_nsec, count), 170 171 TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, count)), 172 173 TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->count = count;), 174 175 TP_printk("%i,%i.%.9i,0,%i", SW_SET_CONTEXT_ACTIVE, (int)__entry->ts_sec, (int)__entry->ts_nsec, 176 __entry->count)); 177 178 #endif /* _MALI_TIMELINE_H */ 179 180 #define TMP_NULL 181 182 #undef TRACE_INCLUDE_PATH 183 #define TRACE_INCLUDE_PATH TMP_NULL. 184 185 /* This part must be outside protection */ 186 #include <trace/define_trace.h> 187 188 #endif 189