Linux Audio

Check our new training course

Loading...
v6.8
  1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
  2/*
  3 * Copyright(c) 2015 - 2018 Intel Corporation.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  4 */
  5
  6#if !defined(__HFI1_TRACE_RX_H) || defined(TRACE_HEADER_MULTI_READ)
  7#define __HFI1_TRACE_RX_H
  8
  9#include <linux/tracepoint.h>
 10#include <linux/trace_seq.h>
 11
 12#include "hfi.h"
 13
 14#define tidtype_name(type) { PT_##type, #type }
 15#define show_tidtype(type)                   \
 16__print_symbolic(type,                       \
 17	tidtype_name(EXPECTED),              \
 18	tidtype_name(EAGER),                 \
 19	tidtype_name(INVALID))               \
 20
 21#undef TRACE_SYSTEM
 22#define TRACE_SYSTEM hfi1_rx
 23
 24TRACE_EVENT(hfi1_rcvhdr,
 25	    TP_PROTO(struct hfi1_packet *packet),
 26	    TP_ARGS(packet),
 27	    TP_STRUCT__entry(DD_DEV_ENTRY(packet->rcd->dd)
 
 
 
 
 
 
 
 
 28			     __field(u64, eflags)
 29			     __field(u32, ctxt)
 30			     __field(u32, etype)
 31			     __field(u32, hlen)
 32			     __field(u32, tlen)
 33			     __field(u32, updegr)
 34			     __field(u32, etail)
 35			     ),
 36	     TP_fast_assign(DD_DEV_ASSIGN(packet->rcd->dd);
 37			    __entry->eflags = rhf_err_flags(packet->rhf);
 38			    __entry->ctxt = packet->rcd->ctxt;
 39			    __entry->etype = packet->etype;
 40			    __entry->hlen = packet->hlen;
 41			    __entry->tlen = packet->tlen;
 42			    __entry->updegr = packet->updegr;
 43			    __entry->etail = rhf_egr_index(packet->rhf);
 44			    ),
 45	     TP_printk(
 46		"[%s] ctxt %d eflags 0x%llx etype %d,%s hlen %d tlen %d updegr %d etail %d",
 47		__get_str(dev),
 48		__entry->ctxt,
 49		__entry->eflags,
 50		__entry->etype, show_packettype(__entry->etype),
 51		__entry->hlen,
 52		__entry->tlen,
 53		__entry->updegr,
 54		__entry->etail
 55		)
 56);
 57
 58TRACE_EVENT(hfi1_receive_interrupt,
 59	    TP_PROTO(struct hfi1_devdata *dd, struct hfi1_ctxtdata *rcd),
 60	    TP_ARGS(dd, rcd),
 61	    TP_STRUCT__entry(DD_DEV_ENTRY(dd)
 62			     __field(u32, ctxt)
 63			     __field(u8, slow_path)
 64			     __field(u8, dma_rtail)
 65			     ),
 66	    TP_fast_assign(DD_DEV_ASSIGN(dd);
 67			__entry->ctxt = rcd->ctxt;
 68			__entry->slow_path = hfi1_is_slowpath(rcd);
 69			__entry->dma_rtail = get_dma_rtail_setting(rcd);
 
 
 
 
 
 
 
 
 
 
 
 70			),
 71	    TP_printk("[%s] ctxt %d SlowPath: %d DmaRtail: %d",
 72		      __get_str(dev),
 73		      __entry->ctxt,
 74		      __entry->slow_path,
 75		      __entry->dma_rtail
 76		      )
 77);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 78
 79TRACE_EVENT(hfi1_mmu_invalidate,
 80	    TP_PROTO(unsigned int ctxt, u16 subctxt, const char *type,
 81		     unsigned long start, unsigned long end),
 82	    TP_ARGS(ctxt, subctxt, type, start, end),
 83	    TP_STRUCT__entry(
 84			     __field(unsigned int, ctxt)
 85			     __field(u16, subctxt)
 86			     __string(type, type)
 87			     __field(unsigned long, start)
 88			     __field(unsigned long, end)
 89			     ),
 90	    TP_fast_assign(
 91			__entry->ctxt = ctxt;
 92			__entry->subctxt = subctxt;
 93			__assign_str(type, type);
 94			__entry->start = start;
 95			__entry->end = end;
 96	    ),
 97	    TP_printk("[%3u:%02u] MMU Invalidate (%s) 0x%lx - 0x%lx",
 98		      __entry->ctxt,
 99		      __entry->subctxt,
100		      __get_str(type),
101		      __entry->start,
102		      __entry->end
103		      )
104	    );
105
106#endif /* __HFI1_TRACE_RX_H */
107
108#undef TRACE_INCLUDE_PATH
109#undef TRACE_INCLUDE_FILE
110#define TRACE_INCLUDE_PATH .
111#define TRACE_INCLUDE_FILE trace_rx
112#include <trace/define_trace.h>
v4.10.11
 
  1/*
  2 * Copyright(c) 2015, 2016 Intel Corporation.
  3 *
  4 * This file is provided under a dual BSD/GPLv2 license.  When using or
  5 * redistributing this file, you may do so under either license.
  6 *
  7 * GPL LICENSE SUMMARY
  8 *
  9 * This program is free software; you can redistribute it and/or modify
 10 * it under the terms of version 2 of the GNU General Public License as
 11 * published by the Free Software Foundation.
 12 *
 13 * This program is distributed in the hope that it will be useful, but
 14 * WITHOUT ANY WARRANTY; without even the implied warranty of
 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 16 * General Public License for more details.
 17 *
 18 * BSD LICENSE
 19 *
 20 * Redistribution and use in source and binary forms, with or without
 21 * modification, are permitted provided that the following conditions
 22 * are met:
 23 *
 24 *  - Redistributions of source code must retain the above copyright
 25 *    notice, this list of conditions and the following disclaimer.
 26 *  - Redistributions in binary form must reproduce the above copyright
 27 *    notice, this list of conditions and the following disclaimer in
 28 *    the documentation and/or other materials provided with the
 29 *    distribution.
 30 *  - Neither the name of Intel Corporation nor the names of its
 31 *    contributors may be used to endorse or promote products derived
 32 *    from this software without specific prior written permission.
 33 *
 34 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 35 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 36 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 37 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 38 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 39 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 40 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 41 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 42 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 43 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 44 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 45 *
 46 */
 
 47#if !defined(__HFI1_TRACE_RX_H) || defined(TRACE_HEADER_MULTI_READ)
 48#define __HFI1_TRACE_RX_H
 49
 50#include <linux/tracepoint.h>
 51#include <linux/trace_seq.h>
 52
 53#include "hfi.h"
 54
 
 
 
 
 
 
 
 55#undef TRACE_SYSTEM
 56#define TRACE_SYSTEM hfi1_rx
 57
 58TRACE_EVENT(hfi1_rcvhdr,
 59	    TP_PROTO(struct hfi1_devdata *dd,
 60		     u32 ctxt,
 61		     u64 eflags,
 62		     u32 etype,
 63		     u32 hlen,
 64		     u32 tlen,
 65		     u32 updegr,
 66		     u32 etail
 67		    ),
 68	    TP_ARGS(dd, ctxt, eflags, etype, hlen, tlen, updegr, etail),
 69	    TP_STRUCT__entry(DD_DEV_ENTRY(dd)
 70			     __field(u64, eflags)
 71			     __field(u32, ctxt)
 72			     __field(u32, etype)
 73			     __field(u32, hlen)
 74			     __field(u32, tlen)
 75			     __field(u32, updegr)
 76			     __field(u32, etail)
 77			     ),
 78	     TP_fast_assign(DD_DEV_ASSIGN(dd);
 79			    __entry->eflags = eflags;
 80			    __entry->ctxt = ctxt;
 81			    __entry->etype = etype;
 82			    __entry->hlen = hlen;
 83			    __entry->tlen = tlen;
 84			    __entry->updegr = updegr;
 85			    __entry->etail = etail;
 86			    ),
 87	     TP_printk(
 88		"[%s] ctxt %d eflags 0x%llx etype %d,%s hlen %d tlen %d updegr %d etail %d",
 89		__get_str(dev),
 90		__entry->ctxt,
 91		__entry->eflags,
 92		__entry->etype, show_packettype(__entry->etype),
 93		__entry->hlen,
 94		__entry->tlen,
 95		__entry->updegr,
 96		__entry->etail
 97		)
 98);
 99
