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 2009 Sun Microsystems, Inc.  All rights reserved.
23 * Use is subject to license terms.
24 */
25
26#pragma dictionary "SUN4V"
27
28/*
29 * Eversholt rules for the N2 PIU extention to Fire nexus driver
30 */
31#define HB_FIT			400
32#define NONFATAL_COUNT		10
33#define NONFATAL_TIME		1hour
34#define PCIEX_DEV_FIT		1000
35#define LINK_EVENTS_COUNT	10
36#define LINK_EVENTS_TIME	1h
37
38/*
39 * Test for primary or secondary ereports
40 */
41#define IS_PRIMARY (payloadprop("primary"))
42#define IS_SECONDARY (! payloadprop("primary"))
43
44/*
45 * payload: mmu-tfsr
46 *
47 * Extract the request id, the BDF value, in the MMU TFSR register
48 *
49 * PRM 2.0, pg 243
50 *    Request ID: bits 15:0
51 *
52 * Example:
53 *   0x7766554433221100
54 *                 ^^^^
55 */
56#define MMU_REQ_ID_BIT_MODULO (1 << 16)
57#define MMU_MATCH_BDF(mmu_tfsr, b, d, f) \
58	( IS_PRIMARY && \
59	  (((mmu_tfsr) % MMU_REQ_ID_BIT_MODULO) == ((b << 8) | (d << 3) | f)) \
60	)
61
62/*
63 * Faults, upsets and defects
64 */
65/* N2 Asic */
66fru hostbridge/pciexrc;
67asru hostbridge/pciexrc;
68event fault.io.fire.asic@hostbridge/pciexrc,
69    FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
70event fault.io.n2.soc@hostbridge/pciexrc,
71    FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
72event fault.io.n2.crossbar@hostbridge/pciexrc,
73    FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
74event fault.io.n2.dmu@hostbridge/pciexrc,
75    FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
76event fault.io.n2.ncu@hostbridge/pciexrc,
77    FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
78event fault.io.n2.siu@hostbridge/pciexrc,
79    FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
80event fault.io.n2.niu@hostbridge/pciexrc,
81    FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
82
83/* No diagnosis */
84event upset.io.fire.nodiag@hostbridge;
85
86/*
87 * Additional "DMC" errors to fire.
88 * N2 asic parity error
89 */
90event ereport.io.n2.dmu.iotsbdesc_dpe@hostbridge/pciexrc{within(5s)};
91
92/*
93 * Additional "PEC" errors to fire.
94 */
95event ereport.io.n2.peu.err_sds_los@hostbridge/pciexrc{within(5s)};
96event ereport.io.n2.peu.lwc@hostbridge/pciexrc{within(5s)};
97event ereport.io.n2.peu.nfp@hostbridge/pciexrc{within(5s)};
98
99/*
100 * Unique SOC errors to N2
101 */
102/* fault.io.n2.soc */
103event ereport.io.n2.soc.ncumondotable@hostbridge/pciexrc{within(5s)};
104event ereport.io.n2.soc.ncuctagce@hostbridge/pciexrc{within(5s)};
105event ereport.io.n2.soc.ncuinttable@hostbridge/pciexrc{within(5s)};
106event ereport.io.n2.soc.ncudataparity@hostbridge/pciexrc{within(5s)};
107
108/* fault.io.n2.crossbar */
109event ereport.io.n2.soc.ncupcxdata@hostbridge/pciexrc{within(5s)};
110event ereport.io.n2.soc.ncudmucredit@hostbridge/pciexrc{within(5s)};
111
112/* fault.io.n2.dmu */
113event ereport.io.n2.soc.siidmuctague@hostbridge/pciexrc{within(5s)};
114event ereport.io.n2.soc.siidmuctagce@hostbridge/pciexrc{within(5s)};
115event ereport.io.n2.soc.siidmuaparity@hostbridge/pciexrc{within(5s)};
116event ereport.io.n2.soc.siidmudparity@hostbridge/pciexrc{within(5s)};
117event ereport.io.n2.soc.dmuinternal@hostbridge/pciexrc;
118
119/* fault.io.n2.ncu */
120event ereport.io.n2.soc.ncupcxue@hostbridge/pciexrc{within(5s)};
121event ereport.io.n2.soc.dmuncucredit@hostbridge/pciexrc{within(5s)};
122event ereport.io.n2.soc.ncumondofifo@hostbridge/pciexrc{within(5s)};
123event ereport.io.n2.soc.ncucpxue@hostbridge/pciexrc{within(5s)};
124event ereport.io.n2.soc.ncudmuue@hostbridge/pciexrc{within(5s)};
125
126/* fault.io.n2.siu */
127event ereport.io.n2.soc.ncuctague@hostbridge/pciexrc{within(5s)};
128event ereport.io.n2.soc.sioctague@hostbridge/pciexrc{within(5s)};
129event ereport.io.n2.soc.dmusiicredit@hostbridge/pciexrc{within(5s)};
130event ereport.io.n2.soc.dmudataparity@hostbridge/pciexrc{within(5s)};
131event ereport.io.n2.soc.sioctagce@hostbridge/pciexrc{within(5s)};
132event ereport.io.n2.soc.dmuctagce@hostbridge/pciexrc{within(5s)};
133event ereport.io.n2.soc.dmuctague@hostbridge/pciexrc{within(5s)};
134
135/* fault.io.n2.niu */
136event ereport.io.n2.soc.siiniuctagce@hostbridge/pciexrc{within(5s)};
137event ereport.io.n2.soc.siiniuctague@hostbridge/pciexrc{within(5s)};
138event ereport.io.n2.soc.siiniuaparity@hostbridge/pciexrc{within(5s)};
139event ereport.io.n2.soc.siiniudparity@hostbridge/pciexrc{within(5s)};
140event ereport.io.n2.soc.niuctague@hostbridge/pciexrc{within(5s)};
141event ereport.io.n2.soc.niuctagce@hostbridge/pciexrc{within(5s)};
142event ereport.io.n2.soc.niudataparity@hostbridge/pciexrc{within(5s)};
143
144/* fault.io.niu/niufn */
145event ereport.io.device.inval_state@niu/niufn{within(5s)};
146event ereport.io.device.no_response@niu/niufn{within(5s)};
147event ereport.io.device.stall@niu/niufn{within(5s)};
148event ereport.io.device.badint_limit@niu/niufn{within(5s)};
149event ereport.io.device.intern_corr@niu/niufn{within(5s)};
150event ereport.io.device.intern_uncorr@niu/niufn{within(5s)};
151event ereport.io.device.nf-device@niu/niufn;
152
153/*
154 * Fault at the adjacent node which is right below the Fire ASIC
155 */
156event error.io.fire.pec.adjacentnode@hostbridge/pciexrc;
157
158prop error.io.fire.pec.adjacentnode@hostbridge/pciexrc (0) ->
159    ereport.io.n2.peu.nfp@hostbridge/pciexrc;
160
161/*
162 * DMU N2 asic parity error
163 */
164prop fault.io.fire.asic@hostbridge/pciexrc (0)->
165    ereport.io.n2.dmu.iotsbdesc_dpe@hostbridge/pciexrc;
166
167/*
168 * Surprise remove or serdes los, similar to fire ldn event,
169 * don't diag.
170 */
171prop upset.io.fire.nodiag@hostbridge (0)->
172    ereport.io.n2.peu.err_sds_los@hostbridge/pciexrc,
173    ereport.io.n2.peu.lwc@hostbridge/pciexrc;
174
175/* SOC Errors */
176/* fault.io.n2.soc */
177prop fault.io.n2.soc@hostbridge/pciexrc (1)->
178	ereport.io.n2.soc.ncumondotable@hostbridge/pciexrc,
179	ereport.io.n2.soc.ncuctagce@hostbridge/pciexrc,
180	ereport.io.n2.soc.ncuinttable@hostbridge/pciexrc,
181	ereport.io.n2.soc.ncudataparity@hostbridge/pciexrc;
182
183/* fault.io.n2.crossbar */
184prop fault.io.n2.crossbar@hostbridge/pciexrc (1)->
185	ereport.io.n2.soc.ncudmucredit@hostbridge/pciexrc,
186	ereport.io.n2.soc.ncupcxdata@hostbridge/pciexrc;
187
188/* fault.io.n2.dmu */
189prop fault.io.n2.dmu@hostbridge/pciexrc (1)->
190	ereport.io.n2.soc.siidmuctague@hostbridge/pciexrc,
191	ereport.io.n2.soc.siidmuctagce@hostbridge/pciexrc,
192	ereport.io.n2.soc.siidmuaparity@hostbridge/pciexrc,
193	ereport.io.n2.soc.siidmudparity@hostbridge/pciexrc,
194	ereport.io.n2.soc.dmuinternal@hostbridge/pciexrc;
195
196/* fault.io.n2.ncu */
197prop fault.io.n2.ncu@hostbridge/pciexrc (1)->
198	ereport.io.n2.soc.ncupcxue@hostbridge/pciexrc,
199	ereport.io.n2.soc.dmuncucredit@hostbridge/pciexrc,
200	ereport.io.n2.soc.ncumondofifo@hostbridge/pciexrc,
201	ereport.io.n2.soc.ncucpxue@hostbridge/pciexrc,
202	ereport.io.n2.soc.ncudmuue@hostbridge/pciexrc;
203
204/* fault.io.n2.siu */
205prop fault.io.n2.siu@hostbridge/pciexrc (1)->
206	ereport.io.n2.soc.ncuctague@hostbridge/pciexrc,
207	ereport.io.n2.soc.sioctague@hostbridge/pciexrc,
208	ereport.io.n2.soc.dmusiicredit@hostbridge/pciexrc,
209	ereport.io.n2.soc.dmudataparity@hostbridge/pciexrc,
210	ereport.io.n2.soc.sioctagce@hostbridge/pciexrc,
211	ereport.io.n2.soc.dmuctagce@hostbridge/pciexrc,
212	ereport.io.n2.soc.dmuctague@hostbridge/pciexrc;
213
214/* fault.io.n2.niu */
215prop fault.io.n2.niu@hostbridge/pciexrc (0)->
216	ereport.io.n2.soc.siiniuctague@hostbridge/pciexrc,
217	ereport.io.n2.soc.siiniuaparity@hostbridge/pciexrc,
218	ereport.io.n2.soc.siiniudparity@hostbridge/pciexrc,
219	ereport.io.n2.soc.siiniuctagce@hostbridge/pciexrc,
220	ereport.io.n2.soc.niuctague@hostbridge/pciexrc,
221	ereport.io.n2.soc.niuctagce@hostbridge/pciexrc,
222	ereport.io.n2.soc.niudataparity@hostbridge/pciexrc;
223
224/* n2 niu/niufn */
225event error.io.device.f-device@niu/niufn;
226event error.io.device.nf-device@niu/niufn;
227event error.io.service.restored@niu/niufn;
228event ereport.io.service.lost@niu/niufn{within(5s)};
229event ereport.io.service.restored@niu/niufn{within(30s)};
230event ereport.io.service.degraded@niu/niufn{within(5s)};
231event ereport.io.service.unaffected@niu/niufn{within(5s)};
232
233/* fault error propogation */
234prop fault.io.n2.niu@hostbridge/pciexrc (0)->
235        error.io.device.f-device@niu/niufn,
236        error.io.device.nf-device@niu/niufn;
237
238/* fault.io.niu/niufn */
239prop error.io.service.restored@niu/niufn (1)->
240	ereport.io.service.lost@niu/niufn,
241	ereport.io.service.degraded@niu/niufn;
242
243prop error.io.service.restored@niu/niufn (1)->
244    ereport.io.service.restored@niu/niufn;
245
246prop error.io.device.f-device@niu/niufn (1)->
247    ereport.io.device.inval_state@niu/niufn,
248    ereport.io.device.no_response@niu/niufn,
249    ereport.io.device.stall@niu/niufn,
250    ereport.io.device.badint_limit@niu/niufn,
251    ereport.io.device.intern_corr@niu/niufn,
252    ereport.io.device.intern_uncorr@niu/niufn;
253
254prop error.io.device.f-device@niu/niufn (1)->
255    ereport.io.service.lost@niu/niufn,
256    ereport.io.service.degraded@niu/niufn;
257
258engine serd.io.device.nonfatal@niu/niufn,
259    N=NONFATAL_COUNT, T=NONFATAL_TIME, method=persistent,
260    trip=ereport.io.device.nf-device@niu/niufn;
261
262event upset.io.device.nonfatal@niu/niufn,
263    engine=serd.io.device.nonfatal@niu/niufn;
264
265prop error.io.device.nf-device@niu/niufn (1)->
266    ereport.io.device.nf-device@niu/niufn;
267
268prop error.io.device.nf-device@niu/niufn (0)->
269    ereport.io.device.inval_state@niu/niufn,
270    ereport.io.device.no_response@niu/niufn,
271    ereport.io.device.stall@niu/niufn,
272    ereport.io.device.badint_limit@niu/niufn,
273    ereport.io.device.intern_corr@niu/niufn,
274    ereport.io.device.intern_uncorr@niu/niufn,
275    ereport.io.service.unaffected@niu/niufn,
276    error.io.service.restored@niu/niufn;
277
278prop upset.io.device.nonfatal@niu/niufn (1)->
279    ereport.io.device.inval_state@niu/niufn,
280    ereport.io.device.no_response@niu/niufn,
281    ereport.io.device.stall@niu/niufn,
282    ereport.io.device.badint_limit@niu/niufn,
283    ereport.io.device.intern_corr@niu/niufn,
284    ereport.io.device.intern_uncorr@niu/niufn;
285
286prop upset.io.device.nonfatal@niu/niufn (1)->
287    ereport.io.service.unaffected@niu/niufn,
288    error.io.service.restored@niu/niufn;
289