18c2ecf20Sopenharmony_ci/* 28c2ecf20Sopenharmony_ci * Copyright(c) 2015 - 2017 Intel Corporation. 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * This file is provided under a dual BSD/GPLv2 license. When using or 58c2ecf20Sopenharmony_ci * redistributing this file, you may do so under either license. 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * GPL LICENSE SUMMARY 88c2ecf20Sopenharmony_ci * 98c2ecf20Sopenharmony_ci * This program is free software; you can redistribute it and/or modify 108c2ecf20Sopenharmony_ci * it under the terms of version 2 of the GNU General Public License as 118c2ecf20Sopenharmony_ci * published by the Free Software Foundation. 128c2ecf20Sopenharmony_ci * 138c2ecf20Sopenharmony_ci * This program is distributed in the hope that it will be useful, but 148c2ecf20Sopenharmony_ci * WITHOUT ANY WARRANTY; without even the implied warranty of 158c2ecf20Sopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 168c2ecf20Sopenharmony_ci * General Public License for more details. 178c2ecf20Sopenharmony_ci * 188c2ecf20Sopenharmony_ci * BSD LICENSE 198c2ecf20Sopenharmony_ci * 208c2ecf20Sopenharmony_ci * Redistribution and use in source and binary forms, with or without 218c2ecf20Sopenharmony_ci * modification, are permitted provided that the following conditions 228c2ecf20Sopenharmony_ci * are met: 238c2ecf20Sopenharmony_ci * 248c2ecf20Sopenharmony_ci * - Redistributions of source code must retain the above copyright 258c2ecf20Sopenharmony_ci * notice, this list of conditions and the following disclaimer. 268c2ecf20Sopenharmony_ci * - Redistributions in binary form must reproduce the above copyright 278c2ecf20Sopenharmony_ci * notice, this list of conditions and the following disclaimer in 288c2ecf20Sopenharmony_ci * the documentation and/or other materials provided with the 298c2ecf20Sopenharmony_ci * distribution. 308c2ecf20Sopenharmony_ci * - Neither the name of Intel Corporation nor the names of its 318c2ecf20Sopenharmony_ci * contributors may be used to endorse or promote products derived 328c2ecf20Sopenharmony_ci * from this software without specific prior written permission. 338c2ecf20Sopenharmony_ci * 348c2ecf20Sopenharmony_ci * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 358c2ecf20Sopenharmony_ci * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 368c2ecf20Sopenharmony_ci * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 378c2ecf20Sopenharmony_ci * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 388c2ecf20Sopenharmony_ci * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 398c2ecf20Sopenharmony_ci * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 408c2ecf20Sopenharmony_ci * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 418c2ecf20Sopenharmony_ci * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 428c2ecf20Sopenharmony_ci * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 438c2ecf20Sopenharmony_ci * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 448c2ecf20Sopenharmony_ci * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 458c2ecf20Sopenharmony_ci * 468c2ecf20Sopenharmony_ci */ 478c2ecf20Sopenharmony_ci#if !defined(__HFI1_TRACE_TX_H) || defined(TRACE_HEADER_MULTI_READ) 488c2ecf20Sopenharmony_ci#define __HFI1_TRACE_TX_H 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci#include <linux/tracepoint.h> 518c2ecf20Sopenharmony_ci#include <linux/trace_seq.h> 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci#include "hfi.h" 548c2ecf20Sopenharmony_ci#include "mad.h" 558c2ecf20Sopenharmony_ci#include "sdma.h" 568c2ecf20Sopenharmony_ci#include "ipoib.h" 578c2ecf20Sopenharmony_ci#include "user_sdma.h" 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ciconst char *parse_sdma_flags(struct trace_seq *p, u64 desc0, u64 desc1); 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci#define __parse_sdma_flags(desc0, desc1) parse_sdma_flags(p, desc0, desc1) 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci#undef TRACE_SYSTEM 648c2ecf20Sopenharmony_ci#define TRACE_SYSTEM hfi1_tx 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_piofree, 678c2ecf20Sopenharmony_ci TP_PROTO(struct send_context *sc, int extra), 688c2ecf20Sopenharmony_ci TP_ARGS(sc, extra), 698c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sc->dd) 708c2ecf20Sopenharmony_ci __field(u32, sw_index) 718c2ecf20Sopenharmony_ci __field(u32, hw_context) 728c2ecf20Sopenharmony_ci __field(int, extra) 738c2ecf20Sopenharmony_ci ), 748c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sc->dd); 758c2ecf20Sopenharmony_ci __entry->sw_index = sc->sw_index; 768c2ecf20Sopenharmony_ci __entry->hw_context = sc->hw_context; 778c2ecf20Sopenharmony_ci __entry->extra = extra; 788c2ecf20Sopenharmony_ci ), 798c2ecf20Sopenharmony_ci TP_printk("[%s] ctxt %u(%u) extra %d", 808c2ecf20Sopenharmony_ci __get_str(dev), 818c2ecf20Sopenharmony_ci __entry->sw_index, 828c2ecf20Sopenharmony_ci __entry->hw_context, 838c2ecf20Sopenharmony_ci __entry->extra 848c2ecf20Sopenharmony_ci ) 858c2ecf20Sopenharmony_ci); 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_wantpiointr, 888c2ecf20Sopenharmony_ci TP_PROTO(struct send_context *sc, u32 needint, u64 credit_ctrl), 898c2ecf20Sopenharmony_ci TP_ARGS(sc, needint, credit_ctrl), 908c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sc->dd) 918c2ecf20Sopenharmony_ci __field(u32, sw_index) 928c2ecf20Sopenharmony_ci __field(u32, hw_context) 938c2ecf20Sopenharmony_ci __field(u32, needint) 948c2ecf20Sopenharmony_ci __field(u64, credit_ctrl) 958c2ecf20Sopenharmony_ci ), 968c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sc->dd); 978c2ecf20Sopenharmony_ci __entry->sw_index = sc->sw_index; 988c2ecf20Sopenharmony_ci __entry->hw_context = sc->hw_context; 998c2ecf20Sopenharmony_ci __entry->needint = needint; 1008c2ecf20Sopenharmony_ci __entry->credit_ctrl = credit_ctrl; 1018c2ecf20Sopenharmony_ci ), 1028c2ecf20Sopenharmony_ci TP_printk("[%s] ctxt %u(%u) on %d credit_ctrl 0x%llx", 1038c2ecf20Sopenharmony_ci __get_str(dev), 1048c2ecf20Sopenharmony_ci __entry->sw_index, 1058c2ecf20Sopenharmony_ci __entry->hw_context, 1068c2ecf20Sopenharmony_ci __entry->needint, 1078c2ecf20Sopenharmony_ci (unsigned long long)__entry->credit_ctrl 1088c2ecf20Sopenharmony_ci ) 1098c2ecf20Sopenharmony_ci); 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_qpsleepwakeup_template, 1128c2ecf20Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 flags), 1138c2ecf20Sopenharmony_ci TP_ARGS(qp, flags), 1148c2ecf20Sopenharmony_ci TP_STRUCT__entry( 1158c2ecf20Sopenharmony_ci DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 1168c2ecf20Sopenharmony_ci __field(u32, qpn) 1178c2ecf20Sopenharmony_ci __field(u32, flags) 1188c2ecf20Sopenharmony_ci __field(u32, s_flags) 1198c2ecf20Sopenharmony_ci __field(u32, ps_flags) 1208c2ecf20Sopenharmony_ci __field(unsigned long, iow_flags) 1218c2ecf20Sopenharmony_ci ), 1228c2ecf20Sopenharmony_ci TP_fast_assign( 1238c2ecf20Sopenharmony_ci DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)) 1248c2ecf20Sopenharmony_ci __entry->flags = flags; 1258c2ecf20Sopenharmony_ci __entry->qpn = qp->ibqp.qp_num; 1268c2ecf20Sopenharmony_ci __entry->s_flags = qp->s_flags; 1278c2ecf20Sopenharmony_ci __entry->ps_flags = 1288c2ecf20Sopenharmony_ci ((struct hfi1_qp_priv *)qp->priv)->s_flags; 1298c2ecf20Sopenharmony_ci __entry->iow_flags = 1308c2ecf20Sopenharmony_ci ((struct hfi1_qp_priv *)qp->priv)->s_iowait.flags; 1318c2ecf20Sopenharmony_ci ), 1328c2ecf20Sopenharmony_ci TP_printk( 1338c2ecf20Sopenharmony_ci "[%s] qpn 0x%x flags 0x%x s_flags 0x%x ps_flags 0x%x iow_flags 0x%lx", 1348c2ecf20Sopenharmony_ci __get_str(dev), 1358c2ecf20Sopenharmony_ci __entry->qpn, 1368c2ecf20Sopenharmony_ci __entry->flags, 1378c2ecf20Sopenharmony_ci __entry->s_flags, 1388c2ecf20Sopenharmony_ci __entry->ps_flags, 1398c2ecf20Sopenharmony_ci __entry->iow_flags 1408c2ecf20Sopenharmony_ci ) 1418c2ecf20Sopenharmony_ci); 1428c2ecf20Sopenharmony_ci 1438c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_qpsleepwakeup_template, hfi1_qpwakeup, 1448c2ecf20Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 flags), 1458c2ecf20Sopenharmony_ci TP_ARGS(qp, flags)); 1468c2ecf20Sopenharmony_ci 1478c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_qpsleepwakeup_template, hfi1_qpsleep, 1488c2ecf20Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 flags), 1498c2ecf20Sopenharmony_ci TP_ARGS(qp, flags)); 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_descriptor, 1528c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, 1538c2ecf20Sopenharmony_ci u64 desc0, 1548c2ecf20Sopenharmony_ci u64 desc1, 1558c2ecf20Sopenharmony_ci u16 e, 1568c2ecf20Sopenharmony_ci void *descp), 1578c2ecf20Sopenharmony_ci TP_ARGS(sde, desc0, desc1, e, descp), 1588c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 1598c2ecf20Sopenharmony_ci __field(void *, descp) 1608c2ecf20Sopenharmony_ci __field(u64, desc0) 1618c2ecf20Sopenharmony_ci __field(u64, desc1) 1628c2ecf20Sopenharmony_ci __field(u16, e) 1638c2ecf20Sopenharmony_ci __field(u8, idx) 1648c2ecf20Sopenharmony_ci ), 1658c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 1668c2ecf20Sopenharmony_ci __entry->desc0 = desc0; 1678c2ecf20Sopenharmony_ci __entry->desc1 = desc1; 1688c2ecf20Sopenharmony_ci __entry->idx = sde->this_idx; 1698c2ecf20Sopenharmony_ci __entry->descp = descp; 1708c2ecf20Sopenharmony_ci __entry->e = e; 1718c2ecf20Sopenharmony_ci ), 1728c2ecf20Sopenharmony_ci TP_printk( 1738c2ecf20Sopenharmony_ci "[%s] SDE(%u) flags:%s addr:0x%016llx gen:%u len:%u d0:%016llx d1:%016llx to %p,%u", 1748c2ecf20Sopenharmony_ci __get_str(dev), 1758c2ecf20Sopenharmony_ci __entry->idx, 1768c2ecf20Sopenharmony_ci __parse_sdma_flags(__entry->desc0, __entry->desc1), 1778c2ecf20Sopenharmony_ci (__entry->desc0 >> SDMA_DESC0_PHY_ADDR_SHIFT) & 1788c2ecf20Sopenharmony_ci SDMA_DESC0_PHY_ADDR_MASK, 1798c2ecf20Sopenharmony_ci (u8)((__entry->desc1 >> SDMA_DESC1_GENERATION_SHIFT) & 1808c2ecf20Sopenharmony_ci SDMA_DESC1_GENERATION_MASK), 1818c2ecf20Sopenharmony_ci (u16)((__entry->desc0 >> SDMA_DESC0_BYTE_COUNT_SHIFT) & 1828c2ecf20Sopenharmony_ci SDMA_DESC0_BYTE_COUNT_MASK), 1838c2ecf20Sopenharmony_ci __entry->desc0, 1848c2ecf20Sopenharmony_ci __entry->desc1, 1858c2ecf20Sopenharmony_ci __entry->descp, 1868c2ecf20Sopenharmony_ci __entry->e 1878c2ecf20Sopenharmony_ci ) 1888c2ecf20Sopenharmony_ci); 1898c2ecf20Sopenharmony_ci 1908c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_engine_select, 1918c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u32 sel, u8 vl, u8 idx), 1928c2ecf20Sopenharmony_ci TP_ARGS(dd, sel, vl, idx), 1938c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 1948c2ecf20Sopenharmony_ci __field(u32, sel) 1958c2ecf20Sopenharmony_ci __field(u8, vl) 1968c2ecf20Sopenharmony_ci __field(u8, idx) 1978c2ecf20Sopenharmony_ci ), 1988c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 1998c2ecf20Sopenharmony_ci __entry->sel = sel; 2008c2ecf20Sopenharmony_ci __entry->vl = vl; 2018c2ecf20Sopenharmony_ci __entry->idx = idx; 2028c2ecf20Sopenharmony_ci ), 2038c2ecf20Sopenharmony_ci TP_printk("[%s] selecting SDE %u sel 0x%x vl %u", 2048c2ecf20Sopenharmony_ci __get_str(dev), 2058c2ecf20Sopenharmony_ci __entry->idx, 2068c2ecf20Sopenharmony_ci __entry->sel, 2078c2ecf20Sopenharmony_ci __entry->vl 2088c2ecf20Sopenharmony_ci ) 2098c2ecf20Sopenharmony_ci); 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_free_queues, 2128c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt), 2138c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt), 2148c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 2158c2ecf20Sopenharmony_ci __field(u16, ctxt) 2168c2ecf20Sopenharmony_ci __field(u16, subctxt) 2178c2ecf20Sopenharmony_ci ), 2188c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 2198c2ecf20Sopenharmony_ci __entry->ctxt = ctxt; 2208c2ecf20Sopenharmony_ci __entry->subctxt = subctxt; 2218c2ecf20Sopenharmony_ci ), 2228c2ecf20Sopenharmony_ci TP_printk("[%s] SDMA [%u:%u] Freeing user SDMA queues", 2238c2ecf20Sopenharmony_ci __get_str(dev), 2248c2ecf20Sopenharmony_ci __entry->ctxt, 2258c2ecf20Sopenharmony_ci __entry->subctxt 2268c2ecf20Sopenharmony_ci ) 2278c2ecf20Sopenharmony_ci); 2288c2ecf20Sopenharmony_ci 2298c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_process_request, 2308c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 2318c2ecf20Sopenharmony_ci u16 comp_idx), 2328c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx), 2338c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 2348c2ecf20Sopenharmony_ci __field(u16, ctxt) 2358c2ecf20Sopenharmony_ci __field(u16, subctxt) 2368c2ecf20Sopenharmony_ci __field(u16, comp_idx) 2378c2ecf20Sopenharmony_ci ), 2388c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 2398c2ecf20Sopenharmony_ci __entry->ctxt = ctxt; 2408c2ecf20Sopenharmony_ci __entry->subctxt = subctxt; 2418c2ecf20Sopenharmony_ci __entry->comp_idx = comp_idx; 2428c2ecf20Sopenharmony_ci ), 2438c2ecf20Sopenharmony_ci TP_printk("[%s] SDMA [%u:%u] Using req/comp entry: %u", 2448c2ecf20Sopenharmony_ci __get_str(dev), 2458c2ecf20Sopenharmony_ci __entry->ctxt, 2468c2ecf20Sopenharmony_ci __entry->subctxt, 2478c2ecf20Sopenharmony_ci __entry->comp_idx 2488c2ecf20Sopenharmony_ci ) 2498c2ecf20Sopenharmony_ci); 2508c2ecf20Sopenharmony_ci 2518c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS( 2528c2ecf20Sopenharmony_ci hfi1_sdma_value_template, 2538c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, u16 comp_idx, 2548c2ecf20Sopenharmony_ci u32 value), 2558c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx, value), 2568c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 2578c2ecf20Sopenharmony_ci __field(u16, ctxt) 2588c2ecf20Sopenharmony_ci __field(u16, subctxt) 2598c2ecf20Sopenharmony_ci __field(u16, comp_idx) 2608c2ecf20Sopenharmony_ci __field(u32, value) 2618c2ecf20Sopenharmony_ci ), 2628c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 2638c2ecf20Sopenharmony_ci __entry->ctxt = ctxt; 2648c2ecf20Sopenharmony_ci __entry->subctxt = subctxt; 2658c2ecf20Sopenharmony_ci __entry->comp_idx = comp_idx; 2668c2ecf20Sopenharmony_ci __entry->value = value; 2678c2ecf20Sopenharmony_ci ), 2688c2ecf20Sopenharmony_ci TP_printk("[%s] SDMA [%u:%u:%u] value: %u", 2698c2ecf20Sopenharmony_ci __get_str(dev), 2708c2ecf20Sopenharmony_ci __entry->ctxt, 2718c2ecf20Sopenharmony_ci __entry->subctxt, 2728c2ecf20Sopenharmony_ci __entry->comp_idx, 2738c2ecf20Sopenharmony_ci __entry->value 2748c2ecf20Sopenharmony_ci ) 2758c2ecf20Sopenharmony_ci); 2768c2ecf20Sopenharmony_ci 2778c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_value_template, hfi1_sdma_user_initial_tidoffset, 2788c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 2798c2ecf20Sopenharmony_ci u16 comp_idx, u32 tidoffset), 2808c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx, tidoffset)); 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_value_template, hfi1_sdma_user_data_length, 2838c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 2848c2ecf20Sopenharmony_ci u16 comp_idx, u32 data_len), 2858c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx, data_len)); 2868c2ecf20Sopenharmony_ci 2878c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_value_template, hfi1_sdma_user_compute_length, 2888c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 2898c2ecf20Sopenharmony_ci u16 comp_idx, u32 data_len), 2908c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx, data_len)); 2918c2ecf20Sopenharmony_ci 2928c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_tid_info, 2938c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 2948c2ecf20Sopenharmony_ci u16 comp_idx, u32 tidoffset, u32 units, u8 shift), 2958c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx, tidoffset, units, shift), 2968c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 2978c2ecf20Sopenharmony_ci __field(u16, ctxt) 2988c2ecf20Sopenharmony_ci __field(u16, subctxt) 2998c2ecf20Sopenharmony_ci __field(u16, comp_idx) 3008c2ecf20Sopenharmony_ci __field(u32, tidoffset) 3018c2ecf20Sopenharmony_ci __field(u32, units) 3028c2ecf20Sopenharmony_ci __field(u8, shift) 3038c2ecf20Sopenharmony_ci ), 3048c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 3058c2ecf20Sopenharmony_ci __entry->ctxt = ctxt; 3068c2ecf20Sopenharmony_ci __entry->subctxt = subctxt; 3078c2ecf20Sopenharmony_ci __entry->comp_idx = comp_idx; 3088c2ecf20Sopenharmony_ci __entry->tidoffset = tidoffset; 3098c2ecf20Sopenharmony_ci __entry->units = units; 3108c2ecf20Sopenharmony_ci __entry->shift = shift; 3118c2ecf20Sopenharmony_ci ), 3128c2ecf20Sopenharmony_ci TP_printk("[%s] SDMA [%u:%u:%u] TID offset %ubytes %uunits om %u", 3138c2ecf20Sopenharmony_ci __get_str(dev), 3148c2ecf20Sopenharmony_ci __entry->ctxt, 3158c2ecf20Sopenharmony_ci __entry->subctxt, 3168c2ecf20Sopenharmony_ci __entry->comp_idx, 3178c2ecf20Sopenharmony_ci __entry->tidoffset, 3188c2ecf20Sopenharmony_ci __entry->units, 3198c2ecf20Sopenharmony_ci __entry->shift 3208c2ecf20Sopenharmony_ci ) 3218c2ecf20Sopenharmony_ci); 3228c2ecf20Sopenharmony_ci 3238c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_request, 3248c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 3258c2ecf20Sopenharmony_ci unsigned long dim), 3268c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, dim), 3278c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 3288c2ecf20Sopenharmony_ci __field(u16, ctxt) 3298c2ecf20Sopenharmony_ci __field(u16, subctxt) 3308c2ecf20Sopenharmony_ci __field(unsigned long, dim) 3318c2ecf20Sopenharmony_ci ), 3328c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 3338c2ecf20Sopenharmony_ci __entry->ctxt = ctxt; 3348c2ecf20Sopenharmony_ci __entry->subctxt = subctxt; 3358c2ecf20Sopenharmony_ci __entry->dim = dim; 3368c2ecf20Sopenharmony_ci ), 3378c2ecf20Sopenharmony_ci TP_printk("[%s] SDMA from %u:%u (%lu)", 3388c2ecf20Sopenharmony_ci __get_str(dev), 3398c2ecf20Sopenharmony_ci __entry->ctxt, 3408c2ecf20Sopenharmony_ci __entry->subctxt, 3418c2ecf20Sopenharmony_ci __entry->dim 3428c2ecf20Sopenharmony_ci ) 3438c2ecf20Sopenharmony_ci); 3448c2ecf20Sopenharmony_ci 3458c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_sdma_engine_class, 3468c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, u64 status), 3478c2ecf20Sopenharmony_ci TP_ARGS(sde, status), 3488c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 3498c2ecf20Sopenharmony_ci __field(u64, status) 3508c2ecf20Sopenharmony_ci __field(u8, idx) 3518c2ecf20Sopenharmony_ci ), 3528c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 3538c2ecf20Sopenharmony_ci __entry->status = status; 3548c2ecf20Sopenharmony_ci __entry->idx = sde->this_idx; 3558c2ecf20Sopenharmony_ci ), 3568c2ecf20Sopenharmony_ci TP_printk("[%s] SDE(%u) status %llx", 3578c2ecf20Sopenharmony_ci __get_str(dev), 3588c2ecf20Sopenharmony_ci __entry->idx, 3598c2ecf20Sopenharmony_ci (unsigned long long)__entry->status 3608c2ecf20Sopenharmony_ci ) 3618c2ecf20Sopenharmony_ci); 3628c2ecf20Sopenharmony_ci 3638c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_engine_class, hfi1_sdma_engine_interrupt, 3648c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, u64 status), 3658c2ecf20Sopenharmony_ci TP_ARGS(sde, status) 3668c2ecf20Sopenharmony_ci); 3678c2ecf20Sopenharmony_ci 3688c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_engine_class, hfi1_sdma_engine_progress, 3698c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, u64 status), 3708c2ecf20Sopenharmony_ci TP_ARGS(sde, status) 3718c2ecf20Sopenharmony_ci); 3728c2ecf20Sopenharmony_ci 3738c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_sdma_ahg_ad, 3748c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, int aidx), 3758c2ecf20Sopenharmony_ci TP_ARGS(sde, aidx), 3768c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 3778c2ecf20Sopenharmony_ci __field(int, aidx) 3788c2ecf20Sopenharmony_ci __field(u8, idx) 3798c2ecf20Sopenharmony_ci ), 3808c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 3818c2ecf20Sopenharmony_ci __entry->idx = sde->this_idx; 3828c2ecf20Sopenharmony_ci __entry->aidx = aidx; 3838c2ecf20Sopenharmony_ci ), 3848c2ecf20Sopenharmony_ci TP_printk("[%s] SDE(%u) aidx %d", 3858c2ecf20Sopenharmony_ci __get_str(dev), 3868c2ecf20Sopenharmony_ci __entry->idx, 3878c2ecf20Sopenharmony_ci __entry->aidx 3888c2ecf20Sopenharmony_ci ) 3898c2ecf20Sopenharmony_ci); 3908c2ecf20Sopenharmony_ci 3918c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_ahg_ad, hfi1_ahg_allocate, 3928c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, int aidx), 3938c2ecf20Sopenharmony_ci TP_ARGS(sde, aidx)); 3948c2ecf20Sopenharmony_ci 3958c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_ahg_ad, hfi1_ahg_deallocate, 3968c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, int aidx), 3978c2ecf20Sopenharmony_ci TP_ARGS(sde, aidx)); 3988c2ecf20Sopenharmony_ci 3998c2ecf20Sopenharmony_ci#ifdef CONFIG_HFI1_DEBUG_SDMA_ORDER 4008c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_progress, 4018c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, 4028c2ecf20Sopenharmony_ci u16 hwhead, 4038c2ecf20Sopenharmony_ci u16 swhead, 4048c2ecf20Sopenharmony_ci struct sdma_txreq *txp 4058c2ecf20Sopenharmony_ci ), 4068c2ecf20Sopenharmony_ci TP_ARGS(sde, hwhead, swhead, txp), 4078c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 4088c2ecf20Sopenharmony_ci __field(u64, sn) 4098c2ecf20Sopenharmony_ci __field(u16, hwhead) 4108c2ecf20Sopenharmony_ci __field(u16, swhead) 4118c2ecf20Sopenharmony_ci __field(u16, txnext) 4128c2ecf20Sopenharmony_ci __field(u16, tx_tail) 4138c2ecf20Sopenharmony_ci __field(u16, tx_head) 4148c2ecf20Sopenharmony_ci __field(u8, idx) 4158c2ecf20Sopenharmony_ci ), 4168c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 4178c2ecf20Sopenharmony_ci __entry->hwhead = hwhead; 4188c2ecf20Sopenharmony_ci __entry->swhead = swhead; 4198c2ecf20Sopenharmony_ci __entry->tx_tail = sde->tx_tail; 4208c2ecf20Sopenharmony_ci __entry->tx_head = sde->tx_head; 4218c2ecf20Sopenharmony_ci __entry->txnext = txp ? txp->next_descq_idx : ~0; 4228c2ecf20Sopenharmony_ci __entry->idx = sde->this_idx; 4238c2ecf20Sopenharmony_ci __entry->sn = txp ? txp->sn : ~0; 4248c2ecf20Sopenharmony_ci ), 4258c2ecf20Sopenharmony_ci TP_printk( 4268c2ecf20Sopenharmony_ci "[%s] SDE(%u) sn %llu hwhead %u swhead %u next_descq_idx %u tx_head %u tx_tail %u", 4278c2ecf20Sopenharmony_ci __get_str(dev), 4288c2ecf20Sopenharmony_ci __entry->idx, 4298c2ecf20Sopenharmony_ci __entry->sn, 4308c2ecf20Sopenharmony_ci __entry->hwhead, 4318c2ecf20Sopenharmony_ci __entry->swhead, 4328c2ecf20Sopenharmony_ci __entry->txnext, 4338c2ecf20Sopenharmony_ci __entry->tx_head, 4348c2ecf20Sopenharmony_ci __entry->tx_tail 4358c2ecf20Sopenharmony_ci ) 4368c2ecf20Sopenharmony_ci); 4378c2ecf20Sopenharmony_ci#else 4388c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_progress, 4398c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, 4408c2ecf20Sopenharmony_ci u16 hwhead, u16 swhead, 4418c2ecf20Sopenharmony_ci struct sdma_txreq *txp 4428c2ecf20Sopenharmony_ci ), 4438c2ecf20Sopenharmony_ci TP_ARGS(sde, hwhead, swhead, txp), 4448c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 4458c2ecf20Sopenharmony_ci __field(u16, hwhead) 4468c2ecf20Sopenharmony_ci __field(u16, swhead) 4478c2ecf20Sopenharmony_ci __field(u16, txnext) 4488c2ecf20Sopenharmony_ci __field(u16, tx_tail) 4498c2ecf20Sopenharmony_ci __field(u16, tx_head) 4508c2ecf20Sopenharmony_ci __field(u8, idx) 4518c2ecf20Sopenharmony_ci ), 4528c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 4538c2ecf20Sopenharmony_ci __entry->hwhead = hwhead; 4548c2ecf20Sopenharmony_ci __entry->swhead = swhead; 4558c2ecf20Sopenharmony_ci __entry->tx_tail = sde->tx_tail; 4568c2ecf20Sopenharmony_ci __entry->tx_head = sde->tx_head; 4578c2ecf20Sopenharmony_ci __entry->txnext = txp ? txp->next_descq_idx : ~0; 4588c2ecf20Sopenharmony_ci __entry->idx = sde->this_idx; 4598c2ecf20Sopenharmony_ci ), 4608c2ecf20Sopenharmony_ci TP_printk( 4618c2ecf20Sopenharmony_ci "[%s] SDE(%u) hwhead %u swhead %u next_descq_idx %u tx_head %u tx_tail %u", 4628c2ecf20Sopenharmony_ci __get_str(dev), 4638c2ecf20Sopenharmony_ci __entry->idx, 4648c2ecf20Sopenharmony_ci __entry->hwhead, 4658c2ecf20Sopenharmony_ci __entry->swhead, 4668c2ecf20Sopenharmony_ci __entry->txnext, 4678c2ecf20Sopenharmony_ci __entry->tx_head, 4688c2ecf20Sopenharmony_ci __entry->tx_tail 4698c2ecf20Sopenharmony_ci ) 4708c2ecf20Sopenharmony_ci); 4718c2ecf20Sopenharmony_ci#endif 4728c2ecf20Sopenharmony_ci 4738c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_sdma_sn, 4748c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, u64 sn), 4758c2ecf20Sopenharmony_ci TP_ARGS(sde, sn), 4768c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 4778c2ecf20Sopenharmony_ci __field(u64, sn) 4788c2ecf20Sopenharmony_ci __field(u8, idx) 4798c2ecf20Sopenharmony_ci ), 4808c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 4818c2ecf20Sopenharmony_ci __entry->sn = sn; 4828c2ecf20Sopenharmony_ci __entry->idx = sde->this_idx; 4838c2ecf20Sopenharmony_ci ), 4848c2ecf20Sopenharmony_ci TP_printk("[%s] SDE(%u) sn %llu", 4858c2ecf20Sopenharmony_ci __get_str(dev), 4868c2ecf20Sopenharmony_ci __entry->idx, 4878c2ecf20Sopenharmony_ci __entry->sn 4888c2ecf20Sopenharmony_ci ) 4898c2ecf20Sopenharmony_ci); 4908c2ecf20Sopenharmony_ci 4918c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_sn, hfi1_sdma_out_sn, 4928c2ecf20Sopenharmony_ci TP_PROTO( 4938c2ecf20Sopenharmony_ci struct sdma_engine *sde, 4948c2ecf20Sopenharmony_ci u64 sn 4958c2ecf20Sopenharmony_ci ), 4968c2ecf20Sopenharmony_ci TP_ARGS(sde, sn) 4978c2ecf20Sopenharmony_ci); 4988c2ecf20Sopenharmony_ci 4998c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_sn, hfi1_sdma_in_sn, 5008c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, u64 sn), 5018c2ecf20Sopenharmony_ci TP_ARGS(sde, sn) 5028c2ecf20Sopenharmony_ci); 5038c2ecf20Sopenharmony_ci 5048c2ecf20Sopenharmony_ci#define USDMA_HDR_FORMAT \ 5058c2ecf20Sopenharmony_ci "[%s:%u:%u:%u] PBC=(0x%x 0x%x) LRH=(0x%x 0x%x) BTH=(0x%x 0x%x 0x%x) KDETH=(0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x) TIDVal=0x%x" 5068c2ecf20Sopenharmony_ci 5078c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_header, 5088c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u8 subctxt, u16 req, 5098c2ecf20Sopenharmony_ci struct hfi1_pkt_header *hdr, u32 tidval), 5108c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, req, hdr, tidval), 5118c2ecf20Sopenharmony_ci TP_STRUCT__entry( 5128c2ecf20Sopenharmony_ci DD_DEV_ENTRY(dd) 5138c2ecf20Sopenharmony_ci __field(u16, ctxt) 5148c2ecf20Sopenharmony_ci __field(u8, subctxt) 5158c2ecf20Sopenharmony_ci __field(u16, req) 5168c2ecf20Sopenharmony_ci __field(u32, pbc0) 5178c2ecf20Sopenharmony_ci __field(u32, pbc1) 5188c2ecf20Sopenharmony_ci __field(u32, lrh0) 5198c2ecf20Sopenharmony_ci __field(u32, lrh1) 5208c2ecf20Sopenharmony_ci __field(u32, bth0) 5218c2ecf20Sopenharmony_ci __field(u32, bth1) 5228c2ecf20Sopenharmony_ci __field(u32, bth2) 5238c2ecf20Sopenharmony_ci __field(u32, kdeth0) 5248c2ecf20Sopenharmony_ci __field(u32, kdeth1) 5258c2ecf20Sopenharmony_ci __field(u32, kdeth2) 5268c2ecf20Sopenharmony_ci __field(u32, kdeth3) 5278c2ecf20Sopenharmony_ci __field(u32, kdeth4) 5288c2ecf20Sopenharmony_ci __field(u32, kdeth5) 5298c2ecf20Sopenharmony_ci __field(u32, kdeth6) 5308c2ecf20Sopenharmony_ci __field(u32, kdeth7) 5318c2ecf20Sopenharmony_ci __field(u32, kdeth8) 5328c2ecf20Sopenharmony_ci __field(u32, tidval) 5338c2ecf20Sopenharmony_ci ), 5348c2ecf20Sopenharmony_ci TP_fast_assign( 5358c2ecf20Sopenharmony_ci __le32 *pbc = (__le32 *)hdr->pbc; 5368c2ecf20Sopenharmony_ci __be32 *lrh = (__be32 *)hdr->lrh; 5378c2ecf20Sopenharmony_ci __be32 *bth = (__be32 *)hdr->bth; 5388c2ecf20Sopenharmony_ci __le32 *kdeth = (__le32 *)&hdr->kdeth; 5398c2ecf20Sopenharmony_ci 5408c2ecf20Sopenharmony_ci DD_DEV_ASSIGN(dd); 5418c2ecf20Sopenharmony_ci __entry->ctxt = ctxt; 5428c2ecf20Sopenharmony_ci __entry->subctxt = subctxt; 5438c2ecf20Sopenharmony_ci __entry->req = req; 5448c2ecf20Sopenharmony_ci __entry->pbc0 = le32_to_cpu(pbc[0]); 5458c2ecf20Sopenharmony_ci __entry->pbc1 = le32_to_cpu(pbc[1]); 5468c2ecf20Sopenharmony_ci __entry->lrh0 = be32_to_cpu(lrh[0]); 5478c2ecf20Sopenharmony_ci __entry->lrh1 = be32_to_cpu(lrh[1]); 5488c2ecf20Sopenharmony_ci __entry->bth0 = be32_to_cpu(bth[0]); 5498c2ecf20Sopenharmony_ci __entry->bth1 = be32_to_cpu(bth[1]); 5508c2ecf20Sopenharmony_ci __entry->bth2 = be32_to_cpu(bth[2]); 5518c2ecf20Sopenharmony_ci __entry->kdeth0 = le32_to_cpu(kdeth[0]); 5528c2ecf20Sopenharmony_ci __entry->kdeth1 = le32_to_cpu(kdeth[1]); 5538c2ecf20Sopenharmony_ci __entry->kdeth2 = le32_to_cpu(kdeth[2]); 5548c2ecf20Sopenharmony_ci __entry->kdeth3 = le32_to_cpu(kdeth[3]); 5558c2ecf20Sopenharmony_ci __entry->kdeth4 = le32_to_cpu(kdeth[4]); 5568c2ecf20Sopenharmony_ci __entry->kdeth5 = le32_to_cpu(kdeth[5]); 5578c2ecf20Sopenharmony_ci __entry->kdeth6 = le32_to_cpu(kdeth[6]); 5588c2ecf20Sopenharmony_ci __entry->kdeth7 = le32_to_cpu(kdeth[7]); 5598c2ecf20Sopenharmony_ci __entry->kdeth8 = le32_to_cpu(kdeth[8]); 5608c2ecf20Sopenharmony_ci __entry->tidval = tidval; 5618c2ecf20Sopenharmony_ci ), 5628c2ecf20Sopenharmony_ci TP_printk(USDMA_HDR_FORMAT, 5638c2ecf20Sopenharmony_ci __get_str(dev), 5648c2ecf20Sopenharmony_ci __entry->ctxt, 5658c2ecf20Sopenharmony_ci __entry->subctxt, 5668c2ecf20Sopenharmony_ci __entry->req, 5678c2ecf20Sopenharmony_ci __entry->pbc1, 5688c2ecf20Sopenharmony_ci __entry->pbc0, 5698c2ecf20Sopenharmony_ci __entry->lrh0, 5708c2ecf20Sopenharmony_ci __entry->lrh1, 5718c2ecf20Sopenharmony_ci __entry->bth0, 5728c2ecf20Sopenharmony_ci __entry->bth1, 5738c2ecf20Sopenharmony_ci __entry->bth2, 5748c2ecf20Sopenharmony_ci __entry->kdeth0, 5758c2ecf20Sopenharmony_ci __entry->kdeth1, 5768c2ecf20Sopenharmony_ci __entry->kdeth2, 5778c2ecf20Sopenharmony_ci __entry->kdeth3, 5788c2ecf20Sopenharmony_ci __entry->kdeth4, 5798c2ecf20Sopenharmony_ci __entry->kdeth5, 5808c2ecf20Sopenharmony_ci __entry->kdeth6, 5818c2ecf20Sopenharmony_ci __entry->kdeth7, 5828c2ecf20Sopenharmony_ci __entry->kdeth8, 5838c2ecf20Sopenharmony_ci __entry->tidval 5848c2ecf20Sopenharmony_ci ) 5858c2ecf20Sopenharmony_ci); 5868c2ecf20Sopenharmony_ci 5878c2ecf20Sopenharmony_ci#define SDMA_UREQ_FMT \ 5888c2ecf20Sopenharmony_ci "[%s:%u:%u] ver/op=0x%x, iovcnt=%u, npkts=%u, frag=%u, idx=%u" 5898c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_reqinfo, 5908c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u8 subctxt, u16 *i), 5918c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, i), 5928c2ecf20Sopenharmony_ci TP_STRUCT__entry( 5938c2ecf20Sopenharmony_ci DD_DEV_ENTRY(dd) 5948c2ecf20Sopenharmony_ci __field(u16, ctxt) 5958c2ecf20Sopenharmony_ci __field(u8, subctxt) 5968c2ecf20Sopenharmony_ci __field(u8, ver_opcode) 5978c2ecf20Sopenharmony_ci __field(u8, iovcnt) 5988c2ecf20Sopenharmony_ci __field(u16, npkts) 5998c2ecf20Sopenharmony_ci __field(u16, fragsize) 6008c2ecf20Sopenharmony_ci __field(u16, comp_idx) 6018c2ecf20Sopenharmony_ci ), 6028c2ecf20Sopenharmony_ci TP_fast_assign( 6038c2ecf20Sopenharmony_ci DD_DEV_ASSIGN(dd); 6048c2ecf20Sopenharmony_ci __entry->ctxt = ctxt; 6058c2ecf20Sopenharmony_ci __entry->subctxt = subctxt; 6068c2ecf20Sopenharmony_ci __entry->ver_opcode = i[0] & 0xff; 6078c2ecf20Sopenharmony_ci __entry->iovcnt = (i[0] >> 8) & 0xff; 6088c2ecf20Sopenharmony_ci __entry->npkts = i[1]; 6098c2ecf20Sopenharmony_ci __entry->fragsize = i[2]; 6108c2ecf20Sopenharmony_ci __entry->comp_idx = i[3]; 6118c2ecf20Sopenharmony_ci ), 6128c2ecf20Sopenharmony_ci TP_printk(SDMA_UREQ_FMT, 6138c2ecf20Sopenharmony_ci __get_str(dev), 6148c2ecf20Sopenharmony_ci __entry->ctxt, 6158c2ecf20Sopenharmony_ci __entry->subctxt, 6168c2ecf20Sopenharmony_ci __entry->ver_opcode, 6178c2ecf20Sopenharmony_ci __entry->iovcnt, 6188c2ecf20Sopenharmony_ci __entry->npkts, 6198c2ecf20Sopenharmony_ci __entry->fragsize, 6208c2ecf20Sopenharmony_ci __entry->comp_idx 6218c2ecf20Sopenharmony_ci ) 6228c2ecf20Sopenharmony_ci); 6238c2ecf20Sopenharmony_ci 6248c2ecf20Sopenharmony_ci#define usdma_complete_name(st) { st, #st } 6258c2ecf20Sopenharmony_ci#define show_usdma_complete_state(st) \ 6268c2ecf20Sopenharmony_ci __print_symbolic(st, \ 6278c2ecf20Sopenharmony_ci usdma_complete_name(FREE), \ 6288c2ecf20Sopenharmony_ci usdma_complete_name(QUEUED), \ 6298c2ecf20Sopenharmony_ci usdma_complete_name(COMPLETE), \ 6308c2ecf20Sopenharmony_ci usdma_complete_name(ERROR)) 6318c2ecf20Sopenharmony_ci 6328c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_completion, 6338c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u8 subctxt, u16 idx, 6348c2ecf20Sopenharmony_ci u8 state, int code), 6358c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, idx, state, code), 6368c2ecf20Sopenharmony_ci TP_STRUCT__entry( 6378c2ecf20Sopenharmony_ci DD_DEV_ENTRY(dd) 6388c2ecf20Sopenharmony_ci __field(u16, ctxt) 6398c2ecf20Sopenharmony_ci __field(u8, subctxt) 6408c2ecf20Sopenharmony_ci __field(u16, idx) 6418c2ecf20Sopenharmony_ci __field(u8, state) 6428c2ecf20Sopenharmony_ci __field(int, code) 6438c2ecf20Sopenharmony_ci ), 6448c2ecf20Sopenharmony_ci TP_fast_assign( 6458c2ecf20Sopenharmony_ci DD_DEV_ASSIGN(dd); 6468c2ecf20Sopenharmony_ci __entry->ctxt = ctxt; 6478c2ecf20Sopenharmony_ci __entry->subctxt = subctxt; 6488c2ecf20Sopenharmony_ci __entry->idx = idx; 6498c2ecf20Sopenharmony_ci __entry->state = state; 6508c2ecf20Sopenharmony_ci __entry->code = code; 6518c2ecf20Sopenharmony_ci ), 6528c2ecf20Sopenharmony_ci TP_printk("[%s:%u:%u:%u] SDMA completion state %s (%d)", 6538c2ecf20Sopenharmony_ci __get_str(dev), __entry->ctxt, __entry->subctxt, 6548c2ecf20Sopenharmony_ci __entry->idx, show_usdma_complete_state(__entry->state), 6558c2ecf20Sopenharmony_ci __entry->code) 6568c2ecf20Sopenharmony_ci); 6578c2ecf20Sopenharmony_ci 6588c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_usdma_defer, 6598c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_user_sdma_pkt_q *pq, 6608c2ecf20Sopenharmony_ci struct sdma_engine *sde, 6618c2ecf20Sopenharmony_ci struct iowait *wait), 6628c2ecf20Sopenharmony_ci TP_ARGS(pq, sde, wait), 6638c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(pq->dd) 6648c2ecf20Sopenharmony_ci __field(struct hfi1_user_sdma_pkt_q *, pq) 6658c2ecf20Sopenharmony_ci __field(struct sdma_engine *, sde) 6668c2ecf20Sopenharmony_ci __field(struct iowait *, wait) 6678c2ecf20Sopenharmony_ci __field(int, engine) 6688c2ecf20Sopenharmony_ci __field(int, empty) 6698c2ecf20Sopenharmony_ci ), 6708c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(pq->dd); 6718c2ecf20Sopenharmony_ci __entry->pq = pq; 6728c2ecf20Sopenharmony_ci __entry->sde = sde; 6738c2ecf20Sopenharmony_ci __entry->wait = wait; 6748c2ecf20Sopenharmony_ci __entry->engine = sde->this_idx; 6758c2ecf20Sopenharmony_ci __entry->empty = list_empty(&__entry->wait->list); 6768c2ecf20Sopenharmony_ci ), 6778c2ecf20Sopenharmony_ci TP_printk("[%s] pq %llx sde %llx wait %llx engine %d empty %d", 6788c2ecf20Sopenharmony_ci __get_str(dev), 6798c2ecf20Sopenharmony_ci (unsigned long long)__entry->pq, 6808c2ecf20Sopenharmony_ci (unsigned long long)__entry->sde, 6818c2ecf20Sopenharmony_ci (unsigned long long)__entry->wait, 6828c2ecf20Sopenharmony_ci __entry->engine, 6838c2ecf20Sopenharmony_ci __entry->empty 6848c2ecf20Sopenharmony_ci ) 6858c2ecf20Sopenharmony_ci); 6868c2ecf20Sopenharmony_ci 6878c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_usdma_activate, 6888c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_user_sdma_pkt_q *pq, 6898c2ecf20Sopenharmony_ci struct iowait *wait, 6908c2ecf20Sopenharmony_ci int reason), 6918c2ecf20Sopenharmony_ci TP_ARGS(pq, wait, reason), 6928c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(pq->dd) 6938c2ecf20Sopenharmony_ci __field(struct hfi1_user_sdma_pkt_q *, pq) 6948c2ecf20Sopenharmony_ci __field(struct iowait *, wait) 6958c2ecf20Sopenharmony_ci __field(int, reason) 6968c2ecf20Sopenharmony_ci ), 6978c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(pq->dd); 6988c2ecf20Sopenharmony_ci __entry->pq = pq; 6998c2ecf20Sopenharmony_ci __entry->wait = wait; 7008c2ecf20Sopenharmony_ci __entry->reason = reason; 7018c2ecf20Sopenharmony_ci ), 7028c2ecf20Sopenharmony_ci TP_printk("[%s] pq %llx wait %llx reason %d", 7038c2ecf20Sopenharmony_ci __get_str(dev), 7048c2ecf20Sopenharmony_ci (unsigned long long)__entry->pq, 7058c2ecf20Sopenharmony_ci (unsigned long long)__entry->wait, 7068c2ecf20Sopenharmony_ci __entry->reason 7078c2ecf20Sopenharmony_ci ) 7088c2ecf20Sopenharmony_ci); 7098c2ecf20Sopenharmony_ci 7108c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_usdma_we, 7118c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_user_sdma_pkt_q *pq, 7128c2ecf20Sopenharmony_ci int we_ret), 7138c2ecf20Sopenharmony_ci TP_ARGS(pq, we_ret), 7148c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(pq->dd) 7158c2ecf20Sopenharmony_ci __field(struct hfi1_user_sdma_pkt_q *, pq) 7168c2ecf20Sopenharmony_ci __field(int, state) 7178c2ecf20Sopenharmony_ci __field(int, we_ret) 7188c2ecf20Sopenharmony_ci ), 7198c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(pq->dd); 7208c2ecf20Sopenharmony_ci __entry->pq = pq; 7218c2ecf20Sopenharmony_ci __entry->state = pq->state; 7228c2ecf20Sopenharmony_ci __entry->we_ret = we_ret; 7238c2ecf20Sopenharmony_ci ), 7248c2ecf20Sopenharmony_ci TP_printk("[%s] pq %llx state %d we_ret %d", 7258c2ecf20Sopenharmony_ci __get_str(dev), 7268c2ecf20Sopenharmony_ci (unsigned long long)__entry->pq, 7278c2ecf20Sopenharmony_ci __entry->state, 7288c2ecf20Sopenharmony_ci __entry->we_ret 7298c2ecf20Sopenharmony_ci ) 7308c2ecf20Sopenharmony_ci); 7318c2ecf20Sopenharmony_ci 7328c2ecf20Sopenharmony_ciconst char *print_u32_array(struct trace_seq *, u32 *, int); 7338c2ecf20Sopenharmony_ci#define __print_u32_hex(arr, len) print_u32_array(p, arr, len) 7348c2ecf20Sopenharmony_ci 7358c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_header_ahg, 7368c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u8 subctxt, u16 req, 7378c2ecf20Sopenharmony_ci u8 sde, u8 ahgidx, u32 *ahg, int len, u32 tidval), 7388c2ecf20Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, req, sde, ahgidx, ahg, len, tidval), 7398c2ecf20Sopenharmony_ci TP_STRUCT__entry( 7408c2ecf20Sopenharmony_ci DD_DEV_ENTRY(dd) 7418c2ecf20Sopenharmony_ci __field(u16, ctxt) 7428c2ecf20Sopenharmony_ci __field(u8, subctxt) 7438c2ecf20Sopenharmony_ci __field(u16, req) 7448c2ecf20Sopenharmony_ci __field(u8, sde) 7458c2ecf20Sopenharmony_ci __field(u8, idx) 7468c2ecf20Sopenharmony_ci __field(int, len) 7478c2ecf20Sopenharmony_ci __field(u32, tidval) 7488c2ecf20Sopenharmony_ci __array(u32, ahg, 10) 7498c2ecf20Sopenharmony_ci ), 7508c2ecf20Sopenharmony_ci TP_fast_assign( 7518c2ecf20Sopenharmony_ci DD_DEV_ASSIGN(dd); 7528c2ecf20Sopenharmony_ci __entry->ctxt = ctxt; 7538c2ecf20Sopenharmony_ci __entry->subctxt = subctxt; 7548c2ecf20Sopenharmony_ci __entry->req = req; 7558c2ecf20Sopenharmony_ci __entry->sde = sde; 7568c2ecf20Sopenharmony_ci __entry->idx = ahgidx; 7578c2ecf20Sopenharmony_ci __entry->len = len; 7588c2ecf20Sopenharmony_ci __entry->tidval = tidval; 7598c2ecf20Sopenharmony_ci memcpy(__entry->ahg, ahg, len * sizeof(u32)); 7608c2ecf20Sopenharmony_ci ), 7618c2ecf20Sopenharmony_ci TP_printk("[%s:%u:%u:%u] (SDE%u/AHG%u) ahg[0-%d]=(%s) TIDVal=0x%x", 7628c2ecf20Sopenharmony_ci __get_str(dev), 7638c2ecf20Sopenharmony_ci __entry->ctxt, 7648c2ecf20Sopenharmony_ci __entry->subctxt, 7658c2ecf20Sopenharmony_ci __entry->req, 7668c2ecf20Sopenharmony_ci __entry->sde, 7678c2ecf20Sopenharmony_ci __entry->idx, 7688c2ecf20Sopenharmony_ci __entry->len - 1, 7698c2ecf20Sopenharmony_ci __print_u32_hex(__entry->ahg, __entry->len), 7708c2ecf20Sopenharmony_ci __entry->tidval 7718c2ecf20Sopenharmony_ci ) 7728c2ecf20Sopenharmony_ci); 7738c2ecf20Sopenharmony_ci 7748c2ecf20Sopenharmony_ciTRACE_EVENT(hfi1_sdma_state, 7758c2ecf20Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, 7768c2ecf20Sopenharmony_ci const char *cstate, 7778c2ecf20Sopenharmony_ci const char *nstate 7788c2ecf20Sopenharmony_ci ), 7798c2ecf20Sopenharmony_ci TP_ARGS(sde, cstate, nstate), 7808c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 7818c2ecf20Sopenharmony_ci __string(curstate, cstate) 7828c2ecf20Sopenharmony_ci __string(newstate, nstate) 7838c2ecf20Sopenharmony_ci ), 7848c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 7858c2ecf20Sopenharmony_ci __assign_str(curstate, cstate); 7868c2ecf20Sopenharmony_ci __assign_str(newstate, nstate); 7878c2ecf20Sopenharmony_ci ), 7888c2ecf20Sopenharmony_ci TP_printk("[%s] current state %s new state %s", 7898c2ecf20Sopenharmony_ci __get_str(dev), 7908c2ecf20Sopenharmony_ci __get_str(curstate), 7918c2ecf20Sopenharmony_ci __get_str(newstate) 7928c2ecf20Sopenharmony_ci ) 7938c2ecf20Sopenharmony_ci); 7948c2ecf20Sopenharmony_ci 7958c2ecf20Sopenharmony_ci#define BCT_FORMAT \ 7968c2ecf20Sopenharmony_ci "shared_limit %x vls 0-7 [%x,%x][%x,%x][%x,%x][%x,%x][%x,%x][%x,%x][%x,%x][%x,%x] 15 [%x,%x]" 7978c2ecf20Sopenharmony_ci 7988c2ecf20Sopenharmony_ci#define BCT(field) \ 7998c2ecf20Sopenharmony_ci be16_to_cpu( \ 8008c2ecf20Sopenharmony_ci ((struct buffer_control *)__get_dynamic_array(bct))->field \ 8018c2ecf20Sopenharmony_ci ) 8028c2ecf20Sopenharmony_ci 8038c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_bct_template, 8048c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, 8058c2ecf20Sopenharmony_ci struct buffer_control *bc), 8068c2ecf20Sopenharmony_ci TP_ARGS(dd, bc), 8078c2ecf20Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 8088c2ecf20Sopenharmony_ci __dynamic_array(u8, bct, sizeof(*bc)) 8098c2ecf20Sopenharmony_ci ), 8108c2ecf20Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 8118c2ecf20Sopenharmony_ci memcpy(__get_dynamic_array(bct), bc, 8128c2ecf20Sopenharmony_ci sizeof(*bc)); 8138c2ecf20Sopenharmony_ci ), 8148c2ecf20Sopenharmony_ci TP_printk(BCT_FORMAT, 8158c2ecf20Sopenharmony_ci BCT(overall_shared_limit), 8168c2ecf20Sopenharmony_ci 8178c2ecf20Sopenharmony_ci BCT(vl[0].dedicated), 8188c2ecf20Sopenharmony_ci BCT(vl[0].shared), 8198c2ecf20Sopenharmony_ci 8208c2ecf20Sopenharmony_ci BCT(vl[1].dedicated), 8218c2ecf20Sopenharmony_ci BCT(vl[1].shared), 8228c2ecf20Sopenharmony_ci 8238c2ecf20Sopenharmony_ci BCT(vl[2].dedicated), 8248c2ecf20Sopenharmony_ci BCT(vl[2].shared), 8258c2ecf20Sopenharmony_ci 8268c2ecf20Sopenharmony_ci BCT(vl[3].dedicated), 8278c2ecf20Sopenharmony_ci BCT(vl[3].shared), 8288c2ecf20Sopenharmony_ci 8298c2ecf20Sopenharmony_ci BCT(vl[4].dedicated), 8308c2ecf20Sopenharmony_ci BCT(vl[4].shared), 8318c2ecf20Sopenharmony_ci 8328c2ecf20Sopenharmony_ci BCT(vl[5].dedicated), 8338c2ecf20Sopenharmony_ci BCT(vl[5].shared), 8348c2ecf20Sopenharmony_ci 8358c2ecf20Sopenharmony_ci BCT(vl[6].dedicated), 8368c2ecf20Sopenharmony_ci BCT(vl[6].shared), 8378c2ecf20Sopenharmony_ci 8388c2ecf20Sopenharmony_ci BCT(vl[7].dedicated), 8398c2ecf20Sopenharmony_ci BCT(vl[7].shared), 8408c2ecf20Sopenharmony_ci 8418c2ecf20Sopenharmony_ci BCT(vl[15].dedicated), 8428c2ecf20Sopenharmony_ci BCT(vl[15].shared) 8438c2ecf20Sopenharmony_ci ) 8448c2ecf20Sopenharmony_ci); 8458c2ecf20Sopenharmony_ci 8468c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_bct_template, bct_set, 8478c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, struct buffer_control *bc), 8488c2ecf20Sopenharmony_ci TP_ARGS(dd, bc)); 8498c2ecf20Sopenharmony_ci 8508c2ecf20Sopenharmony_ciDEFINE_EVENT(hfi1_bct_template, bct_get, 8518c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, struct buffer_control *bc), 8528c2ecf20Sopenharmony_ci TP_ARGS(dd, bc)); 8538c2ecf20Sopenharmony_ci 8548c2ecf20Sopenharmony_ciTRACE_EVENT( 8558c2ecf20Sopenharmony_ci hfi1_qp_send_completion, 8568c2ecf20Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, struct rvt_swqe *wqe, u32 idx), 8578c2ecf20Sopenharmony_ci TP_ARGS(qp, wqe, idx), 8588c2ecf20Sopenharmony_ci TP_STRUCT__entry( 8598c2ecf20Sopenharmony_ci DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 8608c2ecf20Sopenharmony_ci __field(struct rvt_swqe *, wqe) 8618c2ecf20Sopenharmony_ci __field(u64, wr_id) 8628c2ecf20Sopenharmony_ci __field(u32, qpn) 8638c2ecf20Sopenharmony_ci __field(u32, qpt) 8648c2ecf20Sopenharmony_ci __field(u32, length) 8658c2ecf20Sopenharmony_ci __field(u32, idx) 8668c2ecf20Sopenharmony_ci __field(u32, ssn) 8678c2ecf20Sopenharmony_ci __field(enum ib_wr_opcode, opcode) 8688c2ecf20Sopenharmony_ci __field(int, send_flags) 8698c2ecf20Sopenharmony_ci ), 8708c2ecf20Sopenharmony_ci TP_fast_assign( 8718c2ecf20Sopenharmony_ci DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)) 8728c2ecf20Sopenharmony_ci __entry->wqe = wqe; 8738c2ecf20Sopenharmony_ci __entry->wr_id = wqe->wr.wr_id; 8748c2ecf20Sopenharmony_ci __entry->qpn = qp->ibqp.qp_num; 8758c2ecf20Sopenharmony_ci __entry->qpt = qp->ibqp.qp_type; 8768c2ecf20Sopenharmony_ci __entry->length = wqe->length; 8778c2ecf20Sopenharmony_ci __entry->idx = idx; 8788c2ecf20Sopenharmony_ci __entry->ssn = wqe->ssn; 8798c2ecf20Sopenharmony_ci __entry->opcode = wqe->wr.opcode; 8808c2ecf20Sopenharmony_ci __entry->send_flags = wqe->wr.send_flags; 8818c2ecf20Sopenharmony_ci ), 8828c2ecf20Sopenharmony_ci TP_printk( 8838c2ecf20Sopenharmony_ci "[%s] qpn 0x%x qpt %u wqe %p idx %u wr_id %llx length %u ssn %u opcode %x send_flags %x", 8848c2ecf20Sopenharmony_ci __get_str(dev), 8858c2ecf20Sopenharmony_ci __entry->qpn, 8868c2ecf20Sopenharmony_ci __entry->qpt, 8878c2ecf20Sopenharmony_ci __entry->wqe, 8888c2ecf20Sopenharmony_ci __entry->idx, 8898c2ecf20Sopenharmony_ci __entry->wr_id, 8908c2ecf20Sopenharmony_ci __entry->length, 8918c2ecf20Sopenharmony_ci __entry->ssn, 8928c2ecf20Sopenharmony_ci __entry->opcode, 8938c2ecf20Sopenharmony_ci __entry->send_flags 8948c2ecf20Sopenharmony_ci ) 8958c2ecf20Sopenharmony_ci); 8968c2ecf20Sopenharmony_ci 8978c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS( 8988c2ecf20Sopenharmony_ci hfi1_do_send_template, 8998c2ecf20Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, bool flag), 9008c2ecf20Sopenharmony_ci TP_ARGS(qp, flag), 9018c2ecf20Sopenharmony_ci TP_STRUCT__entry( 9028c2ecf20Sopenharmony_ci DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 9038c2ecf20Sopenharmony_ci __field(u32, qpn) 9048c2ecf20Sopenharmony_ci __field(bool, flag) 9058c2ecf20Sopenharmony_ci ), 9068c2ecf20Sopenharmony_ci TP_fast_assign( 9078c2ecf20Sopenharmony_ci DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)) 9088c2ecf20Sopenharmony_ci __entry->qpn = qp->ibqp.qp_num; 9098c2ecf20Sopenharmony_ci __entry->flag = flag; 9108c2ecf20Sopenharmony_ci ), 9118c2ecf20Sopenharmony_ci TP_printk( 9128c2ecf20Sopenharmony_ci "[%s] qpn %x flag %d", 9138c2ecf20Sopenharmony_ci __get_str(dev), 9148c2ecf20Sopenharmony_ci __entry->qpn, 9158c2ecf20Sopenharmony_ci __entry->flag 9168c2ecf20Sopenharmony_ci ) 9178c2ecf20Sopenharmony_ci); 9188c2ecf20Sopenharmony_ci 9198c2ecf20Sopenharmony_ciDEFINE_EVENT( 9208c2ecf20Sopenharmony_ci hfi1_do_send_template, hfi1_rc_do_send, 9218c2ecf20Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, bool flag), 9228c2ecf20Sopenharmony_ci TP_ARGS(qp, flag) 9238c2ecf20Sopenharmony_ci); 9248c2ecf20Sopenharmony_ci 9258c2ecf20Sopenharmony_ciDEFINE_EVENT(/* event */ 9268c2ecf20Sopenharmony_ci hfi1_do_send_template, hfi1_rc_do_tid_send, 9278c2ecf20Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, bool flag), 9288c2ecf20Sopenharmony_ci TP_ARGS(qp, flag) 9298c2ecf20Sopenharmony_ci); 9308c2ecf20Sopenharmony_ci 9318c2ecf20Sopenharmony_ciDEFINE_EVENT( 9328c2ecf20Sopenharmony_ci hfi1_do_send_template, hfi1_rc_expired_time_slice, 9338c2ecf20Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, bool flag), 9348c2ecf20Sopenharmony_ci TP_ARGS(qp, flag) 9358c2ecf20Sopenharmony_ci); 9368c2ecf20Sopenharmony_ci 9378c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(/* AIP */ 9388c2ecf20Sopenharmony_ci hfi1_ipoib_txq_template, 9398c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 9408c2ecf20Sopenharmony_ci TP_ARGS(txq), 9418c2ecf20Sopenharmony_ci TP_STRUCT__entry(/* entry */ 9428c2ecf20Sopenharmony_ci DD_DEV_ENTRY(txq->priv->dd) 9438c2ecf20Sopenharmony_ci __field(struct hfi1_ipoib_txq *, txq) 9448c2ecf20Sopenharmony_ci __field(struct sdma_engine *, sde) 9458c2ecf20Sopenharmony_ci __field(ulong, head) 9468c2ecf20Sopenharmony_ci __field(ulong, tail) 9478c2ecf20Sopenharmony_ci __field(uint, used) 9488c2ecf20Sopenharmony_ci __field(uint, flow) 9498c2ecf20Sopenharmony_ci __field(int, stops) 9508c2ecf20Sopenharmony_ci __field(int, no_desc) 9518c2ecf20Sopenharmony_ci __field(u8, idx) 9528c2ecf20Sopenharmony_ci __field(u8, stopped) 9538c2ecf20Sopenharmony_ci ), 9548c2ecf20Sopenharmony_ci TP_fast_assign(/* assign */ 9558c2ecf20Sopenharmony_ci DD_DEV_ASSIGN(txq->priv->dd) 9568c2ecf20Sopenharmony_ci __entry->txq = txq; 9578c2ecf20Sopenharmony_ci __entry->sde = txq->sde; 9588c2ecf20Sopenharmony_ci __entry->head = txq->tx_ring.head; 9598c2ecf20Sopenharmony_ci __entry->tail = txq->tx_ring.tail; 9608c2ecf20Sopenharmony_ci __entry->idx = txq->q_idx; 9618c2ecf20Sopenharmony_ci __entry->used = 9628c2ecf20Sopenharmony_ci txq->sent_txreqs - 9638c2ecf20Sopenharmony_ci atomic64_read(&txq->complete_txreqs); 9648c2ecf20Sopenharmony_ci __entry->flow = txq->flow.as_int; 9658c2ecf20Sopenharmony_ci __entry->stops = atomic_read(&txq->stops); 9668c2ecf20Sopenharmony_ci __entry->no_desc = atomic_read(&txq->no_desc); 9678c2ecf20Sopenharmony_ci __entry->stopped = 9688c2ecf20Sopenharmony_ci __netif_subqueue_stopped(txq->priv->netdev, txq->q_idx); 9698c2ecf20Sopenharmony_ci ), 9708c2ecf20Sopenharmony_ci TP_printk(/* print */ 9718c2ecf20Sopenharmony_ci "[%s] txq %llx idx %u sde %llx head %lx tail %lx flow %x used %u stops %d no_desc %d stopped %u", 9728c2ecf20Sopenharmony_ci __get_str(dev), 9738c2ecf20Sopenharmony_ci (unsigned long long)__entry->txq, 9748c2ecf20Sopenharmony_ci __entry->idx, 9758c2ecf20Sopenharmony_ci (unsigned long long)__entry->sde, 9768c2ecf20Sopenharmony_ci __entry->head, 9778c2ecf20Sopenharmony_ci __entry->tail, 9788c2ecf20Sopenharmony_ci __entry->flow, 9798c2ecf20Sopenharmony_ci __entry->used, 9808c2ecf20Sopenharmony_ci __entry->stops, 9818c2ecf20Sopenharmony_ci __entry->no_desc, 9828c2ecf20Sopenharmony_ci __entry->stopped 9838c2ecf20Sopenharmony_ci ) 9848c2ecf20Sopenharmony_ci); 9858c2ecf20Sopenharmony_ci 9868c2ecf20Sopenharmony_ciDEFINE_EVENT(/* queue stop */ 9878c2ecf20Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_stop, 9888c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 9898c2ecf20Sopenharmony_ci TP_ARGS(txq) 9908c2ecf20Sopenharmony_ci); 9918c2ecf20Sopenharmony_ci 9928c2ecf20Sopenharmony_ciDEFINE_EVENT(/* queue wake */ 9938c2ecf20Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_wake, 9948c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 9958c2ecf20Sopenharmony_ci TP_ARGS(txq) 9968c2ecf20Sopenharmony_ci); 9978c2ecf20Sopenharmony_ci 9988c2ecf20Sopenharmony_ciDEFINE_EVENT(/* flow flush */ 9998c2ecf20Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_flow_flush, 10008c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 10018c2ecf20Sopenharmony_ci TP_ARGS(txq) 10028c2ecf20Sopenharmony_ci); 10038c2ecf20Sopenharmony_ci 10048c2ecf20Sopenharmony_ciDEFINE_EVENT(/* flow switch */ 10058c2ecf20Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_flow_switch, 10068c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 10078c2ecf20Sopenharmony_ci TP_ARGS(txq) 10088c2ecf20Sopenharmony_ci); 10098c2ecf20Sopenharmony_ci 10108c2ecf20Sopenharmony_ciDEFINE_EVENT(/* wakeup */ 10118c2ecf20Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_wakeup, 10128c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 10138c2ecf20Sopenharmony_ci TP_ARGS(txq) 10148c2ecf20Sopenharmony_ci); 10158c2ecf20Sopenharmony_ci 10168c2ecf20Sopenharmony_ciDEFINE_EVENT(/* full */ 10178c2ecf20Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_full, 10188c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 10198c2ecf20Sopenharmony_ci TP_ARGS(txq) 10208c2ecf20Sopenharmony_ci); 10218c2ecf20Sopenharmony_ci 10228c2ecf20Sopenharmony_ciDEFINE_EVENT(/* queued */ 10238c2ecf20Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_queued, 10248c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 10258c2ecf20Sopenharmony_ci TP_ARGS(txq) 10268c2ecf20Sopenharmony_ci); 10278c2ecf20Sopenharmony_ci 10288c2ecf20Sopenharmony_ciDEFINE_EVENT(/* xmit_stopped */ 10298c2ecf20Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_xmit_stopped, 10308c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 10318c2ecf20Sopenharmony_ci TP_ARGS(txq) 10328c2ecf20Sopenharmony_ci); 10338c2ecf20Sopenharmony_ci 10348c2ecf20Sopenharmony_ciDEFINE_EVENT(/* xmit_unstopped */ 10358c2ecf20Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_xmit_unstopped, 10368c2ecf20Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 10378c2ecf20Sopenharmony_ci TP_ARGS(txq) 10388c2ecf20Sopenharmony_ci); 10398c2ecf20Sopenharmony_ci 10408c2ecf20Sopenharmony_ci#endif /* __HFI1_TRACE_TX_H */ 10418c2ecf20Sopenharmony_ci 10428c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_PATH 10438c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_FILE 10448c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_PATH . 10458c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_FILE trace_tx 10468c2ecf20Sopenharmony_ci#include <trace/define_trace.h> 1047