xref: /illumos-gate/usr/src/cmd/fm/eversholt/files/common/pci.esc (revision 24da5b34f49324ed742a340010ed5bd3d4e06625)
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 "PCI"
29
30#include <fm/topo_hc.h>
31
32#define PCI_DEV_FIT 1000
33#define PCI_BUS_FIT 500
34
35/*
36 * SERD parameters.
37 *
38 * Nonfatal dpe errors have to be recovered by the hardened driver which may
39 * cause intermittant performance/responsiveness problems, so we have tighter
40 * serd parameters for these. These are most likely errors in buffers/caches
41 * within devices and bridges, so use similar rates to cpu data cache parity
42 * errors.
43 *
44 * We will be more conservative about nonfatal internal errors reported
45 * by the driver.
46 */
47#define NONFATAL_COUNT 6
48#define NONFATAL_TIME 2h
49#define NONFATAL_DPE_U_COUNT 3
50#define NONFATAL_DPE_U_TIME 168h
51#define NONFATAL_DPE_D_COUNT 3
52#define NONFATAL_DPE_D_TIME 168h
53
54#define	IS_LEAF \
55	(confprop(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) != "60400" && \
56	confprop(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) != "60401")
57
58#define	IS_BDG \
59	(confprop(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) == "60400" || \
60	confprop(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) == "60401")
61
62#define	FD_IS_LEAF \
63	(confprop(asru(pcibus/pcidev[fromdev]/pcifn), TOPO_PCI_CLASS) != \
64	"60400" && \
65	confprop(asru(pcibus/pcidev[fromdev]/pcifn), TOPO_PCI_CLASS) != "60401")
66
67/*
68 * note general rule for errors is that for upstream propagations
69 * @pcibus/pcidev/pcifn is the sending device while  for downstream
70 * propagations it is the receiving device.
71 */
72
73asru pcibus/pcidev/pcifn;
74fru pcibus/pcidev;
75
76event fault.io.pci.device-interr@pcibus/pcidev/pcifn,
77        FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
78
79event fault.io.pci.device-invreq@pcibus/pcidev/pcifn,
80        FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
81
82event fault.io.pci.device-noresp@pcibus/pcidev/pcifn,
83        FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
84
85/*
86 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
87 * A faulty hostbridge may cause:
88 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
89 *  - nr-pw-d:	the device not to respond to an upstream request
90 *  - nr-drw-d:	the device not to respond to an upstream request
91 *  - ta-pw-d:	the device to send a target abort to an upstream request
92 *  - ta-drw-d:	the device to send a target abort to an upstream request
93 *  - serr-u:	the device to report itself in error
94 *  - badreq-pw-d:a bad downstream request - not parity error (may cause target
95 * 		to target abort or master abort)
96 *  - badreq-drw-d:a bad downstream request - not parity error (may cause
97 * 		target to target abort or master abort)
98 *  - ape-d:	address/parity to get corrupted during downstream transmission
99 *  - scpe-d:	split completion to get corrupted during downstream transmission
100 *  - dpe-d:	the device to transfer bad data and/or bad parity downstream
101 *  - retry-to-d:	the device to exceed the set timeout for a delayed
102 *			transaction retry.
103 */
104#define	PCI_TO_HB pcibus/pcidev<todev>/pcifn<> {fromdev != 32 && todev == 32}
105#define	PCI_FROM_HB pcibus/pcidev<todev>/pcifn<> {fromdev == 32 && todev != 32}
106
107event error.io.pci.retry-to-d@pcibus/pcidev/pcifn;
108event error.io.pci.nr-pw-d@pcibus/pcidev/pcifn;
109event error.io.pci.nr-drw-d@pcibus/pcidev/pcifn;
110event error.io.pci.ta-pw-d@pcibus/pcidev/pcifn;
111event error.io.pci.ta-drw-d@pcibus/pcidev/pcifn;
112event error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn;
113event error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn;
114event error.io.pci.f-dpe-d@pcibus/pcidev/pcifn;
115event error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
116event error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn;
117event error.io.pci.ape-d@pcibus/pcidev/pcifn;
118event error.io.pci.ape-u@pcibus/pcidev/pcifn;
119event error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn;
120event error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn;
121event error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn;
122event error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn;
123event error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn;
124event error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn;
125event error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
126event error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
127event error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
128event error.io.pci.ta-u@pcibus/pcidev/pcifn;
129event error.io.pci.ma-u@pcibus/pcidev/pcifn;
130event error.io.pci.perr-dw-u@pcibus/pcidev/pcifn;
131event error.io.pci.perr-pw-u@pcibus/pcidev/pcifn;
132event error.io.pci.perr-dr-u@pcibus/pcidev/pcifn;
133event error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn;
134event error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn;
135event error.io.pci.device-serr@pcibus/pcidev/pcifn;
136event error.io.pci.device-ta@pcibus/pcidev/pcifn;
137event error.io.pci.device-par@pcibus/pcidev/pcifn;
138event error.io.pci.serr-u@pcibus/pcidev/pcifn;
139event error.io.pcix.scpe-d@pcibus/pcidev/pcifn;
140event error.io.pcix.scpe-u@pcibus/pcidev/pcifn;
141event error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn;
142event error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn;
143event error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn;
144event error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn;
145
146event ereport.io.pci.ma@pcibus/pcidev/pcifn{within(5s)};
147event ereport.io.pci.rta@pcibus/pcidev/pcifn{within(5s)};
148event ereport.io.pci.mdpe@pcibus/pcidev/pcifn{within(5s)};
149event ereport.io.pci.sta@pcibus/pcidev/pcifn{within(5s)};
150event ereport.io.pci.sserr@pcibus/pcidev/pcifn{within(5s)};
151event ereport.io.pci.dpe@pcibus/pcidev/pcifn{within(5s)};
152event ereport.io.pci.target-mdpe@pcibus/pcidev/pcifn{within(5s)};
153event ereport.io.pci.target-rta@pcibus/pcidev/pcifn{within(5s)};
154event ereport.io.pci.target-ma@pcibus/pcidev/pcifn{within(5s)};
155event ereport.io.pcix.discard@pcibus/pcidev/pcifn{within(5s)};
156
157prop fault.io.pci.device-noresp@pcibus/pcidev[fromdev]/pcifn (0)->
158    error.io.pci.nr-pw-d@PCI_FROM_HB,
159    error.io.pci.nr-drw-d@PCI_FROM_HB,
160    error.io.pci.retry-to-d@PCI_FROM_HB;
161
162prop fault.io.pci.device-invreq@pcibus/pcidev[fromdev]/pcifn (0)->
163    error.io.pci.badreq-pw-d@PCI_FROM_HB,
164    error.io.pci.badreq-drw-d@PCI_FROM_HB;
165
166prop fault.io.pci.device-interr@pcibus/pcidev/pcifn (0)->
167    error.io.pci.device-par@pcibus/pcidev/pcifn,
168    error.io.pci.device-ta@pcibus/pcidev/pcifn,
169    error.io.pci.device-serr@pcibus/pcidev/pcifn;
170
171prop error.io.pci.device-par@pcibus/pcidev[fromdev]/pcifn (1)->
172    error.io.pci.f-dpe-d@PCI_FROM_HB,
173    error.io.pci.nf-dpe-d@PCI_FROM_HB,
174    error.io.pcix.scpe-d@PCI_FROM_HB,
175    error.io.pci.ape-d@PCI_FROM_HB;
176
177prop error.io.pci.device-ta@pcibus/pcidev[fromdev]/pcifn (1)->
178    error.io.pci.ta-pw-d@PCI_FROM_HB,
179    error.io.pci.ta-drw-d@PCI_FROM_HB;
180
181prop error.io.pci.device-ta@pcibus/pcidev[fromdev]/pcifn (1)->
182    ereport.io.pci.sta@pcibus/pcidev<todev>/pcifn {
183	todev == fromdev && fromdev == 32 };
184
185prop error.io.pci.device-serr@pcibus/pcidev/pcifn (2)->
186    error.io.pci.serr-u@pcibus/pcidev/pcifn,
187    ereport.io.pci.sserr@pcibus/pcidev/pcifn;
188
189prop error.io.pci.f-dpe-d@pcibus/pcidev/pcifn (1)->
190    error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn,
191    error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn,
192    error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn;
193
194prop error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn (1)->
195    error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn,
196    error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn,
197    error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn;
198
199/*
200 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
201 * ereport generation rules for hostbridge
202 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
203 */
204prop error.io.pci.dpdata-pw-u@pcibus/pcidev[fromdev]/pcifn (1)->
205    ereport.io.pci.dpe@PCI_TO_HB;
206
207prop error.io.pci.dpdata-dw-u@pcibus/pcidev[fromdev]/pcifn (1)->
208    ereport.io.pci.dpe@PCI_TO_HB;
209
210prop error.io.pci.dpdata-dr-u@pcibus/pcidev[fromdev]/pcifn (2)->
211    ereport.io.pci.mdpe@PCI_TO_HB,
212    ereport.io.pci.dpe@PCI_TO_HB;
213
214prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (3)->
215    ereport.io.pci.dpe@PCI_TO_HB,
216    error.io.pci.serr-u@PCI_TO_HB,
217    ereport.io.pci.sserr@PCI_TO_HB;
218
219prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (0)->
220    ereport.io.pci.sta@PCI_TO_HB;
221
222prop error.io.pci.ma-u@pcibus/pcidev[fromdev]/pcifn (1)->
223    ereport.io.pci.ma@PCI_TO_HB;
224
225prop error.io.pci.ta-u@pcibus/pcidev[fromdev]/pcifn (1)->
226    ereport.io.pci.rta@PCI_TO_HB;
227
228prop error.io.pci.perr-dw-u@pcibus/pcidev[fromdev]/pcifn (1)->
229    ereport.io.pci.mdpe@PCI_TO_HB;
230
231prop error.io.pci.perr-pw-u@pcibus/pcidev[fromdev]/pcifn (1)->
232    ereport.io.pci.mdpe@PCI_TO_HB;
233
234prop error.io.pci.badreq-drw-u@pcibus/pcidev[fromdev]/pcifn (0)->
235    ereport.io.pci.sta@PCI_TO_HB;
236
237prop error.io.pci.badreq-pw-u@pcibus/pcidev[fromdev]/pcifn (0)->
238    ereport.io.pci.sta@PCI_TO_HB;
239
240prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn (1)->
241    error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn,
242    error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn;
243
244prop error.io.pcix.scpe-u@pcibus/pcidev[fromdev]/pcifn (0)->
245    ereport.io.pci.dpe@PCI_TO_HB,
246    error.io.pci.serr-u@PCI_TO_HB,
247    ereport.io.pci.sserr@PCI_TO_HB,
248    ereport.io.pci.sta@PCI_TO_HB;
249
250prop error.io.pcix.spl-comp-ma-u@pcibus/pcidev[fromdev]/pcifn (3)->
251    ereport.io.pcix.discard@PCI_TO_HB,
252    error.io.pci.serr-u@PCI_TO_HB,
253    ereport.io.pci.sserr@PCI_TO_HB;
254
255prop error.io.pcix.spl-comp-ta-u@pcibus/pcidev[fromdev]/pcifn (3)->
256    ereport.io.pcix.discard@PCI_TO_HB,
257    error.io.pci.serr-u@PCI_TO_HB,
258    ereport.io.pci.sserr@PCI_TO_HB;
259
260/*
261 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
262 * A faulty PCI leaf device or pci-pci bridge may cause:
263 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
264 *  - nr-pw-u:		the device not to respond to a valid downstream request
265 *  - nr-drw-u:		the device not to respond to a valid downstream request
266 *  - ta-pw-u:		the device responds with a ta to a valid downstream
267 *			request
268 *  - ta-drw-u:		the device responds with a ta to a valid downstream
269 *			request
270 *  - serr-u:		the device to report itself in error
271 *  - badreq-pw-u:	a bad upstream request (may cause target to target
272 *			abort or master abort)
273 *  - badreq-drw-u:	a bad upstream request (may cause target to target
274 *			abort or master abort)
275 *  - ape-u:		the transfer of bad address/parity upstream.
276 *  - scpe-u:		the transfer of bad split completion upstream.
277 *  - dpe-u:		the device to deliver bad data/parity upstream.
278 *  - retry-to-u:	the device to exceed the set timeout for a delayed
279 *			transaction retry.
280 *
281 * A faulty PCI-X leaf device or bridge may also cause:
282 *
283 *  - tx-oor:		the device sends a byte count larger than the completers
284 *			address range.
285 *  - rx-unex-sc:	the device recieved a split completion with a tag
286 * 			which does not match any outstanding transaction.
287 */
288
289#define	PCI_NOT_HB pcibus/pcidev[fromdev]/pcifn {fromdev != 32}
290
291event error.io.pci.retry-to-u@pcibus/pcidev/pcifn;
292event error.io.pci.nr-pw-u@pcibus/pcidev/pcifn;
293event error.io.pci.nr-drw-u@pcibus/pcidev/pcifn;
294event error.io.pci.ta-pw-u@pcibus/pcidev/pcifn;
295event error.io.pci.ta-drw-u@pcibus/pcidev/pcifn;
296event error.io.pci.f-dpe-u@pcibus/pcidev/pcifn;
297event error.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
298event error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn;
299event error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn;
300event error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn;
301event error.io.pci.flt-f-dpdata-dw-u@pcibus/pcidev/pcifn;
302event error.io.pci.flt-nf-dpdata-dw-u@pcibus/pcidev/pcifn;
303event error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn;
304event error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn;
305event error.io.pci.perr-d@pcibus/pcidev/pcifn;
306event error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
307event error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
308event error.io.pci.target-rta-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
309event error.io.pci.target-ma-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
310event error.io.pcix.tx-oor@pcibus/pcidev/pcifn;
311event error.io.pcix.rx-unex-sc@pcibus/pcidev/pcifn;
312event error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn;
313event error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn;
314event error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn;
315event error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn;
316event error.io.device.nf-device@pcibus/pcidev/pcifn;
317event error.io.device.f-device@pcibus/pcidev/pcifn;
318event error.io.pciex.flt-badreq-u@pcibus/pcidev/pcifn;
319
320event ereport.io.pcix.oor@pcibus/pcidev/pcifn{within(5s)};
321event ereport.io.pcix.unex-sc@pcibus/pcidev/pcifn{within(5s)};
322
323prop fault.io.pci.device-noresp@pcibus/pcidev[fromdev]/pcifn (0)->
324    error.io.pci.nr-pw-u@PCI_NOT_HB,
325    error.io.pci.nr-drw-u@PCI_NOT_HB,
326    error.io.pci.retry-to-u@PCI_NOT_HB;
327
328prop fault.io.pci.device-interr@pcibus/pcidev[fromdev]/pcifn (0)->
329    error.io.pci.ta-pw-u@PCI_NOT_HB,
330    error.io.pci.ta-drw-u@PCI_NOT_HB,
331    error.io.pci.serr-u@PCI_NOT_HB,
332    error.io.pci.ape-u@PCI_NOT_HB,
333    error.io.pci.f-dpe-u@PCI_NOT_HB,
334    error.io.pci.nf-dpe-u@PCI_NOT_HB,
335    error.io.device.f-device@PCI_NOT_HB,
336    error.io.device.nf-device@PCI_NOT_HB,
337    error.io.pcix.scpe-u@PCI_NOT_HB,
338    error.io.pcix.tx-oor@PCI_NOT_HB,
339    error.io.pcix.rx-unex-sc@PCI_NOT_HB;
340
341prop fault.io.pci.device-invreq@pcibus/pcidev[fromdev]/pcifn {FD_IS_LEAF} (0)->
342    error.io.pciex.flt-badreq-u@PCI_NOT_HB,
343    error.io.pci.badreq-drw-u@PCI_NOT_HB,
344    error.io.pci.badreq-pw-u@PCI_NOT_HB;
345
346prop error.io.pcix.tx-oor@pcibus/pcidev/pcifn (1)->
347    ereport.io.pcix.oor@pcibus/pcidev/pcifn;
348
349prop error.io.pcix.rx-unex-sc@pcibus/pcidev[fromdev]/pcifn (1)->
350    ereport.io.pcix.unex-sc@pcibus/pcidev<todev>/pcifn<> {fromdev != todev};
351
352prop error.io.pci.f-dpe-u@pcibus/pcidev/pcifn (1)->
353    error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn,
354    error.io.pci.flt-f-dpdata-dw-u@pcibus/pcidev/pcifn,
355    error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn;
356
357prop error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn (2)->
358    error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn,
359    error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
360
361prop error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
362    error.io.pci.serr-u@pcibus/pcidev/pcifn;
363
364prop error.io.pci.flt-f-dpdata-dw-u@pcibus/pcidev/pcifn (3)->
365    error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn,
366    error.io.pci.perr-d@pcibus/pcidev/pcifn,
367    error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
368
369prop error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn (2)->
370    error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn,
371    error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
372
373prop error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn (1)->
374    error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
375
376prop error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn (1)->
377    error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn,
378    error.io.pci.flt-nf-dpdata-dw-u@pcibus/pcidev/pcifn,
379    error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn;
380
381prop error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn (2)->
382    error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn,
383    error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
384
385prop error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
386    error.io.pci.serr-u@pcibus/pcidev/pcifn;
387
388prop error.io.pci.flt-nf-dpdata-dw-u@pcibus/pcidev/pcifn (3)->
389    error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn,
390    error.io.pci.perr-d@pcibus/pcidev/pcifn,
391    error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
392
393prop error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn (2)->
394    error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn,
395    error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
396
397prop error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn (1)->
398    error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
399
400/*
401 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
402 * A faulty pci-pci bridge may also cause
403 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
404 *  - nr-pw-d:		the device not to respond to a valid upstream request
405 *  - nr-drw-d:		the device not to respond to a valid upstream request
406 *  - ta-pw-d:		the device responds with a ta to a valid upstream
407 *			request
408 *  - ta-drw-d:		the device responds with a ta to a valid upstream
409 *			request
410 *  - ape-d:	address/parity to get corrupted during downstream transmission.
411 *  - scpe-d:	split completion gets corrupted during downstream transmission.
412 *  - dpe-d:	data/parity to get corrupted during downstream transmission.
413 *  - retry-to-d:	the device to exceed the set timeout for a delayed
414 *			transaction retry.
415 */
416
417event error.io.pci.ape-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
418event error.io.pci.f-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
419event error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
420event error.io.pci.retry-to-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
421event error.io.pci.nr-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
422event error.io.pci.nr-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
423event error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
424event error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
425event error.io.pcix.scpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
426
427prop fault.io.pci.device-noresp@pcibus/pcidev/pcifn (0)->
428    error.io.pci.nr-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
429    error.io.pci.nr-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
430    error.io.pci.retry-to-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
431
432prop fault.io.pci.device-interr@pcibus/pcidev/pcifn (0)->
433    error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
434    error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
435    error.io.pci.ape-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
436    error.io.pcix.scpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
437    error.io.pci.f-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
438    error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
439
440/*
441 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
442 * A faulty PCI bus may cause:
443 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
444 *  - ape-d:	address/parity to get corrupted during downstream transmission.
445 *  - scpe-d:	split completion gets corrupted during downstream transmission.
446 *  - dpe-d:	data/parity to get corrupted during downstream transmission.
447 *  - ape-u:	address/parity to get corrupted during upstream transmission.
448 *  - dpe-u:	data/parity to get corrupted during read upstream transmission.
449 *  - scpe-u:	split completion to get corrupted during upstream transmission.
450 */
451
452fru pcibus;
453asru pcibus;
454
455event fault.io.pci.bus-linkerr@pcibus,
456        FITrate=PCI_BUS_FIT, FRU=pcibus, ASRU=pcibus;
457
458prop fault.io.pci.bus-linkerr@pcibus (0)->
459    error.io.pci.ape-d@pcibus/pcidev<todev>/pcifn { todev != 32},
460    error.io.pci.f-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
461    error.io.pci.nf-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
462    error.io.pci.ape-u@pcibus/pcidev<todev>/pcifn { todev != 32},
463    error.io.pci.f-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
464    error.io.pci.nf-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
465    error.io.pcix.scpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
466    error.io.pcix.scpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
467    error.io.pcix.tx-oor@pcibus/pcidev<todev>/pcifn { todev != 32},
468    error.io.pcix.rx-unex-sc@pcibus/pcidev<todev>/pcifn { todev != 32};
469
470/*
471 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
472 * recursive rules for pci-pci bridges
473 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
474 */
475
476event error.io.pci.serr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
477event error.io.pci.perr-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
478event error.io.pci.perr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
479event error.io.pci.perr-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
480event error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
481event error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
482event error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
483event error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn;
484event error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
485event error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn;
486event error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
487event error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
488event error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
489event error.io.pci.leaf-ape-d@pcibus/pcidev/pcifn;
490event error.io.pci.ape-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
491event error.io.pci.source-ape-u@pcibus/pcidev/pcifn;
492event error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn;
493event error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn;
494event error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
495event error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
496event error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
497event error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
498event error.io.pci.ta-d@pcibus/pcidev/pcifn;
499event error.io.pci.ta-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
500event error.io.pci.ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
501event error.io.pci.target-rta-d@pcibus/pcidev/pcifn;
502event error.io.pci.target-ma-d@pcibus/pcidev/pcifn;
503event error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
504event error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
505event error.io.pci.nr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
506event error.io.pci.ta-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
507event error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
508event error.io.pcix.scpe-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
509event error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn;
510event error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
511event error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
512event error.io.pci.ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
513
514event ereport.io.pci.sec-ma@pcibus/pcidev/pcifn{within(5s)};
515event ereport.io.pci.sec-sta@pcibus/pcidev/pcifn{within(5s)};
516event ereport.io.pci.sec-rta@pcibus/pcidev/pcifn{within(5s)};
517event ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn{within(5s)};
518event ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn{within(5s)};
519event ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn{within(5s)};
520event ereport.io.pci.dto@pcibus/pcidev/pcifn{within(5s)};
521event ereport.io.pcix.sec-spl-dis@pcibus/pcidev/pcifn{within(5s)};
522event ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn{within(5s)};
523
524/*
525 * SERR# can propagate upstream and may be seen by other devices on the bus
526 */
527prop error.io.pci.serr-u@pcibus/pcidev[fromdev]/pcifn (0)->
528    ereport.io.pci.sserr@pcibus/pcidev<todev>/pcifn<> {todev!=fromdev};
529
530prop error.io.pci.serr-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
531    ereport.io.pci.sserr@pcibus/pcidev/pcifn;
532
533prop error.io.pci.serr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
534    ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn,
535    error.io.pci.serr-u@pcibus/pcidev/pcifn;
536
537/*
538 * PERR# can propagate upstream for delayed writes. For posted writes
539 * it turns into an SERR#.
540 */
541prop error.io.pci.perr-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
542    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
543    error.io.pci.perr-dw-u@pcibus/pcidev/pcifn;
544
545prop error.io.pci.perr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
546    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
547    error.io.pci.serr-u@pcibus/pcidev/pcifn;
548
549/*
550 * PERR# can propagate downstream (only for downstream dw parity error)
551 */
552prop error.io.pci.perr-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
553    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
554
555prop error.io.pci.perr-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
556    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
557
558prop error.io.pci.perr-d@pcibus/pcidev/pcifn (1)->
559    error.io.pci.perr-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
560
561/*
562 * downstream target ereports are for any descendant device
563 *
564 * A hostbridge driver may generate "target-" ereports when knowledge of the
565 * physical address associated with a fault allows the target device to be
566 * determined. This is not a requirement of the Diagnosis Engine, but can be
567 * valuable when available.
568 */
569prop error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn (0)->
570    ereport.io.pci.target-mdpe@pcibus/pcidev/pcifn;
571
572prop error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn (1)->
573    error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
574
575prop error.io.pci.target-rta-d@pcibus/pcidev/pcifn (0)->
576    ereport.io.pci.target-rta@pcibus/pcidev/pcifn;
577
578prop error.io.pci.target-rta-d@pcibus/pcidev/pcifn (1)->
579    error.io.pci.target-rta-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
580
581prop error.io.pci.target-ma-d@pcibus/pcidev/pcifn (0)->
582    ereport.io.pci.target-ma@pcibus/pcidev/pcifn;
583
584prop error.io.pci.target-ma-d@pcibus/pcidev/pcifn (1)->
585    error.io.pci.target-ma-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
586
587/*
588 * target aborts propagate upstream
589 */
590prop error.io.pci.ta-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
591    ereport.io.pci.sta@pcibus/pcidev/pcifn;
592
593prop error.io.pci.ta-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
594    ereport.io.pci.sta@pcibus/pcidev/pcifn;
595
596prop error.io.pci.ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
597    ereport.io.pci.sec-rta@pcibus/pcidev/pcifn,
598    error.io.pci.ta-u@pcibus/pcidev/pcifn;
599
600/*
601 * bad data (ie invalid but not an ape or dpe) can propagate downstream,
602 * and at some point may result in a target or master abort
603 */
604prop error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn (1)->
605    error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>,
606    error.io.pci.nr-pw-u@pcibus/pcidev/pcifn,
607    error.io.pci.ta-pw-u@pcibus/pcidev/pcifn;
608
609prop error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
610    error.io.pci.nr-pw-u@pcibus/pcidev/pcifn,
611    error.io.pci.ta-pw-u@pcibus/pcidev/pcifn;
612
613prop error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn (1)->
614    error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>,
615    error.io.pci.nr-drw-u@pcibus/pcidev/pcifn,
616    error.io.pci.ta-drw-u@pcibus/pcidev/pcifn;
617
618prop error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
619    error.io.pci.nr-drw-u@pcibus/pcidev/pcifn,
620    error.io.pci.ta-drw-u@pcibus/pcidev/pcifn;
621
622prop error.io.pci.nr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
623    ereport.io.pci.sec-ma@pcibus/pcidev/pcifn,
624    error.io.pci.serr-u@pcibus/pcidev/pcifn;
625
626prop error.io.pci.ta-pw-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
627    ereport.io.pci.sta@pcibus/pcidev/pcifn;
628
629prop error.io.pci.ta-pw-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
630    ereport.io.pci.sta@pcibus/pcidev/pcifn;
631
632prop error.io.pci.ta-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
633    ereport.io.pci.sec-rta@pcibus/pcidev/pcifn,
634    error.io.pci.serr-u@pcibus/pcidev/pcifn;
635
636prop error.io.pci.nr-drw-u@pcibus/pcidev/pcifn (1)->
637    error.io.pci.ma-u@pcibus/pcidev/pcifn;
638
639prop error.io.pci.nr-drw-u@pcibus/pcidev/pcifn (1)->
640    error.io.pci.target-rta-d@pcibus/pcidev/pcifn,
641    error.io.pci.target-ma-d@pcibus/pcidev/pcifn;
642
643prop error.io.pci.ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
644    ereport.io.pci.sec-ma@pcibus/pcidev/pcifn;
645
646prop error.io.pci.ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
647    error.io.pci.ma-u@pcibus/pcidev/pcifn,
648    error.io.pci.ta-u@pcibus/pcidev/pcifn;
649
650prop error.io.pci.ta-drw-u@pcibus/pcidev/pcifn (1)->
651    error.io.pci.ta-u@pcibus/pcidev/pcifn;
652
653prop error.io.pci.ta-drw-u@pcibus/pcidev/pcifn (1)->
654    error.io.pci.target-rta-d@pcibus/pcidev/pcifn;
655
656/*
657 * bad data (ie invalid but not an ape or dpe) can propagate upstream,
658 * and at some point may result in a target or master abort
659 */
660prop error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
661    error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn,
662    error.io.pci.nr-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
663    error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
664
665prop error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn (0)->
666    error.io.pci.nr-pw-d@pcibus/pcidev/pcifn,
667    error.io.pci.ta-pw-d@pcibus/pcidev/pcifn;
668
669prop error.io.pci.nr-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
670    ereport.io.pci.ma@pcibus/pcidev/pcifn;
671
672prop error.io.pci.nr-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
673    ereport.io.pci.ma@pcibus/pcidev/pcifn,
674    error.io.pci.serr-u@pcibus/pcidev/pcifn;
675
676prop error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
677    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
678
679prop error.io.pci.ta-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
680    ereport.io.pci.rta@pcibus/pcidev/pcifn;
681
682prop error.io.pci.ta-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
683    ereport.io.pci.rta@pcibus/pcidev/pcifn,
684    error.io.pci.serr-u@pcibus/pcidev/pcifn;
685
686/*
687 * for delayed writes we treat upstream badreq specially as rta always
688 * propagates back downstream to the leaf
689 */
690prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
691    ereport.io.pci.rta@pcibus/pcidev/pcifn,
692    ereport.io.pci.ma@pcibus/pcidev/pcifn;
693
694prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
695    ereport.io.pci.ma@pcibus/pcidev/pcifn,
696    ereport.io.pci.rta@pcibus/pcidev/pcifn;
697
698prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
699    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
700
701prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
702    error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn;
703
704prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
705    ereport.io.pci.ma@pcibus/pcidev/pcifn;
706
707prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
708    ereport.io.pci.ma@pcibus/pcidev/pcifn;
709
710prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
711    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
712
713prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn (1)->
714    error.io.pci.ta-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>,
715    error.io.pci.nr-drw-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
716
717prop error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
718    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
719
720prop error.io.pci.ta-drw-d@pcibus/pcidev/pcifn (1)->
721    error.io.pci.ta-d@pcibus/pcidev/pcifn;
722
723prop error.io.pci.ta-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
724    ereport.io.pci.rta@pcibus/pcidev/pcifn;
725
726prop error.io.pci.ta-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
727    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn,
728    ereport.io.pci.rta@pcibus/pcidev/pcifn;
729
730prop error.io.pci.ta-d@pcibus/pcidev/pcifn (1)->
731    error.io.pci.ta-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
732
733/*
734 * Request with address parity error must be detected by parent device
735 * and can optionally result in a target or master abort.
736 * It may also be detected by sibling devices on a bus
737 */
738prop error.io.pci.ape-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
739    ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
740    ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn,
741    error.io.pci.serr-u@pcibus/pcidev/pcifn;
742
743prop error.io.pci.ape-u@pcibus/pcidev/pcifn (0)->
744    error.io.pci.nr-drw-d@pcibus/pcidev/pcifn,
745    error.io.pci.ta-drw-d@pcibus/pcidev/pcifn,
746    error.io.pci.nr-pw-d@pcibus/pcidev/pcifn,
747    error.io.pci.ta-pw-d@pcibus/pcidev/pcifn;
748
749prop error.io.pci.ape-u@pcibus/pcidev/pcifn (0)->
750    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
751
752prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (0)->
753    ereport.io.pci.dpe@pcibus/pcidev<todev>/pcifn<> {fromdev != todev},
754    ereport.io.pci.sserr@pcibus/pcidev<todev>/pcifn<> {fromdev != todev};
755
756prop error.io.pci.ape-u@pcibus/pcidev/pcifn (1)->
757    error.io.pci.source-ape-u@pcibus/pcidev/pcifn;
758
759/*
760 * If the bridge sees an upstream split completion error (pci-x only) it could
761 * result in a number of things
762 * - for various faults in the split completion (eg address parity error)
763 *   we will respond with a target abort (which the child device will treat
764 *   as a split completion ta)
765 * - for other faults we can't tell who send the split completion and so
766 *   just drop the request (which the child device sees as a split
767 *   completion ma)
768 */
769prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
770    ereport.io.pci.sec-sta@pcibus/pcidev/pcifn,
771    ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
772    ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn,
773    error.io.pci.serr-u@pcibus/pcidev/pcifn;
774
775prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn (1)->
776    error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn,
777    error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn;
778
779prop error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn (1)->
780    error.io.pci.serr-u@pcibus/pcidev/pcifn;
781
782prop error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
783    ereport.io.pci.sserr@pcibus/pcidev/pcifn,
784    ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn;
785
786prop error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
787    ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn,
788    ereport.io.pci.ma@pcibus/pcidev/pcifn;
789
790prop error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn (1)->
791    error.io.pci.serr-u@pcibus/pcidev/pcifn;
792
793prop error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
794    ereport.io.pci.sserr@pcibus/pcidev/pcifn,
795    ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn;
796
797prop error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
798    ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn,
799    ereport.io.pci.rta@pcibus/pcidev/pcifn;
800
801prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn (1)->
802    error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn;
803
804/*
805 * request with address parity error must be detected by child device
806 * and can optionally result in a target or master abort.
807 */
808prop error.io.pci.ape-d@pcibus/pcidev/pcifn (1)->
809    error.io.pci.serr-u@pcibus/pcidev/pcifn;
810
811prop error.io.pci.ape-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
812    error.io.pci.leaf-ape-d@pcibus/pcidev/pcifn;
813
814prop error.io.pci.leaf-ape-d@pcibus/pcidev/pcifn { IS_LEAF } (2)->
815    ereport.io.pci.sserr@pcibus/pcidev/pcifn,
816    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
817
818prop error.io.pci.ape-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
819    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
820
821prop error.io.pci.ape-d@pcibus/pcidev/pcifn (0)->
822    error.io.pci.ta-pw-u@pcibus/pcidev/pcifn,
823    error.io.pci.ta-drw-u@pcibus/pcidev/pcifn,
824    error.io.pci.nr-pw-u@pcibus/pcidev/pcifn,
825    error.io.pci.nr-drw-u@pcibus/pcidev/pcifn;
826
827/*
828 * If the device sees a downstream split completion error (pci-x only) it could
829 * result in a number of things
830 * - for various faults in the split completion (eg address parity error)
831 *   we will respond with a target abort (which the parent bridge will treat
832 *   as a split completion ta)
833 * - for other faults we can't tell who send the split completion and so
834 *   just drop the request (which the parent bridge sees as a split
835 *   completion ma)
836 */
837prop error.io.pcix.scpe-d@pcibus/pcidev/pcifn (0)->
838    ereport.io.pci.sta@pcibus/pcidev/pcifn,
839    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
840    ereport.io.pci.sserr@pcibus/pcidev/pcifn,
841    error.io.pci.serr-u@pcibus/pcidev/pcifn;
842
843prop error.io.pcix.scpe-d@pcibus/pcidev/pcifn (1)->
844    error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn,
845    error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn;
846
847prop error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
848    ereport.io.pcix.sec-spl-dis@pcibus/pcidev/pcifn,
849    error.io.pci.serr-u@pcibus/pcidev/pcifn;
850
851prop error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
852    ereport.io.pci.sec-ma@pcibus/pcidev/pcifn;
853
854prop error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
855    ereport.io.pcix.sec-spl-dis@pcibus/pcidev/pcifn,
856    error.io.pci.serr-u@pcibus/pcidev/pcifn,
857    ereport.io.pci.sec-rta@pcibus/pcidev/pcifn;
858
859/*
860 * request with data parity error can propagate upstream
861 *
862 * for PCI/X (but not PCI) the split write can optionally be forwarded across
863 * the bridge, maintaining bad parity/ecc
864 *
865 * if there is a dpe on a retry on a delayed write, we don't send another
866 * retry, and eventually the dto timer will expire
867 */
868prop error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
869    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
870
871prop error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
872    ereport.io.pci.mdpe@pcibus/pcidev/pcifn,
873    ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
874    error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
875
876prop error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
877    ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn;
878
879prop error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
880    ereport.io.pci.mdpe@pcibus/pcidev/pcifn,
881    error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
882
883prop error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
884    error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
885
886prop error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
887    ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
888    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
889    error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
890
891/*
892 * Request with data parity error can propagate downstream. A hardened
893 * leaf driver should handle the error, but may or may not be able to
894 * avoid service impact. We handle to two cases separately. If there is
895 * service impact we will fail immediately, if not we will feed into a SERD
896 * engine.
897 *
898 * for PCI/X (but not PCI) the split write can optionally be forwarded across
899 * the bridge, maintaining bad parity/ecc
900 *
901 * if there is a dpe on a retry on a delayed write, we don't send another
902 * retry, and eventually the dto timer will expire
903 */
904prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn (2)->
905    error.io.pci.perr-pw-u@pcibus/pcidev/pcifn,
906    error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn;
907
908prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
909    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
910
911prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
912    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
913    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn;
914
915prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn (1)->
916    error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
917
918prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn (2)->
919    error.io.pci.perr-pw-u@pcibus/pcidev/pcifn,
920    error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn;
921
922prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
923    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
924
925prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
926    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
927    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn;
928
929prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn (1)->
930    error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
931
932prop error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
933    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
934
935prop error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
936    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
937    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn;
938
939prop error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn (1)->
940    error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
941
942prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn (3)->
943    error.io.pci.perr-dw-u@pcibus/pcidev/pcifn,
944    error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn,
945    error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
946
947prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn (0)->
948    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
949    error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
950
951prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
952    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
953
954prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
955    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
956
957prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
958    error.io.pci.retry-to-d@pcibus/pcidev/pcifn;
959
960prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn (3)->
961    error.io.pci.perr-dw-u@pcibus/pcidev/pcifn,
962    error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn,
963    error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
964
965prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn (0)->
966    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
967    error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
968
969prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
970    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
971
972prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
973    ereport.io.pci.dpe@pcibus/pcidev/pcifn;
974
975prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
976    error.io.pci.retry-to-d@pcibus/pcidev/pcifn;
977
978prop error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn (0)->
979    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
980    ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
981    error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
982
983prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn (2)->
984    error.io.pci.perr-dr-u@pcibus/pcidev/pcifn,
985    error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn;
986
987prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
988    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
989    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
990
991prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
992    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
993    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
994
995prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn (1)->
996    error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
997
998prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn (2)->
999    error.io.pci.perr-dr-u@pcibus/pcidev/pcifn,
1000    error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn;
1001
1002prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1003    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
1004    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
1005
1006prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
1007    ereport.io.pci.dpe@pcibus/pcidev/pcifn,
1008    ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
1009
1010prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn (1)->
1011    error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1012
1013/*
1014 * delayed read/write retry timeout can cause dto at a bridge
1015 */
1016prop error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
1017    error.io.pci.retry-to-u@pcibus/pcidev/pcifn;
1018
1019prop error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
1020    ereport.io.pci.dto@pcibus/pcidev/pcifn;
1021
1022prop error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
1023    error.io.pci.serr-u@pcibus/pcidev/pcifn;
1024
1025prop error.io.pci.retry-to-d@pcibus/pcidev/pcifn (0)->
1026    error.io.pci.retry-to-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1027
1028prop error.io.pci.retry-to-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
1029    ereport.io.pci.dto@pcibus/pcidev/pcifn;
1030
1031prop error.io.pci.retry-to-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
1032    error.io.pci.serr-u@pcibus/pcidev/pcifn;
1033
1034/*
1035 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1036 * source- propagations.
1037 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1038 */
1039event error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1040event error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1041event error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1042event error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1043event error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1044event error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1045event error.io.pci.source-ape-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1046event error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1047event error.io.service.restored@pcibus/pcidev/pcifn;
1048
1049event ereport.io.service.lost@pcibus/pcidev/pcifn{within(5s)};
1050event ereport.io.service.degraded@pcibus/pcidev/pcifn{within(5s)};
1051event ereport.io.service.unaffected@pcibus/pcidev/pcifn{within(5s)};
1052event ereport.io.service.restored@pcibus/pcidev/pcifn{within(30s)};
1053
1054prop error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1055    ereport.io.service.lost@pcibus/pcidev/pcifn,
1056    ereport.io.service.degraded@pcibus/pcidev/pcifn;
1057
1058prop error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1059    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1060    error.io.service.restored@pcibus/pcidev/pcifn;
1061
1062prop error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1063    ereport.io.service.lost@pcibus/pcidev/pcifn,
1064    ereport.io.service.degraded@pcibus/pcidev/pcifn;
1065
1066prop error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1067    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1068    error.io.service.restored@pcibus/pcidev/pcifn;
1069
1070prop error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1071    ereport.io.service.lost@pcibus/pcidev/pcifn,
1072    ereport.io.service.degraded@pcibus/pcidev/pcifn;
1073
1074prop error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1075    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1076    error.io.service.restored@pcibus/pcidev/pcifn;
1077
1078prop error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn (1)->
1079    error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1080
1081prop error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn (1)->
1082    error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1083
1084prop error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn (1)->
1085    error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1086
1087prop error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn (1)->
1088    error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1089
1090prop error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn (1)->
1091    error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1092
1093prop error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn (1)->
1094    error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1095
1096prop error.io.pci.source-ape-u@pcibus/pcidev/pcifn (1)->
1097    error.io.pci.source-ape-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1098
1099prop error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn (1)->
1100    error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1101
1102/*
1103 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1104 * Handling of leaf driver detected internal errors. Use serd engine if
1105 * no service impact - otherwise fail immediately
1106 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1107 */
1108event ereport.io.device.inval_state@pcibus/pcidev/pcifn{within(5s)};
1109event ereport.io.device.no_response@pcibus/pcidev/pcifn{within(5s)};
1110event ereport.io.device.stall@pcibus/pcidev/pcifn{within(5s)};
1111event ereport.io.device.badint_limit@pcibus/pcidev/pcifn{within(5s)};
1112event ereport.io.device.corr@pcibus/pcidev/pcifn{within(5s)};
1113event ereport.io.device.uncorr@pcibus/pcidev/pcifn{within(5s)};
1114event ereport.io.device.nf-device@pcibus/pcidev/pcifn;
1115
1116prop error.io.service.restored@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1117    ereport.io.service.lost@pcibus/pcidev/pcifn,
1118    ereport.io.service.degraded@pcibus/pcidev/pcifn;
1119
1120prop error.io.service.restored@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1121    ereport.io.service.restored@pcibus/pcidev/pcifn;
1122
1123prop error.io.device.f-device@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1124    ereport.io.device.inval_state@pcibus/pcidev/pcifn,
1125    ereport.io.device.no_response@pcibus/pcidev/pcifn,
1126    ereport.io.device.stall@pcibus/pcidev/pcifn,
1127    ereport.io.device.badint_limit@pcibus/pcidev/pcifn,
1128    ereport.io.device.corr@pcibus/pcidev/pcifn,
1129    ereport.io.device.uncorr@pcibus/pcidev/pcifn;
1130
1131prop error.io.device.f-device@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1132    ereport.io.service.lost@pcibus/pcidev/pcifn,
1133    ereport.io.service.degraded@pcibus/pcidev/pcifn;
1134
1135engine serd.io.device.nonfatal@pcibus/pcidev/pcifn,
1136    N=NONFATAL_COUNT, T=NONFATAL_TIME, method=persistent,
1137    trip=ereport.io.device.nf-device@pcibus/pcidev/pcifn;
1138
1139event upset.io.device.nonfatal@pcibus/pcidev/pcifn,
1140    engine=serd.io.device.nonfatal@pcibus/pcidev/pcifn;
1141
1142prop error.io.device.nf-device@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1143    ereport.io.device.nf-device@pcibus/pcidev/pcifn;
1144
1145prop error.io.device.nf-device@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1146    ereport.io.device.inval_state@pcibus/pcidev/pcifn,
1147    ereport.io.device.no_response@pcibus/pcidev/pcifn,
1148    ereport.io.device.stall@pcibus/pcidev/pcifn,
1149    ereport.io.device.badint_limit@pcibus/pcidev/pcifn,
1150    ereport.io.device.corr@pcibus/pcidev/pcifn,
1151    ereport.io.device.uncorr@pcibus/pcidev/pcifn,
1152    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1153    error.io.service.restored@pcibus/pcidev/pcifn;
1154
1155prop upset.io.device.nonfatal@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1156    ereport.io.device.inval_state@pcibus/pcidev/pcifn,
1157    ereport.io.device.no_response@pcibus/pcidev/pcifn,
1158    ereport.io.device.stall@pcibus/pcidev/pcifn,
1159    ereport.io.device.badint_limit@pcibus/pcidev/pcifn,
1160    ereport.io.device.corr@pcibus/pcidev/pcifn,
1161    ereport.io.device.uncorr@pcibus/pcidev/pcifn;
1162
1163prop upset.io.device.nonfatal@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1164    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1165    error.io.service.restored@pcibus/pcidev/pcifn;
1166
1167/*
1168 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1169 * Handling of pci express nonfatal errors (dpe). Use serd engine if
1170 * no service impact - otherwise fail immediately
1171 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1172 */
1173event ereport.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
1174event ereport.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
1175
1176engine serd.io.pci.nf-dpe-u@pcibus/pcidev/pcifn,
1177    N=NONFATAL_DPE_U_COUNT, T=NONFATAL_DPE_U_TIME, method=persistent,
1178    trip=ereport.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
1179
1180event upset.io.pci.nf-dpe-u@pcibus/pcidev/pcifn,
1181    engine=serd.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
1182
1183prop error.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1184    ereport.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
1185
1186prop error.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1187    error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn,
1188    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1189    error.io.service.restored@pcibus/pcidev/pcifn;
1190
1191prop upset.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1192    error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn;
1193
1194prop upset.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1195    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1196    error.io.service.restored@pcibus/pcidev/pcifn;
1197
1198engine serd.io.pci.nf-dpe-d@pcibus/pcidev/pcifn,
1199    N=NONFATAL_DPE_D_COUNT, T=NONFATAL_DPE_D_TIME, method=persistent,
1200    trip=ereport.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
1201
1202event upset.io.pci.nf-dpe-d@pcibus/pcidev/pcifn,
1203    engine=serd.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
1204
1205prop error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1206    ereport.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
1207
1208prop error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
1209    error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn,
1210    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1211    error.io.service.restored@pcibus/pcidev/pcifn;
1212
1213prop upset.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1214    error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn;
1215
1216prop upset.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (1)->
1217    ereport.io.service.unaffected@pcibus/pcidev/pcifn,
1218    error.io.service.restored@pcibus/pcidev/pcifn;
1219
1220/*
1221 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1222 * stub unused ereports
1223 * - ignore rx-spl as we can't tell what message it was (and we should have
1224 *   diagnosed the problem anyway from standard pci ereports)
1225 * - ignore sec-spl-or/sec-spl-dly as these aren't really faults (tuning info)
1226 * - ignore unex-spl/sec-unex-spl
1227 * - ignore ecc.ue ereports (we get everything we need from dpe/mdpe)
1228 * - ignore ecc.ce ereports for now (could do serd on these)
1229 * - ignore nr ereport
1230 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1231 */
1232
1233event ereport.io.pci.nr@pcibus/pcidev/pcifn{within(5s)};
1234event ereport.io.pcix.unex-spl@pcibus/pcidev/pcifn{within(5s)};
1235event ereport.io.pcix.rx-spl@pcibus/pcidev/pcifn{within(5s)};
1236event ereport.io.pcix.sec-unex-spl@pcibus/pcidev/pcifn{within(5s)};
1237event ereport.io.pcix.sec-spl-or@pcibus/pcidev/pcifn{within(5s)};
1238event ereport.io.pcix.sec-spl-dly@pcibus/pcidev/pcifn{within(5s)};
1239event ereport.io.pcix.ecc.ce-addr@pcibus/pcidev/pcifn{within(5s)};
1240event ereport.io.pcix.ecc.ce-attr@pcibus/pcidev/pcifn{within(5s)};
1241event ereport.io.pcix.ecc.ce-data@pcibus/pcidev/pcifn{within(5s)};
1242event ereport.io.pcix.ecc.ue-addr@pcibus/pcidev/pcifn{within(5s)};
1243event ereport.io.pcix.ecc.ue-attr@pcibus/pcidev/pcifn{within(5s)};
1244event ereport.io.pcix.ecc.ue-data@pcibus/pcidev/pcifn{within(5s)};
1245event ereport.io.pcix.s-ce@pcibus/pcidev/pcifn{within(5s)};
1246event ereport.io.pcix.s-ue@pcibus/pcidev/pcifn{within(5s)};
1247event ereport.io.pcix.sec-ecc.ce-addr@pcibus/pcidev/pcifn{within(5s)};
1248event ereport.io.pcix.sec-ecc.ce-attr@pcibus/pcidev/pcifn{within(5s)};
1249event ereport.io.pcix.sec-ecc.ce-data@pcibus/pcidev/pcifn{within(5s)};
1250event ereport.io.pcix.sec-ecc.ue-addr@pcibus/pcidev/pcifn{within(5s)};
1251event ereport.io.pcix.sec-ecc.ue-attr@pcibus/pcidev/pcifn{within(5s)};
1252event ereport.io.pcix.sec-ecc.ue-data@pcibus/pcidev/pcifn{within(5s)};
1253event ereport.io.pcix.sec-s-ce@pcibus/pcidev/pcifn{within(5s)};
1254event ereport.io.pcix.sec-s-ue@pcibus/pcidev/pcifn{within(5s)};
1255
1256event upset.io.pcix.discard@pcibus/pcidev/pcifn;
1257
1258prop upset.io.pcix.discard@pcibus/pcidev/pcifn (1)->
1259    ereport.io.pci.nr@pcibus/pcidev/pcifn,
1260    ereport.io.pcix.rx-spl@pcibus/pcidev/pcifn,
1261    ereport.io.pcix.unex-spl@pcibus/pcidev/pcifn,
1262    ereport.io.pcix.sec-unex-spl@pcibus/pcidev/pcifn,
1263    ereport.io.pcix.sec-spl-or@pcibus/pcidev/pcifn,
1264    ereport.io.pcix.sec-spl-dly@pcibus/pcidev/pcifn,
1265    ereport.io.pcix.ecc.ce-addr@pcibus/pcidev/pcifn,
1266    ereport.io.pcix.ecc.ce-attr@pcibus/pcidev/pcifn,
1267    ereport.io.pcix.ecc.ce-data@pcibus/pcidev/pcifn,
1268    ereport.io.pcix.ecc.ue-addr@pcibus/pcidev/pcifn,
1269    ereport.io.pcix.ecc.ue-attr@pcibus/pcidev/pcifn,
1270    ereport.io.pcix.ecc.ue-data@pcibus/pcidev/pcifn,
1271    ereport.io.pcix.s-ce@pcibus/pcidev/pcifn,
1272    ereport.io.pcix.s-ue@pcibus/pcidev/pcifn,
1273    ereport.io.pcix.sec-ecc.ce-addr@pcibus/pcidev/pcifn,
1274    ereport.io.pcix.sec-ecc.ce-attr@pcibus/pcidev/pcifn,
1275    ereport.io.pcix.sec-ecc.ce-data@pcibus/pcidev/pcifn,
1276    ereport.io.pcix.sec-ecc.ue-addr@pcibus/pcidev/pcifn,
1277    ereport.io.pcix.sec-ecc.ue-attr@pcibus/pcidev/pcifn,
1278    ereport.io.pcix.sec-ecc.ue-data@pcibus/pcidev/pcifn,
1279    ereport.io.pcix.sec-s-ce@pcibus/pcidev/pcifn,
1280    ereport.io.pcix.sec-s-ue@pcibus/pcidev/pcifn;
1281