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