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