xref: /illumos-gate/usr/src/cmd/fm/eversholt/files/common/pci.esc (revision 7ae111d47a973fff4c6e231cc31f271dd9cef473)
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#pragma ident	"%Z%%M%	%I%	%E% SMI"
27
28#pragma dictionary "PCI"
29
30#define PCI_DEV_FIT 1000
31#define PCI_BUS_FIT 500
32
33/*
34 * SERD parameters.
35 *
36 * Nonfatal dpe errors have to be recovered by the hardened driver which may
37 * cause intermittant performance/responsiveness problems, so we have tighter
38 * serd parameters for these. These are most likely errors in buffers/caches
39 * within devices and bridges, so use similar rates to cpu data cache parity
40 * errors.
41 *
42 * We will be more conservative about nonfatal internal errors reported
43 * by the driver.
44 */
45#define NONFATAL_COUNT 6
46#define NONFATAL_TIME 2h
47#define NONFATAL_DPE_U_COUNT 3
48#define NONFATAL_DPE_U_TIME 168h
49#define NONFATAL_DPE_D_COUNT 3
50#define NONFATAL_DPE_D_TIME 168h
51
52#define	IS_LEAF \
53	(confprop(asru(pcibus/pcidev/pcifn), "CLASS-CODE") != "60400" && \
54	confprop(asru(pcibus/pcidev/pcifn), "CLASS-CODE") != "60401")
55
56#define	IS_BDG \
57	(confprop(asru(pcibus/pcidev/pcifn), "CLASS-CODE") == "60400" || \
58	confprop(asru(pcibus/pcidev/pcifn), "CLASS-CODE") == "60401")
59
60#define	FD_IS_LEAF \
61	(confprop(asru(pcibus/pcidev[fromdev]/pcifn), "CLASS-CODE") != \
62	"60400" && \
63	confprop(asru(pcibus/pcidev[fromdev]/pcifn), "CLASS-CODE") != "60401")
64
65/*
66 * note general rule for errors is that for upstream propagations
67 * @pcibus/pcidev/pcifn is the sending device while  for downstream
68 * propagations it is the receiving device.
69 */
70
71asru pcibus/pcidev/pcifn;
72fru pcibus/pcidev;
73
74event fault.io.pci.device-interr@pcibus/pcidev/pcifn,
75        FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
76
77event fault.io.pci.device-invreq@pcibus/pcidev/pcifn,
78        FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
79
80event fault.io.pci.device-noresp@pcibus/pcidev/pcifn,
81        FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
82
83/*
84 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
85 * A faulty hostbridge may cause:
86 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
87 *  - nr-pw-d:	the device not to respond to an upstream request
88 *  - nr-drw-d:	the device not to respond to an upstream request
89 *  - ta-pw-d:	the device to send a target abort to an upstream request
90 *  - ta-drw-d:	the device to send a target abort to an upstream request
91 *  - serr-u:	the device to report itself in error
92 *  - badreq-pw-d:a bad downstream request - not parity error (may cause target
93 * 		to target abort or master abort)
94 *  - badreq-drw-d:a bad downstream request - not parity error (may cause
95 * 		target to target abort or master abort)
96 *  - ape-d:	address/parity to get corrupted during downstream transmission
97 *  - scpe-d:	split completion to get corrupted during downstream transmission
98 *  - dpe-d:	the device to transfer bad data and/or bad parity downstream
99 *  - retry-to-d:	the device to exceed the set timeout for a delayed
100 *			transaction retry.
101 */
102#define	PCI_TO_HB pcibus/pcidev<todev>/pcifn<> {fromdev != 32 && todev == 32}
103#define	PCI_FROM_HB pcibus/pcidev<todev>/pcifn<> {fromdev == 32 && todev != 32}
104
105event error.io.pci.retry-to-d@pcibus/pcidev/pcifn;
106event error.io.pci.nr-pw-d@pcibus/pcidev/pcifn;
107event error.io.pci.nr-drw-d@pcibus/pcidev/pcifn;
108event error.io.pci.ta-pw-d@pcibus/pcidev/pcifn;
109event error.io.pci.ta-drw-d@pcibus/pcidev/pcifn;
110event error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn;
111event error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn;
112event error.io.pci.f-dpe-d@pcibus/pcidev/pcifn;
113event error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
114event error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn;
115event error.io.pci.ape-d@pcibus/pcidev/pcifn;
116event error.io.pci.ape-u@pcibus/pcidev/pcifn;
117event error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn;
118event error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn;
119event error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn;
120event error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn;
121event error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn;
122event error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn;
123event error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
124event error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
125event error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
126event error.io.pci.ta-u@pcibus/pcidev/pcifn;
127event error.io.pci.ma-u@pcibus/pcidev/pcifn;
128event error.io.pci.perr-dw-u@pcibus/pcidev/pcifn;
129event error.io.pci.perr-pw-u@pcibus/pcidev/pcifn;
130event error.io.pci.perr-dr-u@pcibus/pcidev/pcifn;
131event error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn;
132event error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn;
133event error.io.pci.device-serr@pcibus/pcidev/pcifn;
134event error.io.pci.device-ta@pcibus/pcidev/pcifn;
135event error.io.pci.device-par@pcibus/pcidev/pcifn;
136event error.io.pci.serr-u@pcibus/pcidev/pcifn;
137event error.io.pcix.scpe-d@pcibus/pcidev/pcifn;
138event error.io.pcix.scpe-u@pcibus/pcidev/pcifn;
139event error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn;
140event error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn;
141event error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn;
142event error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn;
143
144event ereport.io.pci.ma@pcibus/pcidev/pcifn{within(5s)};
145event ereport.io.pci.rta@pcibus/pcidev/pcifn{within(5s)};
146event ereport.io.pci.mdpe@pcibus/pcidev/pcifn{within(5s)};
147event ereport.io.pci.sta@pcibus/pcidev/pcifn{within(5s)};
148event ereport.io.pci.sserr@pcibus/pcidev/pcifn{within(5s)};
149event ereport.io.pci.dpe@pcibus/pcidev/pcifn{within(5s)};
150event ereport.io.pci.target-mdpe@pcibus/pcidev/pcifn{within(5s)};
151event ereport.io.pci.target-rta@pcibus/pcidev/pcifn{within(5s)};
152event ereport.io.pci.target-ma@pcibus/pcidev/pcifn{within(5s)};
153event ereport.io.pcix.discard@pcibus/pcidev/pcifn{within(5s)};
154
155prop fault.io.pci.device-noresp@pcibus/pcidev[fromdev]/pcifn (0)->
156    error.io.pci.nr-pw-d@PCI_FROM_HB,
157    error.io.pci.nr-drw-d@PCI_FROM_HB,
158    error.io.pci.retry-to-d@PCI_FROM_HB;
159
160prop fault.io.pci.device-invreq@pcibus/pcidev[fromdev]/pcifn (0)->
161    error.io.pci.badreq-pw-d@PCI_FROM_HB,
162    error.io.pci.badreq-drw-d@PCI_FROM_HB;
163
164prop fault.io.pci.device-interr@pcibus/pcidev/pcifn (0)->
165    error.io.pci.device-par@pcibus/pcidev/pcifn,
166    error.io.pci.device-ta@pcibus/pcidev/pcifn,
167    error.io.pci.device-serr@pcibus/pcidev/pcifn;
168
169prop error.io.pci.device-par@pcibus/pcidev[fromdev]/pcifn (1)->
170    error.io.pci.f-dpe-d@PCI_FROM_HB,
171    error.io.pci.nf-dpe-d@PCI_FROM_HB,
172    error.io.pcix.scpe-d@PCI_FROM_HB,
173    error.io.pci.ape-d@PCI_FROM_HB;
174
175prop error.io.pci.device-ta@pcibus/pcidev[fromdev]/pcifn (1)->
176    error.io.pci.ta-pw-d@PCI_FROM_HB,
177    error.io.pci.ta-drw-d@PCI_FROM_HB;
178
179prop error.io.pci.device-ta@pcibus/pcidev[fromdev]/pcifn (1)->
180    ereport.io.pci.sta@pcibus/pcidev<todev>/pcifn {
181	todev == fromdev && fromdev == 32 };
182
183prop error.io.pci.device-serr@pcibus/pcidev/pcifn (2)->
184    error.io.pci.serr-u@pcibus/pcidev/pcifn,
185    ereport.io.pci.sserr@pcibus/pcidev/pcifn;
186
187prop error.io.pci.f-dpe-d@pcibus/pcidev/pcifn (1)->
188    error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn,
189    error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn,
190    error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn;
191
192prop error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn (1)->
193    error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn,
194    error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn,
195    error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn;
196
197/*
198 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
199 * ereport generation rules for hostbridge
200 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
201 */
202prop error.io.pci.dpdata-pw-u@pcibus/pcidev[fromdev]/pcifn (1)->
203    ereport.io.pci.dpe@PCI_TO_HB;
204
205prop error.io.pci.dpdata-dw-u@pcibus/pcidev[fromdev]/pcifn (1)->
206    ereport.io.pci.dpe@PCI_TO_HB;
207
208prop error.io.pci.dpdata-dr-u@pcibus/pcidev[fromdev]/pcifn (2)->
209    ereport.io.pci.mdpe@PCI_TO_HB,
210    ereport.io.pci.dpe@PCI_TO_HB;
211
212prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (3)->
213    ereport.io.pci.dpe@PCI_TO_HB,
214    error.io.pci.serr-u@PCI_TO_HB,
215    ereport.io.pci.sserr@PCI_TO_HB;
216
217prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (0)->
218    ereport.io.pci.sta@PCI_TO_HB;
219
220prop error.io.pci.ma-u@pcibus/pcidev[fromdev]/pcifn (1)->
221    ereport.io.pci.ma@PCI_TO_HB;
222
223prop error.io.pci.ta-u@pcibus/pcidev[fromdev]/pcifn (1)->
224    ereport.io.pci.rta@PCI_TO_HB;
225
226prop error.io.pci.perr-dw-u@pcibus/pcidev[fromdev]/pcifn (1)->
227    ereport.io.pci.mdpe@PCI_TO_HB;
228
229prop error.io.pci.perr-pw-u@pcibus/pcidev[fromdev]/pcifn (1)->
230    ereport.io.pci.mdpe@PCI_TO_HB;
231
232prop error.io.pci.badreq-drw-u@pcibus/pcidev[fromdev]/pcifn (0)->
233    ereport.io.pci.sta@PCI_TO_HB;
234
235prop error.io.pci.badreq-pw-u@pcibus/pcidev[fromdev]/pcifn (0)->
236    ereport.io.pci.sta@PCI_TO_HB;
237
238prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn (1)->
239    error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn,
240    error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn;
241
242prop error.io.pcix.scpe-u@pcibus/pcidev[fromdev]/pcifn (0)->
243    ereport.io.pci.dpe@PCI_TO_HB,
244    error.io.pci.serr-u@PCI_TO_HB,
245    ereport.io.pci.sserr@PCI_TO_HB,
246    ereport.io.pci.sta@PCI_TO_HB;
247
248prop error.io.pcix.spl-comp-ma-u@pcibus/pcidev[fromdev]/pcifn (3)->
249    ereport.io.pcix.discard@PCI_TO_HB,
250    error.io.pci.serr-u@PCI_TO_HB,
251    ereport.io.pci.sserr@PCI_TO_HB;
252
253prop error.io.pcix.spl-comp-ta-u@pcibus/pcidev[fromdev]/pcifn (3)->
254    ereport.io.pcix.discard@PCI_TO_HB,
255    error.io.pci.serr-u@PCI_TO_HB,
256    ereport.io.pci.sserr@PCI_TO_HB;
257
258/*
259 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
260 * A faulty PCI leaf device or pci-pci bridge may cause:
261 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
262 *  - nr-pw-u:		the device not to respond to a valid downstream request
263 *  - nr-drw-u:		the device not to respond to a valid downstream request
264 *  - ta-pw-u:		the device responds with a ta to a valid downstream
265 *			request
266 *  - ta-drw-u:		the device responds with a ta to a valid downstream
267 *			request
268 *  - serr-u:		the device to report itself in error
269 *  - badreq-pw-u:	a bad upstream request (may cause target to target
270 *			abort or master abort)
271 *  - badreq-drw-u:	a bad upstream request (may cause target to target
272 *			abort or master abort)
273 *  - ape-u:		the transfer of bad address/parity upstream.
274 *  - scpe-u:		the transfer of bad split completion upstream.
275 *  - dpe-u:		the device to deliver bad data/parity upstream.
276 *  - retry-to-u:	the device to exceed the set timeout for a delayed
277 *			transaction retry.
278 *
279 * A faulty PCI-X leaf device or bridge may also cause:
280 *
281 *  - tx-oor:		the device sends a byte count larger than the completers
282 *			address range.
283 *  - rx-unex-sc:	the device recieved a split completion with a tag
284 * 			which does not match any outstanding transaction.
285 */
286
287#define	PCI_NOT_HB pcibus/pcidev[fromdev]/pcifn {fromdev != 32}
288
289event error.io.pci.retry-to-u@pcibus/pcidev/pcifn;
290event error.io.pci.nr-pw-u@pcibus/pcidev/pcifn;
291event error.io.pci.nr-drw-u@pcibus/pcidev/pcifn;
292event error.io.pci.ta-pw-u@pcibus/pcidev/pcifn;
293event error.io.pci.ta-drw-u@pcibus/pcidev/pcifn;
294event error.io.pci.f-dpe-u@pcibus/pcidev/pcifn;
295event error.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
296event error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn;
297event error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn;
298event error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn;
299event error.io.pci.flt-f-dpdata-dw-u@pcibus/pcidev/pcifn;
300event error.io.pci.flt-nf-dpdata-dw-u@pcibus/pcidev/pcifn;
301event error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn;
302event error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn;
303event error.io.pci.perr-d@pcibus/pcidev/pcifn;
304event error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
305event error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
306event error.io.pci.target-rta-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
307event error.io.pci.target-ma-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
308event error.io.pcix.tx-oor@pcibus/pcidev/pcifn;
309event error.io.pcix.rx-unex-sc@pcibus/pcidev/pcifn;
310event error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn;
311event error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn;
312event error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn;
313event error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn;
314event error.io.device.nf-device@pcibus/pcidev/pcifn;
315event error.io.device.f-device@pcibus/pcidev/pcifn;
316event error.io.pciex.flt-badreq-u@pcibus/pcidev/pcifn;
317
318event ereport.io.pcix.oor@pcibus/pcidev/pcifn{within(5s)};
319event ereport.io.pcix.unex-sc@pcibus/pcidev/pcifn{within(5s)};
320
321prop fault.io.pci.device-noresp@pcibus/pcidev[fromdev]/pcifn (0)->
322    error.io.pci.nr-pw-u@PCI_NOT_HB,
323    error.io.pci.nr-drw-u@PCI_NOT_HB,
324    error.io.pci.retry-to-u@PCI_NOT_HB;
325
326prop fault.io.pci.device-interr@pcibus/pcidev[fromdev]/pcifn (0)->
327    error.io.pci.ta-pw-u@PCI_NOT_HB,
328    error.io.pci.ta-drw-u@PCI_NOT_HB,
329    error.io.pci.serr-u@PCI_NOT_HB,
330    error.io.pci.ape-u@PCI_NOT_HB,
331    error.io.pci.f-dpe-u@PCI_NOT_HB,
332    error.io.pci.nf-dpe-u@PCI_NOT_HB,
333    error.io.device.f-device@PCI_NOT_HB,
334    error.io.device.nf-device@PCI_NOT_HB,
335    error.io.pcix.scpe-u@PCI_NOT_HB,
336    error.io.pcix.tx-oor@PCI_NOT_HB,
337    error.io.pcix.rx-unex-sc@PCI_NOT_HB;
338
339prop fault.io.pci.device-invreq@pcibus/pcidev[fromdev]/pcifn {FD_IS_LEAF} (0)->
340    error.io.pciex.flt-badreq-u@PCI_NOT_HB,
341    error.io.pci.badreq-drw-u@PCI_NOT_HB,
342    error.io.pci.badreq-pw-u@PCI_NOT_HB;
343
344prop error.io.pcix.tx-oor@pcibus/pcidev/pcifn (1)->
345    ereport.io.pcix.oor@pcibus/pcidev/pcifn;
346
347prop error.io.pcix.rx-unex-sc@pcibus/pcidev[fromdev]/pcifn (1)->
348    ereport.io.pcix.unex-sc@pcibus/pcidev<todev>/pcifn<> {fromdev != todev};
349
350prop error.io.pci.f-dpe-u@pcibus/pcidev/pcifn (1)->
351    error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn,
352    error.io.pci.flt-f-dpdata-dw-u@pcibus/pcidev/pcifn,
353    error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn;
354
355prop error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn (2)->
356    error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn,
357    error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
358
359prop error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
360    error.io.pci.serr-u@pcibus/pcidev/pcifn;
361
362prop error.io.pci.flt-f-dpdata-dw-u@pcibus/pcidev/pcifn (3)->
363    error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn,
364    error.io.pci.perr-d@pcibus/pcidev/pcifn,
365    error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
366
367prop error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn (2)->
368    error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn,
369    error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
370
371prop error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn (1)->
372    error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
373
374prop error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn (1)->
375    error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn,
376    error.io.pci.flt-nf-dpdata-dw-u@pcibus/pcidev/pcifn,
377    error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn;
378
379prop error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn (2)->
380    error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn,
381    error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
382
383prop error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
384    error.io.pci.serr-u@pcibus/pcidev/pcifn;
385
386prop error.io.pci.flt-nf-dpdata-dw-u@pcibus/pcidev/pcifn (3)->
387    error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn,
388    error.io.pci.perr-d@pcibus/pcidev/pcifn,
389    error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
390
391prop error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn (2)->
392    error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn,
393    error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
394
395prop error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn (1)->
396    error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
397
398/*
399 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
400 * A faulty pci-pci bridge may also cause
401 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
402 *  - nr-pw-d:		the device not to respond to a valid upstream request
403 *  - nr-drw-d:		the device not to respond to a valid upstream request
404 *  - ta-pw-d:		the device responds with a ta to a valid upstream
405 *			request
406 *  - ta-drw-d:		the device responds with a ta to a valid upstream
407 *			request
408 *  - ape-d:	address/parity to get corrupted during downstream transmission.
409 *  - scpe-d:	split completion gets corrupted during downstream transmission.
410 *  - dpe-d:	data/parity to get corrupted during downstream transmission.
411 *  - retry-to-d:	the device to exceed the set timeout for a delayed
412 *			transaction retry.
413 */
414
415event error.io.pci.ape-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
416event error.io.pci.f-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
417event error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
418event error.io.pci.retry-to-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
419event error.io.pci.nr-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
420event error.io.pci.nr-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
421event error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
422event error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
423event error.io.pcix.scpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
424
425prop fault.io.pci.device-noresp@pcibus/pcidev/pcifn (0)->
426    error.io.pci.nr-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
427    error.io.pci.nr-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
428    error.io.pci.retry-to-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
429
430prop fault.io.pci.device-interr@pcibus/pcidev/pcifn (0)->
431    error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
432    error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
433    error.io.pci.ape-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
434    error.io.pcix.scpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
435    error.io.pci.f-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
436    error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
437
438/*
439 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
440 * A faulty PCI bus may cause:
441 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
442 *  - ape-d:	address/parity to get corrupted during downstream transmission.
443 *  - scpe-d:	split completion gets corrupted during downstream transmission.
444 *  - dpe-d:	data/parity to get corrupted during downstream transmission.
445 *  - ape-u:	address/parity to get corrupted during upstream transmission.
446 *  - dpe-u:	data/parity to get corrupted during read upstream transmission.
447 *  - scpe-u:	split completion to get corrupted during upstream transmission.
448 */
449
450fru pcibus;
451asru pcibus;
452
453event fault.io.pci.bus-linkerr@pcibus,
454        FITrate=PCI_BUS_FIT, FRU=pcibus, ASRU=pcibus;
455
456prop fault.io.pci.bus-linkerr@pcibus (0)->
457    error.io.pci.ape-d@pcibus/pcidev<todev>/pcifn { todev != 32},
458    error.io.pci.f-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
459    error.io.pci.nf-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
460    error.io.pci.ape-u@pcibus/pcidev<todev>/pcifn { todev != 32},
461    error.io.pci.f-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
462    error.io.pci.nf-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
463    error.io.pcix.scpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
464    error.io.pcix.scpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
465    error.io.pcix.tx-oor@pcibus/pcidev<todev>/pcifn { todev != 32},
466    error.io.pcix.rx-unex-sc@pcibus/pcidev<todev>/pcifn { todev != 32};
467
468/*
469 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
470 * recursive rules for pci-pci bridges
471 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
472 */
473
474event error.io.pci.serr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
475event error.io.pci.perr-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
476event error.io.pci.perr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
477event error.io.pci.perr-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
478event error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
479event error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
480event error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
481event error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn;
482event error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
483event error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn;
484event error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
485event error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
486event error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
487event error.io.pci.leaf-ape-d@pcibus/pcidev/pcifn;
488event error.io.pci.ape-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
489event error.io.pci.source-ape-u@pcibus/pcidev/pcifn;
490event error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn;
491event error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn;
492event error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
493event error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
494event error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
495event error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
496event error.io.pci.ta-d@pcibus/pcidev/pcifn;
497event error.io.pci.ta-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
498event error.io.pci.ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
499event error.io.pci.target-rta-d@pcibus/pcidev/pcifn;
500event error.io.pci.target-ma-d@pcibus/pcidev/pcifn;
501event error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
502event error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
503event error.io.pci.nr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
504event error.io.pci.ta-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
505event error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
506event error.io.pcix.scpe-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
507event error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn;
508event error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
509event error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
510event error.io.pci.ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
511
512event ereport.io.pci.sec-ma@pcibus/pcidev/pcifn{within(5s)};
513event ereport.io.pci.sec-sta@pcibus/pcidev/pcifn{within(5s)};
514event ereport.io.pci.sec-rta@pcibus/pcidev/pcifn{within(5s)};
515event ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn{within(5s)};
516event ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn{within(5s)};
517event ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn{within(5s)};
518event ereport.io.pci.dto@pcibus/pcidev/pcifn{within(5s)};
519event ereport.io.pcix.sec-spl-dis@pcibus/pcidev/pcifn{within(5s)};
520event ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn{within(5s)};
521
522/*
523 * SERR# can propagate upstream and may be seen by other devices on the bus
524 */
525prop error.io.pci.serr-u@pcibus/pcidev[fromdev]/pcifn (0)->
526    ereport.io.pci.sserr@pcibus/pcidev<todev>/pcifn<> {todev!=fromdev};
527
528prop error.io.pci.serr-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
529    ereport.io.pci.sserr@pcibus/pcidev/pcifn;
530
531prop error.io.pci.serr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
532    ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn,
533    error.io.pci.serr-u@pcibus/pcidev/pcifn;
534
535/*
536 * PERR# can propagate upstream for delayed writes. For posted writes
537 * it turns into an SERR#.
538 */
539prop error.io.pci.perr-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
540    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
541    error.io.pci.perr-dw-u@pcibus/pcidev/pcifn;
542
543prop error.io.pci.perr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
544    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
545    error.io.pci.serr-u@pcibus/pcidev/pcifn;
546
547/*
548 * PERR# can propagate downstream (only for downstream dw parity error)
549 */
550prop error.io.pci.perr-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
551    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
552
553prop error.io.pci.perr-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
554    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
555
556prop error.io.pci.perr-d@pcibus/pcidev/pcifn (1)->
557    error.io.pci.perr-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
558
559/*
560 * downstream target ereports are for any descendant device
561 *
562 * A hostbridge driver may generate "target-" ereports when knowledge of the
563 * physical address associated with a fault allows the target device to be
564 * determined. This is not a requirement of the Diagnosis Engine, but can be
565 * valuable when available.
566 */
567prop error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn (0)->
568    ereport.io.pci.target-mdpe@pcibus/pcidev/pcifn;
569
570prop error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn (1)->
571    error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
572
573prop error.io.pci.target-rta-d@pcibus/pcidev/pcifn (0)->
574    ereport.io.pci.target-rta@pcibus/pcidev/pcifn;
575
576prop error.io.pci.target-rta-d@pcibus/pcidev/pcifn (1)->
577    error.io.pci.target-rta-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
578
579prop error.io.pci.target-ma-d@pcibus/pcidev/pcifn (0)->
580    ereport.io.pci.target-ma@pcibus/pcidev/pcifn;
581
582prop error.io.pci.target-ma-d@pcibus/pcidev/pcifn (1)->
583    error.io.pci.target-ma-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
584
585/*
586 * target aborts propagate upstream
587 */
588prop error.io.pci.ta-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
589    ereport.io.pci.sta@pcibus/pcidev/pcifn;
590
591prop error.io.pci.ta-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
592    ereport.io.pci.sta@pcibus/pcidev/pcifn;
593
594prop error.io.pci.ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
595    ereport.io.pci.sec-rta@pcibus/pcidev/pcifn,
596    error.io.pci.ta-u@pcibus/pcidev/pcifn;
597
598/*
599 * bad data (ie invalid but not an ape or dpe) can propagate downstream,
600 * and at some point may result in a target or master abort
601 */
602prop error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn (1)->
603    error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>,
604    error.io.pci.nr-pw-u@pcibus/pcidev/pcifn,
605    error.io.pci.ta-pw-u@pcibus/pcidev/pcifn;
606
607prop error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
608    error.io.pci.nr-pw-u@pcibus/pcidev/pcifn,
609    error.io.pci.ta-pw-u@pcibus/pcidev/pcifn;
610
611prop error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn (1)->
612    error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>,
613    error.io.pci.nr-drw-u@pcibus/pcidev/pcifn,
614    error.io.pci.ta-drw-u@pcibus/pcidev/pcifn;
615
616prop error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
617    error.io.pci.nr-drw-u@pcibus/pcidev/pcifn,
618    error.io.pci.ta-drw-u@pcibus/pcidev/pcifn;
619
620prop error.io.pci.nr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
621    ereport.io.pci.sec-ma@pcibus/pcidev/pcifn,
622    error.io.pci.serr-u@pcibus/pcidev/pcifn;
623
624prop error.io.pci.ta-pw-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
625    ereport.io.pci.sta@pcibus/pcidev/pcifn;
626
627prop error.io.pci.ta-pw-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
628    ereport.io.pci.sta@pcibus/pcidev/pcifn;
629
630prop error.io.pci.ta-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
631    ereport.io.pci.sec-rta@pcibus/pcidev/pcifn,
632    error.io.pci.serr-u@pcibus/pcidev/pcifn;
633
634prop error.io.pci.nr-drw-u@pcibus/pcidev/pcifn (1)->
635    error.io.pci.ma-u@pcibus/pcidev/pcifn;
636
637prop error.io.pci.nr-drw-u@pcibus/pcidev/pcifn (1)->
638    error.io.pci.target-rta-d@pcibus/pcidev/pcifn,
639    error.io.pci.target-ma-d@pcibus/pcidev/pcifn;
640
641prop error.io.pci.ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
642    ereport.io.pci.sec-ma@pcibus/pcidev/pcifn;
643
644prop error.io.pci.ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
645    error.io.pci.ma-u@pcibus/pcidev/pcifn,
646    error.io.pci.ta-u@pcibus/pcidev/pcifn;
647
648prop error.io.pci.ta-drw-u@pcibus/pcidev/pcifn (1)->
649    error.io.pci.ta-u@pcibus/pcidev/pcifn;
650
651prop error.io.pci.ta-drw-u@pcibus/pcidev/pcifn (1)->
652    error.io.pci.target-rta-d@pcibus/pcidev/pcifn;
653
654/*
655 * bad data (ie invalid but not an ape or dpe) can propagate upstream,
656 * and at some point may result in a target or master abort
657 */
658prop error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
659    error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn,
660    error.io.pci.nr-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
661    error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
662
663prop error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn (0)->
664    error.io.pci.nr-pw-d@pcibus/pcidev/pcifn,
665    error.io.pci.ta-pw-d@pcibus/pcidev/pcifn;
666
667prop error.io.pci.nr-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
668    ereport.io.pci.ma@pcibus/pcidev/pcifn;
669
670prop error.io.pci.nr-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
671    ereport.io.pci.ma@pcibus/pcidev/pcifn,
672    error.io.pci.serr-u@pcibus/pcidev/pcifn;
673
674prop error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
675    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
676
677prop error.io.pci.ta-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
678    ereport.io.pci.rta@pcibus/pcidev/pcifn;
679
680prop error.io.pci.ta-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
681    ereport.io.pci.rta@pcibus/pcidev/pcifn,
682    error.io.pci.serr-u@pcibus/pcidev/pcifn;
683
684/*
685 * for delayed writes we treat upstream badreq specially as rta always
686 * propagates back downstream to the leaf
687 */
688prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
689    ereport.io.pci.rta@pcibus/pcidev/pcifn,
690    ereport.io.pci.ma@pcibus/pcidev/pcifn;
691
692prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
693    ereport.io.pci.ma@pcibus/pcidev/pcifn,
694    ereport.io.pci.rta@pcibus/pcidev/pcifn;
695
696prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
697    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
698
699prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
700    error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn;
701
702prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
703    ereport.io.pci.ma@pcibus/pcidev/pcifn;
704
705prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
706    ereport.io.pci.ma@pcibus/pcidev/pcifn;
707
708prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
709    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
710
711prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn (1)->
712    error.io.pci.ta-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>,
713    error.io.pci.nr-drw-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
714
715prop error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
716    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
717
718prop error.io.pci.ta-drw-d@pcibus/pcidev/pcifn (1)->
719    error.io.pci.ta-d@pcibus/pcidev/pcifn;
720
721prop error.io.pci.ta-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
722    ereport.io.pci.rta@pcibus/pcidev/pcifn;
723
724prop error.io.pci.ta-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
725    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn,
726    ereport.io.pci.rta@pcibus/pcidev/pcifn;
727
728prop error.io.pci.ta-d@pcibus/pcidev/pcifn (1)->
729    error.io.pci.ta-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
730
731/*
732 * Request with address parity error must be detected by parent device
733 * and can optionally result in a target or master abort.
734 * It may also be detected by sibling devices on a bus
735 */
736prop error.io.pci.ape-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
737    ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
738    ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn,
739    error.io.pci.serr-u@pcibus/pcidev/pcifn;
740
741prop error.io.pci.ape-u@pcibus/pcidev/pcifn (0)->
742    error.io.pci.nr-drw-d@pcibus/pcidev/pcifn,
743    error.io.pci.ta-drw-d@pcibus/pcidev/pcifn,
744    error.io.pci.nr-pw-d@pcibus/pcidev/pcifn,
745    error.io.pci.ta-pw-d@pcibus/pcidev/pcifn;
746
747prop error.io.pci.ape-u@pcibus/pcidev/pcifn (0)->
748    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
749
750prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (0)->
751    ereport.io.pci.dpe@pcibus/pcidev<todev>/pcifn<> {fromdev != todev},
752    ereport.io.pci.sserr@pcibus/pcidev<todev>/pcifn<> {fromdev != todev};
753
754prop error.io.pci.ape-u@pcibus/pcidev/pcifn (1)->
755    error.io.pci.source-ape-u@pcibus/pcidev/pcifn;
756
757/*
758 * If the bridge sees an upstream split completion error (pci-x only) it could
759 * result in a number of things
760 * - for various faults in the split completion (eg address parity error)
761 *   we will respond with a target abort (which the child device will treat
762 *   as a split completion ta)
763 * - for other faults we can't tell who send the split completion and so
764 *   just drop the request (which the child device sees as a split
765 *   completion ma)
766 */
767prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
768    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn,
769    ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
770    ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn,
771    error.io.pci.serr-u@pcibus/pcidev/pcifn;
772
773prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn (1)->
774    error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn,
775    error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn;
776
777prop error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn (1)->
778    error.io.pci.serr-u@pcibus/pcidev/pcifn;
779
780prop error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
781    ereport.io.pci.sserr@pcibus/pcidev/pcifn,
782    ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn;
783
784prop error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
785    ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn,
786    ereport.io.pci.ma@pcibus/pcidev/pcifn;
787
788prop error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn (1)->
789    error.io.pci.serr-u@pcibus/pcidev/pcifn;
790
791prop error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
792    ereport.io.pci.sserr@pcibus/pcidev/pcifn,
793    ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn;
794
795prop error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
796    ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn,
797    ereport.io.pci.rta@pcibus/pcidev/pcifn;
798
799prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn (1)->
800    error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn;
801
802/*
803 * request with address parity error must be detected by child device
804 * and can optionally result in a target or master abort.
805 */
806prop error.io.pci.ape-d@pcibus/pcidev/pcifn (1)->
807    error.io.pci.serr-u@pcibus/pcidev/pcifn;
808
809prop error.io.pci.ape-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
810    error.io.pci.leaf-ape-d@pcibus/pcidev/pcifn;
811
812prop error.io.pci.leaf-ape-d@pcibus/pcidev/pcifn { IS_LEAF } (2)->
813    ereport.io.pci.sserr@pcibus/pcidev/pcifn,
814    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
815
816prop error.io.pci.ape-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
817    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
818
819prop error.io.pci.ape-d@pcibus/pcidev/pcifn (0)->
820    error.io.pci.ta-pw-u@pcibus/pcidev/pcifn,
821    error.io.pci.ta-drw-u@pcibus/pcidev/pcifn,
822    error.io.pci.nr-pw-u@pcibus/pcidev/pcifn,
823    error.io.pci.nr-drw-u@pcibus/pcidev/pcifn;
824
825/*
826 * If the device sees a downstream split completion error (pci-x only) it could
827 * result in a number of things
828 * - for various faults in the split completion (eg address parity error)
829 *   we will respond with a target abort (which the parent bridge will treat
830 *   as a split completion ta)
831 * - for other faults we can't tell who send the split completion and so
832 *   just drop the request (which the parent bridge sees as a split
833 *   completion ma)
834 */
835prop error.io.pcix.scpe-d@pcibus/pcidev/pcifn (0)->
836    ereport.io.pci.sta@pcibus/pcidev/pcifn,
837    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
838    ereport.io.pci.sserr@pcibus/pcidev/pcifn,
839    error.io.pci.serr-u@pcibus/pcidev/pcifn;
840
841prop error.io.pcix.scpe-d@pcibus/pcidev/pcifn (1)->
842    error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn,
843    error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn;
844
845prop error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
846    ereport.io.pcix.sec-spl-dis@pcibus/pcidev/pcifn,
847    error.io.pci.serr-u@pcibus/pcidev/pcifn,
848    ereport.io.pci.sec-ma@pcibus/pcidev/pcifn;
849
850prop error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
851    ereport.io.pcix.sec-spl-dis@pcibus/pcidev/pcifn,
852    error.io.pci.serr-u@pcibus/pcidev/pcifn,
853    ereport.io.pci.sec-rta@pcibus/pcidev/pcifn;
854
855/*
856 * request with data parity error can propagate upstream
857 *
858 * for PCI/X (but not PCI) the split write can optionally be forwarded across
859 * the bridge, maintaining bad parity/ecc
860 *
861 * if there is a dpe on a retry on a delayed write, we don't send another
862 * retry, and eventually the dto timer will expire
863 */
864prop error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
865    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
866
867prop error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
868    ereport.io.pci.mdpe@pcibus/pcidev/pcifn,
869    ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
870    error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
871
872prop error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
873    ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn;
874
875prop error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
876    ereport.io.pci.mdpe@pcibus/pcidev/pcifn,
877    error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
878
879prop error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
880    error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
881
882prop error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
883    ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
884    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
885    error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
886
887/*
888 * Request with data parity error can propagate downstream. A hardened
889 * leaf driver should handle the error, but may or may not be able to
890 * avoid service impact. We handle to two cases separately. If there is
891 * service impact we will fail immediately, if not we will feed into a SERD
892 * engine.
893 *
894 * for PCI/X (but not PCI) the split write can optionally be forwarded across
895 * the bridge, maintaining bad parity/ecc
896 *
897 * if there is a dpe on a retry on a delayed write, we don't send another
898 * retry, and eventually the dto timer will expire
899 */
900prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn (2)->
901    error.io.pci.perr-pw-u@pcibus/pcidev/pcifn,
902    error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn;
903
904prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
905    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
906
907prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
908    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
909    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn;
910
911prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn (1)->
912    error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
913
914prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn (2)->
915    error.io.pci.perr-pw-u@pcibus/pcidev/pcifn,
916    error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn;
917
918prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
919    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
920
921prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
922    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
923    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn;
924
925prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn (1)->
926    error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
927
928prop error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
929    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
930
931prop error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
932    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
933    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn;
934
935prop error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn (1)->
936    error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
937
938prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn (3)->
939    error.io.pci.perr-dw-u@pcibus/pcidev/pcifn,
940    error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn,
941    error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
942
943prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn (0)->
944    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
945    error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
946
947prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
948    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
949
950prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
951    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
952
953prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
954    error.io.pci.retry-to-d@pcibus/pcidev/pcifn;
955
956prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn (3)->
957    error.io.pci.perr-dw-u@pcibus/pcidev/pcifn,
958    error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn,
959    error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
960
961prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn (0)->
962    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
963    error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
964
965prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
966    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
967
968prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
969    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
970
971prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
972    error.io.pci.retry-to-d@pcibus/pcidev/pcifn;
973
974prop error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn (0)->
975    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
976    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
977    error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
978
979prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn (2)->
980    error.io.pci.perr-dr-u@pcibus/pcidev/pcifn,
981    error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn;
982
983prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
984    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
985    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
986
987prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
988    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
989    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
990
991prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn (1)->
992    error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
993
994prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn (2)->
995    error.io.pci.perr-dr-u@pcibus/pcidev/pcifn,
996    error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn;
997
998prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
999    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
1000    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
1001
1002prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
1003    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
1004    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
1005
1006prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn (1)->
1007    error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1008
1009/*
1010 * delayed read/write retry timeout can cause dto at a bridge
1011 */
1012prop error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
1013    error.io.pci.retry-to-u@pcibus/pcidev/pcifn;
1014
1015prop error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
1016    ereport.io.pci.dto@pcibus/pcidev/pcifn;
1017
1018prop error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
1019    error.io.pci.serr-u@pcibus/pcidev/pcifn;
1020
1021prop error.io.pci.retry-to-d@pcibus/pcidev/pcifn (0)->
1022    error.io.pci.retry-to-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1023
1024prop error.io.pci.retry-to-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
1025    ereport.io.pci.dto@pcibus/pcidev/pcifn;
1026
1027prop error.io.pci.retry-to-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
1028    error.io.pci.serr-u@pcibus/pcidev/pcifn;
1029
1030/*
1031 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1032 * source- propagations.
1033 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1034 */
1035event error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1036event error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1037event error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1038event error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1039event error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1040event error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1041event error.io.pci.source-ape-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1042event error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1043event error.io.service.restored@pcibus/pcidev/pcifn;
1044
1045event ereport.io.service.lost@pcibus/pcidev/pcifn{within(5s)};
1046event ereport.io.service.degraded@pcibus/pcidev/pcifn{within(5s)};
1047event ereport.io.service.unaffected@pcibus/pcidev/pcifn{within(5s)};
1048event ereport.io.service.restored@pcibus/pcidev/pcifn{within(30s)};
1049
1050prop error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1051    ereport.io.service.lost@pcibus/pcidev/pcifn,
1052    ereport.io.service.degraded@pcibus/pcidev/pcifn;
1053
1054prop error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1055    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1056    error.io.service.restored@pcibus/pcidev/pcifn;
1057
1058prop error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1059    ereport.io.service.lost@pcibus/pcidev/pcifn,
1060    ereport.io.service.degraded@pcibus/pcidev/pcifn;
1061
1062prop error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1063    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1064    error.io.service.restored@pcibus/pcidev/pcifn;
1065
1066prop error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1067    ereport.io.service.lost@pcibus/pcidev/pcifn,
1068    ereport.io.service.degraded@pcibus/pcidev/pcifn;
1069
1070prop error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1071    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1072    error.io.service.restored@pcibus/pcidev/pcifn;
1073
1074prop error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn (1)->
1075    error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1076
1077prop error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn (1)->
1078    error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1079
1080prop error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn (1)->
1081    error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1082
1083prop error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn (1)->
1084    error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1085
1086prop error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn (1)->
1087    error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1088
1089prop error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn (1)->
1090    error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1091
1092prop error.io.pci.source-ape-u@pcibus/pcidev/pcifn (1)->
1093    error.io.pci.source-ape-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1094
1095prop error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn (1)->
1096    error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1097
1098/*
1099 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1100 * Handling of leaf driver detected internal errors. Use serd engine if
1101 * no service impact - otherwise fail immediately
1102 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1103 */
1104event ereport.io.device.inval_state@pcibus/pcidev/pcifn{within(5s)};
1105event ereport.io.device.no_response@pcibus/pcidev/pcifn{within(5s)};
1106event ereport.io.device.stall@pcibus/pcidev/pcifn{within(5s)};
1107event ereport.io.device.badint_limit@pcibus/pcidev/pcifn{within(5s)};
1108event ereport.io.device.nf-device@pcibus/pcidev/pcifn;
1109
1110prop error.io.service.restored@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1111    ereport.io.service.lost@pcibus/pcidev/pcifn,
1112    ereport.io.service.degraded@pcibus/pcidev/pcifn;
1113
1114prop error.io.service.restored@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1115    ereport.io.service.restored@pcibus/pcidev/pcifn;
1116
1117prop error.io.device.f-device@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1118    ereport.io.device.inval_state@pcibus/pcidev/pcifn,
1119    ereport.io.device.no_response@pcibus/pcidev/pcifn,
1120    ereport.io.device.stall@pcibus/pcidev/pcifn,
1121    ereport.io.device.badint_limit@pcibus/pcidev/pcifn;
1122
1123prop error.io.device.f-device@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1124    ereport.io.service.lost@pcibus/pcidev/pcifn,
1125    ereport.io.service.degraded@pcibus/pcidev/pcifn;
1126
1127engine serd.io.device.nonfatal@pcibus/pcidev/pcifn,
1128    N=NONFATAL_COUNT, T=NONFATAL_TIME, method=persistent,
1129    trip=ereport.io.device.nf-device@pcibus/pcidev/pcifn;
1130
1131event upset.io.device.nonfatal@pcibus/pcidev/pcifn,
1132    engine=serd.io.device.nonfatal@pcibus/pcidev/pcifn;
1133
1134prop error.io.device.nf-device@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1135    ereport.io.device.nf-device@pcibus/pcidev/pcifn;
1136
1137prop error.io.device.nf-device@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1138    ereport.io.device.inval_state@pcibus/pcidev/pcifn,
1139    ereport.io.device.no_response@pcibus/pcidev/pcifn,
1140    ereport.io.device.stall@pcibus/pcidev/pcifn,
1141    ereport.io.device.badint_limit@pcibus/pcidev/pcifn,
1142    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1143    error.io.service.restored@pcibus/pcidev/pcifn;
1144
1145prop upset.io.device.nonfatal@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1146    ereport.io.device.inval_state@pcibus/pcidev/pcifn,
1147    ereport.io.device.no_response@pcibus/pcidev/pcifn,
1148    ereport.io.device.stall@pcibus/pcidev/pcifn,
1149    ereport.io.device.badint_limit@pcibus/pcidev/pcifn;
1150
1151prop upset.io.device.nonfatal@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1152    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1153    error.io.service.restored@pcibus/pcidev/pcifn;
1154
1155/*
1156 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1157 * Handling of pci express nonfatal errors (dpe). Use serd engine if
1158 * no service impact - otherwise fail immediately
1159 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1160 */
1161event ereport.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
1162event ereport.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
1163
1164engine serd.io.pci.nf-dpe-u@pcibus/pcidev/pcifn,
1165    N=NONFATAL_DPE_U_COUNT, T=NONFATAL_DPE_U_TIME, method=persistent,
1166    trip=ereport.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
1167
1168event upset.io.pci.nf-dpe-u@pcibus/pcidev/pcifn,
1169    engine=serd.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
1170
1171prop error.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1172    ereport.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
1173
1174prop error.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1175    error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn,
1176    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1177    error.io.service.restored@pcibus/pcidev/pcifn;
1178
1179prop upset.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1180    error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn;
1181
1182prop upset.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1183    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1184    error.io.service.restored@pcibus/pcidev/pcifn;
1185
1186engine serd.io.pci.nf-dpe-d@pcibus/pcidev/pcifn,
1187    N=NONFATAL_DPE_D_COUNT, T=NONFATAL_DPE_D_TIME, method=persistent,
1188    trip=ereport.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
1189
1190event upset.io.pci.nf-dpe-d@pcibus/pcidev/pcifn,
1191    engine=serd.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
1192
1193prop error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1194    ereport.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
1195
1196prop error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1197    error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn,
1198    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1199    error.io.service.restored@pcibus/pcidev/pcifn;
1200
1201prop upset.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1202    error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn;
1203
1204prop upset.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1205    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1206    error.io.service.restored@pcibus/pcidev/pcifn;
1207
1208/*
1209 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1210 * stub unused ereports
1211 * - ignore rx-spl as we can't tell what message it was (and we should have
1212 *   diagnosed the problem anyway from standard pci ereports)
1213 * - ignore sec-spl-or/sec-spl-dly as these aren't really faults (tuning info)
1214 * - ignore unex-spl/sec-unex-spl
1215 * - ignore ecc.ue ereports (we get everything we need from dpe/mdpe)
1216 * - ignore ecc.ce ereports for now (could do serd on these)
1217 * - ignore nr ereport
1218 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1219 */
1220
1221event ereport.io.pci.nr@pcibus/pcidev/pcifn{within(5s)};
1222event ereport.io.pcix.unex-spl@pcibus/pcidev/pcifn{within(5s)};
1223event ereport.io.pcix.rx-spl@pcibus/pcidev/pcifn{within(5s)};
1224event ereport.io.pcix.sec-unex-spl@pcibus/pcidev/pcifn{within(5s)};
1225event ereport.io.pcix.sec-spl-or@pcibus/pcidev/pcifn{within(5s)};
1226event ereport.io.pcix.sec-spl-dly@pcibus/pcidev/pcifn{within(5s)};
1227event ereport.io.pcix.ecc.ce-addr@pcibus/pcidev/pcifn{within(5s)};
1228event ereport.io.pcix.ecc.ce-attr@pcibus/pcidev/pcifn{within(5s)};
1229event ereport.io.pcix.ecc.ce-data@pcibus/pcidev/pcifn{within(5s)};
1230event ereport.io.pcix.ecc.ue-addr@pcibus/pcidev/pcifn{within(5s)};
1231event ereport.io.pcix.ecc.ue-attr@pcibus/pcidev/pcifn{within(5s)};
1232event ereport.io.pcix.ecc.ue-data@pcibus/pcidev/pcifn{within(5s)};
1233event ereport.io.pcix.s-ce@pcibus/pcidev/pcifn{within(5s)};
1234event ereport.io.pcix.s-ue@pcibus/pcidev/pcifn{within(5s)};
1235event ereport.io.pcix.sec-ecc.ce-addr@pcibus/pcidev/pcifn{within(5s)};
1236event ereport.io.pcix.sec-ecc.ce-attr@pcibus/pcidev/pcifn{within(5s)};
1237event ereport.io.pcix.sec-ecc.ce-data@pcibus/pcidev/pcifn{within(5s)};
1238event ereport.io.pcix.sec-ecc.ue-addr@pcibus/pcidev/pcifn{within(5s)};
1239event ereport.io.pcix.sec-ecc.ue-attr@pcibus/pcidev/pcifn{within(5s)};
1240event ereport.io.pcix.sec-ecc.ue-data@pcibus/pcidev/pcifn{within(5s)};
1241event ereport.io.pcix.sec-s-ce@pcibus/pcidev/pcifn{within(5s)};
1242event ereport.io.pcix.sec-s-ue@pcibus/pcidev/pcifn{within(5s)};
1243
1244event upset.io.pcix.discard@pcibus/pcidev/pcifn;
1245
1246prop upset.io.pcix.discard@pcibus/pcidev/pcifn (1)->
1247    ereport.io.pci.nr@pcibus/pcidev/pcifn,
1248    ereport.io.pcix.rx-spl@pcibus/pcidev/pcifn,
1249    ereport.io.pcix.unex-spl@pcibus/pcidev/pcifn,
1250    ereport.io.pcix.sec-unex-spl@pcibus/pcidev/pcifn,
1251    ereport.io.pcix.sec-spl-or@pcibus/pcidev/pcifn,
1252    ereport.io.pcix.sec-spl-dly@pcibus/pcidev/pcifn,
1253    ereport.io.pcix.ecc.ce-addr@pcibus/pcidev/pcifn,
1254    ereport.io.pcix.ecc.ce-attr@pcibus/pcidev/pcifn,
1255    ereport.io.pcix.ecc.ce-data@pcibus/pcidev/pcifn,
1256    ereport.io.pcix.ecc.ue-addr@pcibus/pcidev/pcifn,
1257    ereport.io.pcix.ecc.ue-attr@pcibus/pcidev/pcifn,
1258    ereport.io.pcix.ecc.ue-data@pcibus/pcidev/pcifn,
1259    ereport.io.pcix.s-ce@pcibus/pcidev/pcifn,
1260    ereport.io.pcix.s-ue@pcibus/pcidev/pcifn,
1261    ereport.io.pcix.sec-ecc.ce-addr@pcibus/pcidev/pcifn,
1262    ereport.io.pcix.sec-ecc.ce-attr@pcibus/pcidev/pcifn,
1263    ereport.io.pcix.sec-ecc.ce-data@pcibus/pcidev/pcifn,
1264    ereport.io.pcix.sec-ecc.ue-addr@pcibus/pcidev/pcifn,
1265    ereport.io.pcix.sec-ecc.ue-attr@pcibus/pcidev/pcifn,
1266    ereport.io.pcix.sec-ecc.ue-data@pcibus/pcidev/pcifn,
1267    ereport.io.pcix.sec-s-ce@pcibus/pcidev/pcifn,
1268    ereport.io.pcix.sec-s-ue@pcibus/pcidev/pcifn;
1269