xref: /illumos-gate/usr/src/uts/sun4v/io/px/px_err.h (revision 002c70ff32f5df6f93c15f88d351ce26443e6ee7)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*
22  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
23  * Use is subject to license terms.
24  */
25 
26 #ifndef _SYS_PX_ERR_H
27 #define	_SYS_PX_ERR_H
28 
29 #pragma ident	"%Z%%M%	%I%	%E% SMI"
30 
31 #ifdef	__cplusplus
32 extern "C" {
33 #endif
34 
35 /* error packet definitions */
36 
37 /* Block Definitions */
38 #define	BLOCK_RSVD		0x0
39 #define	BLOCK_HOSTBUS		0x1
40 #define	BLOCK_MMU		0x2
41 #define	BLOCK_INTR		0x3
42 #define	BLOCK_PCIE		0x4
43 #define	BLOCK_UNKNOWN		0xe
44 
45 /* Op definitions for HOSTBUS */
46 #define	OP_RESERVED		0x0
47 #define	OP_PIO			0x1
48 #define	OP_DMA			0x2
49 #define	OP_UNKNOWN		0xe
50 
51 
52 /* Op definitions for MMU */
53 #define	OP_RESERVED		0x0
54 #define	OP_XLAT			0x1
55 #define	OP_BYPASS		0x2
56 #define	OP_TBW			0x3
57 #define	OP_UNKNOWN		0xe
58 
59 /* Op definitions for INTR */
60 #define	OP_RESERVED		0x0
61 #define	OP_MSI32		0x1
62 #define	OP_MSI64		0x2
63 #define	OP_MSIQ			0x3
64 #define	OP_PCIEMSG		0x4
65 #define	OP_UNKNOWN		0xe
66 
67 /* Phase definitons */
68 #define	PH_RESERVED		0x0
69 #define	PH_ADDR			0x1
70 #define	PH_DATA			0x2
71 #define	PH_UNKNOWN		0xe
72 #define	PH_IRR			0xf
73 
74 /* Condition definitions for ADDR Phase */
75 #define	CND_RESERVED		0x0
76 #define	CND_ILL			0x1
77 #define	CND_UNMAP		0x2
78 #define	CND_UNKNOWN		0xe
79 #define	CND_IRR			0xf
80 
81 /* Condition definitions for DATA Phase */
82 #define	CND_RESERVED		0x0
83 #define	CND_ILL			0x1
84 #define	CND_INT			0x3
85 #define	CND_UE			0x4
86 #define	CND_UNKNOWN		0xe
87 #define	CND_IRR			0xf
88 
89 /* Condition definitions for MMU Block ADDR phase */
90 #define	CND_PROT		0x5
91 #define	CND_INV			0x6
92 
93 /* Condition definitions for INTR Block MSIQ  Op Data phase */
94 #define	CND_OV			0x5
95 
96 /* Condition definitions for Unkown phase */
97 #define	CND_RESERVED		0x0
98 #define	CND_ILL			0x1
99 #define	CND_TO			0x5
100 #define	CND_UNKNOWN		0xe
101 #define	CND_IRR			0xf
102 
103 /* Dir definitions for HOSTBUS & MMU */
104 #define	DIR_RESERVED		0x0
105 #define	DIR_READ		0x1
106 #define	DIR_WRITE		0x2
107 #define	DIR_RDWR		0x3
108 #define	DIR_INGRESS		0x4
109 #define	DIR_EGRESS		0x5
110 #define	DIR_LINK		0x6
111 #define	DIR_UNKNOWN		0xe
112 #define	DIR_IRR			0xf
113 
114 #define	PX_FM_RC_UNRECOG	"fire.epkt"
115 #define	EPKT_SYSINO		"sysino"
116 #define	EPKT_EHDL		"ehdl"
117 #define	EPKT_STICK		"stick"
118 #define	EPKT_RC_DESCR		"rc_descr"
119 #define	EPKT_PEC_DESCR		"pec_descr"
120 
121 typedef struct root_complex {
122 	uint64_t  sysino;
123 	uint64_t  ehdl;
124 	uint64_t  stick;
125 	struct  {
126 		uint32_t block	: 4,
127 			op	: 4,
128 			phase	: 4,
129 			cond	: 4,
130 			dir	: 4,
131 			STOP	: 1,
132 				: 6,
133 			H	: 1,
134 			R	: 1,
135 			D	: 1,
136 			M	: 1,
137 			S	: 1;
138 	} rc_descr;
139 	uint32_t  size;
140 	uint64_t  addr;
141 	uint64_t  hdr[2];
142 	uint64_t  reserved;
143 } px_rc_err_t;
144 
145 typedef struct pec_block_err {
146 	uint64_t  sysino;
147 	uint64_t  ehdl;
148 	uint64_t  stick;
149 	struct  {
150 		uint32_t block	: 4,
151 			rsvd1	: 12,
152 			dir	: 4,
153 				: 3,
154 			Z	: 1,
155 			S	: 1,
156 			R	: 1,
157 			I	: 1,
158 			H	: 1,
159 			C	: 1,
160 			U	: 1,
161 			E	: 1,
162 			P	: 1;
163 	} pec_descr;
164 	uint16_t  pci_err_status;
165 	uint16_t  pcie_err_status;
166 	uint32_t  ce_reg_status;
167 	uint32_t  ue_reg_status;
168 	uint64_t  hdr[2];
169 	uint32_t  err_src_reg;
170 	uint32_t  root_err_status;
171 } px_pec_err_t;
172 
173 #ifdef	__cplusplus
174 }
175 #endif
176 
177 #endif	/* _SYS_PX_ERR_H */
178