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 2008 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 "PCIEX"
29
30#include <fm/topo_hc.h>
31
32/*
33 * FIT rates - assume leaf devices are somewhat less reliable than
34 * root complexes, switches and bridges
35 */
36#define PCIEX_RC_FIT 500
37#define PCIEX_SW_FIT 500
38#define PCIEX_BDG_FIT 500
39#define PCIEX_DEV_FIT 1000
40#define PCIEX_RC_INV_FIT 500
41#define PCIEX_DEV_INV_FIT 1000
42#define PCIEX_RC_NR_FIT 500
43#define PCIEX_SW_NR_FIT 500
44#define PCIEX_BDG_NR_FIT 500
45#define PCIEX_DEV_NR_FIT 1000
46#define PCIEX_BUS_FIT 500
47#define PCIEX_BUS_NR_FIT 500
48
49/*
50 * SERD parameters.
51 *
52 * PCI Express correctable link errors are automatically handled by the
53 * hardware, so have relatively little impact and we can allow quite a
54 * high frequency. We will also be quite conservative about nonfatal internal
55 * errors reported by the driver.
56 *
57 * Nonfatal dpe errors (ptlp/ecrc errors) have to be recovered by the hardened
58 * driver which may cause intermittant performance/responsiveness problems, so
59 * we have tighter serd parameters for these. These are most likely errors in
60 * buffers/caches within devices and bridges, so use similar rates to cpu
61 * data cache parity errors.
62 */
63#define CORRLINK_COUNT 6
64#define CORRLINK_TIME 2h
65#define NONFATAL_COUNT 6
66#define NONFATAL_TIME 2h
67#define NONFATAL_DPE_U_COUNT 3
68#define NONFATAL_DPE_U_TIME 168h
69#define NONFATAL_DPE_D_COUNT 3
70#define NONFATAL_DPE_D_TIME 168h
71
72/*
73 * if the source-id payload is valid, then check it matches
74 */
75#define SOURCE_ID_MATCHES_BDF \
76	(!payloadprop_defined("source-valid") || \
77	payloadprop("source-valid") == 0 || \
78	payloadprop("source-id") == ((b << 8) | (d << 3) | f))
79
80#define SOURCE_ID_MATCHES_OWN_BDF \
81	(payloadprop_defined("source-valid") && \
82	payloadprop("source-valid") == 1 && \
83	payloadprop("source-id") == (confprop(asru(pciexrc), TOPO_PCI_BDF) + 0))
84
85/*
86 * Other useful macros. These use the EXCAP property (PCI Express Capabilities
87 * register) to find the type for PCI Express devices, and the CLASS-CODE
88 * property (PCI Class Code register) for to find the type of PCI devices behind
89 * a PCI Express-PCI bridge - note that 60400 and 60401 are defined as PCI-PCI
90 * bridges, everything else is consider a PCI leaf device.
91 */
92#define BDF_IS_UNDER_RC \
93	is_under(pciexrc<>, pciexbus[b]/pciexdev[d]/pciexfn[f])
94
95#define PCIBDF_IS_UNDER_RC \
96	is_under(pciexrc<>, pcibus[b]/pcidev[d]/pcifn[f])
97
98#define PCIBDF_IS_UNDER_DEV \
99	is_under(pciexbus/pciexdev/pciexfn, pcibus[b]/pcidev[d]/pcifn[f])
100
101#define IS_SWD \
102	(confprop(asru(pciexbus/pciexdev/pciexfn), TOPO_PCI_EXCAP) == \
103	"pciexswd")
104
105#define IS_SWU \
106	(confprop(asru(pciexbus/pciexdev/pciexfn), TOPO_PCI_EXCAP) == \
107	"pciexswu")
108
109#define IS_LEAF \
110	(confprop(asru(pciexbus/pciexdev/pciexfn), TOPO_PCI_EXCAP) == \
111	"pciexdev")
112
113#define	IS_PCI_LEAF \
114	(confprop_defined(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) && \
115	confprop(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) != "60400" && \
116	confprop(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) != "60401")
117
118#define	BDF_IS_PCI_LEAF \
119	(confprop_defined(asru(pcibus[b]/pcidev[d]/pcifn[f]), \
120	TOPO_PCI_CLASS) && \
121	confprop(asru(pcibus[b]/pcidev[d]/pcifn[f]), TOPO_PCI_CLASS) != \
122	"60400" && \
123	confprop(asru(pcibus[b]/pcidev[d]/pcifn[f]), TOPO_PCI_CLASS) != "60401")
124
125#define IS_BDG \
126	(confprop(asru(pciexbus/pciexdev/pciexfn), TOPO_PCI_EXCAP) == \
127	"pcibus")
128
129#define BDF_IS_LEAF \
130	(confprop(asru(pciexbus[b]/pciexdev[d]/pciexfn[f]), \
131	TOPO_PCI_EXCAP) == "pciexdev")
132
133/*
134 * define faults
135 */
136asru pciexrc;
137fru pciexrc;
138asru pciexbus/pciexdev/pciexfn;
139fru pciexbus/pciexdev;
140fru pciexbus;
141asru pciexbus;
142
143event fault.io.pciex.device-interr@pciexbus/pciexdev/pciexfn,
144	FITrate=PCIEX_DEV_FIT, FRU=pciexbus/pciexdev,
145	ASRU=pciexbus/pciexdev/pciexfn;
146
147event fault.io.pciex.device-interr@pciexrc,
148	FITrate=PCIEX_RC_FIT, FRU=pciexrc, ASRU=pciexrc;
149
150event fault.io.pciex.device-invreq@pciexbus/pciexdev/pciexfn,
151	FITrate=PCIEX_DEV_INV_FIT, FRU=pciexbus/pciexdev,
152	ASRU=pciexbus/pciexdev/pciexfn;
153
154event upset.io.pciex.device-invreq@pciexrc;
155
156event fault.io.pciex.device-noresp@pciexbus/pciexdev/pciexfn,
157	FITrate=PCIEX_DEV_NR_FIT, FRU=pciexbus/pciexdev,
158	ASRU=pciexbus/pciexdev/pciexfn;
159
160event fault.io.pciex.device-noresp@pciexrc,
161	FITrate=PCIEX_RC_NR_FIT, FRU=pciexrc, ASRU=pciexrc;
162
163event fault.io.pciex.bus-noresp@pciexbus/pciexdev/pciexfn,
164        FITrate=PCIEX_BUS_NR_FIT, FRU=pciexbus, ASRU=pciexbus/pciexdev/pciexfn;
165
166event fault.io.pciex.bus-linkerr@pciexbus/pciexdev/pciexfn,
167        FITrate=PCIEX_BUS_FIT, FRU=pciexbus, ASRU=pciexbus/pciexdev/pciexfn;
168
169/*
170 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
171 * serd engine for correctable link errors
172 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
173 */
174event error.io.pciex.corrlink@pciexbus;
175event error.io.pciex.corrlink@pciexrc/pciexbus;
176event error.io.pciex.corrlink@pciexbus/pciexdev/pciexfn/pciexbus;
177event error.io.pciex.corrlink_trip@pciexbus;
178event ereport.io.pciex.corrlink_trip@pciexbus{within(5s)};
179
180engine serd.io.pciex.corrlink@pciexbus,
181    N=CORRLINK_COUNT, T=CORRLINK_TIME, method=persistent,
182    trip=ereport.io.pciex.corrlink_trip@pciexbus;
183
184event upset.io.pciex.corrlink@pciexbus,
185    engine=serd.io.pciex.corrlink@pciexbus;
186
187prop upset.io.pciex.corrlink@pciexbus (1)->
188    error.io.pciex.corrlink@pciexbus;
189
190prop error.io.pciex.corrlink_trip@pciexbus (1)->
191    ereport.io.pciex.corrlink_trip@pciexbus;
192
193prop error.io.pciex.corrlink_trip@pciexbus (0)->
194   error.io.pciex.corrlink@pciexbus;
195
196/*
197 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
198 * Handling of leaf driver detected internal errors. Use serd engine if
199 * no service impact - otherwise fail immediately
200 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
201 */
202event ereport.io.device.inval_state@pciexbus/pciexdev/pciexfn{within(5s)};
203event ereport.io.device.no_response@pciexbus/pciexdev/pciexfn{within(5s)};
204event ereport.io.device.stall@pciexbus/pciexdev/pciexfn{within(5s)};
205event ereport.io.device.badint_limit@pciexbus/pciexdev/pciexfn{within(5s)};
206event ereport.io.device.intern_corr@pciexbus/pciexdev/pciexfn{within(5s)};
207event ereport.io.device.intern_uncorr@pciexbus/pciexdev/pciexfn{within(5s)};
208event ereport.io.service.lost@pciexbus/pciexdev/pciexfn{within(5s)};
209event ereport.io.service.degraded@pciexbus/pciexdev/pciexfn{within(5s)};
210event ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn{within(5s)};
211event ereport.io.service.restored@pciexbus/pciexdev/pciexfn{within(30s)};
212event ereport.io.device.nf-device@pciexbus/pciexdev/pciexfn{within(5s)};
213
214event error.io.service.restored@pciexbus/pciexdev/pciexfn;
215event error.io.device.nf-device@pciexbus/pciexdev/pciexfn;
216event error.io.device.f-device@pciexbus/pciexdev/pciexfn;
217
218prop error.io.device.f-device@pciexbus/pciexdev/pciexfn (1)->
219    ereport.io.device.inval_state@pciexbus/pciexdev/pciexfn,
220    ereport.io.device.no_response@pciexbus/pciexdev/pciexfn,
221    ereport.io.device.stall@pciexbus/pciexdev/pciexfn,
222    ereport.io.device.badint_limit@pciexbus/pciexdev/pciexfn,
223    ereport.io.device.intern_corr@pciexbus/pciexdev/pciexfn,
224    ereport.io.device.intern_uncorr@pciexbus/pciexdev/pciexfn;
225
226prop error.io.device.f-device@pciexbus/pciexdev/pciexfn (1)->
227    ereport.io.service.lost@pciexbus/pciexdev/pciexfn,
228    ereport.io.service.degraded@pciexbus/pciexdev/pciexfn;
229
230engine serd.io.device.nonfatal@pciexbus/pciexdev/pciexfn,
231    N=NONFATAL_COUNT, T=NONFATAL_TIME, method=persistent,
232    trip=ereport.io.device.nf-device@pciexbus/pciexdev/pciexfn;
233
234event upset.io.device.nonfatal@pciexbus/pciexdev/pciexfn,
235    engine=serd.io.device.nonfatal@pciexbus/pciexdev/pciexfn;
236
237prop error.io.device.nf-device@pciexbus/pciexdev/pciexfn (1)->
238    ereport.io.device.nf-device@pciexbus/pciexdev/pciexfn;
239
240prop error.io.device.nf-device@pciexbus/pciexdev/pciexfn (0)->
241    ereport.io.device.inval_state@pciexbus/pciexdev/pciexfn,
242    ereport.io.device.no_response@pciexbus/pciexdev/pciexfn,
243    ereport.io.device.stall@pciexbus/pciexdev/pciexfn,
244    ereport.io.device.badint_limit@pciexbus/pciexdev/pciexfn,
245    ereport.io.device.intern_corr@pciexbus/pciexdev/pciexfn,
246    ereport.io.device.intern_uncorr@pciexbus/pciexdev/pciexfn,
247    ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn,
248    error.io.service.restored@pciexbus/pciexdev/pciexfn;
249
250prop upset.io.device.nonfatal@pciexbus/pciexdev/pciexfn (1)->
251    ereport.io.device.inval_state@pciexbus/pciexdev/pciexfn,
252    ereport.io.device.no_response@pciexbus/pciexdev/pciexfn,
253    ereport.io.device.stall@pciexbus/pciexdev/pciexfn,
254    ereport.io.device.badint_limit@pciexbus/pciexdev/pciexfn,
255    ereport.io.device.intern_corr@pciexbus/pciexdev/pciexfn,
256    ereport.io.device.intern_uncorr@pciexbus/pciexdev/pciexfn;
257
258prop upset.io.device.nonfatal@pciexbus/pciexdev/pciexfn (1)->
259    ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn,
260    error.io.service.restored@pciexbus/pciexdev/pciexfn;
261
262/*
263 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
264 * Handling of pci express nonfatal errors (ptlp/ecrc). Use serd engine if
265 * no service impact - otherwise fail immediately
266 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
267 */
268event ereport.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn{within(5s)};
269event ereport.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn{within(5s)};
270
271event error.io.pciex.flt-f-d@pciexbus/pciexdev/pciexfn;
272event error.io.pciex.flt-f-u@pciexbus/pciexdev/pciexfn;
273event error.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn;
274event error.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn;
275event error.io.pciex.flt-f-ecrcreq-u@pciexbus/pciexdev/pciexfn;
276event error.io.pciex.flt-f-ecrccomp-u@pciexbus/pciexdev/pciexfn;
277event error.io.pciex.flt-f-poisreq-u@pciexbus/pciexdev/pciexfn;
278event error.io.pciex.flt-f-poiscomp-u@pciexbus/pciexdev/pciexfn;
279event error.io.pciex.flt-f-ecrcreq-d@pciexbus/pciexdev/pciexfn;
280event error.io.pciex.flt-f-ecrccomp-d@pciexbus/pciexdev/pciexfn;
281event error.io.pciex.flt-f-poisreq-d@pciexbus/pciexdev/pciexfn;
282event error.io.pciex.flt-f-poiscomp-d@pciexbus/pciexdev/pciexfn;
283event error.io.pciex.flt-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn;
284event error.io.pciex.flt-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn;
285event error.io.pciex.flt-nf-poisreq-u@pciexbus/pciexdev/pciexfn;
286event error.io.pciex.flt-nf-poiscomp-u@pciexbus/pciexdev/pciexfn;
287event error.io.pciex.flt-nf-ecrcreq-d@pciexbus/pciexdev/pciexfn;
288event error.io.pciex.flt-nf-ecrccomp-d@pciexbus/pciexdev/pciexfn;
289event error.io.pciex.flt-nf-poisreq-d@pciexbus/pciexdev/pciexfn;
290event error.io.pciex.flt-nf-poiscomp-d@pciexbus/pciexdev/pciexfn;
291
292prop error.io.pciex.flt-f-u@pciexbus/pciexdev/pciexfn (1)->
293    error.io.pciex.flt-f-ecrcreq-u@pciexbus/pciexdev/pciexfn,
294    error.io.pciex.flt-f-ecrccomp-u@pciexbus/pciexdev/pciexfn,
295    error.io.pciex.flt-f-poisreq-u@pciexbus/pciexdev/pciexfn,
296    error.io.pciex.flt-f-poiscomp-u@pciexbus/pciexdev/pciexfn;
297
298prop error.io.pciex.flt-f-d@pciexbus/pciexdev/pciexfn (1)->
299    error.io.pciex.flt-f-ecrcreq-d@pciexbus/pciexdev/pciexfn,
300    error.io.pciex.flt-f-ecrccomp-d@pciexbus/pciexdev/pciexfn,
301    error.io.pciex.flt-f-poisreq-d@pciexbus/pciexdev/pciexfn,
302    error.io.pciex.flt-f-poiscomp-d@pciexbus/pciexdev/pciexfn;
303
304engine serd.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn,
305    N=NONFATAL_DPE_U_COUNT, T=NONFATAL_DPE_U_TIME, method=persistent,
306    trip=ereport.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn;
307
308event upset.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn,
309    engine=serd.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn;
310
311prop error.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn (1)->
312    ereport.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn;
313
314prop error.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn (0)->
315    error.io.pciex.flt-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn,
316    error.io.pciex.flt-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn,
317    error.io.pciex.flt-nf-poisreq-u@pciexbus/pciexdev/pciexfn,
318    error.io.pciex.flt-nf-poiscomp-u@pciexbus/pciexdev/pciexfn;
319
320prop upset.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn (1)->
321    error.io.pciex.flt-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn,
322    error.io.pciex.flt-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn,
323    error.io.pciex.flt-nf-poisreq-u@pciexbus/pciexdev/pciexfn,
324    error.io.pciex.flt-nf-poiscomp-u@pciexbus/pciexdev/pciexfn;
325
326engine serd.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn,
327    N=NONFATAL_DPE_D_COUNT, T=NONFATAL_DPE_D_TIME, method=persistent,
328    trip=ereport.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn;
329
330event upset.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn,
331    engine=serd.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn;
332
333prop error.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn (1)->
334    ereport.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn;
335
336prop error.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn (0)->
337    error.io.pciex.flt-nf-ecrcreq-d@pciexbus/pciexdev/pciexfn,
338    error.io.pciex.flt-nf-ecrccomp-d@pciexbus/pciexdev/pciexfn,
339    error.io.pciex.flt-nf-poisreq-d@pciexbus/pciexdev/pciexfn,
340    error.io.pciex.flt-nf-poiscomp-d@pciexbus/pciexdev/pciexfn;
341
342prop upset.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn (1)->
343    error.io.pciex.flt-nf-ecrcreq-d@pciexbus/pciexdev/pciexfn,
344    error.io.pciex.flt-nf-ecrccomp-d@pciexbus/pciexdev/pciexfn,
345    error.io.pciex.flt-nf-poisreq-d@pciexbus/pciexdev/pciexfn,
346    error.io.pciex.flt-nf-poiscomp-d@pciexbus/pciexdev/pciexfn;
347
348/*
349 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
350 * A faulty PCI Express hostbridge (root complex) may cause:
351 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
352 * - nr-d:		the device not to respond to a valid upstream request
353 * - ca-d:		the device to completer abort a valid upstream request
354 * - mtlp-d:		a malformed tlp to be transmitted downstream
355 * - badreq-d:		a bad downstream request - not CRC error (may cause
356 *			completer to respond with ur or ca)
357 * - ecrcreq-d:		TLP with end-to-end CRC error transmitted downstream
358 * - ecrccomp-d:	TLP with end-to-end CRC error transmitted downstream
359 * - poisreq-d:		poisoned request transmitted downstream
360 * - poiscomp-d:	poisoned completion transmitted downstream
361 * - corrlink:		correctable link or physical level error
362 * - fatlink:		fatal link or physical level error
363 */
364event error.io.pciex.nr-d@pciexrc/pciexbus/pciexdev/pciexfn;
365event error.io.pciex.flt-ca-d@pciexrc/pciexbus/pciexdev/pciexfn;
366event error.io.pciex.mtlp-d@pciexrc/pciexbus/pciexdev/pciexfn;
367event error.io.pciex.badreq-d@pciexrc/pciexbus/pciexdev/pciexfn;
368event error.io.pciex.flt-nf-d@pciexrc/pciexbus/pciexdev/pciexfn;
369event error.io.pciex.flt-f-d@pciexrc/pciexbus/pciexdev/pciexfn;
370event error.io.pciex.corrlink_trip@pciexrc/pciexbus;
371event error.io.pciex.fatlink@pciexrc/pciexbus/pciexdev/pciexfn;
372
373prop fault.io.pciex.device-noresp@pciexrc (1)->
374    error.io.pciex.nr-d@pciexrc/pciexbus<>/pciexdev<>/pciexfn<>;
375
376prop upset.io.pciex.device-invreq@pciexrc (1)->
377    error.io.pciex.badreq-d@pciexrc/pciexbus<>/pciexdev<>/pciexfn<>;
378
379prop fault.io.pciex.device-interr@pciexrc (1)->
380    error.io.pciex.flt-nf-d@pciexrc/pciexbus<>/pciexdev<>/pciexfn<>,
381    error.io.pciex.flt-f-d@pciexrc/pciexbus<>/pciexdev<>/pciexfn<>,
382    error.io.pciex.flt-ca-d@pciexrc/pciexbus<>/pciexdev<>/pciexfn<>,
383    error.io.pciex.mtlp-d@pciexrc/pciexbus<>/pciexdev<>/pciexfn<>,
384    error.io.pciex.corrlink_trip@pciexrc/pciexbus<>,
385    error.io.pciex.fatlink@pciexrc/pciexbus<>/pciexdev<>/pciexfn<>;
386
387/*
388 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
389 * A faulty PCI Express leaf device or upstream switch port may cause:
390 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
391 * - nr-u:		the device not to respond to a valid downstream request
392 * - ca-u:		the device to completer abort a valid downstream request
393 * - badreq-u:		a bad upstream request - not CRC error (may cause
394 *			completer to respond with ur or ca) - leaf only
395 * - mtlp-u:		a malformed tlp transmitted upstream - leaf only
396 * - ecrcreq-u:		request with end-to-end CRC error transmitted upstream
397 * - ecrccomp-u:	compl with end-to-end CRC error transmitted upstream
398 * - poisreq-u:		poisoned request transmitted upstream
399 * - poiscomp-u:	poisoned completion transmitted upstream
400 * - device:		internal error reported by leaf device
401 * - corrlink:		correctable link or physical level error
402 * - fatlink:		fatal link or physical level error
403 */
404
405event error.io.pciex.flt-nr-u@pciexbus/pciexdev/pciexfn;
406event error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn;
407event error.io.pciex.mtlp-u@pciexbus/pciexdev/pciexfn;
408event error.io.pciex.flt-badreq-u@pciexbus/pciexdev/pciexfn;
409event error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn;
410
411prop fault.io.pciex.device-noresp@pciexbus/pciexdev/pciexfn { IS_LEAF } (1)->
412    error.io.pciex.flt-nr-u@pciexbus/pciexdev/pciexfn;
413
414prop fault.io.pciex.device-noresp@pciexbus/pciexdev/pciexfn { IS_SWU } (1)->
415    error.io.pciex.flt-nr-u@pciexbus/pciexdev/pciexfn;
416
417prop fault.io.pciex.device-invreq@pciexbus/pciexdev/pciexfn { IS_LEAF } (1)->
418    error.io.pciex.flt-badreq-u@pciexbus/pciexdev/pciexfn;
419
420prop fault.io.pciex.device-interr@pciexbus/pciexdev/pciexfn { IS_SWU } (1)->
421    error.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn,
422    error.io.pciex.flt-f-u@pciexbus/pciexdev/pciexfn,
423    error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn,
424    error.io.pciex.corrlink_trip@pciexbus,
425    error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn;
426
427prop fault.io.pciex.device-interr@pciexbus/pciexdev/pciexfn { IS_LEAF } (1)->
428    error.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn,
429    error.io.pciex.flt-f-u@pciexbus/pciexdev/pciexfn,
430    error.io.device.nf-device@pciexbus/pciexdev/pciexfn,
431    error.io.device.f-device@pciexbus/pciexdev/pciexfn,
432    error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn,
433    error.io.pciex.mtlp-u@pciexbus/pciexdev/pciexfn,
434    error.io.pciex.corrlink_trip@pciexbus,
435    error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn;
436
437/*
438 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
439 * A faulty PCI Express downstream switch port may cause
440 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
441 * - nr-d:		the device not to respond to an upstream request
442 * - ca-d:		the device to completer abort an upstream request
443 * - ecrcreq-d:		TLP with end-to-end CRC error transmitted upstream
444 * - ecrccomp-d:	TLP with end-to-end CRC error transmitted upstream
445 * - poisreq-d:		poisoned request transmitted upstream
446 * - poiscomp-d:	poisoned completion transmitted upstream
447 * - corrlink:		correctable link or physical level error
448 * - fatlink:		fatal link or physical level error
449 */
450
451event error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
452event error.io.pciex.flt-ca-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
453event error.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
454event error.io.pciex.flt-f-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
455event error.io.pciex.corrlink_trip@pciexbus/pciexdev/pciexfn/pciexbus;
456event error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
457
458prop fault.io.pciex.device-noresp@pciexbus/pciexdev/pciexfn { IS_SWD } (1)->
459    error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
460
461prop fault.io.pciex.device-interr@pciexbus/pciexdev/pciexfn { IS_SWD } (1)->
462    error.io.pciex.flt-ca-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>,
463    error.io.pciex.flt-nf-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>,
464    error.io.pciex.flt-f-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>,
465    error.io.pciex.corrlink_trip@pciexbus/pciexdev/pciexfn/pciexbus<>,
466    error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
467
468/*
469 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
470 * A faulty PCIEX bus may cause:
471 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
472 * - nr-u:		a device to not respond because the link is down
473 * - nr-d:		a device to not respond because the link is down
474 * - corrlink:		correctable link or physical level error
475 * - fatlink:		fatal link or physical level error
476 */
477
478event error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn;
479
480prop fault.io.pciex.bus-noresp@pciexbus/pciexdev/pciexfn (0)->
481    error.io.pciex.flt-nr-u@pciexbus/pciexdev/pciexfn
482	{ IS_SWU || IS_LEAF || IS_BDG },
483    error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn
484	{ IS_SWU || IS_LEAF || IS_BDG };
485
486prop fault.io.pciex.bus-linkerr@pciexbus/pciexdev/pciexfn (0)->
487    error.io.pciex.corrlink_trip@pciexbus,
488    error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn
489	{ IS_SWU || IS_LEAF || IS_BDG };
490
491/*
492 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
493 * A faulty pciex-pci bridge may cause
494 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
495 * The following errors to propagate onto the PCI Express fabric
496 * - nr-u:		the device not to respond to a valid downstream request
497 * - ca-u:		the device to completer abort a valid downstream request
498 * - ecrcreq-u:		request with end-to-end CRC error transmitted upstream
499 * - ecrccomp-u:	compl with end-to-end CRC error transmitted upstream
500 * - poisreq-u:		poisoned request transmitted upstream
501 * - poiscomp-u:	poisoned completion transmitted upstream
502 * - corrlink:		correctable link or physical level error upstream
503 * - fatlink:		fatal link or physical level error upstream
504 * - sec-interr:	internal error on pci express to pci bridge
505 *
506 * And the following errors to propagate onto the secondary pci or pci/x bus
507 * (these will be handled by code in the pci.esc file).
508 * - nr-pw-d:		the device not to respond to a valid upstream request
509 * - nr-drw-d:		the device not to respond to a valid upstream request
510 * - retry-to-d:	failure to retry an downstream delayed request
511 * - ta-pw-d:		the device responds with a ta to a valid upstream
512 *			request
513 * - ta-drw-d:		the device responds with a ta to a valid upstream
514 *			request
515 * - ape-d:	address/parity to get corrupted during downstream transmission.
516 * - dpe-d:	data/parity to get corrupted during downstream transmission.
517 * - scpe-d:	split completion to get corrupted during downstream transmission
518 */
519
520event error.io.pci.ape-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
521event error.io.pci.f-dpe-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
522event error.io.pci.nf-dpe-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
523event error.io.pci.retry-to-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
524event error.io.pci.nr-pw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
525event error.io.pci.nr-drw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
526event error.io.pci.ta-pw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
527event error.io.pci.ta-drw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
528event error.io.pcix.scpe-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
529event error.io.pciex.sec-interr@pciexbus/pciexdev/pciexfn;
530event ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn{within(5s)};
531
532prop fault.io.pciex.device-noresp@pciexbus/pciexdev/pciexfn { IS_BDG } (1)->
533    error.io.pciex.flt-nr-u@pciexbus/pciexdev/pciexfn,
534    error.io.pci.retry-to-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>,
535    error.io.pci.nr-pw-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>,
536    error.io.pci.nr-drw-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
537
538prop fault.io.pciex.device-interr@pciexbus/pciexdev/pciexfn { IS_BDG } (1)->
539    error.io.pciex.flt-nf-u@pciexbus/pciexdev/pciexfn,
540    error.io.pciex.flt-f-u@pciexbus/pciexdev/pciexfn,
541    error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn,
542    error.io.pciex.mtlp-u@pciexbus/pciexdev/pciexfn,
543    error.io.pciex.sec-interr@pciexbus/pciexdev/pciexfn,
544    error.io.pciex.corrlink_trip@pciexbus,
545    error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn,
546    error.io.pci.ta-pw-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>,
547    error.io.pci.ta-drw-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>,
548    error.io.pci.ape-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>,
549    error.io.pcix.scpe-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>,
550    error.io.pci.f-dpe-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>,
551    error.io.pci.nf-dpe-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
552
553prop fault.io.pciex.device-interr@pciexbus/pciexdev/pciexfn { IS_BDG } (0)->
554    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn;
555
556/*
557 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
558 * declarations
559 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
560 */
561event error.io.pciex.fatal@pciexbus/pciexdev/pciexfn;
562event error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn;
563event error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn;
564event error.io.pciex.ur-u@pciexbus/pciexdev/pciexfn;
565event error.io.pciex.ur-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
566event error.io.pciex.ur-u@pciexrc/pciexbus/pciexdev/pciexfn;
567event error.io.pciex.nr-u@pciexbus/pciexdev/pciexfn;
568event error.io.pciex.nr-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
569event error.io.pciex.nr-u@pciexrc/pciexbus/pciexdev/pciexfn;
570event error.io.pciex.ca-u@pciexbus/pciexdev/pciexfn;
571event error.io.pciex.ca-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
572event error.io.pciex.ca-u@pciexrc/pciexbus/pciexdev/pciexfn;
573event error.io.pciex.mtlp-d@pciexbus/pciexdev/pciexfn;
574event error.io.pciex.sw-mtlp-d@pciexbus/pciexdev/pciexfn;
575event error.io.pciex.mtlp-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
576event error.io.pciex.flt-ca-d@pciexbus/pciexdev/pciexfn;
577event error.io.pciex.ca-d@pciexrc/pciexbus/pciexdev/pciexfn;
578event error.io.pciex.ca-d@pciexbus/pciexdev/pciexfn;
579event error.io.pciex.ca-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
580event error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn;
581event error.io.pciex.poisreq-d@pciexrc/pciexbus/pciexdev/pciexfn;
582event error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
583event error.io.pciex.sw-poisreq-d@pciexbus/pciexdev/pciexfn;
584event error.io.pciex.poiscomp-d@pciexbus/pciexdev/pciexfn;
585event error.io.pciex.ecrcreq-d@pciexbus/pciexdev/pciexfn;
586event error.io.pciex.sw-ecrcreq-d@pciexbus/pciexdev/pciexfn;
587event error.io.pciex.ecrccomp-d@pciexbus/pciexdev/pciexfn;
588event error.io.pciex.badreq-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
589event error.io.pciex.badreq-d@pciexbus/pciexdev/pciexfn;
590event error.io.pciex.badreq-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
591event error.io.pciex.badreq-u@pciexbus/pciexdev/pciexfn;
592event error.io.pciex.badreq-u@pciexbus/pciexdev;
593event error.io.pciex.badreq-u@pciexrc/pciexbus/pciexdev/pciexfn;
594event error.io.pciex.ecrcreq-u@pciexbus/pciexdev/pciexfn;
595event error.io.pciex.ecrcreq-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
596event error.io.pciex.source-f-ecrcreq-u@pciexbus/pciexdev/pciexfn;
597event error.io.pciex.source-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn;
598event error.io.pciex.source-f-ecrcreq-u@pcibus/pcidev/pcifn;
599event error.io.pciex.source-nf-ecrcreq-u@pcibus/pcidev/pcifn;
600event error.io.pciex.ecrccomp-u@pciexbus/pciexdev/pciexfn;
601event error.io.pciex.ecrccomp-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
602event error.io.pciex.source-f-ecrccomp-u@pciexbus/pciexdev/pciexfn;
603event error.io.pciex.source-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn;
604event error.io.pciex.source-f-ecrccomp-u@pcibus/pcidev/pcifn;
605event error.io.pciex.source-nf-ecrccomp-u@pcibus/pcidev/pcifn;
606event error.io.pciex.poiscomp-u@pciexbus/pciexdev/pciexfn;
607event error.io.pciex.poiscomp-u@pciexrc/pciexbus/pciexdev/pciexfn;
608event error.io.pciex.poiscomp-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
609event error.io.pciex.source-f-poiscomp-u@pciexbus/pciexdev/pciexfn;
610event error.io.pciex.source-nf-poiscomp-u@pciexbus/pciexdev/pciexfn;
611event error.io.pci.source-f-dpdata-r-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
612event error.io.pci.source-nf-dpdata-r-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
613event error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn;
614event error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn;
615event error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn;
616event error.io.pciex.poisreq-u@pciexrc/pciexbus/pciexdev/pciexfn;
617event error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
618event error.io.pciex.source-f-poisreq-u@pciexbus/pciexdev/pciexfn;
619event error.io.pciex.source-nf-poisreq-u@pciexbus/pciexdev/pciexfn;
620event error.io.pci.source-f-dpdata-w-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
621event error.io.pci.source-nf-dpdata-w-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
622event error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn;
623event error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn;
624event error.io.pciex.source-f-poisreq-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
625event error.io.pciex.source-nf-poisreq-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
626event error.io.pciex.source-mtlp-u@pciexbus/pciexdev/pciexfn;
627event error.io.pciex.source-mtlp-u@pcibus/pcidev/pcifn;
628event error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn;
629event error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn;
630event error.io.pci.badreq-pw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
631event error.io.pci.badreq-drw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
632event error.io.pci.target-ma-d@pciexbus/pciexdev/pciexfn;
633event error.io.pci.target-rta-d@pciexbus/pciexdev/pciexfn;
634event error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn;
635event error.io.pciex.f-poisreq-d@pciexbus/pciexdev/pciexfn;
636event error.io.pciex.f-poisreq-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
637event error.io.pciex.f-lf-poisreq-d@pciexbus/pciexdev/pciexfn;
638event error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn;
639event error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
640event error.io.pciex.anf-poisreq-d@pciexbus/pciexdev/pciexfn;
641event error.io.pciex.anf-poisreq-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
642event error.io.pciex.f-poiscomp-d@pciexbus/pciexdev/pciexfn;
643event error.io.pciex.f-poiscomp-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
644event error.io.pciex.f-lf-poiscomp-d@pciexbus/pciexdev/pciexfn;
645event error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn;
646event error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
647event error.io.pciex.anf-poiscomp-d@pciexbus/pciexdev/pciexfn;
648event error.io.pciex.anf-poiscomp-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
649event error.io.pciex.f-ecrcreq-d@pciexbus/pciexdev/pciexfn;
650event error.io.pciex.f-ecrcreq-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
651event error.io.pciex.f-ecrcreq-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
652event error.io.pciex.f-ecrcreq-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
653event error.io.pciex.f-ecrcreq-d@pcibus/pcidev/pcifn;
654event error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn;
655event error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
656event error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
657event error.io.pciex.nf-ecrcreq-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
658event error.io.pciex.nf-ecrcreq-d@pcibus/pcidev/pcifn;
659event error.io.pciex.f-ecrccomp-d@pciexbus/pciexdev/pciexfn;
660event error.io.pciex.f-ecrccomp-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
661event error.io.pciex.f-ecrccomp-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
662event error.io.pciex.f-ecrccomp-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
663event error.io.pciex.f-ecrccomp-d@pcibus/pcidev/pcifn;
664event error.io.pciex.f-lf-ecrccomp-d@pciexbus/pciexdev/pciexfn;
665event error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn;
666event error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
667event error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
668event error.io.pciex.nf-ecrccomp-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
669event error.io.pciex.nf-ecrccomp-d@pcibus/pcidev/pcifn;
670event error.io.pciex.f-lf-poisreq-u@pciexbus/pciexdev/pciexfn;
671event error.io.pciex.fatal-u@pciexbus/pciexdev/pciexfn;
672event error.io.pciex.nonfatal-u@pciexbus/pciexdev/pciexfn;
673event error.io.pciex.fatal-u@pciexrc/pciexbus/pciexdev/pciexfn;
674event error.io.pciex.nonfatal-u@pciexrc/pciexbus/pciexdev/pciexfn;
675event error.io.pciex.fatal-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
676event error.io.pciex.nonfatal-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
677event error.io.service.restored@pcibus/pcidev/pcifn;
678
679event ereport.io.pci.ma@pciexbus/pciexdev/pciexfn{within(5s)};
680event ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn{within(5s)};
681event ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn{within(5s)};
682event ereport.io.pci.rta@pciexbus/pciexdev/pciexfn{within(5s)};
683event ereport.io.pci.sta@pciexbus/pciexdev/pciexfn{within(5s)};
684event ereport.io.service.lost@pcibus/pcidev/pcifn{within(5s)};
685event ereport.io.service.degraded@pcibus/pcidev/pcifn{within(5s)};
686event ereport.io.service.unaffected@pcibus/pcidev/pcifn{within(5s)};
687event ereport.io.pciex.dl.dllp@pciexbus/pciexdev/pciexfn{within(5s)};
688event ereport.io.pciex.dl.btlp@pciexbus/pciexdev/pciexfn{within(5s)};
689event ereport.io.pciex.dl.bdllp@pciexbus/pciexdev/pciexfn{within(5s)};
690event ereport.io.pciex.dl.rto@pciexbus/pciexdev/pciexfn{within(5s)};
691event ereport.io.pciex.dl.rnr@pciexbus/pciexdev/pciexfn{within(5s)};
692event ereport.io.pciex.pl.re@pciexbus/pciexdev/pciexfn{within(5s)};
693event ereport.io.pciex.pl.te@pciexbus/pciexdev/pciexfn{within(5s)};
694event ereport.io.pciex.tl.fcp@pciexbus/pciexdev/pciexfn{within(5s)};
695event ereport.io.pciex.tl.rof@pciexbus/pciexdev/pciexfn{within(5s)};
696event ereport.io.pciex.tl.mtlp@pciexbus/pciexdev/pciexfn{within(5s)};
697event ereport.io.pciex.tl.ur@pciexfn{within(5s)};
698event ereport.io.pciex.tl.ca@pciexfn{within(5s)};
699event ereport.io.pciex.tl.ur@pciexbus/pciexdev/pciexfn{within(5s)};
700event ereport.io.pciex.tl.ca@pciexbus/pciexdev/pciexfn{within(5s)};
701event ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn{within(5s)};
702event ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn{within(5s)};
703event ereport.io.pciex.tl.uc@pciexbus/pciexdev/pciexfn{within(5s)};
704event ereport.io.pciex.tl.cto@pciexbus/pciexdev/pciexfn{within(5s)};
705event ereport.io.pciex.dl.dllp@pciexrc{within(5s)};
706event ereport.io.pciex.dl.btlp@pciexrc{within(5s)};
707event ereport.io.pciex.dl.bdllp@pciexrc{within(5s)};
708event ereport.io.pciex.dl.rto@pciexrc{within(5s)};
709event ereport.io.pciex.dl.rnr@pciexrc{within(5s)};
710event ereport.io.pciex.pl.re@pciexrc{within(5s)};
711event ereport.io.pciex.pl.te@pciexrc{within(5s)};
712event ereport.io.pciex.tl.fcp@pciexrc{within(5s)};
713event ereport.io.pciex.tl.rof@pciexrc{within(5s)};
714event ereport.io.pciex.tl.mtlp@pciexrc{within(5s)};
715event ereport.io.pciex.tl.ur@pciexrc{within(5s)};
716event ereport.io.pciex.tl.ca@pciexrc{within(5s)};
717event ereport.io.pciex.tl.ptlp@pciexrc{within(5s)};
718event ereport.io.pciex.tl.ecrc@pciexrc{within(5s)};
719event ereport.io.pciex.tl.cto@pciexrc{within(5s)};
720event ereport.io.pci.sec-ma@pciexrc{within(5s)};
721event ereport.io.pci.sec-mdpe@pciexrc{within(5s)};
722event ereport.io.pci.sec-dpe@pciexrc{within(5s)};
723event ereport.io.pci.sec-rta@pciexrc{within(5s)};
724event ereport.io.pci.sec-sta@pciexrc{within(5s)};
725event ereport.io.pci.sec-mdpe@pciexbus/pciexdev/pciexfn{within(5s)};
726event ereport.io.pci.sec-dpe@pciexbus/pciexdev/pciexfn{within(5s)};
727event ereport.io.pci.sec-rserr@pciexbus/pciexdev/pciexfn{within(5s)};
728event ereport.io.pci.sserr@pciexbus/pciexdev/pciexfn{within(5s)};
729event ereport.io.pci.sec-rserr@pciexrc{within(5s)};
730event ereport.io.pciex.rc.fe-msg@pciexrc{within(5s)};
731event ereport.io.pciex.rc.nfe-msg@pciexrc{within(5s)};
732event ereport.io.pciex.bdg.sec-interr@pciexbus/pciexdev/pciexfn{within(5s)};
733event ereport.io.pciex.bdg.sec-ude@pciexbus/pciexdev/pciexfn{within(5s)};
734
735/*
736 * handling of fatal and nonfatal error messages propagated up to root complex
737 *
738 * Use these for errors reported by root-complex on behalf of another device.
739 * Can use source-id payload to identify where the message came from.
740 */
741prop error.io.pciex.fatal@pciexbus[b]/pciexdev[d]/pciexfn[f] (1)->
742    ereport.io.pciex.rc.fe-msg@pciexrc<> {
743	SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC };
744
745prop error.io.pciex.fatal@pciexbus/pciexdev/pciexfn (1)->
746    error.io.pciex.fatal-u@pciexbus/pciexdev/pciexfn;
747
748prop error.io.pciex.fatal-u@pciexbus/pciexdev/pciexfn (0)->
749    ereport.io.pci.sserr@pciexbus/pciexdev/pciexfn;
750
751prop error.io.pciex.fatal-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (0)->
752    error.io.pciex.fatal-u@pciexbus/pciexdev/pciexfn,
753    ereport.io.pci.sec-rserr@pciexbus/pciexdev/pciexfn;
754
755prop error.io.pciex.fatal-u@pciexrc/pciexbus/pciexdev/pciexfn (0)->
756    ereport.io.pci.sec-rserr@pciexrc;
757
758prop error.io.pciex.nonfatal@pciexbus[b]/pciexdev[d]/pciexfn[f] (1)->
759    ereport.io.pciex.rc.nfe-msg@pciexrc<> {
760	SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC };
761
762prop error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn (1)->
763    error.io.pciex.nonfatal-u@pciexbus/pciexdev/pciexfn;
764
765prop error.io.pciex.nonfatal-u@pciexbus/pciexdev/pciexfn (0)->
766    ereport.io.pci.sserr@pciexbus/pciexdev/pciexfn;
767
768prop error.io.pciex.nonfatal-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (0)->
769    error.io.pciex.nonfatal-u@pciexbus/pciexdev/pciexfn,
770    ereport.io.pci.sec-rserr@pciexbus/pciexdev/pciexfn;
771
772prop error.io.pciex.nonfatal-u@pciexrc/pciexbus/pciexdev/pciexfn (0)->
773    ereport.io.pci.sec-rserr@pciexrc;
774
775/*
776 * link-level errors - could generate ereports at either end of link
777 *
778 * can use may propagations here as these ereports are only seen for these
779 * faults.
780 */
781prop error.io.pciex.corrlink@pciexbus (0)->
782    ereport.io.pciex.dl.btlp@pciexbus/pciexdev/pciexfn
783	{ IS_SWU || IS_LEAF || IS_BDG },
784    ereport.io.pciex.dl.bdllp@pciexbus/pciexdev/pciexfn
785	{ IS_SWU || IS_LEAF || IS_BDG },
786    ereport.io.pciex.dl.rto@pciexbus/pciexdev/pciexfn
787	{ IS_SWU || IS_LEAF || IS_BDG },
788    ereport.io.pciex.dl.rnr@pciexbus/pciexdev/pciexfn
789	{ IS_SWU || IS_LEAF || IS_BDG },
790    ereport.io.pciex.pl.re@pciexbus/pciexdev/pciexfn
791	{ IS_SWU || IS_LEAF || IS_BDG };
792
793prop error.io.pciex.corrlink@pciexbus/pciexdev/pciexfn/pciexbus (0)->
794    ereport.io.pciex.dl.btlp@pciexbus/pciexdev/pciexfn { IS_SWD },
795    ereport.io.pciex.dl.bdllp@pciexbus/pciexdev/pciexfn { IS_SWD },
796    ereport.io.pciex.dl.rto@pciexbus/pciexdev/pciexfn { IS_SWD },
797    ereport.io.pciex.dl.rnr@pciexbus/pciexdev/pciexfn { IS_SWD },
798    ereport.io.pciex.pl.re@pciexbus/pciexdev/pciexfn { IS_SWD };
799
800prop error.io.pciex.corrlink@pciexrc/pciexbus (0)->
801    ereport.io.pciex.dl.btlp@pciexrc,
802    ereport.io.pciex.dl.bdllp@pciexrc,
803    ereport.io.pciex.dl.rto@pciexrc,
804    ereport.io.pciex.dl.rnr@pciexrc,
805    ereport.io.pciex.pl.re@pciexrc;
806
807prop error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn (0)->
808    error.io.pciex.fatal@pciexbus/pciexdev/pciexfn
809	{ IS_SWU || IS_LEAF || IS_BDG };
810
811prop error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn (0)->
812    ereport.io.pciex.dl.dllp@pciexbus/pciexdev/pciexfn
813	{ IS_SWU || IS_LEAF || IS_BDG },
814    ereport.io.pciex.tl.fcp@pciexbus/pciexdev/pciexfn
815	{ IS_SWU || IS_LEAF || IS_BDG },
816    ereport.io.pciex.tl.rof@pciexbus/pciexdev/pciexfn
817	{ IS_SWU || IS_LEAF || IS_BDG };
818
819prop error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn
820(0)->
821    error.io.pciex.fatal@pciexbus/pciexdev/pciexfn { IS_SWD };
822
823prop error.io.pciex.fatlink@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (0)->
824    ereport.io.pciex.dl.dllp@pciexbus/pciexdev/pciexfn { IS_SWD },
825    ereport.io.pciex.pl.te@pciexbus/pciexdev/pciexfn { IS_SWD },
826    ereport.io.pciex.tl.fcp@pciexbus/pciexdev/pciexfn { IS_SWD },
827    ereport.io.pciex.tl.rof@pciexbus/pciexdev/pciexfn { IS_SWD };
828
829prop error.io.pciex.fatlink@pciexrc/pciexbus/pciexdev/pciexfn (0)->
830    ereport.io.pciex.dl.dllp@pciexrc,
831    ereport.io.pciex.pl.te@pciexrc,
832    ereport.io.pciex.tl.fcp@pciexrc,
833    ereport.io.pciex.tl.rof@pciexrc;
834
835/*
836 * bridge internal error
837 */
838prop error.io.pciex.sec-interr@pciexbus/pciexdev/pciexfn (2) ->
839    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn { IS_BDG },
840    ereport.io.pciex.bdg.sec-interr@pciexbus/pciexdev/pciexfn { IS_BDG };
841
842/*
843 * downstream poisoned request
844 *
845 * - poisreq-d cascades down to the leaf device/bridge and any switch ports
846 *   on route must raise a ptlp ereport while any switch ports forwarding
847 *   the poisoned request must raise sec-mdpe ereports. The originator of the
848 *   poisoning (be it root complex or downstream port of a switch) also raises
849 *   sec-mdpe. A hardened leaf driver will also raise ptlp. A target-mdpe
850 *   cascades down to the leaf (which may be a pci device beyond the bridge).
851 *
852 * Additionally, the leaf/bridge may treat the request as a ur, which the
853 * root complex will see and report an ma. Use flt-ur-u to represent this.
854 * Note that sw-poisreq-d is to handle the case where the switch is actually
855 * the target of the packet (config request etc).
856 *
857 * The fault can always be recognized and the source identified using the ptlp
858 * and sec-mdpe ereports.
859 */
860prop error.io.pciex.flt-f-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
861    error.io.pciex.f-poisreq-d@pciexbus/pciexdev/pciexfn;
862
863prop error.io.pciex.f-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
864    error.io.pciex.sw-poisreq-d@pciexbus/pciexdev/pciexfn,
865    error.io.pciex.f-poisreq-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
866
867prop error.io.pciex.f-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
868    error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn;
869
870prop error.io.pciex.f-poisreq-d@pciexbus/pciexdev/pciexfn (0)->
871    error.io.pciex.f-lf-poisreq-d@pciexbus/pciexdev/pciexfn { IS_LEAF };
872
873prop error.io.pciex.f-lf-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
874    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn;
875
876prop error.io.pciex.f-lf-poisreq-d@pciexbus/pciexdev/pciexfn (0)->
877    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn,
878    ereport.io.service.lost@pciexbus/pciexdev/pciexfn,
879    ereport.io.service.degraded@pciexbus/pciexdev/pciexfn;
880
881prop error.io.pciex.f-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
882    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
883
884prop error.io.pciex.flt-nf-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
885    error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn,
886    error.io.pciex.anf-poisreq-d@pciexbus/pciexdev/pciexfn;
887
888prop error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
889    error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
890
891prop error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
892    error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn;
893
894prop error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
895    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn { IS_LEAF };
896
897prop error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn (0)->
898    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_LEAF };
899
900prop error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
901    ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn { IS_LEAF },
902    error.io.service.restored@pciexbus/pciexdev/pciexfn { IS_LEAF };
903
904prop error.io.service.restored@pciexbus/pciexdev/pciexfn (1)->
905    ereport.io.service.lost@pciexbus/pciexdev/pciexfn,
906    ereport.io.service.degraded@pciexbus/pciexdev/pciexfn;
907
908prop error.io.service.restored@pciexbus/pciexdev/pciexfn (1)->
909    ereport.io.service.restored@pciexbus/pciexdev/pciexfn;
910
911prop error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
912    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
913
914prop error.io.pciex.anf-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
915    error.io.pciex.anf-poisreq-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
916
917prop error.io.pciex.anf-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
918    error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn;
919
920prop error.io.pciex.anf-poisreq-d@pciexbus/pciexdev/pciexfn (0)->
921    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn { IS_LEAF },
922    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_LEAF };
923
924prop error.io.pciex.poisreq-d@pciexrc/pciexbus/pciexdev/pciexfn (1)->
925    ereport.io.pci.sec-mdpe@pciexrc;
926
927prop error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (1)->
928    ereport.io.pci.sec-mdpe@pciexbus/pciexdev/pciexfn { IS_SWD };
929
930prop error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (0)->
931    ereport.io.pci.sec-mdpe@pciexbus/pciexdev/pciexfn { IS_SWU };
932
933prop error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn (2)->
934    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn { IS_SWU || IS_BDG },
935    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_SWU || IS_BDG };
936
937prop error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn (0)->
938    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn { IS_SWD },
939    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_SWD };
940
941prop error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn (0)->
942    error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn { IS_LEAF };
943
944prop error.io.pciex.poisreq-d@pciexbus/pciexdev/pciexfn (1)->
945    error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
946
947prop error.io.pciex.sw-poisreq-d@pciexbus/pciexdev/pciexfn (0)->
948    error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn { IS_SWU };
949
950prop error.io.pciex.sw-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
951    error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn { IS_SWU };
952
953/*
954 * downstream poisoned completion
955 *
956 * - poiscomp-d cascades down to the leaf device/bridge and any switch ports on
957 *   route must raise ptlp and mdpe ereports.  A hardened leaf driver will also
958 *   raise pltp and mdpe. For non-hardened leaf devices, no ptlp/mdpe may be
959 *   reported, and though we should still see a nonfatal error reported from
960 *   the root complex identifying the leaf device, we won't actually be informed
961 *   that the error was an ptlp.
962 */
963prop error.io.pciex.flt-f-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
964    error.io.pciex.f-poiscomp-d@pciexbus/pciexdev/pciexfn;
965
966prop error.io.pciex.f-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
967    error.io.pciex.f-poiscomp-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
968
969prop error.io.pciex.f-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
970    error.io.pciex.poiscomp-d@pciexbus/pciexdev/pciexfn;
971
972prop error.io.pciex.f-poiscomp-d@pciexbus/pciexdev/pciexfn (0)->
973    error.io.pciex.f-lf-poiscomp-d@pciexbus/pciexdev/pciexfn { IS_LEAF };
974
975prop error.io.pciex.f-lf-poiscomp-d@pciexbus/pciexdev/pciexfn (2)->
976    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn,
977    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn;
978
979prop error.io.pciex.f-lf-poiscomp-d@pciexbus/pciexdev/pciexfn (0)->
980    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn,
981    ereport.io.service.lost@pciexbus/pciexdev/pciexfn,
982    ereport.io.service.degraded@pciexbus/pciexdev/pciexfn;
983
984prop error.io.pciex.f-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
985    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
986
987prop error.io.pciex.flt-nf-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
988    error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn,
989    error.io.pciex.anf-poiscomp-d@pciexbus/pciexdev/pciexfn;
990
991prop error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
992    error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
993
994prop error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
995    error.io.pciex.poiscomp-d@pciexbus/pciexdev/pciexfn;
996
997prop error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn (2)->
998    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn { IS_LEAF },
999    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn { IS_LEAF };
1000
1001prop error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn (0)->
1002    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_LEAF };
1003
1004prop error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
1005    ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn { IS_LEAF },
1006    error.io.service.restored@pciexbus/pciexdev/pciexfn { IS_LEAF };
1007
1008prop error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
1009    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1010
1011prop error.io.pciex.anf-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
1012    error.io.pciex.anf-poiscomp-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
1013
1014prop error.io.pciex.anf-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
1015    error.io.pciex.poiscomp-d@pciexbus/pciexdev/pciexfn;
1016
1017prop error.io.pciex.anf-poiscomp-d@pciexbus/pciexdev/pciexfn (0)->
1018    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn { IS_LEAF },
1019    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn { IS_LEAF },
1020    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_LEAF };
1021
1022prop error.io.pciex.poiscomp-d@pciexbus/pciexdev/pciexfn (3)->
1023    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn { IS_BDG },
1024    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn { IS_BDG },
1025    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_BDG };
1026
1027prop error.io.pciex.poiscomp-d@pciexbus/pciexdev/pciexfn (2)->
1028    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn { IS_SWU },
1029    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_SWU };
1030
1031prop error.io.pciex.poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
1032    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn { IS_SWU },
1033    ereport.io.pci.sec-mdpe@pciexbus/pciexdev/pciexfn { IS_SWU };
1034
1035prop error.io.pciex.poiscomp-d@pciexbus/pciexdev/pciexfn (0)->
1036    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn { IS_SWD },
1037    ereport.io.pci.sec-mdpe@pciexbus/pciexdev/pciexfn { IS_SWD },
1038    ereport.io.pci.dpe@pciexbus/pciexdev/pciexfn { IS_SWD },
1039    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_SWD };
1040
1041/*
1042 * downstream request with ecrc error.
1043 *
1044 * - ecrcreq-d cascades down to the leaf device/bridge and any switches on
1045 *   route can optionally raise an ecrc ereport. A hardened leaf driver may also
1046 *   raise ecrc. For non-hardened leaf devices, no ecrc may be reported, and
1047 *   though we should still see a nonfatal error reported from the root complex
1048 *   identifying the leaf device, we won't actually be informed that the error
1049 *   was an ecrc.
1050 *
1051 * Additionally, as the leaf/bridge will just throw away the packet, we should
1052 * eventually get a cto at the root complex - so use an flt-nr-u at the pciex
1053 * leaf or bridge to get the appropriate behaviour. For the case where the leaf
1054 * driver wasn't hardened we may be able to identify the leaf device (and
1055 * therefore any intermediate switches which might have caused the problem)
1056 * either via a target-ma ereport if available or via the nonfatal error
1057 * reported from the root complex identifying the leaf device. The combination
1058 * of a nonfatal error reported from the root complex and a cto from the root
1059 * complex is sufficient to positively identify this case.
1060 *
1061 * Note that sw-ecrcreq-d is to handle the case where the switch is actually
1062 * the target of the packet (config request etc).
1063 */
1064prop error.io.pciex.flt-f-ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1065    error.io.pciex.f-ecrcreq-d@pciexbus/pciexdev/pciexfn;
1066
1067prop error.io.pciex.f-ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1068    error.io.pciex.sw-ecrcreq-d@pciexbus/pciexdev/pciexfn,
1069    error.io.pciex.f-ecrcreq-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
1070
1071prop error.io.pciex.f-ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1072    error.io.pciex.f-ecrcreq-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
1073
1074prop error.io.pciex.f-ecrcreq-d@pcibus/pcidev/pcifn (1)->
1075    error.io.pciex.f-ecrcreq-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1076
1077prop error.io.pciex.f-ecrcreq-d@pcibus/pcidev/pcifn (0)->
1078    ereport.io.service.lost@pcibus/pcidev/pcifn { IS_PCI_LEAF },
1079    ereport.io.service.degraded@pcibus/pcidev/pcifn { IS_PCI_LEAF };
1080
1081prop error.io.pciex.f-ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1082    error.io.pciex.ecrcreq-d@pciexbus/pciexdev/pciexfn;
1083
1084prop error.io.pciex.f-ecrcreq-d@pciexbus/pciexdev/pciexfn (0)->
1085    ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn { IS_LEAF },
1086    ereport.io.service.lost@pciexbus/pciexdev/pciexfn { IS_LEAF },
1087    ereport.io.service.degraded@pciexbus/pciexdev/pciexfn { IS_LEAF };
1088
1089prop error.io.pciex.flt-nf-ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1090    error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn;
1091
1092prop error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1093    error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
1094
1095prop error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1096    error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
1097
1098prop error.io.pciex.nf-ecrcreq-d@pcibus/pcidev/pcifn (1)->
1099    error.io.pciex.nf-ecrcreq-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1100
1101prop error.io.pciex.nf-ecrcreq-d@pcibus/pcidev/pcifn (1)->
1102    ereport.io.service.unaffected@pcibus/pcidev/pcifn { IS_PCI_LEAF },
1103    error.io.service.restored@pcibus/pcidev/pcifn { IS_PCI_LEAF };
1104
1105prop error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1106    error.io.pciex.ecrcreq-d@pciexbus/pciexdev/pciexfn;
1107
1108prop error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1109    ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn { IS_LEAF };
1110
1111prop error.io.pciex.nf-ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1112    ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn { IS_LEAF },
1113    error.io.service.restored@pciexbus/pciexdev/pciexfn { IS_LEAF };
1114
1115prop error.io.pciex.ecrcreq-d@pciexbus/pciexdev/pciexfn (0)->
1116    error.io.pciex.flt-nr-u@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1117
1118prop error.io.pciex.ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1119    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1120
1121prop error.io.pciex.ecrcreq-d@pciexbus/pciexdev/pciexfn (1)->
1122    ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn { IS_BDG };
1123
1124prop error.io.pciex.ecrcreq-d@pciexbus/pciexdev/pciexfn (0)->
1125    ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn { IS_SWU || IS_SWD };
1126
1127prop error.io.pciex.sw-ecrcreq-d@pciexbus/pciexdev/pciexfn (0)->
1128    error.io.pciex.flt-nr-u@pciexbus/pciexdev/pciexfn { IS_SWU };
1129
1130/*
1131 * downstream completion with ecrc error.
1132 *
1133 * - ecrccomp-d cascades down to the leaf device/bridge and any switches on
1134 *   route can optionally raise an ecrc ereport. A hardened leaf driver may
1135 *   also raise ecrc. For non-hardened leaf devices, no ecrc may be reported,
1136 *   and though we should still see a nonfatal error reported from the root
1137 *   complex identifying the leaf device, we won't actually be informed that
1138 *   the error was an ecrc.
1139 *
1140 * Additionally, as the leaf/bridge will just throw away the packet, we should
1141 * eventually get a cto. Note the leaf ereports are optional (ie in case driver
1142 * not hardened) but if we get both ecrc and cto we need to distinguish from
1143 * cto only which would be an nr-d.
1144 */
1145prop error.io.pciex.flt-f-ecrccomp-d@pciexbus/pciexdev/pciexfn (1)->
1146    error.io.pciex.f-ecrccomp-d@pciexbus/pciexdev/pciexfn;
1147
1148prop error.io.pciex.f-ecrccomp-d@pciexbus/pciexdev/pciexfn (1)->
1149    error.io.pciex.f-ecrccomp-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
1150
1151prop error.io.pciex.f-ecrccomp-d@pciexbus/pciexdev/pciexfn (1)->
1152    error.io.pciex.f-ecrccomp-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
1153
1154prop error.io.pciex.f-ecrccomp-d@pcibus/pcidev/pcifn (1)->
1155    error.io.pciex.f-ecrccomp-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1156
1157prop error.io.pciex.f-ecrccomp-d@pcibus/pcidev/pcifn (0)->
1158    ereport.io.service.lost@pcibus/pcidev/pcifn { IS_PCI_LEAF },
1159    ereport.io.service.degraded@pcibus/pcidev/pcifn { IS_PCI_LEAF };
1160
1161prop error.io.pciex.f-ecrccomp-d@pciexbus/pciexdev/pciexfn (1)->
1162    error.io.pciex.ecrccomp-d@pciexbus/pciexdev/pciexfn;
1163
1164prop error.io.pciex.f-ecrccomp-d@pciexbus/pciexdev/pciexfn (0)->
1165    error.io.pciex.f-lf-ecrccomp-d@pciexbus/pciexdev/pciexfn { IS_LEAF },
1166    ereport.io.service.lost@pciexbus/pciexdev/pciexfn { IS_LEAF },
1167    ereport.io.service.degraded@pciexbus/pciexdev/pciexfn { IS_LEAF };
1168
1169prop error.io.pciex.f-lf-ecrccomp-d@pciexbus/pciexdev/pciexfn (2)->
1170    ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn,
1171    ereport.io.pciex.tl.cto@pciexbus/pciexdev/pciexfn;
1172
1173prop error.io.pciex.f-lf-ecrccomp-d@pciexbus/pciexdev/pciexfn (0)->
1174    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn;
1175
1176prop error.io.pciex.flt-nf-ecrccomp-d@pciexbus/pciexdev/pciexfn (1)->
1177    error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn;
1178
1179prop error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn (1)->
1180    error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
1181
1182prop error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn (1)->
1183    error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
1184
1185prop error.io.pciex.nf-ecrccomp-d@pcibus/pcidev/pcifn (1)->
1186    error.io.pciex.nf-ecrccomp-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1187
1188prop error.io.pciex.nf-ecrccomp-d@pcibus/pcidev/pcifn (1)->
1189    ereport.io.service.unaffected@pcibus/pcidev/pcifn { IS_PCI_LEAF },
1190    error.io.service.restored@pcibus/pcidev/pcifn { IS_PCI_LEAF };
1191
1192prop error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn (1)->
1193    error.io.pciex.ecrccomp-d@pciexbus/pciexdev/pciexfn;
1194
1195prop error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn (2)->
1196    ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn { IS_LEAF },
1197    ereport.io.pciex.tl.cto@pciexbus/pciexdev/pciexfn { IS_LEAF };
1198
1199prop error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn (0)->
1200    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn { IS_LEAF };
1201
1202prop error.io.pciex.nf-ecrccomp-d@pciexbus/pciexdev/pciexfn (1)->
1203    ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn { IS_LEAF },
1204    error.io.service.restored@pciexbus/pciexdev/pciexfn { IS_LEAF };
1205
1206prop error.io.pciex.ecrccomp-d@pciexbus/pciexdev/pciexfn (1)->
1207    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1208
1209prop error.io.pciex.ecrccomp-d@pciexbus/pciexdev/pciexfn (2)->
1210    ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn { IS_BDG },
1211    error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn { IS_BDG };
1212
1213prop error.io.pciex.ecrccomp-d@pciexbus/pciexdev/pciexfn (0)->
1214    ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn { IS_SWU || IS_SWD };
1215
1216/*
1217 * upstream poisoned request
1218 *
1219 * - flt-poisreq-u is just on the pciex node which generated the fault (if the
1220 *   fault was generated by a pciex node and not a child pci node).
1221 * - source-poisreq-u cascades down to at least one leaf device (pciex or pci),
1222 *   whose bdf (if pciex) must match the source-id in the payload of the
1223 *   ereport generated from the root complex.
1224 * - poisreq-u cascades up to the root complex and any switch ports on
1225 *   route will raise a ptlp ereport, while any upstream devices generating
1226 *   or forwarding the poisoned packed will raise an mdpe ereport. The root
1227 *   complex should also report a ptlp.
1228 *
1229 * Additionally, as the root complex may treat the request as a ur, which the
1230 * leaf/bridge will see (and if hardened report) as an ma (including sending a
1231 * ta onto the child pci bus if this was a delayed write).
1232 *
1233 * We can always recognize what sort of fault this is from the ptlp (with no
1234 * sec-mdpe) at the root complex. Recognizing which originating devices may be
1235 * implicated can be done using the mdpe ereport (for a hardened leaf driver),
1236 * or for a non-hardened leaf driver by using the source-id payload in the ptlp
1237 * ereport to identify the originator of the request.  The ptlp/mdpe ereports
1238 * at the intervening switches will narrow the fault down to a single suspect.
1239 */
1240
1241prop error.io.pciex.flt-f-poisreq-u@pciexbus/pciexdev/pciexfn (2)->
1242    error.io.pciex.source-f-poisreq-u@pciexbus/pciexdev/pciexfn,
1243    error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn;
1244
1245prop error.io.pciex.source-f-poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1246    error.io.pciex.f-lf-poisreq-u@pciexbus/pciexdev/pciexfn { IS_LEAF };
1247
1248prop error.io.pciex.f-lf-poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1249    ereport.io.service.lost@pciexbus/pciexdev/pciexfn,
1250    ereport.io.service.degraded@pciexbus/pciexdev/pciexfn;
1251
1252prop error.io.pciex.f-lf-poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1253    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn;
1254
1255prop error.io.pciex.source-f-poisreq-u@pciexbus[b]/pciexdev[d]/pciexfn[f] (0)->
1256    ereport.io.pciex.tl.ptlp@pciexrc<> {
1257	BDF_IS_LEAF && SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC },
1258    ereport.io.pciex.tl.ur@pciexrc<> {
1259	BDF_IS_LEAF && SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC };
1260
1261prop error.io.pciex.source-f-poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1262    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn { IS_BDG };
1263
1264prop error.io.pciex.source-f-poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1265    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn,
1266    error.io.pci.ta-drw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1267
1268prop error.io.pci.source-f-dpdata-w-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1269    ereport.io.pciex.tl.ptlp@pciexrc<> { PCIBDF_IS_UNDER_RC },
1270    ereport.io.pciex.tl.ur@pciexrc<> { PCIBDF_IS_UNDER_RC };
1271
1272prop error.io.pci.source-f-dpdata-w-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1273    ereport.io.pciex.bdg.sec-ude@pciexbus/pciexdev/pciexfn { IS_BDG &&
1274        BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV };
1275
1276prop error.io.pciex.flt-nf-poisreq-u@pciexbus/pciexdev/pciexfn (2)->
1277    error.io.pciex.source-nf-poisreq-u@pciexbus/pciexdev/pciexfn,
1278    error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn;
1279
1280prop error.io.pciex.source-nf-poisreq-u@pciexbus/pciexdev/pciexfn (1)->
1281    ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn { IS_LEAF },
1282    error.io.service.restored@pciexbus/pciexdev/pciexfn { IS_LEAF };
1283
1284prop error.io.pciex.source-nf-poisreq-u@pciexbus[b]/pciexdev[d]/pciexfn[f] (0)->
1285    ereport.io.pciex.tl.ptlp@pciexrc<> {
1286	BDF_IS_LEAF && SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC },
1287    ereport.io.pciex.tl.ur@pciexrc<> {
1288	BDF_IS_LEAF && SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC };
1289
1290prop error.io.pciex.source-nf-poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1291    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn { IS_LEAF };
1292
1293prop error.io.pciex.source-nf-poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1294    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn { IS_BDG };
1295
1296prop error.io.pciex.source-nf-poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1297    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn,
1298    error.io.pci.ta-drw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1299
1300prop error.io.pci.source-nf-dpdata-w-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1301    ereport.io.pciex.tl.ptlp@pciexrc<> { PCIBDF_IS_UNDER_RC },
1302    ereport.io.pciex.tl.ur@pciexrc<> { PCIBDF_IS_UNDER_RC };
1303
1304prop error.io.pci.source-nf-dpdata-w-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1305    ereport.io.pciex.bdg.sec-ude@pciexbus/pciexdev/pciexfn { IS_BDG &&
1306        BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV };
1307
1308prop error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1309    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn { IS_BDG };
1310
1311prop error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1312    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn,
1313    error.io.pci.ta-drw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1314
1315prop error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (1)->
1316    error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn;
1317
1318prop error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn (2)->
1319    ereport.io.pci.sec-dpe@pciexbus/pciexdev/pciexfn { IS_SWD },
1320    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_SWD };
1321
1322prop error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1323    ereport.io.pci.sec-dpe@pciexbus/pciexdev/pciexfn { IS_SWU },
1324    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_SWU };
1325
1326prop error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn (1)->
1327    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn { IS_BDG || IS_SWU };
1328
1329prop error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1330    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn { IS_SWD };
1331
1332prop error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn (0)->
1333    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn { IS_LEAF };
1334
1335prop error.io.pciex.poisreq-u@pciexrc/pciexbus/pciexdev/pciexfn (1)->
1336    ereport.io.pci.sec-dpe@pciexrc;
1337
1338/*
1339 * upstream poisoned completion
1340 *
1341 * - flt-poiscomp-u is just on the pciex node which generated the fault (if the
1342 *   fault was generated by a pciex node and not a child pci node). There will
1343 *   be a target-mdpe downstream from here.
1344 * - source-poiscomp-u cascades down to at least one leaf device (pciex or pci),
1345 *   whose bdf (if pciex) must match the source-id in the payload of the
1346 *   ereport generated from the root complex.
1347 * - poiscomp-u cascades up to the root complex and any switches on
1348 *   route will raise ptlp and sec-mdpe ereports. The root complex will also
1349 *   raise a sec-mdpe and ptlp.
1350 *
1351 * We can always recognize what sort of fault this is from the ptlp/sec-mdpe at
1352 * the root complex. Recognizing which originating devices may be implicated
1353 * can be done using the source-id payload in the ptlp ereport to identify the
1354 * originator of the completion. The ptlp/sec-mdpe ereports at the intervening
1355 * switches will narrow the fault down to a single suspect.
1356 */
1357prop error.io.pciex.flt-f-poiscomp-u@pciexbus/pciexdev/pciexfn (3)->
1358    error.io.pciex.source-f-poiscomp-u@pciexbus/pciexdev/pciexfn,
1359    error.io.pciex.poiscomp-u@pciexbus/pciexdev/pciexfn,
1360    error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn;
1361
1362prop error.io.pciex.source-f-poiscomp-u@pciexbus/pciexdev/pciexfn (0)->
1363    ereport.io.service.lost@pciexbus/pciexdev/pciexfn { IS_LEAF },
1364    ereport.io.service.degraded@pciexbus/pciexdev/pciexfn { IS_LEAF };
1365
1366prop error.io.pciex.source-f-poiscomp-u@pciexbus[b]/pciexdev[d]/pciexfn[f] (0)->
1367    ereport.io.pciex.tl.ptlp@pciexrc<> {
1368	SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC };
1369
1370prop error.io.pci.source-f-dpdata-r-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1371    ereport.io.pciex.tl.ptlp@pciexrc<> { PCIBDF_IS_UNDER_RC };
1372
1373prop error.io.pci.source-f-dpdata-r-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1374    ereport.io.pciex.bdg.sec-ude@pciexbus/pciexdev/pciexfn { IS_BDG &&
1375        BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV };
1376
1377prop error.io.pciex.flt-nf-poiscomp-u@pciexbus/pciexdev/pciexfn (3)->
1378    error.io.pciex.source-nf-poiscomp-u@pciexbus/pciexdev/pciexfn,
1379    error.io.pciex.poiscomp-u@pciexbus/pciexdev/pciexfn,
1380    error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn;
1381
1382prop error.io.pciex.source-nf-poiscomp-u@pciexbus/pciexdev/pciexfn (1)->
1383    ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn { IS_LEAF },
1384    error.io.service.restored@pciexbus/pciexdev/pciexfn { IS_LEAF };
1385
1386prop error.io.pciex.source-nf-poiscomp-u@pciexbus[b]/pciexdev[d]/pciexfn[f] (0)->
1387    ereport.io.pciex.tl.ptlp@pciexrc<> {
1388	SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC };
1389
1390prop error.io.pci.source-nf-dpdata-r-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1391    ereport.io.pciex.tl.ptlp@pciexrc<> { PCIBDF_IS_UNDER_RC };
1392
1393prop error.io.pci.source-nf-dpdata-r-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1394    ereport.io.pciex.bdg.sec-ude@pciexbus/pciexdev/pciexfn { IS_BDG &&
1395        BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV };
1396
1397prop error.io.pciex.poiscomp-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (1)->
1398    error.io.pciex.poiscomp-u@pciexbus/pciexdev/pciexfn;
1399
1400prop error.io.pciex.poiscomp-u@pciexbus/pciexdev/pciexfn (2)->
1401    ereport.io.pci.sec-dpe@pciexbus/pciexdev/pciexfn { IS_SWD },
1402    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_SWD };
1403
1404prop error.io.pciex.poiscomp-u@pciexbus/pciexdev/pciexfn (1)->
1405    ereport.io.pci.sec-mdpe@pciexbus/pciexdev/pciexfn { IS_SWD },
1406    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn { IS_SWD };
1407
1408prop error.io.pciex.poiscomp-u@pciexbus/pciexdev/pciexfn (0)->
1409    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn { IS_SWU },
1410    ereport.io.pci.sec-mdpe@pciexbus/pciexdev/pciexfn { IS_SWU },
1411    ereport.io.pci.sec-dpe@pciexbus/pciexdev/pciexfn { IS_SWU },
1412    ereport.io.pciex.tl.ptlp@pciexbus/pciexdev/pciexfn { IS_SWU };
1413
1414prop error.io.pciex.poiscomp-u@pciexrc/pciexbus/pciexdev/pciexfn (1)->
1415    ereport.io.pci.sec-dpe@pciexrc;
1416
1417prop error.io.pciex.poiscomp-u@pciexrc/pciexbus/pciexdev/pciexfn (0)->
1418    ereport.io.pci.sec-mdpe@pciexrc;
1419
1420/*
1421 * upstream request with ecrc error.
1422 *
1423 * - flt-ecrcreq-u is just on the pciex node which generated the fault.
1424 * - source-ecrcreq-u cascades down to at least one leaf device (pciex or pci),
1425 *   whose bdf (if pciex) must match the source-id in the payload of the
1426 *   ereport generated from the root complex.
1427 * - ecrcreq-u cascades up to the root complex which must report it with an ecrc
1428 *   ereport and any switches on route can optionally raise an ecrc ereport.
1429 *
1430 * Additionally, as the root complex will just throw away the packet, we may
1431 * eventually get a cto - so use an nr-d at the pciex leaf or bridge to get
1432 * the appropriate behaviour.
1433 *
1434 * We can always recognize what sort of fault this is from the ecrc (with no
1435 * cto) at the root complex. Recognizing which leaf device may be implicated
1436 * can be done from the cto ereport (for a hardened leaf driver) or for a
1437 * non-hardened leaf using the source-id payload of the ecrc.
1438 */
1439prop error.io.pciex.flt-f-ecrcreq-u@pciexbus/pciexdev/pciexfn (2)->
1440    error.io.pciex.source-f-ecrcreq-u@pciexbus/pciexdev/pciexfn,
1441    error.io.pciex.ecrcreq-u@pciexbus/pciexdev/pciexfn;
1442
1443prop error.io.pciex.source-f-ecrcreq-u@pciexbus/pciexdev/pciexfn (0)->
1444    ereport.io.service.lost@pciexbus/pciexdev/pciexfn { IS_LEAF },
1445    ereport.io.service.degraded@pciexbus/pciexdev/pciexfn { IS_LEAF };
1446
1447prop error.io.pciex.source-f-ecrcreq-u@pciexbus/pciexdev/pciexfn (0)->
1448    error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1449
1450prop error.io.pciex.source-f-ecrcreq-u@pciexbus[b]/pciexdev[d]/pciexfn[f] (1)->
1451    ereport.io.pciex.tl.ecrc@pciexrc<> {
1452	BDF_IS_LEAF && SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC };
1453
1454prop error.io.pciex.source-f-ecrcreq-u@pcibus/pcidev/pcifn (0)->
1455    ereport.io.service.lost@pcibus/pcidev/pcifn { IS_PCI_LEAF },
1456    ereport.io.service.degraded@pcibus/pcidev/pcifn { IS_PCI_LEAF };
1457
1458prop error.io.pciex.source-f-ecrcreq-u@pcibus[b]/pcidev[d]/pcifn[f] (1)->
1459    ereport.io.pciex.tl.ecrc@pciexrc<> { PCIBDF_IS_UNDER_RC };
1460
1461prop error.io.pciex.flt-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn (2)->
1462    error.io.pciex.source-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn,
1463    error.io.pciex.ecrcreq-u@pciexbus/pciexdev/pciexfn;
1464
1465prop error.io.pciex.source-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn (0)->
1466    error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1467
1468prop error.io.pciex.source-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn (1)->
1469    ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn { IS_LEAF },
1470    error.io.service.restored@pciexbus/pciexdev/pciexfn { IS_LEAF };
1471
1472prop error.io.pciex.source-nf-ecrcreq-u@pciexbus[b]/pciexdev[d]/pciexfn[f] (1)->
1473    ereport.io.pciex.tl.ecrc@pciexrc<> {
1474	BDF_IS_LEAF && SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC };
1475
1476prop error.io.pciex.source-nf-ecrcreq-u@pcibus/pcidev/pcifn (1)->
1477    ereport.io.service.unaffected@pcibus/pcidev/pcifn { IS_PCI_LEAF },
1478    error.io.service.restored@pcibus/pcidev/pcifn { IS_PCI_LEAF };
1479
1480prop error.io.pciex.source-nf-ecrcreq-u@pcibus[b]/pcidev[d]/pcifn[f] (1)->
1481    ereport.io.pciex.tl.ecrc@pciexrc<> { PCIBDF_IS_UNDER_RC };
1482
1483prop error.io.pciex.ecrcreq-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (1)->
1484    error.io.pciex.ecrcreq-u@pciexbus/pciexdev/pciexfn;
1485
1486prop error.io.pciex.ecrcreq-u@pciexbus/pciexdev/pciexfn (0)->
1487    ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn { IS_SWD || IS_SWU };
1488
1489/*
1490 * upstream completion with ecrc error.
1491 *
1492 * - flt-ecrccomp-u is just on the pciex node which generated the fault.
1493 * - source-ecrccomp-u cascades down to at least one leaf device (pciex or pci),
1494 *   whose bdf (if pciex) must match the source-id in the payload of the
1495 *   ereport generated from the root complex.
1496 * - ecrccomp-u cascades up to the root complex, which should report it with an
1497 *   ecrc ereport and any switches on route can optionally raise an ecrc
1498 *   ereport.
1499 *
1500 * Additionally, as the root complex will just throw away the packet, we'll
1501 * eventually get a cto - so use an flt-nr-u at the pciex leaf or bridge to get
1502 * the appropriate behaviour.
1503 *
1504 * We can always recognize what sort of fault this from the ecrc/cto from the
1505 * root complex. Recognizing which leaf device may be implicated can be done
1506 * using either the source-id payload of the ecrc or the target-ma ereport if
1507 * available.
1508 */
1509prop error.io.pciex.flt-f-ecrccomp-u@pciexbus/pciexdev/pciexfn (2)->
1510    error.io.pciex.source-f-ecrccomp-u@pciexbus/pciexdev/pciexfn,
1511    error.io.pciex.ecrccomp-u@pciexbus/pciexdev/pciexfn;
1512
1513prop error.io.pciex.source-f-ecrccomp-u@pciexbus/pciexdev/pciexfn (0)->
1514    ereport.io.service.lost@pciexbus/pciexdev/pciexfn { IS_LEAF },
1515    ereport.io.service.degraded@pciexbus/pciexdev/pciexfn { IS_LEAF };
1516
1517prop error.io.pciex.source-f-ecrccomp-u@pciexbus/pciexdev/pciexfn (1)->
1518    error.io.pciex.flt-nr-u@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1519
1520prop error.io.pciex.source-f-ecrccomp-u@pciexbus[b]/pciexdev[d]/pciexfn[f] (1)->
1521    ereport.io.pciex.tl.ecrc@pciexrc<> {
1522	SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC };
1523
1524prop error.io.pciex.source-f-ecrccomp-u@pcibus/pcidev/pcifn (0)->
1525    ereport.io.service.lost@pcibus/pcidev/pcifn { IS_PCI_LEAF },
1526    ereport.io.service.degraded@pcibus/pcidev/pcifn { IS_PCI_LEAF };
1527
1528prop error.io.pciex.source-f-ecrccomp-u@pcibus[b]/pcidev[d]/pcifn[f] (1)->
1529    ereport.io.pciex.tl.ecrc@pciexrc<> { PCIBDF_IS_UNDER_RC };
1530
1531prop error.io.pciex.flt-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn (2)->
1532    error.io.pciex.source-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn,
1533    error.io.pciex.ecrccomp-u@pciexbus/pciexdev/pciexfn;
1534
1535prop error.io.pciex.source-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn (1)->
1536    error.io.pciex.flt-nr-u@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1537
1538prop error.io.pciex.source-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn (1)->
1539    ereport.io.service.unaffected@pciexbus/pciexdev/pciexfn { IS_LEAF },
1540    error.io.service.restored@pciexbus/pciexdev/pciexfn { IS_LEAF };
1541
1542prop error.io.pciex.source-nf-ecrccomp-u@pciexbus[b]/pciexdev[d]/pciexfn[f] (1)->
1543    ereport.io.pciex.tl.ecrc@pciexrc<> {
1544	SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC };
1545
1546prop error.io.pciex.source-nf-ecrccomp-u@pcibus/pcidev/pcifn (1)->
1547    ereport.io.service.unaffected@pcibus/pcidev/pcifn { IS_PCI_LEAF },
1548    error.io.service.restored@pcibus/pcidev/pcifn { IS_PCI_LEAF };
1549
1550prop error.io.pciex.source-nf-ecrccomp-u@pcibus[b]/pcidev[d]/pcifn[f] (1)->
1551    ereport.io.pciex.tl.ecrc@pciexrc<> { PCIBDF_IS_UNDER_RC };
1552
1553prop error.io.pciex.ecrccomp-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (1)->
1554    error.io.pciex.ecrccomp-u@pciexbus/pciexdev/pciexfn;
1555
1556prop error.io.pciex.ecrccomp-u@pciexbus/pciexdev/pciexfn (0)->
1557    ereport.io.pciex.tl.ecrc@pciexbus/pciexdev/pciexfn { IS_SWD || IS_SWU };
1558
1559/*
1560 * no response to downstream requester
1561 *
1562 * - nr-d will effectively cascade downstream to the requester. The fault here
1563 *   is always at the root complex. For a hardened leaf device driver, we will
1564 *   always be able to recognize this as the requester will report this as a
1565 *   cto. For non-hardened leaf devices, no cto will be reported, and though we
1566 *   should still see a nonfatal error reported from the root complex
1567 *   identifying the leaf device, we won't actually be informed that the error
1568 *   was a cto.
1569 */
1570prop error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn (1)->
1571    error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
1572
1573prop error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn (1)->
1574    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1575
1576prop error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn (1)->
1577    ereport.io.pciex.tl.cto@pciexbus/pciexdev/pciexfn { IS_BDG };
1578
1579prop error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn (0)->
1580    ereport.io.pciex.tl.cto@pciexbus/pciexdev/pciexfn { IS_LEAF };
1581
1582prop error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn (0)->
1583    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1584
1585/*
1586 * no response to upstream requester
1587 *
1588 * - flt-nr-u is just on the pciex node which generated the fault.
1589 * - nr-u will effectively cascade upstream to the root complex which will
1590 *   report it as a cto.
1591 *
1592 * We have to use target-ma to informs us which device failed to respond.
1593 */
1594prop error.io.pciex.flt-nr-u@pciexbus/pciexdev/pciexfn (2)->
1595    error.io.pciex.nr-u@pciexbus/pciexdev/pciexfn,
1596    error.io.pci.target-ma-d@pciexbus/pciexdev/pciexfn;
1597
1598prop error.io.pciex.nr-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (1)->
1599    error.io.pciex.nr-u@pciexbus/pciexdev/pciexfn;
1600
1601prop error.io.pciex.nr-u@pciexrc/pciexbus/pciexdev/pciexfn (1)->
1602    ereport.io.pciex.tl.cto@pciexrc;
1603
1604prop error.io.pciex.nr-u@pciexrc/pciexbus/pciexdev/pciexfn (0)->
1605    ereport.io.pci.sec-ma@pciexrc;
1606
1607/*
1608 * downstream malformed tlp
1609 *
1610 * This will cascade downstream to the receiver which will report it as an mtlp.
1611 * For non-hardened leaf drivers, no mtlp will be reported, and though we should
1612 * still see a fatal error reported from the root complex identifying the leaf
1613 * device, we won't actually be informed that the error was a mtlp.
1614 * Note that sw-mtlp-d is to handle the case where the switch is actually
1615 * the target of the packet (config request etc).
1616 */
1617prop error.io.pciex.mtlp-d@pciexbus/pciexdev/pciexfn (1)->
1618    error.io.pciex.sw-mtlp-d@pciexbus/pciexdev/pciexfn,
1619    error.io.pciex.mtlp-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
1620
1621prop error.io.pciex.mtlp-d@pciexbus/pciexdev/pciexfn (1)->
1622    error.io.pciex.fatal@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1623
1624prop error.io.pciex.mtlp-d@pciexbus/pciexdev/pciexfn (1)->
1625    ereport.io.pciex.tl.mtlp@pciexbus/pciexdev/pciexfn { IS_BDG };
1626
1627prop error.io.pciex.mtlp-d@pciexbus/pciexdev/pciexfn (0)->
1628    ereport.io.pciex.tl.mtlp@pciexbus/pciexdev/pciexfn { IS_LEAF };
1629
1630prop error.io.pciex.sw-mtlp-d@pciexbus/pciexdev/pciexfn (2)->
1631    error.io.pciex.fatal@pciexbus/pciexdev/pciexfn { IS_SWU },
1632    ereport.io.pciex.tl.mtlp@pciexbus/pciexdev/pciexfn { IS_SWU };
1633
1634/*
1635 * upstream malformed tlp
1636 *
1637 * This will cascade upstream to the receiver which will report it as an mtlp.
1638 */
1639prop error.io.pciex.mtlp-u@pciexbus/pciexdev/pciexfn (1)->
1640    error.io.pciex.source-mtlp-u@pciexbus/pciexdev/pciexfn;
1641
1642prop error.io.pciex.source-mtlp-u@pciexbus[b]/pciexdev[d]/pciexfn[f] (1)->
1643    ereport.io.pciex.tl.mtlp@pciexrc<> { BDF_IS_LEAF && BDF_IS_UNDER_RC };
1644
1645prop error.io.pciex.source-mtlp-u@pcibus[b]/pcidev[d]/pcifn[f] (1)->
1646    ereport.io.pciex.tl.mtlp@pciexrc<> { PCIBDF_IS_UNDER_RC };
1647
1648/*
1649 * downstream completer aborts
1650 *
1651 * This could be the fault of the root complex or a switch reporting an internal
1652 * error, or of the leaf device sending an invalid request (the latter is
1653 * handled by the badreq-u case below).
1654 *
1655 * This is reported by the completer or by an intervening downstream switch
1656 * port. The completer abort response propagates down to the initiator which
1657 * will set the legacy pci bit rta.
1658 *
1659 * The fault can always be recognized by the ca ereport from the root complex
1660 * or downstream switch port. The originator of the request can be recognized
1661 * by the rta for a hardened driver or by using the source-id payload of the
1662 * ca ereport for a non-hardened driver.
1663 *
1664 * Note that there is no ur-d (we assume that a ur reported by the root complex
1665 * is always due to a badreq-u - see below).
1666 */
1667prop error.io.pciex.flt-ca-d@pciexrc/pciexbus/pciexdev/pciexfn (0)->
1668    error.io.pciex.ca-d@pciexrc/pciexbus/pciexdev/pciexfn,
1669    ereport.io.pciex.tl.ca@pciexrc;
1670
1671prop error.io.pciex.ca-d@pciexrc/pciexbus/pciexdev/pciexfn (1)->
1672    ereport.io.pci.sec-sta@pciexrc;
1673
1674prop error.io.pciex.flt-ca-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (0)->
1675    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn;
1676
1677prop error.io.pciex.flt-ca-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (2)->
1678    ereport.io.pciex.tl.ca@pciexbus/pciexdev/pciexfn,
1679    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn;
1680
1681prop error.io.pciex.flt-ca-d@pciexbus/pciexdev/pciexfn (0)->
1682    error.io.pciex.ca-d@pciexbus/pciexdev/pciexfn;
1683
1684prop error.io.pciex.ca-d@pciexbus/pciexdev/pciexfn (1)->
1685    error.io.pciex.ca-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
1686
1687prop error.io.pciex.ca-d@pciexbus/pciexdev/pciexfn (1)->
1688    ereport.io.pci.rta@pciexbus/pciexdev/pciexfn { IS_BDG };
1689
1690prop error.io.pciex.ca-d@pciexbus/pciexdev/pciexfn (0)->
1691    ereport.io.pci.rta@pciexbus/pciexdev/pciexfn { IS_LEAF };
1692
1693/*
1694 * upstream unexpected requests
1695 *
1696 * This could be the fault of a device behind a PCI Express/PCI(X) bridge not
1697 * responding, or of the root complex sending an invalid request (the latter
1698 * case is handled by badreq-d below).
1699 *
1700 * This is reported as a ur by the completer, which for non-posted reqs sets the
1701 * appropriate error bit in the completion message to the initiator which will
1702 * set the legacy pci bit sec-ma.
1703 *
1704 * The fault can always be recognized from the sec-ma bit at the root complex.
1705 *
1706 * If the fault was with the root complex, then we don't care which leaf is
1707 * involved.
1708 *
1709 * If the fault originated from a pci device behind a PCI Express/PCI(X) bridge
1710 * we can identify the leaf device from the target-ma ereport if available or
1711 * from the source-id payload of the sec-rma ereport from the bridge.
1712 */
1713prop error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn (0)->
1714    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn
1715	{ IS_SWU || IS_LEAF || IS_BDG };
1716
1717prop error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn (0)->
1718    ereport.io.pciex.tl.ur@pciexbus/pciexdev/pciexfn { IS_LEAF || IS_BDG };
1719
1720prop error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn (1)->
1721    ereport.io.pciex.tl.ur@pciexbus/pciexdev/pciexfn { IS_SWU };
1722
1723prop error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn (2)->
1724    error.io.pci.target-ma-d@pciexbus/pciexdev/pciexfn,
1725    error.io.pciex.ur-u@pciexbus/pciexdev/pciexfn;
1726
1727prop error.io.pciex.ur-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (1)->
1728    error.io.pciex.ur-u@pciexbus/pciexdev/pciexfn;
1729
1730prop error.io.pciex.ur-u@pciexrc/pciexbus/pciexdev/pciexfn (0)->
1731    ereport.io.pci.sec-ma@pciexrc;
1732
1733/*
1734 * upstream completer aborts
1735 *
1736 * This could be the fault of the leaf device/bridge/upstream switch port
1737 * reporting an internal error, or of the root complex sending an invalid
1738 * request (the latter case is handled by badreq-d below).
1739 *
1740 * This is reported as a ca by the completer. The completer (for non-posted
1741 * requested) sends the appropriate error bits in the completion message to
1742 * the initiator which will set the legacy pci bit sec-rta.
1743 *
1744 * The fault can always be recognized from the sec-rta bit at the root complex.
1745 *
1746 * If the fault was with a PCI Express leaf with a hardened driver, then we
1747 * will identify the device from the ca ereport.
1748 *
1749 * If the fault was with a PCI Express leaf with a non-hardened driver, then we
1750 * can still identify the leaf device from the source-id payload of the nonfatal
1751 * message ereport from the root complex or from the target-rta ereport.
1752 *
1753 * If the fault originated from a PCI(X) device behind a PCI Express/PCI(X)
1754 * bridge, and it's driver is hardened, we can identify the device from the PCI
1755 * sta ereport or from the source-id payload of the sec-rta ereport from the
1756 * bridge.
1757 *
1758 * If the fault originated from a PCI(X) device behind a PCI Express/PCI(X)
1759 * bridge, and its driver is not hardened we can only identify the leaf device
1760 * from the target-rta ereport if available or from the source-id payload of
1761 * the sec-rta ereport from the bridge.
1762 */
1763prop error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn (0)->
1764    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn
1765	{ IS_SWU || IS_LEAF || IS_BDG };
1766
1767prop error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn (0)->
1768    ereport.io.pci.sta@pciexbus/pciexdev/pciexfn { IS_LEAF },
1769    ereport.io.pciex.tl.ca@pciexbus/pciexdev/pciexfn { IS_LEAF };
1770
1771prop error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn (0)->
1772    ereport.io.pci.sta@pciexbus/pciexdev/pciexfn { IS_SWU || IS_BDG };
1773
1774prop error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn (1)->
1775    ereport.io.pciex.tl.ca@pciexbus/pciexdev/pciexfn { IS_SWU || IS_BDG };
1776
1777prop error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn (2)->
1778    error.io.pci.target-rta-d@pciexbus/pciexdev/pciexfn,
1779    error.io.pciex.ca-u@pciexbus/pciexdev/pciexfn;
1780
1781prop error.io.pciex.ca-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (1)->
1782    error.io.pciex.ca-u@pciexbus/pciexdev/pciexfn;
1783
1784prop error.io.pciex.ca-u@pciexrc/pciexbus/pciexdev/pciexfn (0)->
1785    ereport.io.pci.sec-rta@pciexrc;
1786
1787/*
1788 * upstream bad request
1789 *
1790 * When detecting bad data on a request the completer (or any switch on the
1791 * way to the completer) may report ur or ca. If the switch detects the problem
1792 * first then the request doesn't get forwarded on to the completer.
1793 *
1794 * These are reported as ur/ca ereports. For non-posted requests, the reporter
1795 * then sends the appropriate error bits in the completion message to the
1796 * initiator which will set the legacy pci bits ma or rta.
1797 *
1798 * For badreq-u, the ca/ur ereports contain a source-id payload that identifies
1799 * the initiator.
1800 * - flt-badreq-u represents the initiator that caused the fault. This may
1801 *   be a child pci device in which case flt-badreq-u is generated in pci.esc
1802 * - badreq-u propagates up to the root complex.
1803 *
1804 * The fault can always be recognized by the ca/ur ereport from the root
1805 * complex or downstream switch port. The originator of the request can be
1806 * recognized by the rta/ma for a hardened driver or by using the source-id
1807 * payload of the ca/ur ereport for a non-hardened driver.
1808 *
1809 * Note that handling of badreq-u where source and detector are both pciexfn
1810 * has to be handled specially to avoid path name matching.
1811 */
1812prop error.io.pciex.flt-badreq-u@pciexbus/pciexdev/pciexfn (1)->
1813    error.io.pciex.badreq-u@pciexbus/pciexdev/pciexfn;
1814
1815prop error.io.pciex.badreq-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn (1)->
1816    error.io.pciex.badreq-u@pciexbus/pciexdev/pciexfn;
1817
1818prop error.io.pciex.badreq-u@pciexrc/pciexbus/pciexdev/pciexfn (0)->
1819    ereport.io.pci.sec-sta@pciexrc;
1820
1821prop error.io.pciex.flt-badreq-u@pciexbus[b]/pciexdev[d]/pciexfn[f] (0)->
1822    ereport.io.pciex.tl.ur@pciexrc<> {
1823        BDF_IS_LEAF && SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC},
1824    ereport.io.pciex.tl.ca@pciexrc<> {
1825        BDF_IS_LEAF && SOURCE_ID_MATCHES_BDF && BDF_IS_UNDER_RC};
1826
1827prop error.io.pci.badreq-pw-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1828    ereport.io.pciex.tl.ur@pciexrc<> { PCIBDF_IS_UNDER_RC },
1829    ereport.io.pciex.tl.ca@pciexrc<> { PCIBDF_IS_UNDER_RC };
1830
1831prop error.io.pci.badreq-drw-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1832    ereport.io.pciex.tl.ur@pciexrc<> { PCIBDF_IS_UNDER_RC },
1833    ereport.io.pciex.tl.ca@pciexrc<> { PCIBDF_IS_UNDER_RC };
1834
1835prop error.io.pciex.badreq-u@pciexbus/pciexdev/pciexfn (0)->
1836    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn { IS_SWD };
1837
1838prop error.io.pciex.badreq-u@pciexbus/pciexdev/pciexfn (0)->
1839    error.io.pciex.badreq-u@pciexbus/pciexdev { IS_LEAF };
1840
1841prop error.io.pciex.badreq-u@pciexbus/pciexdev/pciexfn (0)->
1842    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn;
1843
1844prop error.io.pciex.badreq-u@pciexbus[b]/pciexdev[d] (0)->
1845    ereport.io.pciex.tl.ur@pciexfn {
1846	(confprop(asru(pciexfn), TOPO_PCI_EXCAP) == "pciexswd") &&
1847	(!payloadprop_defined("source-valid") ||
1848	payloadprop("source-valid") == 0 ||
1849	(payloadprop("source-id") & 0xfff8) == ((b << 8) | (d << 3))) },
1850    ereport.io.pciex.tl.ca@pciexfn {
1851	(confprop(asru(pciexfn), TOPO_PCI_EXCAP) == "pciexswd") &&
1852	(!payloadprop_defined("source-valid") ||
1853	payloadprop("source-valid") == 0 ||
1854	(payloadprop("source-id") & 0xfff8) == ((b << 8) | (d << 3))) };
1855
1856prop error.io.pci.badreq-pw-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1857    ereport.io.pciex.tl.ur@pciexbus/pciexdev/pciexfn { IS_SWD &&
1858	PCIBDF_IS_UNDER_DEV },
1859    ereport.io.pciex.tl.ca@pciexbus/pciexdev/pciexfn { IS_SWD &&
1860	PCIBDF_IS_UNDER_DEV };
1861
1862prop error.io.pci.badreq-drw-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
1863    ereport.io.pciex.tl.ur@pciexbus/pciexdev/pciexfn { IS_SWD &&
1864	PCIBDF_IS_UNDER_DEV },
1865    ereport.io.pciex.tl.ca@pciexbus/pciexdev/pciexfn { IS_SWD &&
1866	PCIBDF_IS_UNDER_DEV };
1867
1868prop error.io.pciex.flt-badreq-u@pciexbus/pciexdev/pciexfn (0)->
1869    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn { IS_LEAF },
1870    ereport.io.pci.rta@pciexbus/pciexdev/pciexfn { IS_LEAF };
1871
1872/*
1873 * downstream bad request
1874 *
1875 * When detecting bad data on a request the completer (or any switch on the
1876 * way to the completer) may report ur or ca. If the switch detects the problem
1877 * first then the request doesn't get forwarded on to the completer.
1878 *
1879 * These are reported as ur/ca ereports (except where the completer is a non-
1880 * hardened leaf driver when all we get is a nonfatal error from the root
1881 * complex identifying the leaf device). The reporter then sends the appropriate
1882 * error bits in the completion message to the initiator which will set the
1883 * legacy pci bits ma or rta (oddly there is no equivalent in pcie error
1884 * reporting).
1885 */
1886prop error.io.pciex.badreq-d@pciexbus/pciexdev/pciexfn (1)->
1887    error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn,
1888    error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn,
1889    error.io.pciex.badreq-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
1890
1891prop error.io.pciex.badreq-d@pciexbus/pciexdev/pciexfn (1)->
1892    error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn { IS_LEAF },
1893    error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn { IS_LEAF };
1894
1895prop error.io.pciex.badreq-d@pciexbus/pciexdev/pciexfn (1)->
1896    error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn,
1897    error.io.pciex.flt-ca-u@pciexbus/pciexdev/pciexfn,
1898    error.io.pci.badreq-pw-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>,
1899    error.io.pci.badreq-drw-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
1900
1901/*
1902 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1903 * Stub unused legacy pci ereports at root complex.
1904 * Stub tl.uc as we can't do anything useful with it (we should eventually
1905 * get a cto which we can do something with - a uc without a cto is a genuinely
1906 * spurious completion which is at least harmless).
1907 * Stub messages that the root complex sends to itself.
1908 * Stub mce/mue/ce/nr/noadverr.
1909 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1910 */
1911
1912event error.io.pciex.discard_rc@pciexrc;
1913
1914event ereport.io.pciex.tl.uc@pciexbus/pciexdev/pciexfn{within(5s)};
1915event ereport.io.pciex.noadverr@pciexbus/pciexdev/pciexfn{within(5s)};
1916event ereport.io.pciex.correctable@pciexbus/pciexdev/pciexfn{within(5s)};
1917event ereport.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn{within(5s)};
1918event ereport.io.pciex.a-nonfatal@pciexbus/pciexdev/pciexfn{within(5s)};
1919event ereport.io.pciex.fatal@pciexbus/pciexdev/pciexfn{within(5s)};
1920event ereport.io.pci.nr@pciexbus/pciexdev/pciexfn{within(5s)};
1921event ereport.io.pci.nr@pciexrc{within(5s)};
1922event ereport.io.pci.ma@pciexrc{within(5s)};
1923event ereport.io.pci.rta@pciexrc{within(5s)};
1924event ereport.io.pci.sta@pciexrc{within(5s)};
1925event ereport.io.pci.dpe@pciexrc{within(5s)};
1926event ereport.io.pci.mdpe@pciexrc{within(5s)};
1927event ereport.io.pci.sserr@pciexrc{within(5s)};
1928event ereport.io.pciex.tl.uc@pciexrc{within(5s)};
1929event ereport.io.pciex.noadverr@pciexrc{within(5s)};
1930event ereport.io.pciex.a-nonfatal@pciexrc{within(5s)};
1931event ereport.io.pciex.rc.ce-msg@pciexrc{within(5s)};
1932event ereport.io.pciex.rc.mce-msg@pciexrc{within(5s)};
1933event ereport.io.pciex.rc.mue-msg@pciexrc{within(5s)};
1934
1935event upset.io.pciex.discard_uc@pciexbus/pciexdev/pciexfn;
1936event upset.io.pciex.discard@pciexbus/pciexdev/pciexfn;
1937event upset.io.pciex.discard@pciexrc;
1938
1939prop upset.io.pciex.discard_uc@pciexbus/pciexdev/pciexfn (1)->
1940    ereport.io.pciex.tl.uc@pciexbus/pciexdev/pciexfn { IS_BDG };
1941
1942prop upset.io.pciex.discard_uc@pciexbus/pciexdev/pciexfn (1)->
1943    ereport.io.pciex.tl.uc@pciexbus/pciexdev/pciexfn { IS_LEAF };
1944
1945prop upset.io.pciex.discard@pciexbus/pciexdev/pciexfn (1)->
1946    ereport.io.pci.nr@pciexbus/pciexdev/pciexfn,
1947    ereport.io.pciex.noadverr@pciexbus/pciexdev/pciexfn,
1948    ereport.io.pciex.correctable@pciexbus/pciexdev/pciexfn,
1949    ereport.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn,
1950    ereport.io.pciex.a-nonfatal@pciexbus/pciexdev/pciexfn,
1951    ereport.io.pciex.fatal@pciexbus/pciexdev/pciexfn;
1952
1953prop error.io.pciex.discard_rc@pciexrc (1)->
1954    ereport.io.pciex.rc.fe-msg@pciexrc { SOURCE_ID_MATCHES_OWN_BDF },
1955    ereport.io.pciex.rc.nfe-msg@pciexrc { SOURCE_ID_MATCHES_OWN_BDF },
1956    ereport.io.pciex.rc.ce-msg@pciexrc { SOURCE_ID_MATCHES_OWN_BDF };
1957
1958prop upset.io.pciex.discard@pciexrc (1)->
1959    error.io.pciex.discard_rc@pciexrc,
1960    ereport.io.pci.nr@pciexrc,
1961    ereport.io.pciex.noadverr@pciexrc,
1962    ereport.io.pciex.a-nonfatal@pciexrc,
1963    ereport.io.pciex.rc.ce-msg@pciexrc,
1964    ereport.io.pciex.rc.mce-msg@pciexrc,
1965    ereport.io.pciex.rc.mue-msg@pciexrc,
1966    ereport.io.pciex.tl.uc@pciexrc,
1967    ereport.io.pci.ma@pciexrc,
1968    ereport.io.pci.rta@pciexrc,
1969    ereport.io.pci.sta@pciexrc,
1970    ereport.io.pci.dpe@pciexrc,
1971    ereport.io.pci.mdpe@pciexrc,
1972    ereport.io.pci.sserr@pciexrc;
1973
1974/*
1975 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1976 * rules for PCI Express to PCI bridge propagations
1977 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1978 */
1979
1980event error.io.pci.retry-to-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1981event error.io.pci.badreq-pw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1982event error.io.pci.badreq-drw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1983event error.io.pci.ma-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1984event error.io.pci.ta-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1985event error.io.pci.ape-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1986event error.io.pci.source-ape-u@pcibus/pcidev/pcifn;
1987event error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn;
1988event error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn;
1989event error.io.pci.target-ma-d@pcibus/pcidev/pcifn;
1990event error.io.pci.target-rta-d@pcibus/pcidev/pcifn;
1991event error.io.pci.f-dpdata-pw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1992event error.io.pci.nf-dpdata-pw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1993event error.io.pci.f-dpdata-dw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1994event error.io.pci.nf-dpdata-dw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1995event error.io.pci.f-dpdata-dr-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1996event error.io.pci.nf-dpdata-dr-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1997event error.io.pci.dpdata-pw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1998event error.io.pci.dpdata-dw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
1999event error.io.pci.dpdata-dr-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2000event error.io.pci.perr-pw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2001event error.io.pci.perr-dw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2002event error.io.pci.perr-dr-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2003event error.io.pci.serr-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2004event error.io.pcix.scpe-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2005event error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn;
2006event error.io.pcix.spl-comp-ma-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2007event error.io.pcix.spl-comp-ta-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2008event error.io.pcix.spl-comp-ma-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2009event error.io.pcix.spl-comp-ta-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2010event error.io.pcix.uscmd@pciexbus/pciexdev/pciexfn;
2011
2012event ereport.io.pcix.sec-spl-dis@pciexbus/pciexdev/pciexfn{within(5s)};
2013event ereport.io.pciex.bdg.uscmd@pciexbus/pciexdev/pciexfn{within(5s)};
2014event ereport.io.pciex.bdg.sec-perr@pciexbus/pciexdev/pciexfn{within(5s)};
2015event ereport.io.pciex.bdg.sec-uadr@pciexbus/pciexdev/pciexfn{within(5s)};
2016event ereport.io.pciex.bdg.sec-uat@pciexbus/pciexdev/pciexfn{within(5s)};
2017event ereport.io.pciex.bdg.sec-serr@pciexbus/pciexdev/pciexfn{within(5s)};
2018event ereport.io.pciex.bdg.sec-tex@pciexbus/pciexdev/pciexfn{within(5s)};
2019event ereport.io.pciex.bdg.sec-rma@pciexbus/pciexdev/pciexfn{within(5s)};
2020event ereport.io.pciex.bdg.sec-rta@pciexbus/pciexdev/pciexfn{within(5s)};
2021event ereport.io.pciex.bdg.sec-ma-sc@pciexbus/pciexdev/pciexfn{within(5s)};
2022event ereport.io.pciex.bdg.sec-ta-sc@pciexbus/pciexdev/pciexfn{within(5s)};
2023event ereport.io.pci.dto@pciexbus/pciexdev/pciexfn{within(5s)};
2024event ereport.io.pci.sec-rta@pciexbus/pciexdev/pciexfn{within(5s)};
2025event ereport.io.pci.sec-ma@pciexbus/pciexdev/pciexfn{within(5s)};
2026
2027/*
2028 * propagations from pci express onto pci/pci-x
2029 */
2030
2031/*
2032 * poisoned tlps propagate as parity/ecc errors.
2033 */
2034prop error.io.pciex.f-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
2035    error.io.pci.f-dpdata-pw-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>,
2036    error.io.pci.f-dpdata-dw-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2037
2038prop error.io.pciex.nf-poisreq-d@pciexbus/pciexdev/pciexfn (1)->
2039    error.io.pci.nf-dpdata-pw-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>,
2040    error.io.pci.nf-dpdata-dw-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2041
2042prop error.io.pciex.f-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
2043    error.io.pci.f-dpdata-dr-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2044
2045prop error.io.pciex.nf-poiscomp-d@pciexbus/pciexdev/pciexfn (1)->
2046    error.io.pci.nf-dpdata-dr-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2047
2048/*
2049 * ca-d only propagates on to pci bus if non-posted access
2050 */
2051prop error.io.pciex.ca-d@pciexbus/pciexdev/pciexfn (0)->
2052    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn,
2053    error.io.pci.ta-drw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2054
2055/*
2056 * nr-d only propagates on to pci bus if non-posted access
2057 */
2058prop error.io.pciex.nr-d@pciexbus/pciexdev/pciexfn (0)->
2059    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn,
2060    error.io.pci.nr-drw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn,
2061    error.io.pci.ta-drw-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2062
2063/*
2064 * propagations from pci/pci-x onto pci express
2065 */
2066
2067/*
2068 * ma-u will only propagate on to pciex bus for non-posted accesses. It
2069 * is then represented as an unsupported request.
2070 */
2071prop error.io.pci.ma-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2072    ereport.io.pciex.tl.ur@pciexbus/pciexdev/pciexfn,
2073    error.io.pciex.ur-u@pciexbus/pciexdev/pciexfn;
2074
2075prop error.io.pci.ma-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (2)->
2076    ereport.io.pci.sec-ma@pciexbus/pciexdev/pciexfn,
2077    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn;
2078
2079prop error.io.pci.target-ma-d@pcibus[b]/pcidev[d]/pcifn[f] (0)->
2080    ereport.io.pciex.bdg.sec-rma@pciexbus/pciexdev/pciexfn { IS_BDG &&
2081	BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV };
2082
2083/*
2084 * ta-u will only propagate on to pciex bus for non-posted accesses. It is
2085 * then represented as a completer abort.
2086 */
2087prop error.io.pci.ta-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2088    ereport.io.pci.sta@pciexbus/pciexdev/pciexfn,
2089    ereport.io.pciex.tl.ca@pciexbus/pciexdev/pciexfn,
2090    error.io.pciex.ca-u@pciexbus/pciexdev/pciexfn;
2091
2092prop error.io.pci.ta-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (2)->
2093    ereport.io.pci.sec-rta@pciexbus/pciexdev/pciexfn,
2094    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn;
2095
2096prop error.io.pci.target-rta-d@pcibus[b]/pcidev[d]/pcifn[f] (0)->
2097    ereport.io.pciex.bdg.sec-rta@pciexbus/pciexdev/pciexfn { IS_BDG &&
2098	BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV };
2099
2100/*
2101 * PERR# on a delayed write is represented as an unsupported request
2102 */
2103prop error.io.pci.perr-dw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (1)->
2104    ereport.io.pci.sec-mdpe@pciexbus/pciexdev/pciexfn;
2105
2106prop error.io.pci.perr-dw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2107    error.io.pciex.flt-ur-u@pciexbus/pciexdev/pciexfn;
2108
2109prop error.io.pci.perr-pw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (1)->
2110    ereport.io.pci.sec-mdpe@pciexbus/pciexdev/pciexfn;
2111
2112prop error.io.pci.perr-pw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2113    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn;
2114
2115prop error.io.pci.source-f-perr-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
2116    ereport.io.pciex.bdg.sec-perr@pciexbus/pciexdev/pciexfn { IS_BDG &&
2117	BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV };
2118
2119prop error.io.pci.source-nf-perr-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
2120    ereport.io.pciex.bdg.sec-perr@pciexbus/pciexdev/pciexfn { IS_BDG &&
2121	BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV };
2122
2123prop error.io.pci.perr-dr-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (1)->
2124    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn;
2125
2126/*
2127 * If the bridge receives data with bad ecc/parity from pci/pci-x, it will
2128 * propagate onto pci express as a poisoned tlp
2129 */
2130prop error.io.pci.dpdata-dr-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (3)->
2131    ereport.io.pci.sec-dpe@pciexbus/pciexdev/pciexfn,
2132    ereport.io.pci.sec-mdpe@pciexbus/pciexdev/pciexfn,
2133    error.io.pciex.poiscomp-u@pciexbus/pciexdev/pciexfn;
2134
2135prop error.io.pci.dpdata-dr-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2136    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn,
2137    ereport.io.pci.mdpe@pciexbus/pciexdev/pciexfn;
2138
2139prop error.io.pci.dpdata-dw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (1)->
2140    ereport.io.pci.sec-dpe@pciexbus/pciexdev/pciexfn;
2141
2142prop error.io.pci.dpdata-dw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2143    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn,
2144    error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn;
2145
2146prop error.io.pci.dpdata-pw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (2)->
2147    ereport.io.pci.sec-dpe@pciexbus/pciexdev/pciexfn,
2148    error.io.pciex.poisreq-u@pciexbus/pciexdev/pciexfn;
2149
2150prop error.io.pci.dpdata-pw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2151    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn;
2152
2153/*
2154 * If the bridge sees an address or attribute parity error it is considered
2155 * a fatal error.
2156 */
2157prop error.io.pci.ape-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (2)->
2158    ereport.io.pci.sec-dpe@pciexbus/pciexdev/pciexfn,
2159    error.io.pciex.fatal@pciexbus/pciexdev/pciexfn;
2160
2161prop error.io.pci.source-ape-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
2162    ereport.io.pciex.bdg.sec-uat@pciexbus/pciexdev/pciexfn { IS_BDG &&
2163	BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV },
2164    ereport.io.pciex.bdg.sec-uadr@pciexbus/pciexdev/pciexfn { IS_BDG &&
2165	BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV };
2166
2167prop error.io.pci.ape-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2168    ereport.io.pci.sec-rserr@pciexbus/pciexdev/pciexfn,
2169    ereport.io.pciex.bdg.sec-serr@pciexbus/pciexdev/pciexfn,
2170    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn;
2171
2172/*
2173 * If the bridge sees a split completion error (pci-x only) it could
2174 * result in a number of things
2175 * - unrecovered split completion message data error (uscmd). This would
2176 *   happen on a pio write. A completer abort is returned to the initiator.
2177 * - for various faults in the split completion (eg address parity error)
2178 *   we will respond with a target abort (which the child device will treat
2179 *   as a split completion ta)
2180 * - for other faults we can't tell who send the split completion and so
2181 *   just drop the request (which the child device sees as a split
2182 *   completion ma)
2183 */
2184prop error.io.pcix.scpe-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2185    ereport.io.pci.sec-dpe@pciexbus/pciexdev/pciexfn,
2186    ereport.io.pci.sec-rserr@pciexbus/pciexdev/pciexfn,
2187    ereport.io.pciex.bdg.sec-serr@pciexbus/pciexdev/pciexfn,
2188    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn,
2189    error.io.pciex.fatal@pciexbus/pciexdev/pciexfn;
2190
2191prop error.io.pcix.source-scpe-u@pcibus[b]/pcidev[d]/pcifn[f] (0)->
2192    ereport.io.pciex.bdg.sec-uat@pciexbus/pciexdev/pciexfn { IS_BDG &&
2193	BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV },
2194    ereport.io.pciex.bdg.sec-uadr@pciexbus/pciexdev/pciexfn { IS_BDG &&
2195	BDF_IS_PCI_LEAF && SOURCE_ID_MATCHES_BDF && PCIBDF_IS_UNDER_DEV };
2196
2197prop error.io.pcix.scpe-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (1)->
2198    error.io.pcix.uscmd@pciexbus/pciexdev/pciexfn,
2199    error.io.pcix.spl-comp-ma-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn,
2200    error.io.pcix.spl-comp-ta-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2201
2202prop error.io.pcix.uscmd@pciexbus/pciexdev/pciexfn (5)->
2203    error.io.pciex.fatal@pciexbus/pciexdev/pciexfn,
2204    ereport.io.pci.sta@pciexbus/pciexdev/pciexfn,
2205    ereport.io.pciex.tl.ca@pciexbus/pciexdev/pciexfn,
2206    error.io.pciex.ca-u@pciexbus/pciexdev/pciexfn,
2207    ereport.io.pciex.bdg.uscmd@pciexbus/pciexdev/pciexfn;
2208
2209/*
2210 * Similarly a child device may have responded with a master abort or
2211 * target abort to one of our split competions. The hardware just logs these.
2212 */
2213prop error.io.pcix.spl-comp-ma-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (3)->
2214    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn,
2215    ereport.io.pcix.sec-spl-dis@pciexbus/pciexdev/pciexfn,
2216    ereport.io.pciex.bdg.sec-ma-sc@pciexbus/pciexdev/pciexfn;
2217
2218prop error.io.pcix.spl-comp-ma-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2219    ereport.io.pci.sec-ma@pciexbus/pciexdev/pciexfn;
2220
2221prop error.io.pcix.spl-comp-ta-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (4)->
2222    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn,
2223    ereport.io.pcix.sec-spl-dis@pciexbus/pciexdev/pciexfn,
2224    ereport.io.pciex.bdg.sec-ta-sc@pciexbus/pciexdev/pciexfn,
2225    ereport.io.pci.sec-rta@pciexbus/pciexdev/pciexfn;
2226
2227/*
2228 * SERR# is considered fatal
2229 */
2230prop error.io.pci.serr-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (3)->
2231    error.io.pciex.fatal@pciexbus/pciexdev/pciexfn,
2232    ereport.io.pci.sec-rserr@pciexbus/pciexdev/pciexfn,
2233    ereport.io.pciex.bdg.sec-serr@pciexbus/pciexdev/pciexfn;
2234
2235/*
2236 * Retry time-out is nonfatal. The initial requester has stopped retrying so
2237 * there's nothing else the hardware can do but flag the error.
2238 */
2239prop error.io.pci.retry-to-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (2)->
2240    error.io.pciex.nonfatal@pciexbus/pciexdev/pciexfn,
2241    ereport.io.pciex.bdg.sec-tex@pciexbus/pciexdev/pciexfn;
2242
2243prop error.io.pci.retry-to-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2244    ereport.io.pci.sta@pciexbus/pciexdev/pciexfn,
2245    error.io.pciex.ca-u@pciexbus/pciexdev/pciexfn,
2246    ereport.io.pci.dto@pciexbus/pciexdev/pciexfn;
2247
2248/*
2249 * A bad dma request (eg with invalid address) propagates onto pci express
2250 * as a bad dma request. The end result may be a master abort or target abort
2251 * (depending on whether the child is pci-x or pci).
2252 */
2253prop error.io.pci.badreq-pw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2254    error.io.pciex.badreq-u@pciexbus/pciexdev/pciexfn,
2255    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn,
2256    ereport.io.pci.rta@pciexbus/pciexdev/pciexfn,
2257    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn;
2258
2259prop error.io.pci.badreq-drw-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn (0)->
2260    error.io.pciex.badreq-u@pciexbus/pciexdev/pciexfn,
2261    ereport.io.pci.ma@pciexbus/pciexdev/pciexfn,
2262    ereport.io.pci.rta@pciexbus/pciexdev/pciexfn,
2263    ereport.io.pci.sec-sta@pciexbus/pciexdev/pciexfn;
2264
2265/*
2266 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2267 * source- and target- propagations
2268 *
2269 * The source- propagations cascade down to a leaf device, which can then have
2270 * its bdf matched against the source-id of various ereports. This is necessary
2271 * because for a number of cases the source-id represents the original requester
2272 * of the packet which may be different from the detector of the error (which
2273 * could be a bridge or switch).
2274 *
2275 * A Root Complex driver may generate "target-" ereports when knowledge of the
2276 * physical address associated with a fault allows the target device to be
2277 * determined. This is not a requirement of the Diagnosis Engine, but can be
2278 * valuable when available.
2279 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2280 */
2281event error.io.pci.target-ma-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
2282event error.io.pci.target-rta-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
2283event error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
2284event error.io.pci.target-ma-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2285event error.io.pci.target-rta-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2286event error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2287event error.io.pciex.source-f-poiscomp-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
2288event error.io.pciex.source-nf-poiscomp-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
2289event error.io.pci.source-f-dpdata-r-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2290event error.io.pci.source-nf-dpdata-r-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2291event error.io.pci.source-f-dpdata-w-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2292event error.io.pci.source-nf-dpdata-w-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2293event error.io.pciex.source-f-ecrcreq-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
2294event error.io.pciex.source-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
2295event error.io.pciex.source-f-ecrcreq-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2296event error.io.pciex.source-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2297event error.io.pciex.source-f-ecrcreq-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
2298event error.io.pciex.source-nf-ecrcreq-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
2299event error.io.pciex.source-f-ecrccomp-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
2300event error.io.pciex.source-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
2301event error.io.pciex.source-f-ecrccomp-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2302event error.io.pciex.source-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2303event error.io.pciex.source-f-ecrccomp-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
2304event error.io.pciex.source-nf-ecrccomp-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
2305event error.io.pciex.source-mtlp-u@pciexbus/pciexdev/pciexfn/pciexbus/pciexdev/pciexfn;
2306event error.io.pciex.source-mtlp-u@pciexbus/pciexdev/pciexfn/pcibus/pcidev/pcifn;
2307event error.io.pciex.source-mtlp-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
2308
2309event ereport.io.pci.target-mdpe@pciexbus/pciexdev/pciexfn{within(5s)};
2310event ereport.io.pci.target-rta@pciexbus/pciexdev/pciexfn{within(5s)};
2311event ereport.io.pci.target-ma@pciexbus/pciexdev/pciexfn{within(5s)};
2312
2313prop error.io.pci.target-ma-d@pciexbus/pciexdev/pciexfn (1)->
2314    error.io.pci.target-ma-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2315
2316prop error.io.pci.target-ma-d@pciexbus/pciexdev/pciexfn (1)->
2317    error.io.pci.target-ma-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2318
2319prop error.io.pci.target-ma-d@pciexbus/pciexdev/pciexfn (0)->
2320    ereport.io.pci.target-ma@pciexbus/pciexdev/pciexfn;
2321
2322prop error.io.pci.target-rta-d@pciexbus/pciexdev/pciexfn (1)->
2323    error.io.pci.target-rta-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2324
2325prop error.io.pci.target-rta-d@pciexbus/pciexdev/pciexfn (1)->
2326    error.io.pci.target-rta-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2327
2328prop error.io.pci.target-rta-d@pciexbus/pciexdev/pciexfn (0)->
2329    ereport.io.pci.target-rta@pciexbus/pciexdev/pciexfn;
2330
2331prop error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn (1)->
2332    error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2333
2334prop error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn (1)->
2335    error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2336
2337prop error.io.pci.target-mdpe-d@pciexbus/pciexdev/pciexfn (0)->
2338    ereport.io.pci.target-mdpe@pciexbus/pciexdev/pciexfn;
2339
2340prop error.io.pciex.source-f-poisreq-u@pciexbus/pciexdev/pciexfn (1)->
2341    error.io.pciex.source-f-poisreq-u@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2342
2343prop error.io.pciex.source-nf-poisreq-u@pciexbus/pciexdev/pciexfn (1)->
2344    error.io.pciex.source-nf-poisreq-u@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2345
2346prop error.io.pciex.source-f-poisreq-u@pciexbus/pciexdev/pciexfn (1)->
2347    error.io.pci.source-f-dpdata-w-u@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2348
2349prop error.io.pciex.source-nf-poisreq-u@pciexbus/pciexdev/pciexfn (1)->
2350    error.io.pci.source-nf-dpdata-w-u@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2351
2352prop error.io.pciex.source-f-poiscomp-u@pciexbus/pciexdev/pciexfn (1)->
2353    error.io.pciex.source-f-poiscomp-u@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2354
2355prop error.io.pciex.source-nf-poiscomp-u@pciexbus/pciexdev/pciexfn (1)->
2356    error.io.pciex.source-nf-poiscomp-u@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2357
2358prop error.io.pciex.source-f-poiscomp-u@pciexbus/pciexdev/pciexfn (1)->
2359    error.io.pci.source-f-dpdata-r-u@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2360
2361prop error.io.pciex.source-nf-poiscomp-u@pciexbus/pciexdev/pciexfn (1)->
2362    error.io.pci.source-nf-dpdata-r-u@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2363
2364prop error.io.pciex.source-f-ecrcreq-u@pciexbus/pciexdev/pciexfn (1)->
2365    error.io.pciex.source-f-ecrcreq-u@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2366
2367prop error.io.pciex.source-f-ecrcreq-u@pciexbus/pciexdev/pciexfn (1)->
2368    error.io.pciex.source-f-ecrcreq-u@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2369
2370prop error.io.pciex.source-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn (1)->
2371    error.io.pciex.source-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2372
2373prop error.io.pciex.source-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn (1)->
2374    error.io.pciex.source-nf-ecrcreq-u@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2375
2376prop error.io.pciex.source-f-ecrcreq-u@pcibus/pcidev/pcifn (1)->
2377    error.io.pciex.source-f-ecrcreq-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
2378
2379prop error.io.pciex.source-nf-ecrcreq-u@pcibus/pcidev/pcifn (1)->
2380    error.io.pciex.source-nf-ecrcreq-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
2381
2382prop error.io.pciex.source-f-ecrccomp-u@pciexbus/pciexdev/pciexfn (1)->
2383    error.io.pciex.source-f-ecrccomp-u@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2384
2385prop error.io.pciex.source-f-ecrccomp-u@pciexbus/pciexdev/pciexfn (1)->
2386    error.io.pciex.source-f-ecrccomp-u@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2387
2388prop error.io.pciex.source-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn (1)->
2389    error.io.pciex.source-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2390
2391prop error.io.pciex.source-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn (1)->
2392    error.io.pciex.source-nf-ecrccomp-u@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2393
2394prop error.io.pciex.source-f-ecrccomp-u@pcibus/pcidev/pcifn (1)->
2395    error.io.pciex.source-f-ecrccomp-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
2396
2397prop error.io.pciex.source-nf-ecrccomp-u@pcibus/pcidev/pcifn (1)->
2398    error.io.pciex.source-nf-ecrccomp-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
2399
2400prop error.io.pciex.source-mtlp-u@pciexbus/pciexdev/pciexfn (1)->
2401    error.io.pciex.source-mtlp-u@pciexbus/pciexdev/pciexfn/pciexbus<>/pciexdev<>/pciexfn<>;
2402
2403prop error.io.pciex.source-mtlp-u@pciexbus/pciexdev/pciexfn (1)->
2404    error.io.pciex.source-mtlp-u@pciexbus/pciexdev/pciexfn/pcibus<>/pcidev<>/pcifn<>;
2405
2406prop error.io.pciex.source-mtlp-u@pcibus/pcidev/pcifn (1)->
2407    error.io.pciex.source-mtlp-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
2408
2409/*
2410 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2411 * stub unused pciex-pci bridge ereports
2412 * - ignore usc/sec-unex-spl
2413 * - ignore sec-spl-or/sec-spl-dly as these aren't really faults (tuning info)
2414 * - ignore ecc.ue ereports (we get everything we need from dpe/mdpe)
2415 * - ignore ecc.ce ereports for now (could do serd on these)
2416 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2417 */
2418
2419event ereport.io.pciex.bdg.usc@pciexbus/pciexdev/pciexfn{within(5s)};
2420event ereport.io.pcix.sec-unex-spl@pciexbus/pciexdev/pciexfn{within(5s)};
2421event ereport.io.pcix.sec-spl-or@pciexbus/pciexdev/pciexfn{within(5s)};
2422event ereport.io.pcix.sec-spl-dly@pciexbus/pciexdev/pciexfn{within(5s)};
2423event ereport.io.pcix.sec-ecc.ce-addr@pciexbus/pciexdev/pciexfn{within(5s)};
2424event ereport.io.pcix.sec-ecc.ce-attr@pciexbus/pciexdev/pciexfn{within(5s)};
2425event ereport.io.pcix.sec-ecc.ce-data@pciexbus/pciexdev/pciexfn{within(5s)};
2426event ereport.io.pcix.sec-ecc.ue-addr@pciexbus/pciexdev/pciexfn{within(5s)};
2427event ereport.io.pcix.sec-ecc.ue-attr@pciexbus/pciexdev/pciexfn{within(5s)};
2428event ereport.io.pcix.sec-ecc.ue-data@pciexbus/pciexdev/pciexfn{within(5s)};
2429event ereport.io.pcix.sec-s-ce@pciexbus/pciexdev/pciexfn{within(5s)};
2430event ereport.io.pcix.sec-s-ue@pciexbus/pciexdev/pciexfn{within(5s)};
2431
2432event upset.io.pciex.discard-bdg@pciexbus/pciexdev/pciexfn;
2433
2434prop upset.io.pciex.discard-bdg@pciexbus/pciexdev/pciexfn (1)->
2435    ereport.io.pciex.bdg.usc@pciexbus/pciexdev/pciexfn,
2436    ereport.io.pcix.sec-unex-spl@pciexbus/pciexdev/pciexfn,
2437    ereport.io.pcix.sec-spl-or@pciexbus/pciexdev/pciexfn,
2438    ereport.io.pcix.sec-spl-dly@pciexbus/pciexdev/pciexfn,
2439    ereport.io.pcix.sec-ecc.ce-addr@pciexbus/pciexdev/pciexfn,
2440    ereport.io.pcix.sec-ecc.ce-attr@pciexbus/pciexdev/pciexfn,
2441    ereport.io.pcix.sec-ecc.ce-data@pciexbus/pciexdev/pciexfn,
2442    ereport.io.pcix.sec-ecc.ue-addr@pciexbus/pciexdev/pciexfn,
2443    ereport.io.pcix.sec-ecc.ue-attr@pciexbus/pciexdev/pciexfn,
2444    ereport.io.pcix.sec-ecc.ue-data@pciexbus/pciexdev/pciexfn,
2445    ereport.io.pcix.sec-s-ce@pciexbus/pciexdev/pciexfn,
2446    ereport.io.pcix.sec-s-ue@pciexbus/pciexdev/pciexfn;
2447