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