Commit | Line | Data |
---|---|---|
191a4443 OS |
1 | /* SPDX-License-Identifier: GPL-2.0 |
2 | * | |
a43557dc | 3 | * Copyright 2022-2023 HabanaLabs, Ltd. |
191a4443 OS |
4 | * All Rights Reserved. |
5 | * | |
6 | */ | |
7 | ||
8 | #undef TRACE_SYSTEM | |
9 | #define TRACE_SYSTEM habanalabs | |
10 | ||
11 | #if !defined(_TRACE_HABANALABS_H) || defined(TRACE_HEADER_MULTI_READ) | |
12 | #define _TRACE_HABANALABS_H | |
13 | ||
14 | #include <linux/tracepoint.h> | |
15 | ||
16 | DECLARE_EVENT_CLASS(habanalabs_mmu_template, | |
17 | TP_PROTO(struct device *dev, u64 virt_addr, u64 phys_addr, u32 page_size, bool flush_pte), | |
18 | ||
19 | TP_ARGS(dev, virt_addr, phys_addr, page_size, flush_pte), | |
20 | ||
21 | TP_STRUCT__entry( | |
22 | __string(dname, dev_name(dev)) | |
23 | __field(u64, virt_addr) | |
24 | __field(u64, phys_addr) | |
25 | __field(u32, page_size) | |
26 | __field(u8, flush_pte) | |
27 | ), | |
28 | ||
29 | TP_fast_assign( | |
2c92ca84 | 30 | __assign_str(dname); |
191a4443 OS |
31 | __entry->virt_addr = virt_addr; |
32 | __entry->phys_addr = phys_addr; | |
33 | __entry->page_size = page_size; | |
34 | __entry->flush_pte = flush_pte; | |
35 | ), | |
36 | ||
37 | TP_printk("%s: vaddr: %#llx, paddr: %#llx, psize: %#x, flush: %s", | |
38 | __get_str(dname), | |
39 | __entry->virt_addr, | |
40 | __entry->phys_addr, | |
41 | __entry->page_size, | |
42 | __entry->flush_pte ? "true" : "false") | |
43 | ); | |
44 | ||
45 | DEFINE_EVENT(habanalabs_mmu_template, habanalabs_mmu_map, | |
46 | TP_PROTO(struct device *dev, u64 virt_addr, u64 phys_addr, u32 page_size, bool flush_pte), | |
47 | TP_ARGS(dev, virt_addr, phys_addr, page_size, flush_pte)); | |
48 | ||
49 | DEFINE_EVENT(habanalabs_mmu_template, habanalabs_mmu_unmap, | |
50 | TP_PROTO(struct device *dev, u64 virt_addr, u64 phys_addr, u32 page_size, bool flush_pte), | |
51 | TP_ARGS(dev, virt_addr, phys_addr, page_size, flush_pte)); | |
52 | ||
53 | DECLARE_EVENT_CLASS(habanalabs_dma_alloc_template, | |
02632567 | 54 | TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size, const char *caller), |
191a4443 | 55 | |
02632567 | 56 | TP_ARGS(dev, cpu_addr, dma_addr, size, caller), |
191a4443 OS |
57 | |
58 | TP_STRUCT__entry( | |
59 | __string(dname, dev_name(dev)) | |
60 | __field(u64, cpu_addr) | |
61 | __field(u64, dma_addr) | |
62 | __field(u32, size) | |
02632567 | 63 | __field(const char *, caller) |
191a4443 OS |
64 | ), |
65 | ||
66 | TP_fast_assign( | |
2c92ca84 | 67 | __assign_str(dname); |
191a4443 OS |
68 | __entry->cpu_addr = cpu_addr; |
69 | __entry->dma_addr = dma_addr; | |
70 | __entry->size = size; | |
02632567 | 71 | __entry->caller = caller; |
191a4443 OS |
72 | ), |
73 | ||
02632567 | 74 | TP_printk("%s: cpu_addr: %#llx, dma_addr: %#llx, size: %#x, caller: %s", |
191a4443 OS |
75 | __get_str(dname), |
76 | __entry->cpu_addr, | |
77 | __entry->dma_addr, | |
02632567 OS |
78 | __entry->size, |
79 | __entry->caller) | |
191a4443 OS |
80 | ); |
81 | ||
82 | DEFINE_EVENT(habanalabs_dma_alloc_template, habanalabs_dma_alloc, | |
02632567 OS |
83 | TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size, const char *caller), |
84 | TP_ARGS(dev, cpu_addr, dma_addr, size, caller)); | |
191a4443 OS |
85 | |
86 | DEFINE_EVENT(habanalabs_dma_alloc_template, habanalabs_dma_free, | |
02632567 OS |
87 | TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size, const char *caller), |
88 | TP_ARGS(dev, cpu_addr, dma_addr, size, caller)); | |
191a4443 | 89 | |
309ed969 OS |
90 | DECLARE_EVENT_CLASS(habanalabs_dma_map_template, |
91 | TP_PROTO(struct device *dev, u64 phys_addr, u64 dma_addr, size_t len, | |
92 | enum dma_data_direction dir, const char *caller), | |
93 | ||
94 | TP_ARGS(dev, phys_addr, dma_addr, len, dir, caller), | |
95 | ||
96 | TP_STRUCT__entry( | |
97 | __string(dname, dev_name(dev)) | |
98 | __field(u64, phys_addr) | |
99 | __field(u64, dma_addr) | |
100 | __field(u32, len) | |
101 | __field(int, dir) | |
102 | __field(const char *, caller) | |
103 | ), | |
104 | ||
105 | TP_fast_assign( | |
2c92ca84 | 106 | __assign_str(dname); |
309ed969 OS |
107 | __entry->phys_addr = phys_addr; |
108 | __entry->dma_addr = dma_addr; | |
109 | __entry->len = len; | |
110 | __entry->dir = dir; | |
111 | __entry->caller = caller; | |
112 | ), | |
113 | ||
114 | TP_printk("%s: phys_addr: %#llx, dma_addr: %#llx, len: %#x, dir: %d, caller: %s", | |
115 | __get_str(dname), | |
116 | __entry->phys_addr, | |
117 | __entry->dma_addr, | |
118 | __entry->len, | |
119 | __entry->dir, | |
120 | __entry->caller) | |
121 | ); | |
122 | ||
123 | DEFINE_EVENT(habanalabs_dma_map_template, habanalabs_dma_map_page, | |
124 | TP_PROTO(struct device *dev, u64 phys_addr, u64 dma_addr, size_t len, | |
125 | enum dma_data_direction dir, const char *caller), | |
126 | TP_ARGS(dev, phys_addr, dma_addr, len, dir, caller)); | |
127 | ||
128 | DEFINE_EVENT(habanalabs_dma_map_template, habanalabs_dma_unmap_page, | |
129 | TP_PROTO(struct device *dev, u64 phys_addr, u64 dma_addr, size_t len, | |
130 | enum dma_data_direction dir, const char *caller), | |
131 | TP_ARGS(dev, phys_addr, dma_addr, len, dir, caller)); | |
132 | ||
811c74ba OS |
133 | DECLARE_EVENT_CLASS(habanalabs_comms_template, |
134 | TP_PROTO(struct device *dev, char *op_str), | |
135 | ||
136 | TP_ARGS(dev, op_str), | |
137 | ||
138 | TP_STRUCT__entry( | |
139 | __string(dname, dev_name(dev)) | |
140 | __field(char *, op_str) | |
141 | ), | |
142 | ||
143 | TP_fast_assign( | |
2c92ca84 | 144 | __assign_str(dname); |
811c74ba OS |
145 | __entry->op_str = op_str; |
146 | ), | |
147 | ||
148 | TP_printk("%s: cms: %s", | |
149 | __get_str(dname), | |
150 | __entry->op_str) | |
151 | ); | |
152 | ||
153 | DEFINE_EVENT(habanalabs_comms_template, habanalabs_comms_protocol_cmd, | |
154 | TP_PROTO(struct device *dev, char *op_str), | |
155 | TP_ARGS(dev, op_str)); | |
156 | ||
157 | DEFINE_EVENT(habanalabs_comms_template, habanalabs_comms_send_cmd, | |
158 | TP_PROTO(struct device *dev, char *op_str), | |
159 | TP_ARGS(dev, op_str)); | |
160 | ||
161 | DEFINE_EVENT(habanalabs_comms_template, habanalabs_comms_wait_status, | |
162 | TP_PROTO(struct device *dev, char *op_str), | |
163 | TP_ARGS(dev, op_str)); | |
164 | ||
165 | DEFINE_EVENT(habanalabs_comms_template, habanalabs_comms_wait_status_done, | |
166 | TP_PROTO(struct device *dev, char *op_str), | |
167 | TP_ARGS(dev, op_str)); | |
168 | ||
d5077a55 OS |
169 | DECLARE_EVENT_CLASS(habanalabs_reg_access_template, |
170 | TP_PROTO(struct device *dev, u32 addr, u32 val), | |
171 | ||
172 | TP_ARGS(dev, addr, val), | |
173 | ||
174 | TP_STRUCT__entry( | |
175 | __string(dname, dev_name(dev)) | |
176 | __field(u32, addr) | |
177 | __field(u32, val) | |
178 | ), | |
179 | ||
180 | TP_fast_assign( | |
2c92ca84 | 181 | __assign_str(dname); |
d5077a55 OS |
182 | __entry->addr = addr; |
183 | __entry->val = val; | |
184 | ), | |
185 | ||
186 | TP_printk("%s: addr: %#x, val: %#x", | |
187 | __get_str(dname), | |
188 | __entry->addr, | |
189 | __entry->val) | |
190 | ); | |
191 | ||
192 | DEFINE_EVENT(habanalabs_reg_access_template, habanalabs_rreg32, | |
193 | TP_PROTO(struct device *dev, u32 addr, u32 val), | |
194 | TP_ARGS(dev, addr, val)); | |
195 | ||
196 | DEFINE_EVENT(habanalabs_reg_access_template, habanalabs_wreg32, | |
197 | TP_PROTO(struct device *dev, u32 addr, u32 val), | |
198 | TP_ARGS(dev, addr, val)); | |
199 | ||
200 | DEFINE_EVENT(habanalabs_reg_access_template, habanalabs_elbi_read, | |
201 | TP_PROTO(struct device *dev, u32 addr, u32 val), | |
202 | TP_ARGS(dev, addr, val)); | |
203 | ||
204 | DEFINE_EVENT(habanalabs_reg_access_template, habanalabs_elbi_write, | |
205 | TP_PROTO(struct device *dev, u32 addr, u32 val), | |
206 | TP_ARGS(dev, addr, val)); | |
207 | ||
191a4443 OS |
208 | #endif /* if !defined(_TRACE_HABANALABS_H) || defined(TRACE_HEADER_MULTI_READ) */ |
209 | ||
210 | /* This part must be outside protection */ | |
211 | #include <trace/define_trace.h> |