100TRACE_EVENT(hfi1_receive_interrupt,
101	    TP_PROTO(struct hfi1_devdata *dd, u32 ctxt),
102	    TP_ARGS(dd, ctxt),
103	    TP_STRUCT__entry(DD_DEV_ENTRY(dd)
104			     __field(u32, ctxt)
105			     __field(u8, slow_path)
106			     __field(u8, dma_rtail)
107			     ),
108	    TP_fast_assign(DD_DEV_ASSIGN(dd);
109			__entry->ctxt = ctxt;
110			if (dd->rcd[ctxt]->do_interrupt ==
111			    &handle_receive_interrupt) {
112				__entry->slow_path = 1;
113				__entry->dma_rtail = 0xFF;
114			} else if (dd->rcd[ctxt]->do_interrupt ==
115					&handle_receive_interrupt_dma_rtail){
116				__entry->dma_rtail = 1;
117				__entry->slow_path = 0;
118			} else if (dd->rcd[ctxt]->do_interrupt ==
119					&handle_receive_interrupt_nodma_rtail) {
120				__entry->dma_rtail = 0;
121				__entry->slow_path = 0;
122			}
123			),
124	    TP_printk("[%s] ctxt %d SlowPath: %d DmaRtail: %d",
125		      __get_str(dev),
126		      __entry->ctxt,
127		      __entry->slow_path,
128		      __entry->dma_rtail
129		      )
130);
131
132TRACE_EVENT(hfi1_exp_tid_reg,
133	    TP_PROTO(unsigned int ctxt, u16 subctxt, u32 rarr,
134		     u32 npages, unsigned long va, unsigned long pa,
135		     dma_addr_t dma),
136	    TP_ARGS(ctxt, subctxt, rarr, npages, va, pa, dma),
137	    TP_STRUCT__entry(
138			     __field(unsigned int, ctxt)
139			     __field(u16, subctxt)
140			     __field(u32, rarr)
141			     __field(u32, npages)
142			     __field(unsigned long, va)
143			     __field(unsigned long, pa)
144			     __field(dma_addr_t, dma)
145			     ),
146	    TP_fast_assign(
147			   __entry->ctxt = ctxt;
148			   __entry->subctxt = subctxt;
149			   __entry->rarr = rarr;
150			   __entry->npages = npages;
151			   __entry->va = va;
152			   __entry->pa = pa;
153			   __entry->dma = dma;
154			   ),
155	    TP_printk("[%u:%u] entry:%u, %u pages @ 0x%lx, va:0x%lx dma:0x%llx",
156		      __entry->ctxt,
157		      __entry->subctxt,
158		      __entry->rarr,
159		      __entry->npages,
160		      __entry->pa,
161		      __entry->va,
162		      __entry->dma
163		      )
164	);
165
166TRACE_EVENT(hfi1_exp_tid_unreg,
167	    TP_PROTO(unsigned int ctxt, u16 subctxt, u32 rarr, u32 npages,
168		     unsigned long va, unsigned long pa, dma_addr_t dma),
169	    TP_ARGS(ctxt, subctxt, rarr, npages, va, pa, dma),
170	    TP_STRUCT__entry(
171			     __field(unsigned int, ctxt)
172			     __field(u16, subctxt)
173			     __field(u32, rarr)
174			     __field(u32, npages)
175			     __field(unsigned long, va)
176			     __field(unsigned long, pa)
177			     __field(dma_addr_t, dma)
178			     ),
179	    TP_fast_assign(
180			   __entry->ctxt = ctxt;
181			   __entry->subctxt = subctxt;
182			   __entry->rarr = rarr;
183			   __entry->npages = npages;
184			   __entry->va = va;
185			   __entry->pa = pa;
186			   __entry->dma = dma;
187			   ),
188	    TP_printk("[%u:%u] entry:%u, %u pages @ 0x%lx, va:0x%lx dma:0x%llx",
189		      __entry->ctxt,
190		      __entry->subctxt,
191		      __entry->rarr,
192		      __entry->npages,
193		      __entry->pa,
194		      __entry->va,
195		      __entry->dma
196		      )
197	);
198
199TRACE_EVENT(hfi1_exp_tid_inval,
200	    TP_PROTO(unsigned int ctxt, u16 subctxt, unsigned long va, u32 rarr,
201		     u32 npages, dma_addr_t dma),
202	    TP_ARGS(ctxt, subctxt, va, rarr, npages, dma),
203	    TP_STRUCT__entry(
204			     __field(unsigned int, ctxt)
205			     __field(u16, subctxt)
206			     __field(unsigned long, va)
207			     __field(u32, rarr)
208			     __field(u32, npages)
209			     __field(dma_addr_t, dma)
210			     ),
211	    TP_fast_assign(
212			   __entry->ctxt = ctxt;
213			   __entry->subctxt = subctxt;
214			   __entry->va = va;
215			   __entry->rarr = rarr;
216			   __entry->npages = npages;
217			   __entry->dma = dma;
218			  ),
219	    TP_printk("[%u:%u] entry:%u, %u pages @ 0x%lx dma: 0x%llx",
220		      __entry->ctxt,
221		      __entry->subctxt,
222		      __entry->rarr,
223		      __entry->npages,
224		      __entry->va,
225		      __entry->dma
226		      )
227	    );
228
229TRACE_EVENT(hfi1_mmu_invalidate,
230	    TP_PROTO(unsigned int ctxt, u16 subctxt, const char *type,
231		     unsigned long start, unsigned long end),
232	    TP_ARGS(ctxt, subctxt, type, start, end),
233	    TP_STRUCT__entry(
234			     __field(unsigned int, ctxt)
235			     __field(u16, subctxt)
236			     __string(type, type)
237			     __field(unsigned long, start)
238			     __field(unsigned long, end)
239			     ),
240	    TP_fast_assign(
241			__entry->ctxt = ctxt;
242			__entry->subctxt = subctxt;
243			__assign_str(type, type);
244			__entry->start = start;
245			__entry->end = end;
246	    ),
247	    TP_printk("[%3u:%02u] MMU Invalidate (%s) 0x%lx - 0x%lx",
248		      __entry->ctxt,
249		      __entry->subctxt,
250		      __get_str(type),
251		      __entry->start,
252		      __entry->end
253		      )
254	    );
255
256#endif /* __HFI1_TRACE_RX_H */
257
258#undef TRACE_INCLUDE_PATH
259#undef TRACE_INCLUDE_FILE
260#define TRACE_INCLUDE_PATH .
261#define TRACE_INCLUDE_FILE trace_rx
262#include <trace/define_trace.h>