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