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