FreeBSD kernel pms device code
mpidebug.h
Go to the documentation of this file.
1/*******************************************************************************
2*Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved.
3*
4*Redistribution and use in source and binary forms, with or without modification, are permitted provided
5*that the following conditions are met:
6*1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7*following disclaimer.
8*2. Redistributions in binary form must reproduce the above copyright notice,
9*this list of conditions and the following disclaimer in the documentation and/or other materials provided
10*with the distribution.
11*
12*THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13*WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14*FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15*FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16*NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18*LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20*
21* $FreeBSD$
22*
23********************************************************************************/
24
25/*******************************************************************************/
30/*******************************************************************************/
31
32#ifndef __MPIDEBUG_H__
33#define __MPIDEBUG_H__
34
35/*******************************************************************************/
36#define MPI_DEBUG_TRACE_BUFFER_MAX 1024
37#define MPI_DEBUG_TRACE_OB_IOMB_SIZE 128 /* 64 */
38#define MPI_DEBUG_TRACE_IB_IOMB_SIZE 128 /* 64 */
39#define MPI_DEBUG_TRACE_IBQ 1
40#define MPI_DEBUG_TRACE_OBQ 0
41#define MPI_DEBUG_TRACE_QNUM_ERROR 100 /* Added to Qnumber to indicate error */
42
44{
48 void * pEntry;
51
53{
57 void * pEntry;
60
61typedef struct mpiIbDebugTrace_s
62{
67
68typedef struct mpiObDebugTrace_s
69{
74
75void mpiTraceInit(void);
76void mpiTraceAdd(bit32 q,bit32 pici,bit32 ib, void *iomb, bit32 numBytes);
77
78#endif /* __MPIDEBUG_H__ */
79
80
81
82
83/********************************************************************
84** File that contains debug-specific APIs ( driver tracing etc )
85*********************************************************************/
86
87#ifndef __SPCDEBUG_H__
88#define __SPCDEBUG_H__
89
90
91/*
92** console and trace levels
93*/
94
95#define hpDBG_ALWAYS 0x0000ffff
96#define hpDBG_IOMB 0x00000040
97#define hpDBG_REGISTERS 0x00000020
98#define hpDBG_TICK_INT 0x00000010
99#define hpDBG_SCREAM 0x00000008
100#define hpDBG_VERY_LOUD 0x00000004
101#define hpDBG_LOUD 0x00000002
102#define hpDBG_ERROR 0x00000001
103#define hpDBG_NEVER 0x00000000
104
105#define smTraceDestBuffer 0x00000001
106#define smTraceDestRegister 0x00000002
107#define smTraceDestDebugger 0x00000004
108
109
110#define siTraceDestMask (smTraceDestBuffer | \
111 smTraceDestRegister | \
112 smTraceDestDebugger)
113
114/* Trace buffer will continuously */
115/* trace and wrap-around on itself */
116/* when it reaches the end */
117#define hpDBG_TraceBufferWrapAround 0x80000000
118/* This features enables logging of trace time */
119/* stamps. Only certain key routines use this */
120/* feature because it tends to clog up the trace */
121/* buffer. */
122#define hpDBG_TraceBufferUseTimeStamp 0x40000000
123/* This features enables logging of trace sequential */
124/* stamps. Only certain key routines use this */
125/* feature because it tends to clog up the trace */
126/* buffer. */
127#define hpDBG_TraceBufferUseSequenceStamp 0x20000000
128
129/* Trace IDs of various state machines */
130#define fiTraceSmChip 'C'
131#define fiTraceSmPort 'P'
132#define fiTraceSmLogin 'L'
133#define fiTraceSmXchg 'X'
134#define fiTraceSmFabr 'F'
135#define fiTraceDiscFab 'D'
136#define fiTraceDiscLoop 'M'
137#define fiTraceFc2 'A'
138#define fiTraceTgtState 'S'
139#define fiTraceIniState 'I'
140
141/* Trace IDs of various queues */
142#define fiSfsFreeList 'Z'
143#define fiSestFreeList 'W'
144#define fiOsSfsFreeList 'G'
145#define fiLgnFreeList 'K'
146#define fiPortalFreeList 'l'
147#define fiBusyList 'N'
148#define fiOsSfsAllocList 'B'
149#define fiTimerList 'V'
150#define fiSfsWaitForRspList 'I'
151#define fiLgnBusyList 'J'
152#define fiPortalBusyList 'g'
153#define fiWait4ErqList 'o'
154#define fiXchgAbortList 'U'
155#define fiXchgWaitList 'b'
156
157/* not used right now */
158#define fiSfsDeferFreeList 'q'
159#define fiDeferBusyList 'm'
160#define fiInvalidList 'X'
161#define fiInvalidatedList 'a'
162#define fiTmpXchList 'n'
163
164#define TMP_TRACE_BUFF_SIZE 32
165#define FC_TRACE_LINE_SIZE 70
166/******************************************************************************/
167/* Macro Conventions: we are assuming that the macros will be called inside */
168/* a function that already has a workable saRoot variable */
169/******************************************************************************/
170
171/******************************************************************************/
172/* fiTraceState : ==> _!n_ _ss: XXXXXXXX _se: XXXXXXXX */
173/* statemachine --^ currentstate--^ triggerevent--^ */
174/* NOTE: shorthand forms available as macros below. */
175/******************************************************************************/
176#ifdef SA_ENABLE_TRACE_FUNCTIONS
177
178
179void siResetTraceBuffer(agsaRoot_t *agRoot);
180void siTraceFuncEnter(agsaRoot_t *agRoot, bit32 mask, bit32 fileid, char *funcid);
181
182
183GLOBAL void siTraceFuncExit( agsaRoot_t *agRoot, bit32 mask, char fileid, char * funcid, char exitId );
184
185
186void siTrace(agsaRoot_t *agRoot, bit32 mask, char *uId, bit32 value, bit32 dataSizeInBits);
187void siTrace64(agsaRoot_t *agRoot, bit32 mask, char *uId, bit64 value, bit32 dataSizeInBits);
188bit32 siGetCurrentTraceIndex(agsaRoot_t *agRoot);
189void siTraceListRemove(agsaRoot_t *agRoot, bit32 mask, char listId, bitptr exchangeId);
190void siTraceListAdd(agsaRoot_t *agRoot, bit32 mask, char listId, bitptr exchangeId);
191void siTraceState(agsaRoot_t *agRoot, bit32 mask, bit32 statemachine, bit32 currentstate, bit32 triggerevent);
192
193#define smTraceState(L,S,C,T) siTraceState(agRoot,L,S,C,T)
194#define smTraceChipState(L,C,T) siTraceState(agRoot,L,fiTraceSmChip,C,T)
195#define smTraceFabricState(L,C,T) siTraceState(agRoot,L,fiTraceSmFabr,C,T)
196#define smTracePortState(L,C,T) siTraceState(agRoot,L,fiTraceSmPort,C,T)
197#define smTraceLoginState(L,C,T) siTraceState(agRoot,L,fiTraceSmLogin,C,T)
198#define smTraceXchgState(L,C,T) siTraceState(agRoot,L,fiTraceSmXchg,C,T)
199#define smTraceDiscFabState(L,C,T) siTraceState(agRoot,L,fiTraceDiscFab,C,T)
200#define smTraceDiscLoopState(L,C,T) siTraceState(agRoot,L,fiTraceDiscLoop,C,T)
201#define smTraceFc2State(L,C,T) siTraceState(agRoot,L,fiTraceFc2,C,T)
202#define smTraceScsiTgtState(L,C,T) siTraceState(agRoot,L,fiTraceTgtState,C,T)
203#define smTraceScsiIniState(L,C,T) siTraceState(agRoot,L,fiTraceIniState,C,T)
204
205#define smResetTraceBuffer(L) siResetTraceBuffer(L)
206#define smTraceFuncEnter(L,I) siTraceFuncEnter(agRoot,L,siTraceFileID,I)
207#define smTraceFuncExit(L,S,I) siTraceFuncExit(agRoot,L,siTraceFileID,I,S)
208#define smGetCurrentTraceIndex(L) siGetCurrentTraceIndex(L)
209#define smTraceListRemove(R,L,I,V) siTraceListRemove(R,L,I,V)
210#define smTraceListAdd(R,L,I,V) siTraceListAdd(R,L,I,V)
211
212#define smTrace(L,I,V) \
213 /*lint -e506 */ \
214 /*lint -e774 */ \
215 if (sizeof(V) == 8) {siTrace64(agRoot,L,I,(bit64)V,64);} \
216 else {siTrace(agRoot,L,I,(bit32)V,32);} \
217 /*lint +e506 */ \
218 /*lint +e774 */
219
220
221#else
222
223#define siTraceState(agRoot,L,fiTraceSmXchg,C,T)
224
225#define smTraceState(L,S,C,T)
226#define smTraceChipState(L,C,T)
227#define smTraceFabricState(L,C,T)
228#define smTracePortState(L,C,T)
229#define smTraceLoginState(L,C,T)
230#define smTraceXchgState(L,C,T)
231#define smTraceDiscFabState(L,C,T)
232#define smTraceDiscLoopState(L,C,T)
233#define smTraceFc2State(L,C,T)
234#define smTraceScsiTgtState(L,C,T)
235#define smTraceScsiIniState(L,C,T)
236
237#define smResetTraceBuffer(agRoot)
238#define smTraceFuncEnter(L,I)
239#define smTraceFuncExit(L,S,I)
240#define smGetCurrentTraceIndex(L)
241#define smTraceListRemove(L,I,V)
242#define smTraceListAdd(L,I,V)
243
244#define smTrace(L,I,V)
245
246#endif
247
258};
259typedef struct hpTraceBufferParms_s
261
262#ifdef SA_ENABLE_TRACE_FUNCTIONS
263
264GLOBAL void siTraceGetInfo(agsaRoot_t *agRoot, hpTraceBufferParms_t * pBParms);
265
266#define smTraceGetInfo(R,P) siTraceGetInfo(R,P)
267#else
268#define smTraceGetInfo(R,P)
269#endif
270
271
273#ifdef SA_ENABLE_TRACE_FUNCTIONS
274
275GLOBAL void siTraceSetMask(agsaRoot_t *agRoot, bit32 TraceMask );
276
277#define smTraceSetMask(R,P) siTraceSetMask(R,P)
278#else
279#define smTraceSetMask(R,P)
280#endif /* SA_ENABLE_TRACE_FUNCTIONS */
281
282#endif /* #ifndef __SPCDEBUG_H__ */
283
#define MPI_DEBUG_TRACE_BUFFER_MAX
Definition: mpidebug.h:36
#define siTraceState(agRoot, L, fiTraceSmXchg, C, T)
Definition: mpidebug.h:223
struct mpiObDebugTraceEntry_s mpiDebugObTraceEntry_t
void siEnableTracing(agsaRoot_t *agRoot)
void mpiTraceAdd(bit32 q, bit32 pici, bit32 ib, void *iomb, bit32 numBytes)
struct mpiIbDebugTraceEntry_s mpiDebugIbTraceEntry_t
void mpiTraceInit(void)
struct mpiObDebugTrace_s mpiDebugObTrace_t
struct mpiIbDebugTrace_s mpiDebugIbTrace_t
#define MPI_DEBUG_TRACE_IB_IOMB_SIZE
Definition: mpidebug.h:38
#define MPI_DEBUG_TRACE_OB_IOMB_SIZE
Definition: mpidebug.h:37
unsigned long long bit64
Definition: ostypes.h:104
unsigned long bitptr
Definition: ostypes.h:112
#define GLOBAL
Definition: ostypes.h:131
unsigned int bit32
Definition: ostypes.h:99
unsigned char bit8
Definition: ostypes.h:97
data structure stores OS specific and LL specific context
Definition: sa.h:1658
bit32 * pTraceIndexWrapCount
Definition: mpidebug.h:256
bit32 CurrentTraceIndexWrapCount
Definition: mpidebug.h:251
bit32 * pCurrentTraceIndex
Definition: mpidebug.h:255
bit32 Iomb[MPI_DEBUG_TRACE_IB_IOMB_SIZE/4]
Definition: mpidebug.h:58
mpiDebugIbTraceEntry_t Data[MPI_DEBUG_TRACE_BUFFER_MAX]
Definition: mpidebug.h:65
bit32 Iomb[MPI_DEBUG_TRACE_OB_IOMB_SIZE/4]
Definition: mpidebug.h:49
mpiDebugObTraceEntry_t Data[MPI_DEBUG_TRACE_BUFFER_MAX]
Definition: mpidebug.h:72