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