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