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