arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / events / ib_mad.h
1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2
3 /*
4  * Copyright (c) 2018 Intel Corporation.  All rights reserved.
5  */
6
7 #undef TRACE_SYSTEM
8 #define TRACE_SYSTEM ib_mad
9
10 #if !defined(_TRACE_IB_MAD_H) || defined(TRACE_HEADER_MULTI_READ)
11 #define _TRACE_IB_MAD_H
12
13 #include <linux/tracepoint.h>
14 #include <rdma/ib_mad.h>
15
16 #ifdef CONFIG_TRACEPOINTS
17 struct trace_event_raw_ib_mad_send_template;
18 static void create_mad_addr_info(struct ib_mad_send_wr_private *mad_send_wr,
19                           struct ib_mad_qp_info *qp_info,
20                           struct trace_event_raw_ib_mad_send_template *entry);
21 #endif
22
23 DECLARE_EVENT_CLASS(ib_mad_send_template,
24         TP_PROTO(struct ib_mad_send_wr_private *wr,
25                  struct ib_mad_qp_info *qp_info),
26         TP_ARGS(wr, qp_info),
27
28         TP_STRUCT__entry(
29                 __field(u8,             base_version)
30                 __field(u8,             mgmt_class)
31                 __field(u8,             class_version)
32                 __field(u8,             port_num)
33                 __field(u32,            qp_num)
34                 __field(u8,             method)
35                 __field(u8,             sl)
36                 __field(u16,            attr_id)
37                 __field(u32,            attr_mod)
38                 __field(u64,            wrtid)
39                 __field(u64,            tid)
40                 __field(u16,            status)
41                 __field(u16,            class_specific)
42                 __field(u32,            length)
43                 __field(u32,            dlid)
44                 __field(u32,            rqpn)
45                 __field(u32,            rqkey)
46                 __field(u32,            dev_index)
47                 __field(void *,         agent_priv)
48                 __field(unsigned long,  timeout)
49                 __field(int,            retries_left)
50                 __field(int,            max_retries)
51                 __field(int,            retry)
52         ),
53
54         TP_fast_assign(
55                 __entry->dev_index = wr->mad_agent_priv->agent.device->index;
56                 __entry->port_num = wr->mad_agent_priv->agent.port_num;
57                 __entry->qp_num = wr->mad_agent_priv->qp_info->qp->qp_num;
58                 __entry->agent_priv = wr->mad_agent_priv;
59                 __entry->wrtid = wr->tid;
60                 __entry->max_retries = wr->max_retries;
61                 __entry->retries_left = wr->retries_left;
62                 __entry->retry = wr->retry;
63                 __entry->timeout = wr->timeout;
64                 __entry->length = wr->send_buf.hdr_len +
65                                   wr->send_buf.data_len;
66                 __entry->base_version =
67                         ((struct ib_mad_hdr *)wr->send_buf.mad)->base_version;
68                 __entry->mgmt_class =
69                         ((struct ib_mad_hdr *)wr->send_buf.mad)->mgmt_class;
70                 __entry->class_version =
71                         ((struct ib_mad_hdr *)wr->send_buf.mad)->class_version;
72                 __entry->method =
73                         ((struct ib_mad_hdr *)wr->send_buf.mad)->method;
74                 __entry->status =
75                         ((struct ib_mad_hdr *)wr->send_buf.mad)->status;
76                 __entry->class_specific =
77                         ((struct ib_mad_hdr *)wr->send_buf.mad)->class_specific;
78                 __entry->tid = ((struct ib_mad_hdr *)wr->send_buf.mad)->tid;
79                 __entry->attr_id =
80                         ((struct ib_mad_hdr *)wr->send_buf.mad)->attr_id;
81                 __entry->attr_mod =
82                         ((struct ib_mad_hdr *)wr->send_buf.mad)->attr_mod;
83                 create_mad_addr_info(wr, qp_info, __entry);
84         ),
85
86         TP_printk("%d:%d QP%d agent %p: " \
87                   "wrtid 0x%llx; %d/%d retries(%d); timeout %lu length %d : " \
88                   "hdr : base_ver 0x%x class 0x%x class_ver 0x%x " \
89                   "method 0x%x status 0x%x class_specific 0x%x tid 0x%llx " \
90                   "attr_id 0x%x attr_mod 0x%x  => dlid 0x%08x sl %d "\
91                   "rpqn 0x%x rqpkey 0x%x",
92                 __entry->dev_index, __entry->port_num, __entry->qp_num,
93                 __entry->agent_priv, be64_to_cpu(__entry->wrtid),
94                 __entry->retries_left, __entry->max_retries,
95                 __entry->retry, __entry->timeout, __entry->length,
96                 __entry->base_version, __entry->mgmt_class,
97                 __entry->class_version,
98                 __entry->method, be16_to_cpu(__entry->status),
99                 be16_to_cpu(__entry->class_specific),
100                 be64_to_cpu(__entry->tid), be16_to_cpu(__entry->attr_id),
101                 be32_to_cpu(__entry->attr_mod),
102                 be32_to_cpu(__entry->dlid), __entry->sl,
103                 __entry->rqpn, __entry->rqkey
104         )
105 );
106
107 DEFINE_EVENT(ib_mad_send_template, ib_mad_error_handler,
108         TP_PROTO(struct ib_mad_send_wr_private *wr,
109                  struct ib_mad_qp_info *qp_info),
110         TP_ARGS(wr, qp_info));
111 DEFINE_EVENT(ib_mad_send_template, ib_mad_ib_send_mad,
112         TP_PROTO(struct ib_mad_send_wr_private *wr,
113                  struct ib_mad_qp_info *qp_info),
114         TP_ARGS(wr, qp_info));
115 DEFINE_EVENT(ib_mad_send_template, ib_mad_send_done_resend,
116         TP_PROTO(struct ib_mad_send_wr_private *wr,
117                  struct ib_mad_qp_info *qp_info),
118         TP_ARGS(wr, qp_info));
119
120 TRACE_EVENT(ib_mad_send_done_handler,
121         TP_PROTO(struct ib_mad_send_wr_private *wr, struct ib_wc *wc),
122         TP_ARGS(wr, wc),
123
124         TP_STRUCT__entry(
125                 __field(u8,             port_num)
126                 __field(u8,             base_version)
127                 __field(u8,             mgmt_class)
128                 __field(u8,             class_version)
129                 __field(u32,            qp_num)
130                 __field(u64,            wrtid)
131                 __field(u16,            status)
132                 __field(u16,            wc_status)
133                 __field(u32,            length)
134                 __field(void *,         agent_priv)
135                 __field(unsigned long,  timeout)
136                 __field(u32,            dev_index)
137                 __field(int,            retries_left)
138                 __field(int,            max_retries)
139                 __field(int,            retry)
140                 __field(u8,             method)
141         ),
142
143         TP_fast_assign(
144                 __entry->dev_index = wr->mad_agent_priv->agent.device->index;
145                 __entry->port_num = wr->mad_agent_priv->agent.port_num;
146                 __entry->qp_num = wr->mad_agent_priv->qp_info->qp->qp_num;
147                 __entry->agent_priv = wr->mad_agent_priv;
148                 __entry->wrtid = wr->tid;
149                 __entry->max_retries = wr->max_retries;
150                 __entry->retries_left = wr->retries_left;
151                 __entry->retry = wr->retry;
152                 __entry->timeout = wr->timeout;
153                 __entry->base_version =
154                         ((struct ib_mad_hdr *)wr->send_buf.mad)->base_version;
155                 __entry->mgmt_class =
156                         ((struct ib_mad_hdr *)wr->send_buf.mad)->mgmt_class;
157                 __entry->class_version =
158                         ((struct ib_mad_hdr *)wr->send_buf.mad)->class_version;
159                 __entry->method =
160                         ((struct ib_mad_hdr *)wr->send_buf.mad)->method;
161                 __entry->status =
162                         ((struct ib_mad_hdr *)wr->send_buf.mad)->status;
163                 __entry->wc_status = wc->status;
164                 __entry->length = wc->byte_len;
165         ),
166
167         TP_printk("%d:%d QP%d : SEND WC Status %d : agent %p: " \
168                   "wrtid 0x%llx %d/%d retries(%d) timeout %lu length %d: " \
169                   "hdr : base_ver 0x%x class 0x%x class_ver 0x%x " \
170                   "method 0x%x status 0x%x",
171                 __entry->dev_index, __entry->port_num, __entry->qp_num,
172                 __entry->wc_status,
173                 __entry->agent_priv, be64_to_cpu(__entry->wrtid),
174                 __entry->retries_left, __entry->max_retries,
175                 __entry->retry, __entry->timeout,
176                 __entry->length,
177                 __entry->base_version, __entry->mgmt_class,
178                 __entry->class_version, __entry->method,
179                 be16_to_cpu(__entry->status)
180         )
181 );
182
183 TRACE_EVENT(ib_mad_recv_done_handler,
184         TP_PROTO(struct ib_mad_qp_info *qp_info, struct ib_wc *wc,
185                  struct ib_mad_hdr *mad_hdr),
186         TP_ARGS(qp_info, wc, mad_hdr),
187
188         TP_STRUCT__entry(
189                 __field(u8,             base_version)
190                 __field(u8,             mgmt_class)
191                 __field(u8,             class_version)
192                 __field(u8,             port_num)
193                 __field(u32,            qp_num)
194                 __field(u16,            status)
195                 __field(u16,            class_specific)
196                 __field(u32,            length)
197                 __field(u64,            tid)
198                 __field(u8,             method)
199                 __field(u8,             sl)
200                 __field(u16,            attr_id)
201                 __field(u32,            attr_mod)
202                 __field(u16,            src_qp)
203                 __field(u16,            wc_status)
204                 __field(u32,            slid)
205                 __field(u32,            dev_index)
206         ),
207
208         TP_fast_assign(
209                 __entry->dev_index = qp_info->port_priv->device->index;
210                 __entry->port_num = qp_info->port_priv->port_num;
211                 __entry->qp_num = qp_info->qp->qp_num;
212                 __entry->length = wc->byte_len;
213                 __entry->base_version = mad_hdr->base_version;
214                 __entry->mgmt_class = mad_hdr->mgmt_class;
215                 __entry->class_version = mad_hdr->class_version;
216                 __entry->method = mad_hdr->method;
217                 __entry->status = mad_hdr->status;
218                 __entry->class_specific = mad_hdr->class_specific;
219                 __entry->tid = mad_hdr->tid;
220                 __entry->attr_id = mad_hdr->attr_id;
221                 __entry->attr_mod = mad_hdr->attr_mod;
222                 __entry->slid = wc->slid;
223                 __entry->src_qp = wc->src_qp;
224                 __entry->sl = wc->sl;
225                 __entry->wc_status = wc->status;
226         ),
227
228         TP_printk("%d:%d QP%d : RECV WC Status %d : length %d : hdr : " \
229                   "base_ver 0x%02x class 0x%02x class_ver 0x%02x " \
230                   "method 0x%02x status 0x%04x class_specific 0x%04x " \
231                   "tid 0x%016llx attr_id 0x%04x attr_mod 0x%08x " \
232                   "slid 0x%08x src QP%d, sl %d",
233                 __entry->dev_index, __entry->port_num, __entry->qp_num,
234                 __entry->wc_status,
235                 __entry->length,
236                 __entry->base_version, __entry->mgmt_class,
237                 __entry->class_version, __entry->method,
238                 be16_to_cpu(__entry->status),
239                 be16_to_cpu(__entry->class_specific),
240                 be64_to_cpu(__entry->tid), be16_to_cpu(__entry->attr_id),
241                 be32_to_cpu(__entry->attr_mod),
242                 __entry->slid, __entry->src_qp, __entry->sl
243         )
244 );
245
246 DECLARE_EVENT_CLASS(ib_mad_agent_template,
247         TP_PROTO(struct ib_mad_agent_private *agent),
248         TP_ARGS(agent),
249
250         TP_STRUCT__entry(
251                 __field(u32,            dev_index)
252                 __field(u32,            hi_tid)
253                 __field(u8,             port_num)
254                 __field(u8,             mgmt_class)
255                 __field(u8,             mgmt_class_version)
256         ),
257
258         TP_fast_assign(
259                 __entry->dev_index = agent->agent.device->index;
260                 __entry->port_num = agent->agent.port_num;
261                 __entry->hi_tid = agent->agent.hi_tid;
262
263                 if (agent->reg_req) {
264                         __entry->mgmt_class = agent->reg_req->mgmt_class;
265                         __entry->mgmt_class_version =
266                                 agent->reg_req->mgmt_class_version;
267                 } else {
268                         __entry->mgmt_class = 0;
269                         __entry->mgmt_class_version = 0;
270                 }
271         ),
272
273         TP_printk("%d:%d mad agent : hi_tid 0x%08x class 0x%02x class_ver 0x%02x",
274                 __entry->dev_index, __entry->port_num,
275                 __entry->hi_tid, __entry->mgmt_class,
276                 __entry->mgmt_class_version
277         )
278 );
279 DEFINE_EVENT(ib_mad_agent_template, ib_mad_recv_done_agent,
280         TP_PROTO(struct ib_mad_agent_private *agent),
281         TP_ARGS(agent));
282 DEFINE_EVENT(ib_mad_agent_template, ib_mad_send_done_agent,
283         TP_PROTO(struct ib_mad_agent_private *agent),
284         TP_ARGS(agent));
285 DEFINE_EVENT(ib_mad_agent_template, ib_mad_create_agent,
286         TP_PROTO(struct ib_mad_agent_private *agent),
287         TP_ARGS(agent));
288 DEFINE_EVENT(ib_mad_agent_template, ib_mad_unregister_agent,
289         TP_PROTO(struct ib_mad_agent_private *agent),
290         TP_ARGS(agent));
291
292
293
294 DECLARE_EVENT_CLASS(ib_mad_opa_smi_template,
295         TP_PROTO(struct opa_smp *smp),
296         TP_ARGS(smp),
297
298         TP_STRUCT__entry(
299                 __field(u64,            mkey)
300                 __field(u32,            dr_slid)
301                 __field(u32,            dr_dlid)
302                 __field(u8,             hop_ptr)
303                 __field(u8,             hop_cnt)
304                 __array(u8,             initial_path, OPA_SMP_MAX_PATH_HOPS)
305                 __array(u8,             return_path, OPA_SMP_MAX_PATH_HOPS)
306         ),
307
308         TP_fast_assign(
309                 __entry->hop_ptr = smp->hop_ptr;
310                 __entry->hop_cnt = smp->hop_cnt;
311                 __entry->mkey = smp->mkey;
312                 __entry->dr_slid = smp->route.dr.dr_slid;
313                 __entry->dr_dlid = smp->route.dr.dr_dlid;
314                 memcpy(__entry->initial_path, smp->route.dr.initial_path,
315                         OPA_SMP_MAX_PATH_HOPS);
316                 memcpy(__entry->return_path, smp->route.dr.return_path,
317                         OPA_SMP_MAX_PATH_HOPS);
318         ),
319
320         TP_printk("OPA SMP: hop_ptr %d hop_cnt %d " \
321                   "mkey 0x%016llx dr_slid 0x%08x dr_dlid 0x%08x " \
322                   "initial_path %*ph return_path %*ph ",
323                 __entry->hop_ptr, __entry->hop_cnt,
324                 be64_to_cpu(__entry->mkey), be32_to_cpu(__entry->dr_slid),
325                 be32_to_cpu(__entry->dr_dlid),
326                 OPA_SMP_MAX_PATH_HOPS, __entry->initial_path,
327                 OPA_SMP_MAX_PATH_HOPS, __entry->return_path
328         )
329 );
330
331 DEFINE_EVENT(ib_mad_opa_smi_template, ib_mad_handle_opa_smi,
332         TP_PROTO(struct opa_smp *smp),
333         TP_ARGS(smp));
334 DEFINE_EVENT(ib_mad_opa_smi_template, ib_mad_handle_out_opa_smi,
335         TP_PROTO(struct opa_smp *smp),
336         TP_ARGS(smp));
337
338
339 DECLARE_EVENT_CLASS(ib_mad_opa_ib_template,
340         TP_PROTO(struct ib_smp *smp),
341         TP_ARGS(smp),
342
343         TP_STRUCT__entry(
344                 __field(u64,            mkey)
345                 __field(u32,            dr_slid)
346                 __field(u32,            dr_dlid)
347                 __field(u8,             hop_ptr)
348                 __field(u8,             hop_cnt)
349                 __array(u8,             initial_path, IB_SMP_MAX_PATH_HOPS)
350                 __array(u8,             return_path, IB_SMP_MAX_PATH_HOPS)
351         ),
352
353         TP_fast_assign(
354                 __entry->hop_ptr = smp->hop_ptr;
355                 __entry->hop_cnt = smp->hop_cnt;
356                 __entry->mkey = smp->mkey;
357                 __entry->dr_slid = smp->dr_slid;
358                 __entry->dr_dlid = smp->dr_dlid;
359                 memcpy(__entry->initial_path, smp->initial_path,
360                         IB_SMP_MAX_PATH_HOPS);
361                 memcpy(__entry->return_path, smp->return_path,
362                         IB_SMP_MAX_PATH_HOPS);
363         ),
364
365         TP_printk("OPA SMP: hop_ptr %d hop_cnt %d " \
366                   "mkey 0x%016llx dr_slid 0x%04x dr_dlid 0x%04x " \
367                   "initial_path %*ph return_path %*ph ",
368                 __entry->hop_ptr, __entry->hop_cnt,
369                 be64_to_cpu(__entry->mkey), be16_to_cpu(__entry->dr_slid),
370                 be16_to_cpu(__entry->dr_dlid),
371                 IB_SMP_MAX_PATH_HOPS, __entry->initial_path,
372                 IB_SMP_MAX_PATH_HOPS, __entry->return_path
373         )
374 );
375
376 DEFINE_EVENT(ib_mad_opa_ib_template, ib_mad_handle_ib_smi,
377         TP_PROTO(struct ib_smp *smp),
378         TP_ARGS(smp));
379 DEFINE_EVENT(ib_mad_opa_ib_template, ib_mad_handle_out_ib_smi,
380         TP_PROTO(struct ib_smp *smp),
381         TP_ARGS(smp));
382
383 #endif /* _TRACE_IB_MAD_H */
384
385 #include <trace/define_trace.h>