1a131d164SKaike Wan /* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */ 2a131d164SKaike Wan /* 3a131d164SKaike Wan * Copyright(c) 2018 Intel Corporation. 4a131d164SKaike Wan * 5a131d164SKaike Wan */ 6a131d164SKaike Wan #if !defined(__HFI1_TRACE_TID_H) || defined(TRACE_HEADER_MULTI_READ) 7a131d164SKaike Wan #define __HFI1_TRACE_TID_H 8a131d164SKaike Wan 9a131d164SKaike Wan #include <linux/tracepoint.h> 10a131d164SKaike Wan #include <linux/trace_seq.h> 11a131d164SKaike Wan 12a131d164SKaike Wan #include "hfi.h" 13a131d164SKaike Wan 14a131d164SKaike Wan #define tidtype_name(type) { PT_##type, #type } 15a131d164SKaike Wan #define show_tidtype(type) \ 16a131d164SKaike Wan __print_symbolic(type, \ 17a131d164SKaike Wan tidtype_name(EXPECTED), \ 18a131d164SKaike Wan tidtype_name(EAGER), \ 19a131d164SKaike Wan tidtype_name(INVALID)) \ 20a131d164SKaike Wan 21a131d164SKaike Wan #undef TRACE_SYSTEM 22a131d164SKaike Wan #define TRACE_SYSTEM hfi1_tid 23a131d164SKaike Wan 24*84f4a40dSKaike Wan u8 hfi1_trace_get_tid_ctrl(u32 ent); 25*84f4a40dSKaike Wan u16 hfi1_trace_get_tid_len(u32 ent); 26*84f4a40dSKaike Wan u16 hfi1_trace_get_tid_idx(u32 ent); 27*84f4a40dSKaike Wan 28a131d164SKaike Wan #define OPFN_PARAM_PRN "[%s] qpn 0x%x %s OPFN: qp 0x%x, max read %u, " \ 29a131d164SKaike Wan "max write %u, max length %u, jkey 0x%x timeout %u " \ 30a131d164SKaike Wan "urg %u" 31a131d164SKaike Wan 32*84f4a40dSKaike Wan #define TID_FLOW_PRN "[%s] qpn 0x%x flow %d: idx %d resp_ib_psn 0x%x " \ 33*84f4a40dSKaike Wan "generation 0x%x fpsn 0x%x-%x r_next_psn 0x%x " \ 34*84f4a40dSKaike Wan "npagesets %u tnode_cnt %u tidcnt %u length %u" 35*84f4a40dSKaike Wan 36*84f4a40dSKaike Wan #define TID_NODE_PRN "[%s] qpn 0x%x %s idx %u grp base 0x%x map 0x%x " \ 37*84f4a40dSKaike Wan "used %u cnt %u" 38*84f4a40dSKaike Wan 39a131d164SKaike Wan DECLARE_EVENT_CLASS(/* class */ 40a131d164SKaike Wan hfi1_exp_tid_reg_unreg, 41a131d164SKaike Wan TP_PROTO(unsigned int ctxt, u16 subctxt, u32 rarr, u32 npages, 42a131d164SKaike Wan unsigned long va, unsigned long pa, dma_addr_t dma), 43a131d164SKaike Wan TP_ARGS(ctxt, subctxt, rarr, npages, va, pa, dma), 44a131d164SKaike Wan TP_STRUCT__entry(/* entry */ 45a131d164SKaike Wan __field(unsigned int, ctxt) 46a131d164SKaike Wan __field(u16, subctxt) 47a131d164SKaike Wan __field(u32, rarr) 48a131d164SKaike Wan __field(u32, npages) 49a131d164SKaike Wan __field(unsigned long, va) 50a131d164SKaike Wan __field(unsigned long, pa) 51a131d164SKaike Wan __field(dma_addr_t, dma) 52a131d164SKaike Wan ), 53a131d164SKaike Wan TP_fast_assign(/* assign */ 54a131d164SKaike Wan __entry->ctxt = ctxt; 55a131d164SKaike Wan __entry->subctxt = subctxt; 56a131d164SKaike Wan __entry->rarr = rarr; 57a131d164SKaike Wan __entry->npages = npages; 58a131d164SKaike Wan __entry->va = va; 59a131d164SKaike Wan __entry->pa = pa; 60a131d164SKaike Wan __entry->dma = dma; 61a131d164SKaike Wan ), 62a131d164SKaike Wan TP_printk("[%u:%u] entry:%u, %u pages @ 0x%lx, va:0x%lx dma:0x%llx", 63a131d164SKaike Wan __entry->ctxt, 64a131d164SKaike Wan __entry->subctxt, 65a131d164SKaike Wan __entry->rarr, 66a131d164SKaike Wan __entry->npages, 67a131d164SKaike Wan __entry->pa, 68a131d164SKaike Wan __entry->va, 69a131d164SKaike Wan __entry->dma 70a131d164SKaike Wan ) 71a131d164SKaike Wan ); 72a131d164SKaike Wan 73a131d164SKaike Wan DEFINE_EVENT(/* exp_tid_unreg */ 74a131d164SKaike Wan hfi1_exp_tid_reg_unreg, hfi1_exp_tid_unreg, 75a131d164SKaike Wan TP_PROTO(unsigned int ctxt, u16 subctxt, u32 rarr, u32 npages, 76a131d164SKaike Wan unsigned long va, unsigned long pa, dma_addr_t dma), 77a131d164SKaike Wan TP_ARGS(ctxt, subctxt, rarr, npages, va, pa, dma) 78a131d164SKaike Wan ); 79a131d164SKaike Wan 80a131d164SKaike Wan DEFINE_EVENT(/* exp_tid_reg */ 81a131d164SKaike Wan hfi1_exp_tid_reg_unreg, hfi1_exp_tid_reg, 82a131d164SKaike Wan TP_PROTO(unsigned int ctxt, u16 subctxt, u32 rarr, u32 npages, 83a131d164SKaike Wan unsigned long va, unsigned long pa, dma_addr_t dma), 84a131d164SKaike Wan TP_ARGS(ctxt, subctxt, rarr, npages, va, pa, dma) 85a131d164SKaike Wan ); 86a131d164SKaike Wan 87a131d164SKaike Wan TRACE_EVENT(/* put_tid */ 88a131d164SKaike Wan hfi1_put_tid, 89a131d164SKaike Wan TP_PROTO(struct hfi1_devdata *dd, 90a131d164SKaike Wan u32 index, u32 type, unsigned long pa, u16 order), 91a131d164SKaike Wan TP_ARGS(dd, index, type, pa, order), 92a131d164SKaike Wan TP_STRUCT__entry(/* entry */ 93a131d164SKaike Wan DD_DEV_ENTRY(dd) 94a131d164SKaike Wan __field(unsigned long, pa); 95a131d164SKaike Wan __field(u32, index); 96a131d164SKaike Wan __field(u32, type); 97a131d164SKaike Wan __field(u16, order); 98a131d164SKaike Wan ), 99a131d164SKaike Wan TP_fast_assign(/* assign */ 100a131d164SKaike Wan DD_DEV_ASSIGN(dd); 101a131d164SKaike Wan __entry->pa = pa; 102a131d164SKaike Wan __entry->index = index; 103a131d164SKaike Wan __entry->type = type; 104a131d164SKaike Wan __entry->order = order; 105a131d164SKaike Wan ), 106a131d164SKaike Wan TP_printk("[%s] type %s pa %lx index %u order %u", 107a131d164SKaike Wan __get_str(dev), 108a131d164SKaike Wan show_tidtype(__entry->type), 109a131d164SKaike Wan __entry->pa, 110a131d164SKaike Wan __entry->index, 111a131d164SKaike Wan __entry->order 112a131d164SKaike Wan ) 113a131d164SKaike Wan ); 114a131d164SKaike Wan 115a131d164SKaike Wan TRACE_EVENT(/* exp_tid_inval */ 116a131d164SKaike Wan hfi1_exp_tid_inval, 117a131d164SKaike Wan TP_PROTO(unsigned int ctxt, u16 subctxt, unsigned long va, u32 rarr, 118a131d164SKaike Wan u32 npages, dma_addr_t dma), 119a131d164SKaike Wan TP_ARGS(ctxt, subctxt, va, rarr, npages, dma), 120a131d164SKaike Wan TP_STRUCT__entry(/* entry */ 121a131d164SKaike Wan __field(unsigned int, ctxt) 122a131d164SKaike Wan __field(u16, subctxt) 123a131d164SKaike Wan __field(unsigned long, va) 124a131d164SKaike Wan __field(u32, rarr) 125a131d164SKaike Wan __field(u32, npages) 126a131d164SKaike Wan __field(dma_addr_t, dma) 127a131d164SKaike Wan ), 128a131d164SKaike Wan TP_fast_assign(/* assign */ 129a131d164SKaike Wan __entry->ctxt = ctxt; 130a131d164SKaike Wan __entry->subctxt = subctxt; 131a131d164SKaike Wan __entry->va = va; 132a131d164SKaike Wan __entry->rarr = rarr; 133a131d164SKaike Wan __entry->npages = npages; 134a131d164SKaike Wan __entry->dma = dma; 135a131d164SKaike Wan ), 136a131d164SKaike Wan TP_printk("[%u:%u] entry:%u, %u pages @ 0x%lx dma: 0x%llx", 137a131d164SKaike Wan __entry->ctxt, 138a131d164SKaike Wan __entry->subctxt, 139a131d164SKaike Wan __entry->rarr, 140a131d164SKaike Wan __entry->npages, 141a131d164SKaike Wan __entry->va, 142a131d164SKaike Wan __entry->dma 143a131d164SKaike Wan ) 144a131d164SKaike Wan ); 145a131d164SKaike Wan 146a131d164SKaike Wan DECLARE_EVENT_CLASS(/* opfn_state */ 147a131d164SKaike Wan hfi1_opfn_state_template, 148a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp), 149a131d164SKaike Wan TP_ARGS(qp), 150a131d164SKaike Wan TP_STRUCT__entry(/* entry */ 151a131d164SKaike Wan DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 152a131d164SKaike Wan __field(u32, qpn) 153a131d164SKaike Wan __field(u16, requested) 154a131d164SKaike Wan __field(u16, completed) 155a131d164SKaike Wan __field(u8, curr) 156a131d164SKaike Wan ), 157a131d164SKaike Wan TP_fast_assign(/* assign */ 158a131d164SKaike Wan struct hfi1_qp_priv *priv = qp->priv; 159a131d164SKaike Wan 160a131d164SKaike Wan DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 161a131d164SKaike Wan __entry->qpn = qp->ibqp.qp_num; 162a131d164SKaike Wan __entry->requested = priv->opfn.requested; 163a131d164SKaike Wan __entry->completed = priv->opfn.completed; 164a131d164SKaike Wan __entry->curr = priv->opfn.curr; 165a131d164SKaike Wan ), 166a131d164SKaike Wan TP_printk(/* print */ 167a131d164SKaike Wan "[%s] qpn 0x%x requested 0x%x completed 0x%x curr 0x%x", 168a131d164SKaike Wan __get_str(dev), 169a131d164SKaike Wan __entry->qpn, 170a131d164SKaike Wan __entry->requested, 171a131d164SKaike Wan __entry->completed, 172a131d164SKaike Wan __entry->curr 173a131d164SKaike Wan ) 174a131d164SKaike Wan ); 175a131d164SKaike Wan 176a131d164SKaike Wan DEFINE_EVENT(/* event */ 177a131d164SKaike Wan hfi1_opfn_state_template, hfi1_opfn_state_conn_request, 178a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp), 179a131d164SKaike Wan TP_ARGS(qp) 180a131d164SKaike Wan ); 181a131d164SKaike Wan 182a131d164SKaike Wan DEFINE_EVENT(/* event */ 183a131d164SKaike Wan hfi1_opfn_state_template, hfi1_opfn_state_sched_conn_request, 184a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp), 185a131d164SKaike Wan TP_ARGS(qp) 186a131d164SKaike Wan ); 187a131d164SKaike Wan 188a131d164SKaike Wan DEFINE_EVENT(/* event */ 189a131d164SKaike Wan hfi1_opfn_state_template, hfi1_opfn_state_conn_response, 190a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp), 191a131d164SKaike Wan TP_ARGS(qp) 192a131d164SKaike Wan ); 193a131d164SKaike Wan 194a131d164SKaike Wan DEFINE_EVENT(/* event */ 195a131d164SKaike Wan hfi1_opfn_state_template, hfi1_opfn_state_conn_reply, 196a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp), 197a131d164SKaike Wan TP_ARGS(qp) 198a131d164SKaike Wan ); 199a131d164SKaike Wan 200a131d164SKaike Wan DEFINE_EVENT(/* event */ 201a131d164SKaike Wan hfi1_opfn_state_template, hfi1_opfn_state_conn_error, 202a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp), 203a131d164SKaike Wan TP_ARGS(qp) 204a131d164SKaike Wan ); 205a131d164SKaike Wan 206a131d164SKaike Wan DECLARE_EVENT_CLASS(/* opfn_data */ 207a131d164SKaike Wan hfi1_opfn_data_template, 208a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp, u8 capcode, u64 data), 209a131d164SKaike Wan TP_ARGS(qp, capcode, data), 210a131d164SKaike Wan TP_STRUCT__entry(/* entry */ 211a131d164SKaike Wan DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 212a131d164SKaike Wan __field(u32, qpn) 213a131d164SKaike Wan __field(u32, state) 214a131d164SKaike Wan __field(u8, capcode) 215a131d164SKaike Wan __field(u64, data) 216a131d164SKaike Wan ), 217a131d164SKaike Wan TP_fast_assign(/* assign */ 218a131d164SKaike Wan DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 219a131d164SKaike Wan __entry->qpn = qp->ibqp.qp_num; 220a131d164SKaike Wan __entry->state = qp->state; 221a131d164SKaike Wan __entry->capcode = capcode; 222a131d164SKaike Wan __entry->data = data; 223a131d164SKaike Wan ), 224a131d164SKaike Wan TP_printk(/* printk */ 225a131d164SKaike Wan "[%s] qpn 0x%x (state 0x%x) Capcode %u data 0x%llx", 226a131d164SKaike Wan __get_str(dev), 227a131d164SKaike Wan __entry->qpn, 228a131d164SKaike Wan __entry->state, 229a131d164SKaike Wan __entry->capcode, 230a131d164SKaike Wan __entry->data 231a131d164SKaike Wan ) 232a131d164SKaike Wan ); 233a131d164SKaike Wan 234a131d164SKaike Wan DEFINE_EVENT(/* event */ 235a131d164SKaike Wan hfi1_opfn_data_template, hfi1_opfn_data_conn_request, 236a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp, u8 capcode, u64 data), 237a131d164SKaike Wan TP_ARGS(qp, capcode, data) 238a131d164SKaike Wan ); 239a131d164SKaike Wan 240a131d164SKaike Wan DEFINE_EVENT(/* event */ 241a131d164SKaike Wan hfi1_opfn_data_template, hfi1_opfn_data_conn_response, 242a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp, u8 capcode, u64 data), 243a131d164SKaike Wan TP_ARGS(qp, capcode, data) 244a131d164SKaike Wan ); 245a131d164SKaike Wan 246a131d164SKaike Wan DEFINE_EVENT(/* event */ 247a131d164SKaike Wan hfi1_opfn_data_template, hfi1_opfn_data_conn_reply, 248a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp, u8 capcode, u64 data), 249a131d164SKaike Wan TP_ARGS(qp, capcode, data) 250a131d164SKaike Wan ); 251a131d164SKaike Wan 252a131d164SKaike Wan DECLARE_EVENT_CLASS(/* opfn_param */ 253a131d164SKaike Wan hfi1_opfn_param_template, 254a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp, char remote, 255a131d164SKaike Wan struct tid_rdma_params *param), 256a131d164SKaike Wan TP_ARGS(qp, remote, param), 257a131d164SKaike Wan TP_STRUCT__entry(/* entry */ 258a131d164SKaike Wan DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 259a131d164SKaike Wan __field(u32, qpn) 260a131d164SKaike Wan __field(char, remote) 261a131d164SKaike Wan __field(u32, param_qp) 262a131d164SKaike Wan __field(u32, max_len) 263a131d164SKaike Wan __field(u16, jkey) 264a131d164SKaike Wan __field(u8, max_read) 265a131d164SKaike Wan __field(u8, max_write) 266a131d164SKaike Wan __field(u8, timeout) 267a131d164SKaike Wan __field(u8, urg) 268a131d164SKaike Wan ), 269a131d164SKaike Wan TP_fast_assign(/* assign */ 270a131d164SKaike Wan DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 271a131d164SKaike Wan __entry->qpn = qp->ibqp.qp_num; 272a131d164SKaike Wan __entry->remote = remote; 273a131d164SKaike Wan __entry->param_qp = param->qp; 274a131d164SKaike Wan __entry->max_len = param->max_len; 275a131d164SKaike Wan __entry->jkey = param->jkey; 276a131d164SKaike Wan __entry->max_read = param->max_read; 277a131d164SKaike Wan __entry->max_write = param->max_write; 278a131d164SKaike Wan __entry->timeout = param->timeout; 279a131d164SKaike Wan __entry->urg = param->urg; 280a131d164SKaike Wan ), 281a131d164SKaike Wan TP_printk(/* print */ 282a131d164SKaike Wan OPFN_PARAM_PRN, 283a131d164SKaike Wan __get_str(dev), 284a131d164SKaike Wan __entry->qpn, 285a131d164SKaike Wan __entry->remote ? "remote" : "local", 286a131d164SKaike Wan __entry->param_qp, 287a131d164SKaike Wan __entry->max_read, 288a131d164SKaike Wan __entry->max_write, 289a131d164SKaike Wan __entry->max_len, 290a131d164SKaike Wan __entry->jkey, 291a131d164SKaike Wan __entry->timeout, 292a131d164SKaike Wan __entry->urg 293a131d164SKaike Wan ) 294a131d164SKaike Wan ); 295a131d164SKaike Wan 296a131d164SKaike Wan DEFINE_EVENT(/* event */ 297a131d164SKaike Wan hfi1_opfn_param_template, hfi1_opfn_param, 298a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp, char remote, 299a131d164SKaike Wan struct tid_rdma_params *param), 300a131d164SKaike Wan TP_ARGS(qp, remote, param) 301a131d164SKaike Wan ); 302a131d164SKaike Wan 303a131d164SKaike Wan DECLARE_EVENT_CLASS(/* msg */ 304a131d164SKaike Wan hfi1_msg_template, 305a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 306a131d164SKaike Wan TP_ARGS(qp, msg, more), 307a131d164SKaike Wan TP_STRUCT__entry(/* entry */ 308a131d164SKaike Wan __field(u32, qpn) 309a131d164SKaike Wan __string(msg, msg) 310a131d164SKaike Wan __field(u64, more) 311a131d164SKaike Wan ), 312a131d164SKaike Wan TP_fast_assign(/* assign */ 313a131d164SKaike Wan __entry->qpn = qp ? qp->ibqp.qp_num : 0; 314a131d164SKaike Wan __assign_str(msg, msg); 315a131d164SKaike Wan __entry->more = more; 316a131d164SKaike Wan ), 317a131d164SKaike Wan TP_printk(/* print */ 318a131d164SKaike Wan "qpn 0x%x %s 0x%llx", 319a131d164SKaike Wan __entry->qpn, 320a131d164SKaike Wan __get_str(msg), 321a131d164SKaike Wan __entry->more 322a131d164SKaike Wan ) 323a131d164SKaike Wan ); 324a131d164SKaike Wan 325a131d164SKaike Wan DEFINE_EVENT(/* event */ 326a131d164SKaike Wan hfi1_msg_template, hfi1_msg_opfn_conn_request, 327a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 328a131d164SKaike Wan TP_ARGS(qp, msg, more) 329a131d164SKaike Wan ); 330a131d164SKaike Wan 331a131d164SKaike Wan DEFINE_EVENT(/* event */ 332a131d164SKaike Wan hfi1_msg_template, hfi1_msg_opfn_conn_error, 333a131d164SKaike Wan TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 334a131d164SKaike Wan TP_ARGS(qp, msg, more) 335a131d164SKaike Wan ); 336a131d164SKaike Wan 337*84f4a40dSKaike Wan DEFINE_EVENT(/* event */ 338*84f4a40dSKaike Wan hfi1_msg_template, hfi1_msg_alloc_tids, 339*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 340*84f4a40dSKaike Wan TP_ARGS(qp, msg, more) 341*84f4a40dSKaike Wan ); 342*84f4a40dSKaike Wan 343*84f4a40dSKaike Wan DECLARE_EVENT_CLASS(/* tid_flow_page */ 344*84f4a40dSKaike Wan hfi1_tid_flow_page_template, 345*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, struct tid_rdma_flow *flow, u32 index, 346*84f4a40dSKaike Wan char mtu8k, char v1, void *vaddr), 347*84f4a40dSKaike Wan TP_ARGS(qp, flow, index, mtu8k, v1, vaddr), 348*84f4a40dSKaike Wan TP_STRUCT__entry(/* entry */ 349*84f4a40dSKaike Wan DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 350*84f4a40dSKaike Wan __field(u32, qpn) 351*84f4a40dSKaike Wan __field(char, mtu8k) 352*84f4a40dSKaike Wan __field(char, v1) 353*84f4a40dSKaike Wan __field(u32, index) 354*84f4a40dSKaike Wan __field(u64, page) 355*84f4a40dSKaike Wan __field(u64, vaddr) 356*84f4a40dSKaike Wan ), 357*84f4a40dSKaike Wan TP_fast_assign(/* assign */ 358*84f4a40dSKaike Wan DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 359*84f4a40dSKaike Wan __entry->qpn = qp->ibqp.qp_num; 360*84f4a40dSKaike Wan __entry->mtu8k = mtu8k; 361*84f4a40dSKaike Wan __entry->v1 = v1; 362*84f4a40dSKaike Wan __entry->index = index; 363*84f4a40dSKaike Wan __entry->page = vaddr ? (u64)virt_to_page(vaddr) : 0ULL; 364*84f4a40dSKaike Wan __entry->vaddr = (u64)vaddr; 365*84f4a40dSKaike Wan ), 366*84f4a40dSKaike Wan TP_printk(/* print */ 367*84f4a40dSKaike Wan "[%s] qpn 0x%x page[%u]: page 0x%llx %s 0x%llx", 368*84f4a40dSKaike Wan __get_str(dev), 369*84f4a40dSKaike Wan __entry->qpn, 370*84f4a40dSKaike Wan __entry->index, 371*84f4a40dSKaike Wan __entry->page, 372*84f4a40dSKaike Wan __entry->mtu8k ? (__entry->v1 ? "v1" : "v0") : "vaddr", 373*84f4a40dSKaike Wan __entry->vaddr 374*84f4a40dSKaike Wan ) 375*84f4a40dSKaike Wan ); 376*84f4a40dSKaike Wan 377*84f4a40dSKaike Wan DEFINE_EVENT(/* event */ 378*84f4a40dSKaike Wan hfi1_tid_flow_page_template, hfi1_tid_flow_page, 379*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, struct tid_rdma_flow *flow, u32 index, 380*84f4a40dSKaike Wan char mtu8k, char v1, void *vaddr), 381*84f4a40dSKaike Wan TP_ARGS(qp, flow, index, mtu8k, v1, vaddr) 382*84f4a40dSKaike Wan ); 383*84f4a40dSKaike Wan 384*84f4a40dSKaike Wan DECLARE_EVENT_CLASS(/* tid_pageset */ 385*84f4a40dSKaike Wan hfi1_tid_pageset_template, 386*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, u32 index, u16 idx, u16 count), 387*84f4a40dSKaike Wan TP_ARGS(qp, index, idx, count), 388*84f4a40dSKaike Wan TP_STRUCT__entry(/* entry */ 389*84f4a40dSKaike Wan DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 390*84f4a40dSKaike Wan __field(u32, qpn) 391*84f4a40dSKaike Wan __field(u32, index) 392*84f4a40dSKaike Wan __field(u16, idx) 393*84f4a40dSKaike Wan __field(u16, count) 394*84f4a40dSKaike Wan ), 395*84f4a40dSKaike Wan TP_fast_assign(/* assign */ 396*84f4a40dSKaike Wan DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 397*84f4a40dSKaike Wan __entry->qpn = qp->ibqp.qp_num; 398*84f4a40dSKaike Wan __entry->index = index; 399*84f4a40dSKaike Wan __entry->idx = idx; 400*84f4a40dSKaike Wan __entry->count = count; 401*84f4a40dSKaike Wan ), 402*84f4a40dSKaike Wan TP_printk(/* print */ 403*84f4a40dSKaike Wan "[%s] qpn 0x%x list[%u]: idx %u count %u", 404*84f4a40dSKaike Wan __get_str(dev), 405*84f4a40dSKaike Wan __entry->qpn, 406*84f4a40dSKaike Wan __entry->index, 407*84f4a40dSKaike Wan __entry->idx, 408*84f4a40dSKaike Wan __entry->count 409*84f4a40dSKaike Wan ) 410*84f4a40dSKaike Wan ); 411*84f4a40dSKaike Wan 412*84f4a40dSKaike Wan DEFINE_EVENT(/* event */ 413*84f4a40dSKaike Wan hfi1_tid_pageset_template, hfi1_tid_pageset, 414*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, u32 index, u16 idx, u16 count), 415*84f4a40dSKaike Wan TP_ARGS(qp, index, idx, count) 416*84f4a40dSKaike Wan ); 417*84f4a40dSKaike Wan 418*84f4a40dSKaike Wan DECLARE_EVENT_CLASS(/* tid_fow */ 419*84f4a40dSKaike Wan hfi1_tid_flow_template, 420*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 421*84f4a40dSKaike Wan TP_ARGS(qp, index, flow), 422*84f4a40dSKaike Wan TP_STRUCT__entry(/* entry */ 423*84f4a40dSKaike Wan DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 424*84f4a40dSKaike Wan __field(u32, qpn) 425*84f4a40dSKaike Wan __field(int, index) 426*84f4a40dSKaike Wan __field(int, idx) 427*84f4a40dSKaike Wan __field(u32, resp_ib_psn) 428*84f4a40dSKaike Wan __field(u32, generation) 429*84f4a40dSKaike Wan __field(u32, fspsn) 430*84f4a40dSKaike Wan __field(u32, flpsn) 431*84f4a40dSKaike Wan __field(u32, r_next_psn) 432*84f4a40dSKaike Wan __field(u32, npagesets) 433*84f4a40dSKaike Wan __field(u32, tnode_cnt) 434*84f4a40dSKaike Wan __field(u32, tidcnt) 435*84f4a40dSKaike Wan __field(u32, length) 436*84f4a40dSKaike Wan ), 437*84f4a40dSKaike Wan TP_fast_assign(/* assign */ 438*84f4a40dSKaike Wan DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 439*84f4a40dSKaike Wan __entry->qpn = qp->ibqp.qp_num; 440*84f4a40dSKaike Wan __entry->index = index; 441*84f4a40dSKaike Wan __entry->idx = flow->idx; 442*84f4a40dSKaike Wan __entry->resp_ib_psn = flow->flow_state.resp_ib_psn; 443*84f4a40dSKaike Wan __entry->generation = flow->flow_state.generation; 444*84f4a40dSKaike Wan __entry->fspsn = full_flow_psn(flow, 445*84f4a40dSKaike Wan flow->flow_state.spsn); 446*84f4a40dSKaike Wan __entry->flpsn = full_flow_psn(flow, 447*84f4a40dSKaike Wan flow->flow_state.lpsn); 448*84f4a40dSKaike Wan __entry->r_next_psn = flow->flow_state.r_next_psn; 449*84f4a40dSKaike Wan __entry->npagesets = flow->npagesets; 450*84f4a40dSKaike Wan __entry->tnode_cnt = flow->tnode_cnt; 451*84f4a40dSKaike Wan __entry->tidcnt = flow->tidcnt; 452*84f4a40dSKaike Wan __entry->length = flow->length; 453*84f4a40dSKaike Wan ), 454*84f4a40dSKaike Wan TP_printk(/* print */ 455*84f4a40dSKaike Wan TID_FLOW_PRN, 456*84f4a40dSKaike Wan __get_str(dev), 457*84f4a40dSKaike Wan __entry->qpn, 458*84f4a40dSKaike Wan __entry->index, 459*84f4a40dSKaike Wan __entry->idx, 460*84f4a40dSKaike Wan __entry->resp_ib_psn, 461*84f4a40dSKaike Wan __entry->generation, 462*84f4a40dSKaike Wan __entry->fspsn, 463*84f4a40dSKaike Wan __entry->flpsn, 464*84f4a40dSKaike Wan __entry->r_next_psn, 465*84f4a40dSKaike Wan __entry->npagesets, 466*84f4a40dSKaike Wan __entry->tnode_cnt, 467*84f4a40dSKaike Wan __entry->tidcnt, 468*84f4a40dSKaike Wan __entry->length 469*84f4a40dSKaike Wan ) 470*84f4a40dSKaike Wan ); 471*84f4a40dSKaike Wan 472*84f4a40dSKaike Wan DEFINE_EVENT(/* event */ 473*84f4a40dSKaike Wan hfi1_tid_flow_template, hfi1_tid_flow_alloc, 474*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 475*84f4a40dSKaike Wan TP_ARGS(qp, index, flow) 476*84f4a40dSKaike Wan ); 477*84f4a40dSKaike Wan 478*84f4a40dSKaike Wan DECLARE_EVENT_CLASS(/* tid_node */ 479*84f4a40dSKaike Wan hfi1_tid_node_template, 480*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, const char *msg, u32 index, u32 base, 481*84f4a40dSKaike Wan u8 map, u8 used, u8 cnt), 482*84f4a40dSKaike Wan TP_ARGS(qp, msg, index, base, map, used, cnt), 483*84f4a40dSKaike Wan TP_STRUCT__entry(/* entry */ 484*84f4a40dSKaike Wan DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 485*84f4a40dSKaike Wan __field(u32, qpn) 486*84f4a40dSKaike Wan __string(msg, msg) 487*84f4a40dSKaike Wan __field(u32, index) 488*84f4a40dSKaike Wan __field(u32, base) 489*84f4a40dSKaike Wan __field(u8, map) 490*84f4a40dSKaike Wan __field(u8, used) 491*84f4a40dSKaike Wan __field(u8, cnt) 492*84f4a40dSKaike Wan ), 493*84f4a40dSKaike Wan TP_fast_assign(/* assign */ 494*84f4a40dSKaike Wan DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 495*84f4a40dSKaike Wan __entry->qpn = qp->ibqp.qp_num; 496*84f4a40dSKaike Wan __assign_str(msg, msg); 497*84f4a40dSKaike Wan __entry->index = index; 498*84f4a40dSKaike Wan __entry->base = base; 499*84f4a40dSKaike Wan __entry->map = map; 500*84f4a40dSKaike Wan __entry->used = used; 501*84f4a40dSKaike Wan __entry->cnt = cnt; 502*84f4a40dSKaike Wan ), 503*84f4a40dSKaike Wan TP_printk(/* print */ 504*84f4a40dSKaike Wan TID_NODE_PRN, 505*84f4a40dSKaike Wan __get_str(dev), 506*84f4a40dSKaike Wan __entry->qpn, 507*84f4a40dSKaike Wan __get_str(msg), 508*84f4a40dSKaike Wan __entry->index, 509*84f4a40dSKaike Wan __entry->base, 510*84f4a40dSKaike Wan __entry->map, 511*84f4a40dSKaike Wan __entry->used, 512*84f4a40dSKaike Wan __entry->cnt 513*84f4a40dSKaike Wan ) 514*84f4a40dSKaike Wan ); 515*84f4a40dSKaike Wan 516*84f4a40dSKaike Wan DEFINE_EVENT(/* event */ 517*84f4a40dSKaike Wan hfi1_tid_node_template, hfi1_tid_node_add, 518*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, const char *msg, u32 index, u32 base, 519*84f4a40dSKaike Wan u8 map, u8 used, u8 cnt), 520*84f4a40dSKaike Wan TP_ARGS(qp, msg, index, base, map, used, cnt) 521*84f4a40dSKaike Wan ); 522*84f4a40dSKaike Wan 523*84f4a40dSKaike Wan DECLARE_EVENT_CLASS(/* tid_entry */ 524*84f4a40dSKaike Wan hfi1_tid_entry_template, 525*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, int index, u32 ent), 526*84f4a40dSKaike Wan TP_ARGS(qp, index, ent), 527*84f4a40dSKaike Wan TP_STRUCT__entry(/* entry */ 528*84f4a40dSKaike Wan DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 529*84f4a40dSKaike Wan __field(u32, qpn) 530*84f4a40dSKaike Wan __field(int, index) 531*84f4a40dSKaike Wan __field(u8, ctrl) 532*84f4a40dSKaike Wan __field(u16, idx) 533*84f4a40dSKaike Wan __field(u16, len) 534*84f4a40dSKaike Wan ), 535*84f4a40dSKaike Wan TP_fast_assign(/* assign */ 536*84f4a40dSKaike Wan DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 537*84f4a40dSKaike Wan __entry->qpn = qp->ibqp.qp_num; 538*84f4a40dSKaike Wan __entry->index = index; 539*84f4a40dSKaike Wan __entry->ctrl = hfi1_trace_get_tid_ctrl(ent); 540*84f4a40dSKaike Wan __entry->idx = hfi1_trace_get_tid_idx(ent); 541*84f4a40dSKaike Wan __entry->len = hfi1_trace_get_tid_len(ent); 542*84f4a40dSKaike Wan ), 543*84f4a40dSKaike Wan TP_printk(/* print */ 544*84f4a40dSKaike Wan "[%s] qpn 0x%x TID entry %d: idx %u len %u ctrl 0x%x", 545*84f4a40dSKaike Wan __get_str(dev), 546*84f4a40dSKaike Wan __entry->qpn, 547*84f4a40dSKaike Wan __entry->index, 548*84f4a40dSKaike Wan __entry->idx, 549*84f4a40dSKaike Wan __entry->len, 550*84f4a40dSKaike Wan __entry->ctrl 551*84f4a40dSKaike Wan ) 552*84f4a40dSKaike Wan ); 553*84f4a40dSKaike Wan 554*84f4a40dSKaike Wan DEFINE_EVENT(/* event */ 555*84f4a40dSKaike Wan hfi1_tid_entry_template, hfi1_tid_entry_alloc, 556*84f4a40dSKaike Wan TP_PROTO(struct rvt_qp *qp, int index, u32 entry), 557*84f4a40dSKaike Wan TP_ARGS(qp, index, entry) 558*84f4a40dSKaike Wan ); 559*84f4a40dSKaike Wan 560a131d164SKaike Wan #endif /* __HFI1_TRACE_TID_H */ 561a131d164SKaike Wan 562a131d164SKaike Wan #undef TRACE_INCLUDE_PATH 563a131d164SKaike Wan #undef TRACE_INCLUDE_FILE 564a131d164SKaike Wan #define TRACE_INCLUDE_PATH . 565a131d164SKaike Wan #define TRACE_INCLUDE_FILE trace_tid 566a131d164SKaike Wan #include <trace/define_trace.h> 567