162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci* Copyright(c) 2015, 2016 Intel Corporation. 462306a36Sopenharmony_ci*/ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#if !defined(__HFI1_TRACE_MISC_H) || defined(TRACE_HEADER_MULTI_READ) 762306a36Sopenharmony_ci#define __HFI1_TRACE_MISC_H 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/tracepoint.h> 1062306a36Sopenharmony_ci#include <linux/trace_seq.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include "hfi.h" 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#undef TRACE_SYSTEM 1562306a36Sopenharmony_ci#define TRACE_SYSTEM hfi1_misc 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciTRACE_EVENT(hfi1_interrupt, 1862306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, const struct is_table *is_entry, 1962306a36Sopenharmony_ci int src), 2062306a36Sopenharmony_ci TP_ARGS(dd, is_entry, src), 2162306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 2262306a36Sopenharmony_ci __array(char, buf, 64) 2362306a36Sopenharmony_ci __field(int, src) 2462306a36Sopenharmony_ci ), 2562306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 2662306a36Sopenharmony_ci is_entry->is_name(__entry->buf, 64, 2762306a36Sopenharmony_ci src - is_entry->start); 2862306a36Sopenharmony_ci __entry->src = src; 2962306a36Sopenharmony_ci ), 3062306a36Sopenharmony_ci TP_printk("[%s] source: %s [%d]", __get_str(dev), __entry->buf, 3162306a36Sopenharmony_ci __entry->src) 3262306a36Sopenharmony_ci); 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciDECLARE_EVENT_CLASS( 3562306a36Sopenharmony_ci hfi1_csr_template, 3662306a36Sopenharmony_ci TP_PROTO(void __iomem *addr, u64 value), 3762306a36Sopenharmony_ci TP_ARGS(addr, value), 3862306a36Sopenharmony_ci TP_STRUCT__entry( 3962306a36Sopenharmony_ci __field(void __iomem *, addr) 4062306a36Sopenharmony_ci __field(u64, value) 4162306a36Sopenharmony_ci ), 4262306a36Sopenharmony_ci TP_fast_assign( 4362306a36Sopenharmony_ci __entry->addr = addr; 4462306a36Sopenharmony_ci __entry->value = value; 4562306a36Sopenharmony_ci ), 4662306a36Sopenharmony_ci TP_printk("addr %p value %llx", __entry->addr, __entry->value) 4762306a36Sopenharmony_ci); 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ciDEFINE_EVENT( 5062306a36Sopenharmony_ci hfi1_csr_template, hfi1_write_rcvarray, 5162306a36Sopenharmony_ci TP_PROTO(void __iomem *addr, u64 value), 5262306a36Sopenharmony_ci TP_ARGS(addr, value)); 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#ifdef CONFIG_FAULT_INJECTION 5562306a36Sopenharmony_ciTRACE_EVENT(hfi1_fault_opcode, 5662306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u8 opcode), 5762306a36Sopenharmony_ci TP_ARGS(qp, opcode), 5862306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 5962306a36Sopenharmony_ci __field(u32, qpn) 6062306a36Sopenharmony_ci __field(u8, opcode) 6162306a36Sopenharmony_ci ), 6262306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 6362306a36Sopenharmony_ci __entry->qpn = qp->ibqp.qp_num; 6462306a36Sopenharmony_ci __entry->opcode = opcode; 6562306a36Sopenharmony_ci ), 6662306a36Sopenharmony_ci TP_printk("[%s] qpn 0x%x opcode 0x%x", 6762306a36Sopenharmony_ci __get_str(dev), __entry->qpn, __entry->opcode) 6862306a36Sopenharmony_ci); 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ciTRACE_EVENT(hfi1_fault_packet, 7162306a36Sopenharmony_ci TP_PROTO(struct hfi1_packet *packet), 7262306a36Sopenharmony_ci TP_ARGS(packet), 7362306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(packet->rcd->ppd->dd) 7462306a36Sopenharmony_ci __field(u64, eflags) 7562306a36Sopenharmony_ci __field(u32, ctxt) 7662306a36Sopenharmony_ci __field(u32, hlen) 7762306a36Sopenharmony_ci __field(u32, tlen) 7862306a36Sopenharmony_ci __field(u32, updegr) 7962306a36Sopenharmony_ci __field(u32, etail) 8062306a36Sopenharmony_ci ), 8162306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(packet->rcd->ppd->dd); 8262306a36Sopenharmony_ci __entry->eflags = rhf_err_flags(packet->rhf); 8362306a36Sopenharmony_ci __entry->ctxt = packet->rcd->ctxt; 8462306a36Sopenharmony_ci __entry->hlen = packet->hlen; 8562306a36Sopenharmony_ci __entry->tlen = packet->tlen; 8662306a36Sopenharmony_ci __entry->updegr = packet->updegr; 8762306a36Sopenharmony_ci __entry->etail = rhf_egr_index(packet->rhf); 8862306a36Sopenharmony_ci ), 8962306a36Sopenharmony_ci TP_printk( 9062306a36Sopenharmony_ci "[%s] ctxt %d eflags 0x%llx hlen %d tlen %d updegr %d etail %d", 9162306a36Sopenharmony_ci __get_str(dev), 9262306a36Sopenharmony_ci __entry->ctxt, 9362306a36Sopenharmony_ci __entry->eflags, 9462306a36Sopenharmony_ci __entry->hlen, 9562306a36Sopenharmony_ci __entry->tlen, 9662306a36Sopenharmony_ci __entry->updegr, 9762306a36Sopenharmony_ci __entry->etail 9862306a36Sopenharmony_ci ) 9962306a36Sopenharmony_ci); 10062306a36Sopenharmony_ci#endif 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci#endif /* __HFI1_TRACE_MISC_H */ 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 10562306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE 10662306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH . 10762306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace_misc 10862306a36Sopenharmony_ci#include <trace/define_trace.h> 109