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.
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.
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]
22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
26 #pragma dictionary "PCI"
28 #include <fm/topo_hc.h>
30 #define PCI_DEV_FIT 1000
31 #define PCI_BUS_FIT 500
36 * Nonfatal dpe errors have to be recovered by the hardened driver which may
37 * cause intermittant performance/responsiveness problems, so we have tighter
38 * serd parameters for these. These are most likely errors in buffers/caches
39 * within devices and bridges, so use similar rates to cpu data cache parity
42 * We will be more conservative about nonfatal internal errors reported
45 #define NONFATAL_COUNT 6
46 #define NONFATAL_TIME 2h
47 #define NONFATAL_DPE_COUNT 3
48 #define NONFATAL_DPE_TIME 168h
50 #define PCIFN pcibus/pcidev/pcifn
51 #define PCIFNHZ pcibus<>/pcidev<>/pcifn<>
53 engine serd.io.device.nonfatal@PCIFN,
54 N=NONFATAL_COUNT, T=NONFATAL_TIME;
56 engine serd.io.pci.nf-dpe@PCIFN,
57 N=NONFATAL_DPE_COUNT, T=NONFATAL_DPE_TIME;
59 engine serd.io.pci.nf-dpe-bus@pcibus,
60 N=NONFATAL_DPE_COUNT, T=NONFATAL_DPE_TIME;
63 (confprop_defined(PCIFN, TOPO_PCI_CLASS) && \
64 confprop(PCIFN, TOPO_PCI_CLASS) != "60400" && \
65 confprop(PCIFN, TOPO_PCI_CLASS) != "60401")
68 (confprop(PCIFN, TOPO_PCI_CLASS) == "60400" || \
69 confprop(PCIFN, TOPO_PCI_CLASS) == "60401")
72 (confprop_defined(pcibus/pcidev[fromdev]/pcifn, TOPO_PCI_CLASS) && \
73 confprop(pcibus/pcidev[fromdev]/pcifn, TOPO_PCI_CLASS) != "60400" && \
74 confprop(pcibus/pcidev[fromdev]/pcifn, TOPO_PCI_CLASS) != "60401")
76 #define IS_LF(f) (confprop_defined(f, TOPO_PCI_CLASS) && \
77 confprop(f, TOPO_PCI_CLASS) != "60400" && \
78 confprop(f, TOPO_PCI_CLASS) != "60401")
80 * note general rule for errors is that for upstream propagations
81 * @PCIFN is the sending device while for downstream
82 * propagations it is the receiving device.
85 event fault.io.pci.device-interr-corr@PCIFN,
86 engine=serd.io.device.nonfatal@PCIFN, FITrate=PCI_DEV_FIT;
88 event fault.io.pci.device-interr-unaf@PCIFN,
89 engine=serd.io.pci.nf-dpe@PCIFN, FITrate=PCI_DEV_FIT;
91 event fault.io.pci.device-interr-deg@PCIFN, FITrate=PCI_DEV_FIT, retire=0;
93 event fault.io.pci.device-interr@PCIFN, FITrate=PCI_DEV_FIT;
95 event fault.io.pci.device-invreq@PCIFN, FITrate=PCI_DEV_FIT;
97 event fault.io.pci.device-noresp@PCIFN, FITrate=PCI_DEV_FIT;
99 event fault.io.pci.fw_corrupt@PCIFN, FITrate=PCI_DEV_FIT, retire=0;
101 event fault.io.pci.fw_mismatch@PCIFN, FITrate=PCI_DEV_FIT, retire=0;
104 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
105 * A faulty hostbridge may cause:
106 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
107 * - nr-pw-d: the device not to respond to an upstream request
108 * - nr-drw-d: the device not to respond to an upstream request
109 * - ta-pw-d: the device to send a target abort to an upstream request
110 * - ta-drw-d: the device to send a target abort to an upstream request
111 * - serr-u: the device to report itself in error
112 * - badreq-pw-d:a bad downstream request - not parity error (may cause target
113 * to target abort or master abort)
114 * - badreq-drw-d:a bad downstream request - not parity error (may cause
115 * target to target abort or master abort)
116 * - ape-d: address/parity to get corrupted during downstream transmission
117 * - scpe-d: split completion to get corrupted during downstream transmission
118 * - dpe-d: the device to transfer bad data and/or bad parity downstream
119 * - retry-to-d: the device to exceed the set timeout for a delayed
122 #define PCI_TO_HB pcibus/pcidev<todev>/pcifn<> {fromdev != 32 && todev == 32}
123 #define PCI_FROM_HB pcibus/pcidev<todev>/pcifn<> {fromdev == 32 && todev != 32}
125 event error.io.pci.retry-to-d@PCIFN;
126 event error.io.pci.nr-pw-d@PCIFN;
127 event error.io.pci.nr-drw-d@PCIFN;
128 event error.io.pci.ta-pw-d@PCIFN;
129 event error.io.pci.ta-drw-d@PCIFN;
130 event error.io.pci.badreq-pw-d@PCIFN;
131 event error.io.pci.badreq-drw-d@PCIFN;
132 event error.io.pci.f-dpe-d@PCIFN;
133 event error.io.pci.deg-dpe-d@PCIFN;
134 event error.io.pci.nf-dpe-d@PCIFN;
135 event error.io.pci.ape-d@PCIFN;
136 event error.io.pci.ape-u@PCIFN;
137 event error.io.pci.dpdata-dw-d@PCIFN;
138 event error.io.pci.dpdata-pw-d@PCIFN;
139 event error.io.pci.dpdata-dr-d@PCIFN;
140 event error.io.pci.dpdata-pw-u@PCIFN;
141 event error.io.pci.dpdata-dw-u@PCIFN;
142 event error.io.pci.dpdata-dr-u@PCIFN;
143 event error.io.pci.ta-u@PCIFN;
144 event error.io.pci.ma-u@PCIFN;
145 event error.io.pci.perr-dw-u@PCIFN;
146 event error.io.pci.perr-pw-u@PCIFN;
147 event error.io.pci.perr-dr-u@PCIFN;
148 event error.io.pci.badreq-drw-u@PCIFN;
149 event error.io.pci.badreq-pw-u@PCIFN;
150 event error.io.pci.device-serr@PCIFN;
151 event error.io.pci.device-ta@PCIFN;
152 event error.io.pci.device-par@PCIFN;
153 event error.io.pci.serr-u@PCIFN;
154 event error.io.pcix.scpe-d@PCIFN;
155 event error.io.pcix.scpe-u@PCIFN;
156 event error.io.pcix.spl-comp-ma-u@PCIFN;
157 event error.io.pcix.spl-comp-ta-u@PCIFN;
158 event error.io.pcix.spl-comp-ma-d@PCIFN;
159 event error.io.pcix.spl-comp-ta-d@PCIFN;
161 event ereport.io.pci.ma@PCIFN{within(5s)};
162 event ereport.io.pci.rta@PCIFN{within(5s)};
163 event ereport.io.pci.mdpe@PCIFN{within(5s)};
164 event ereport.io.pci.sta@PCIFN{within(5s)};
165 event ereport.io.pci.sserr@PCIFN{within(5s)};
166 event ereport.io.pci.dpe@PCIFN{within(5s)};
167 event ereport.io.pci.target-mdpe@PCIFN{within(5s)};
168 event ereport.io.pci.target-rta@PCIFN{within(5s)};
169 event ereport.io.pci.target-ma@PCIFN{within(5s)};
170 event ereport.io.pcix.discard@PCIFN{within(5s)};
172 prop fault.io.pci.device-noresp@pcibus/pcidev[fromdev]/pcifn (0)->
173 error.io.pci.nr-pw-d@PCI_FROM_HB,
174 error.io.pci.nr-drw-d@PCI_FROM_HB,
175 error.io.pci.retry-to-d@PCI_FROM_HB;
177 prop fault.io.pci.device-invreq@pcibus/pcidev[fromdev]/pcifn (0)->
178 error.io.pci.badreq-pw-d@PCI_FROM_HB,
179 error.io.pci.badreq-drw-d@PCI_FROM_HB;
181 prop fault.io.pci.device-interr-unaf@pcibus/pcidev[fromdev]/pcifn (0)->
182 error.io.pci.nf-dpe-d@PCI_FROM_HB;
184 prop fault.io.pci.device-interr-deg@pcibus/pcidev[fromdev]/pcifn (0)->
185 error.io.pci.deg-dpe-d@PCI_FROM_HB;
187 prop fault.io.pci.device-interr@PCIFN (0)->
188 error.io.pci.device-par@PCIFN,
189 error.io.pci.device-ta@PCIFN,
190 error.io.pci.device-serr@PCIFN;
192 prop error.io.pci.device-par@pcibus/pcidev[fromdev]/pcifn (1)->
193 error.io.pci.f-dpe-d@PCI_FROM_HB,
194 error.io.pcix.scpe-d@PCI_FROM_HB,
195 error.io.pci.ape-d@PCI_FROM_HB;
197 prop error.io.pci.device-ta@pcibus/pcidev[fromdev]/pcifn (1)->
198 error.io.pci.ta-pw-d@PCI_FROM_HB,
199 error.io.pci.ta-drw-d@PCI_FROM_HB;
201 prop error.io.pci.device-ta@pcibus/pcidev[fromdev]/pcifn (1)->
202 ereport.io.pci.sta@pcibus/pcidev<todev>/pcifn {
203 todev == fromdev && fromdev == 32 };
205 prop error.io.pci.device-serr@PCIFN (2)->
206 error.io.pci.serr-u@PCIFN,
207 ereport.io.pci.sserr@PCIFN;
210 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
211 * ereport generation rules for hostbridge
212 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
214 prop error.io.pci.dpdata-pw-u@pcibus/pcidev[fromdev]/pcifn (1)->
215 ereport.io.pci.dpe@PCI_TO_HB;
217 prop error.io.pci.dpdata-dw-u@pcibus/pcidev[fromdev]/pcifn (1)->
218 ereport.io.pci.dpe@PCI_TO_HB;
220 prop error.io.pci.dpdata-dr-u@pcibus/pcidev[fromdev]/pcifn (2)->
221 ereport.io.pci.mdpe@PCI_TO_HB,
222 ereport.io.pci.dpe@PCI_TO_HB;
224 prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (3)->
225 ereport.io.pci.dpe@PCI_TO_HB,
226 error.io.pci.serr-u@PCI_TO_HB,
227 ereport.io.pci.sserr@PCI_TO_HB;
229 prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (0)->
230 ereport.io.pci.sta@PCI_TO_HB;
232 prop error.io.pci.ma-u@pcibus/pcidev[fromdev]/pcifn (1)->
233 ereport.io.pci.ma@PCI_TO_HB;
235 prop error.io.pci.ta-u@pcibus/pcidev[fromdev]/pcifn (1)->
236 ereport.io.pci.rta@PCI_TO_HB;
238 prop error.io.pci.perr-dw-u@pcibus/pcidev[fromdev]/pcifn (1)->
239 ereport.io.pci.mdpe@PCI_TO_HB;
241 prop error.io.pci.perr-pw-u@pcibus/pcidev[fromdev]/pcifn (1)->
242 ereport.io.pci.mdpe@PCI_TO_HB;
244 prop error.io.pci.badreq-drw-u@pcibus/pcidev[fromdev]/pcifn (0)->
245 ereport.io.pci.sta@PCI_TO_HB;
247 prop error.io.pci.badreq-pw-u@pcibus/pcidev[fromdev]/pcifn (0)->
248 ereport.io.pci.sta@PCI_TO_HB;
250 prop error.io.pcix.scpe-u@PCIFN (1)->
251 error.io.pcix.spl-comp-ma-d@PCIFN,
252 error.io.pcix.spl-comp-ta-d@PCIFN;
254 prop error.io.pcix.scpe-u@pcibus/pcidev[fromdev]/pcifn (0)->
255 ereport.io.pci.dpe@PCI_TO_HB,
256 error.io.pci.serr-u@PCI_TO_HB,
257 ereport.io.pci.sserr@PCI_TO_HB,
258 ereport.io.pci.sta@PCI_TO_HB;
260 prop error.io.pcix.spl-comp-ma-u@pcibus/pcidev[fromdev]/pcifn (3)->
261 ereport.io.pcix.discard@PCI_TO_HB,
262 error.io.pci.serr-u@PCI_TO_HB,
263 ereport.io.pci.sserr@PCI_TO_HB;
265 prop error.io.pcix.spl-comp-ta-u@pcibus/pcidev[fromdev]/pcifn (3)->
266 ereport.io.pcix.discard@PCI_TO_HB,
267 error.io.pci.serr-u@PCI_TO_HB,
268 ereport.io.pci.sserr@PCI_TO_HB;
271 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
272 * A faulty PCI leaf device or pci-pci bridge may cause:
273 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
274 * - nr-pw-u: the device not to respond to a valid downstream request
275 * - nr-drw-u: the device not to respond to a valid downstream request
276 * - ta-pw-u: the device responds with a ta to a valid downstream
278 * - ta-drw-u: the device responds with a ta to a valid downstream
280 * - serr-u: the device to report itself in error
281 * - badreq-pw-u: a bad upstream request (may cause target to target
282 * abort or master abort)
283 * - badreq-drw-u: a bad upstream request (may cause target to target
284 * abort or master abort)
285 * - ape-u: the transfer of bad address/parity upstream.
286 * - scpe-u: the transfer of bad split completion upstream.
287 * - dpe-u: the device to deliver bad data/parity upstream.
288 * - retry-to-u: the device to exceed the set timeout for a delayed
291 * A faulty PCI-X leaf device or bridge may also cause:
293 * - tx-oor: the device sends a byte count larger than the completers
295 * - rx-unex-sc: the device recieved a split completion with a tag
296 * which does not match any outstanding transaction.
299 #define PCI_NOT_HB pcibus/pcidev[fromdev]/pcifn {fromdev != 32}
301 event error.io.pci.retry-to-u@PCIFN;
302 event error.io.pci.nr-pw-u@PCIFN;
303 event error.io.pci.nr-drw-u@PCIFN;
304 event error.io.pci.ta-pw-u@PCIFN;
305 event error.io.pci.ta-drw-u@PCIFN;
306 event error.io.pci.f-dpe-u@PCIFN;
307 event error.io.pci.deg-dpe-u@PCIFN;
308 event error.io.pci.nf-dpe-u@PCIFN;
309 event error.io.pci.flt-dpdata-pw-u@PCIFN;
310 event error.io.pci.flt-dpdata-dw-u@PCIFN;
311 event error.io.pci.flt-dpdata-dr-u@PCIFN;
312 event error.io.pci.source-dpdata-u@PCIFN;
313 event error.io.pci.f-source-dpdata-u@PCIFN;
314 event error.io.pci.f-source-dpdata-u@PCIFN/PCIFN;
315 event error.io.pci.deg-source-dpdata-u@PCIFN;
316 event error.io.pci.deg-source-dpdata-u@PCIFN/PCIFN;
317 event error.io.pci.nf-source-dpdata-u@PCIFN;
318 event error.io.pci.nf-source-dpdata-u@PCIFN/PCIFN;
319 event error.io.pci.perr-d@PCIFN;
320 event error.io.pci.target-mdpe-d@PCIFN;
321 event error.io.pci.target-mdpe-d@PCIFN/PCIFN;
322 event error.io.pci.target-rta-d@PCIFN/PCIFN;
323 event error.io.pci.target-ma-d@PCIFN/PCIFN;
324 event error.io.pcix.tx-oor@PCIFN;
325 event error.io.pcix.rx-unex-sc@PCIFN;
326 event error.io.device.nf-device@PCIFN;
327 event error.io.device.f-device@PCIFN;
328 event error.io.device.deg-device@PCIFN;
329 event error.io.service.restored@PCIFN;
331 event ereport.io.pcix.oor@PCIFN{within(5s)};
332 event ereport.io.pcix.unex-sc@PCIFN{within(5s)};
333 event ereport.io.device.fw_corrupt@PCIFN{within(5s)};
334 event ereport.io.device.fw_mismatch@PCIFN{within(5s)};
335 event ereport.io.service.lost@PCIFN{within(5s)};
336 event ereport.io.service.degraded@PCIFN{within(5s)};
337 event ereport.io.service.unaffected@PCIFN{within(5s)};
338 event ereport.io.service.restored@PCIFN{within(30s)};
340 prop fault.io.pci.device-noresp@pcibus/pcidev[fromdev]/pcifn (0)->
341 error.io.pci.nr-pw-u@PCI_NOT_HB,
342 error.io.pci.nr-drw-u@PCI_NOT_HB,
343 error.io.pci.retry-to-u@PCI_NOT_HB;
345 prop fault.io.pci.device-interr-corr@pcibus/pcidev[fromdev]/pcifn (0)->
346 error.io.device.nf-device@PCI_NOT_HB;
348 prop fault.io.pci.device-interr-unaf@pcibus/pcidev[fromdev]/pcifn (0)->
349 error.io.pci.nf-dpe-u@PCI_NOT_HB;
351 prop fault.io.pci.device-interr-deg@pcibus/pcidev[fromdev]/pcifn (0)->
352 error.io.device.deg-device@PCI_NOT_HB,
353 error.io.pci.deg-dpe-u@PCI_NOT_HB;
355 prop fault.io.pci.device-interr@pcibus/pcidev[fromdev]/pcifn (0)->
356 error.io.pci.ta-pw-u@PCI_NOT_HB,
357 error.io.pci.ta-drw-u@PCI_NOT_HB,
358 error.io.pci.serr-u@PCI_NOT_HB,
359 error.io.pci.ape-u@PCI_NOT_HB,
360 error.io.pci.f-dpe-u@PCI_NOT_HB,
361 error.io.device.f-device@PCI_NOT_HB,
362 error.io.pcix.scpe-u@PCI_NOT_HB,
363 error.io.pcix.tx-oor@PCI_NOT_HB,
364 error.io.pcix.rx-unex-sc@PCI_NOT_HB;
366 prop fault.io.pci.fw_corrupt@PCIFN {IS_LEAF} (1)->
367 ereport.io.device.fw_corrupt@PCIFN;
369 prop fault.io.pci.fw_corrupt@PCIFN {IS_LEAF} (0)->
370 ereport.io.service.lost@PCIFN,
371 ereport.io.service.degraded@PCIFN;
373 prop fault.io.pci.fw_mismatch@PCIFN {IS_LEAF} (1)->
374 ereport.io.device.fw_mismatch@PCIFN;
376 prop fault.io.pci.fw_mismatch@PCIFN {IS_LEAF} (0)->
377 ereport.io.service.lost@PCIFN,
378 ereport.io.service.degraded@PCIFN;
380 prop fault.io.pci.device-invreq@pcibus/pcidev[fromdev]/pcifn {FD_IS_LEAF} (0)->
381 error.io.pci.badreq-drw-u@PCI_NOT_HB,
382 error.io.pci.badreq-pw-u@PCI_NOT_HB;
384 prop error.io.pcix.tx-oor@PCIFN (1)->
385 ereport.io.pcix.oor@PCIFN;
387 prop error.io.pcix.rx-unex-sc@pcibus/pcidev[fromdev]/pcifn (1)->
388 ereport.io.pcix.unex-sc@pcibus/pcidev<todev>/pcifn<> {fromdev != todev};
390 prop error.io.pci.f-dpe-u@PCIFN (1)->
391 error.io.pci.flt-dpdata-pw-u@PCIFN,
392 error.io.pci.flt-dpdata-dw-u@PCIFN,
393 error.io.pci.flt-dpdata-dr-u@PCIFN;
395 prop error.io.pci.f-dpe-u@PCIFN (1)->
396 error.io.pci.f-source-dpdata-u@PCIFN;
398 prop error.io.pci.f-source-dpdata-u@PCIFN (1)->
399 error.io.pci.f-source-dpdata-u@PCIFN/PCIFNHZ;
401 prop error.io.pci.f-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (1)->
402 error.io.pci.source-dpdata-u@PCIFN;
404 prop error.io.pci.f-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (0)->
405 ereport.io.service.lost@PCIFN;
407 prop error.io.pci.deg-dpe-u@PCIFN (1)->
408 error.io.pci.flt-dpdata-pw-u@PCIFN,
409 error.io.pci.flt-dpdata-dw-u@PCIFN,
410 error.io.pci.flt-dpdata-dr-u@PCIFN;
412 prop error.io.pci.deg-dpe-u@PCIFN (1)->
413 error.io.pci.deg-source-dpdata-u@PCIFN;
415 prop error.io.pci.deg-source-dpdata-u@PCIFN (1)->
416 error.io.pci.deg-source-dpdata-u@PCIFN/PCIFNHZ;
418 prop error.io.pci.deg-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (1)->
419 error.io.pci.source-dpdata-u@PCIFN;
421 prop error.io.pci.deg-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (1)->
422 ereport.io.service.degraded@PCIFN;
424 prop error.io.pci.nf-dpe-u@PCIFN (1)->
425 error.io.pci.flt-dpdata-pw-u@PCIFN,
426 error.io.pci.flt-dpdata-dw-u@PCIFN,
427 error.io.pci.flt-dpdata-dr-u@PCIFN;
429 prop error.io.pci.nf-dpe-u@PCIFN (1)->
430 error.io.pci.nf-source-dpdata-u@PCIFN;
432 prop error.io.pci.nf-source-dpdata-u@PCIFN (1)->
433 error.io.pci.nf-source-dpdata-u@PCIFN/PCIFNHZ;
435 prop error.io.pci.nf-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (1)->
436 error.io.pci.source-dpdata-u@PCIFN;
438 prop error.io.pci.nf-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (1)->
439 ereport.io.service.unaffected@PCIFN,
440 error.io.service.restored@PCIFN;
442 prop error.io.pci.flt-dpdata-pw-u@PCIFN (1)->
443 error.io.pci.dpdata-pw-u@PCIFN;
445 prop error.io.pci.flt-dpdata-pw-u@PCIFN { IS_BDG } (1)->
446 error.io.pci.serr-u@PCIFN;
448 prop error.io.pci.flt-dpdata-dw-u@PCIFN (2)->
449 error.io.pci.perr-d@PCIFN,
450 error.io.pci.dpdata-dw-u@PCIFN;
452 prop error.io.pci.flt-dpdata-dr-u@PCIFN (2)->
453 error.io.pci.dpdata-dr-u@PCIFN,
454 error.io.pci.target-mdpe-d@PCIFN;
457 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
458 * A faulty pci-pci bridge may also cause
459 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
460 * - nr-pw-d: the device not to respond to a valid upstream request
461 * - nr-drw-d: the device not to respond to a valid upstream request
462 * - ta-pw-d: the device responds with a ta to a valid upstream
464 * - ta-drw-d: the device responds with a ta to a valid upstream
466 * - ape-d: address/parity to get corrupted during downstream transmission.
467 * - scpe-d: split completion gets corrupted during downstream transmission.
468 * - dpe-d: data/parity to get corrupted during downstream transmission.
469 * - retry-to-d: the device to exceed the set timeout for a delayed
473 event error.io.pci.ape-d@PCIFN/PCIFN;
474 event error.io.pci.f-dpe-d@PCIFN/PCIFN;
475 event error.io.pci.deg-dpe-d@PCIFN/PCIFN;
476 event error.io.pci.nf-dpe-d@PCIFN/PCIFN;
477 event error.io.pci.retry-to-d@PCIFN/PCIFN;
478 event error.io.pci.nr-pw-d@PCIFN/PCIFN;
479 event error.io.pci.nr-drw-d@PCIFN/PCIFN;
480 event error.io.pci.ta-pw-d@PCIFN/PCIFN;
481 event error.io.pci.ta-drw-d@PCIFN/PCIFN;
482 event error.io.pcix.scpe-d@PCIFN/PCIFN;
484 prop fault.io.pci.device-noresp@PCIFN (0)->
485 error.io.pci.nr-pw-d@PCIFN/PCIFN,
486 error.io.pci.nr-drw-d@PCIFN/PCIFN,
487 error.io.pci.retry-to-d@PCIFN/PCIFN;
489 prop fault.io.pci.device-interr-unaf@PCIFN (0)->
490 error.io.pci.nf-dpe-d@PCIFN/PCIFN;
492 prop fault.io.pci.device-interr-deg@PCIFN (0)->
493 error.io.pci.deg-dpe-d@PCIFN/PCIFN;
495 prop fault.io.pci.device-interr@PCIFN (0)->
496 error.io.pci.ta-pw-d@PCIFN/PCIFN,
497 error.io.pci.ta-drw-d@PCIFN/PCIFN,
498 error.io.pci.ape-d@PCIFN/PCIFN,
499 error.io.pcix.scpe-d@PCIFN/PCIFN,
500 error.io.pci.f-dpe-d@PCIFN/PCIFN;
503 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
504 * A faulty PCI bus may cause:
505 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
506 * - ape-d: address/parity to get corrupted during downstream transmission.
507 * - scpe-d: split completion gets corrupted during downstream transmission.
508 * - dpe-d: data/parity to get corrupted during downstream transmission.
509 * - ape-u: address/parity to get corrupted during upstream transmission.
510 * - dpe-u: data/parity to get corrupted during read upstream transmission.
511 * - scpe-u: split completion to get corrupted during upstream transmission.
514 event fault.io.pci.bus-linkerr-unaf@pcibus,
515 engine=serd.io.pci.nf-dpe-bus@pcibus, FITrate=PCI_BUS_FIT;
517 event fault.io.pci.bus-linkerr-deg@pcibus, FITrate=PCI_BUS_FIT, retire=0;
519 event fault.io.pci.bus-linkerr@pcibus, FITrate=PCI_BUS_FIT;
521 prop fault.io.pci.bus-linkerr-unaf@pcibus (0)->
522 error.io.pci.nf-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
523 error.io.pci.nf-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32};
525 prop fault.io.pci.bus-linkerr-deg@pcibus (0)->
526 error.io.pci.deg-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
527 error.io.pci.deg-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32};
529 prop fault.io.pci.bus-linkerr@pcibus (0)->
530 error.io.pci.ape-d@pcibus/pcidev<todev>/pcifn { todev != 32},
531 error.io.pci.f-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
532 error.io.pci.ape-u@pcibus/pcidev<todev>/pcifn { todev != 32},
533 error.io.pci.f-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
534 error.io.pcix.scpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
535 error.io.pcix.scpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
536 error.io.pcix.tx-oor@pcibus/pcidev<todev>/pcifn { todev != 32},
537 error.io.pcix.rx-unex-sc@pcibus/pcidev<todev>/pcifn { todev != 32};
540 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
541 * recursive rules for pci-pci bridges
542 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
545 event error.io.pci.serr-u@PCIFN/PCIFN;
546 event error.io.pci.perr-dw-u@PCIFN/PCIFN;
547 event error.io.pci.perr-pw-u@PCIFN/PCIFN;
548 event error.io.pci.perr-d@PCIFN/PCIFN;
549 event error.io.pci.dpdata-pw-u@PCIFN/PCIFN;
550 event error.io.pci.dpdata-dw-u@PCIFN/PCIFN;
551 event error.io.pci.dpdata-dr-u@PCIFN/PCIFN;
552 event error.io.pci.dpdata-pw-fwd-d@PCIFN;
553 event error.io.pci.dpdata-pw-fwd-d@PCIFN/PCIFN;
554 event error.io.pci.dpdata-dw-fwd-d@PCIFN;
555 event error.io.pci.dpdata-dw-fwd-d@PCIFN/PCIFN;
556 event error.io.pci.dpdata-dr-fwd-d@PCIFN;
557 event error.io.pci.dpdata-dr-fwd-d@PCIFN/PCIFN;
558 event error.io.pci.source-perr-u@PCIFN;
559 event error.io.pci.leaf-ape-d@PCIFN;
560 event error.io.pci.ape-u@PCIFN/PCIFN;
561 event error.io.pci.source-ape-u@PCIFN;
562 event error.io.pci.badreq-pw-d@PCIFN/PCIFN;
563 event error.io.pci.badreq-drw-d@PCIFN/PCIFN;
564 event error.io.pci.badreq-pw-u@PCIFN/PCIFN;
565 event error.io.pci.badreq-drw-u@PCIFN/PCIFN;
566 event error.io.pci.ta-d@PCIFN;
567 event error.io.pci.ta-d@PCIFN/PCIFN;
568 event error.io.pci.ta-u@PCIFN/PCIFN;
569 event error.io.pci.target-rta-d@PCIFN;
570 event error.io.pci.target-ma-d@PCIFN;
571 event error.io.pci.nr-pw-u@PCIFN/PCIFN;
572 event error.io.pci.ta-pw-u@PCIFN/PCIFN;
573 event error.io.pci.retry-to-u@PCIFN/PCIFN;
574 event error.io.pcix.scpe-u@PCIFN/PCIFN;
575 event error.io.pcix.source-scpe-u@PCIFN;
576 event error.io.pcix.spl-comp-ma-u@PCIFN/PCIFN;
577 event error.io.pcix.spl-comp-ta-u@PCIFN/PCIFN;
578 event error.io.pci.ma-u@PCIFN/PCIFN;
580 event ereport.io.pci.sec-ma@PCIFN{within(5s)};
581 event ereport.io.pci.sec-sta@PCIFN{within(5s)};
582 event ereport.io.pci.sec-rta@PCIFN{within(5s)};
583 event ereport.io.pci.sec-mdpe@PCIFN{within(5s)};
584 event ereport.io.pci.sec-dpe@PCIFN{within(5s)};
585 event ereport.io.pci.sec-rserr@PCIFN{within(5s)};
586 event ereport.io.pci.dto@PCIFN{within(5s)};
587 event ereport.io.pcix.sec-spl-dis@PCIFN{within(5s)};
588 event ereport.io.pcix.spl-dis@PCIFN{within(5s)};
591 * SERR# can propagate upstream and may be seen by other devices on the bus
593 prop error.io.pci.serr-u@pcibus/pcidev[fromdev]/pcifn (0)->
594 ereport.io.pci.sserr@pcibus/pcidev<todev>/pcifn<> {todev!=fromdev};
596 prop error.io.pci.serr-u@PCIFN { IS_BDG } (1)->
597 ereport.io.pci.sserr@PCIFN;
599 prop error.io.pci.serr-u@PCIFN/PCIFN (2)->
600 ereport.io.pci.sec-rserr@PCIFN,
601 error.io.pci.serr-u@PCIFN;
604 * PERR# can propagate upstream for delayed writes. For posted writes
605 * it turns into an SERR#.
607 prop error.io.pci.perr-dw-u@PCIFN/PCIFN (2)->
608 ereport.io.pci.sec-mdpe@PCIFN,
609 error.io.pci.perr-dw-u@PCIFN;
611 prop error.io.pci.perr-pw-u@PCIFN/PCIFN (2)->
612 ereport.io.pci.sec-mdpe@PCIFN,
613 error.io.pci.serr-u@PCIFN;
616 * PERR# can propagate downstream (only for downstream dw parity error)
618 prop error.io.pci.perr-d@PCIFN { IS_LEAF } (0)->
619 ereport.io.pci.mdpe@PCIFN;
621 prop error.io.pci.perr-d@PCIFN { IS_BDG } (1)->
622 ereport.io.pci.mdpe@PCIFN;
624 prop error.io.pci.perr-d@PCIFN (1)->
625 error.io.pci.perr-d@PCIFN/PCIFNHZ;
628 * downstream target ereports are for any descendant device
630 * A hostbridge driver may generate "target-" ereports when knowledge of the
631 * physical address associated with a fault allows the target device to be
632 * determined. This is not a requirement of the Diagnosis Engine, but can be
633 * valuable when available.
635 prop error.io.pci.target-mdpe-d@PCIFN (0)->
636 ereport.io.pci.target-mdpe@PCIFN;
638 prop error.io.pci.target-mdpe-d@PCIFN (1)->
639 error.io.pci.target-mdpe-d@PCIFN/PCIFNHZ;
641 prop error.io.pci.target-rta-d@PCIFN (0)->
642 ereport.io.pci.target-rta@PCIFN;
644 prop error.io.pci.target-rta-d@PCIFN (1)->
645 error.io.pci.target-rta-d@PCIFN/PCIFNHZ;
647 prop error.io.pci.target-ma-d@PCIFN (0)->
648 ereport.io.pci.target-ma@PCIFN;
650 prop error.io.pci.target-ma-d@PCIFN (1)->
651 error.io.pci.target-ma-d@PCIFN/PCIFNHZ;
654 * target aborts propagate upstream
656 prop error.io.pci.ta-u@PCIFN { IS_BDG } (1)->
657 ereport.io.pci.sta@PCIFN;
659 prop error.io.pci.ta-u@PCIFN { IS_LEAF } (0)->
660 ereport.io.pci.sta@PCIFN;
662 prop error.io.pci.ta-u@PCIFN/PCIFN (2)->
663 ereport.io.pci.sec-rta@PCIFN,
664 error.io.pci.ta-u@PCIFN;
667 * bad data (ie invalid but not an ape or dpe) can propagate downstream,
668 * and at some point may result in a target or master abort
670 prop error.io.pci.badreq-pw-d@PCIFN (1)->
671 error.io.pci.badreq-pw-d@PCIFN/PCIFNHZ,
672 error.io.pci.nr-pw-u@PCIFN,
673 error.io.pci.ta-pw-u@PCIFN;
675 prop error.io.pci.badreq-pw-d@PCIFN { IS_LEAF } (0)->
676 error.io.pci.nr-pw-u@PCIFN,
677 error.io.pci.ta-pw-u@PCIFN;
679 prop error.io.pci.badreq-drw-d@PCIFN (1)->
680 error.io.pci.badreq-drw-d@PCIFN/PCIFNHZ,
681 error.io.pci.nr-drw-u@PCIFN,
682 error.io.pci.ta-drw-u@PCIFN;
684 prop error.io.pci.badreq-drw-d@PCIFN { IS_LEAF } (0)->
685 error.io.pci.nr-drw-u@PCIFN,
686 error.io.pci.ta-drw-u@PCIFN;
688 prop error.io.pci.nr-pw-u@PCIFN/PCIFN (2)->
689 ereport.io.pci.sec-ma@PCIFN,
690 error.io.pci.serr-u@PCIFN;
692 prop error.io.pci.ta-pw-u@PCIFN { IS_LEAF } (0)->
693 ereport.io.pci.sta@PCIFN;
695 prop error.io.pci.ta-pw-u@PCIFN { IS_BDG } (1)->
696 ereport.io.pci.sta@PCIFN;
698 prop error.io.pci.ta-pw-u@PCIFN/PCIFN (2)->
699 ereport.io.pci.sec-rta@PCIFN,
700 error.io.pci.serr-u@PCIFN;
702 prop error.io.pci.nr-drw-u@PCIFN (1)->
703 error.io.pci.ma-u@PCIFN;
705 prop error.io.pci.nr-drw-u@PCIFN (1)->
706 error.io.pci.target-rta-d@PCIFN,
707 error.io.pci.target-ma-d@PCIFN;
709 prop error.io.pci.ma-u@PCIFN/PCIFN (1)->
710 ereport.io.pci.sec-ma@PCIFN;
712 prop error.io.pci.ma-u@PCIFN/PCIFN (1)->
713 error.io.pci.ma-u@PCIFN,
714 error.io.pci.ta-u@PCIFN;
716 prop error.io.pci.ta-drw-u@PCIFN (1)->
717 error.io.pci.ta-u@PCIFN;
719 prop error.io.pci.ta-drw-u@PCIFN (1)->
720 error.io.pci.target-rta-d@PCIFN;
723 * bad data (ie invalid but not an ape or dpe) can propagate upstream,
724 * and at some point may result in a target or master abort
726 prop error.io.pci.badreq-pw-u@PCIFN/PCIFN (1)->
727 error.io.pci.badreq-pw-u@PCIFN,
728 error.io.pci.nr-pw-d@PCIFN/PCIFN,
729 error.io.pci.ta-pw-d@PCIFN/PCIFN;
731 prop error.io.pci.badreq-pw-u@PCIFN (0)->
732 error.io.pci.nr-pw-d@PCIFN,
733 error.io.pci.ta-pw-d@PCIFN;
735 prop error.io.pci.nr-pw-d@PCIFN { IS_LEAF } (0)->
736 ereport.io.pci.ma@PCIFN;
738 prop error.io.pci.nr-pw-d@PCIFN { IS_BDG } (2)->
739 ereport.io.pci.ma@PCIFN,
740 error.io.pci.serr-u@PCIFN;
742 prop error.io.pci.ta-pw-d@PCIFN/PCIFN (1)->
743 ereport.io.pci.sec-sta@PCIFN;
745 prop error.io.pci.ta-pw-d@PCIFN { IS_LEAF } (0)->
746 ereport.io.pci.rta@PCIFN;
748 prop error.io.pci.ta-pw-d@PCIFN { IS_BDG } (2)->
749 ereport.io.pci.rta@PCIFN,
750 error.io.pci.serr-u@PCIFN;
753 * for delayed writes we treat upstream badreq specially as rta always
754 * propagates back downstream to the leaf
756 prop error.io.pci.badreq-drw-u@PCIFN { IS_LEAF } (0)->
757 ereport.io.pci.rta@PCIFN,
758 ereport.io.pci.ma@PCIFN;
760 prop error.io.pci.badreq-drw-u@PCIFN/PCIFN (1)->
761 ereport.io.pci.ma@PCIFN,
762 ereport.io.pci.rta@PCIFN;
764 prop error.io.pci.badreq-drw-u@PCIFN/PCIFN (0)->
765 ereport.io.pci.sec-sta@PCIFN;
767 prop error.io.pci.badreq-drw-u@PCIFN/PCIFN (0)->
768 error.io.pci.badreq-drw-u@PCIFN;
770 prop error.io.pci.nr-drw-d@PCIFN { IS_LEAF } (0)->
771 ereport.io.pci.ma@PCIFN;
773 prop error.io.pci.nr-drw-d@PCIFN { IS_BDG } (1)->
774 ereport.io.pci.ma@PCIFN;
776 prop error.io.pci.nr-drw-d@PCIFN { IS_BDG } (0)->
777 ereport.io.pci.sec-sta@PCIFN;
779 prop error.io.pci.nr-drw-d@PCIFN (1)->
780 error.io.pci.ta-d@PCIFN/PCIFNHZ,
781 error.io.pci.nr-drw-d@PCIFN/PCIFNHZ;
783 prop error.io.pci.ta-drw-d@PCIFN/PCIFN (1)->
784 ereport.io.pci.sec-sta@PCIFN;
786 prop error.io.pci.ta-drw-d@PCIFN (1)->
787 error.io.pci.ta-d@PCIFN;
789 prop error.io.pci.ta-d@PCIFN { IS_LEAF } (0)->
790 ereport.io.pci.rta@PCIFN;
792 prop error.io.pci.ta-d@PCIFN { IS_BDG } (2)->
793 ereport.io.pci.sec-sta@PCIFN,
794 ereport.io.pci.rta@PCIFN;
796 prop error.io.pci.ta-d@PCIFN (1)->
797 error.io.pci.ta-d@PCIFN/PCIFNHZ;
800 * Request with address parity error must be detected by parent device
801 * and can optionally result in a target or master abort.
802 * It may also be detected by sibling devices on a bus
804 prop error.io.pci.ape-u@PCIFN/PCIFN (3)->
805 ereport.io.pci.sec-dpe@PCIFN,
806 ereport.io.pci.sec-rserr@PCIFN,
807 error.io.pci.serr-u@PCIFN;
809 prop error.io.pci.ape-u@PCIFN (0)->
810 error.io.pci.nr-drw-d@PCIFN,
811 error.io.pci.ta-drw-d@PCIFN,
812 error.io.pci.nr-pw-d@PCIFN,
813 error.io.pci.ta-pw-d@PCIFN;
815 prop error.io.pci.ape-u@PCIFN (0)->
816 ereport.io.pci.mdpe@PCIFN;
818 prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (0)->
819 ereport.io.pci.dpe@pcibus/pcidev<todev>/pcifn<> {fromdev != todev},
820 ereport.io.pci.sserr@pcibus/pcidev<todev>/pcifn<> {fromdev != todev};
822 prop error.io.pci.ape-u@PCIFN (1)->
823 error.io.pci.source-ape-u@PCIFN;
826 * If the bridge sees an upstream split completion error (pci-x only) it could
827 * result in a number of things
828 * - for various faults in the split completion (eg address parity error)
829 * we will respond with a target abort (which the child device will treat
830 * as a split completion ta)
831 * - for other faults we can't tell who send the split completion and so
832 * just drop the request (which the child device sees as a split
835 prop error.io.pcix.scpe-u@PCIFN/PCIFN (0)->
836 ereport.io.pci.sec-sta@PCIFN,
837 ereport.io.pci.sec-dpe@PCIFN,
838 ereport.io.pci.sec-rserr@PCIFN,
839 error.io.pci.serr-u@PCIFN;
841 prop error.io.pcix.scpe-u@PCIFN (1)->
842 error.io.pcix.spl-comp-ma-d@PCIFN,
843 error.io.pcix.spl-comp-ta-d@PCIFN;
845 prop error.io.pcix.spl-comp-ma-d@PCIFN (1)->
846 error.io.pci.serr-u@PCIFN;
848 prop error.io.pcix.spl-comp-ma-d@PCIFN { IS_LEAF } (0)->
849 ereport.io.pci.sserr@PCIFN,
850 ereport.io.pcix.spl-dis@PCIFN;
852 prop error.io.pcix.spl-comp-ma-d@PCIFN { IS_BDG } (2)->
853 ereport.io.pcix.spl-dis@PCIFN,
854 ereport.io.pci.ma@PCIFN;
856 prop error.io.pcix.spl-comp-ta-d@PCIFN (1)->
857 error.io.pci.serr-u@PCIFN;
859 prop error.io.pcix.spl-comp-ta-d@PCIFN { IS_LEAF } (0)->
860 ereport.io.pci.sserr@PCIFN,
861 ereport.io.pcix.spl-dis@PCIFN;
863 prop error.io.pcix.spl-comp-ta-d@PCIFN { IS_BDG } (2)->
864 ereport.io.pcix.spl-dis@PCIFN,
865 ereport.io.pci.rta@PCIFN;
867 prop error.io.pcix.scpe-u@PCIFN (1)->
868 error.io.pcix.source-scpe-u@PCIFN;
871 * request with address parity error must be detected by child device
872 * and can optionally result in a target or master abort.
874 prop error.io.pci.ape-d@PCIFN (1)->
875 error.io.pci.serr-u@PCIFN;
877 prop error.io.pci.ape-d@PCIFN { IS_LEAF } (0)->
878 error.io.pci.leaf-ape-d@PCIFN;
880 prop error.io.pci.leaf-ape-d@PCIFN { IS_LEAF } (2)->
881 ereport.io.pci.sserr@PCIFN,
882 ereport.io.pci.dpe@PCIFN;
884 prop error.io.pci.ape-d@PCIFN { IS_BDG } (1)->
885 ereport.io.pci.dpe@PCIFN;
887 prop error.io.pci.ape-d@PCIFN (0)->
888 error.io.pci.ta-pw-u@PCIFN,
889 error.io.pci.ta-drw-u@PCIFN,
890 error.io.pci.nr-pw-u@PCIFN,
891 error.io.pci.nr-drw-u@PCIFN;
894 * If the device sees a downstream split completion error (pci-x only) it could
895 * result in a number of things
896 * - for various faults in the split completion (eg address parity error)
897 * we will respond with a target abort (which the parent bridge will treat
898 * as a split completion ta)
899 * - for other faults we can't tell who send the split completion and so
900 * just drop the request (which the parent bridge sees as a split
903 prop error.io.pcix.scpe-d@PCIFN (0)->
904 ereport.io.pci.sta@PCIFN,
905 ereport.io.pci.dpe@PCIFN,
906 ereport.io.pci.sserr@PCIFN,
907 error.io.pci.serr-u@PCIFN;
909 prop error.io.pcix.scpe-d@PCIFN (1)->
910 error.io.pcix.spl-comp-ma-u@PCIFN,
911 error.io.pcix.spl-comp-ta-u@PCIFN;
913 prop error.io.pcix.spl-comp-ma-u@PCIFN/PCIFN (2)->
914 ereport.io.pcix.sec-spl-dis@PCIFN,
915 error.io.pci.serr-u@PCIFN;
917 prop error.io.pcix.spl-comp-ma-u@PCIFN/PCIFN (0)->
918 ereport.io.pci.sec-ma@PCIFN;
920 prop error.io.pcix.spl-comp-ta-u@PCIFN/PCIFN (3)->
921 ereport.io.pcix.sec-spl-dis@PCIFN,
922 error.io.pci.serr-u@PCIFN,
923 ereport.io.pci.sec-rta@PCIFN;
926 * request with data parity error can propagate upstream
928 * for PCI/X (but not PCI) the split write can optionally be forwarded across
929 * the bridge, maintaining bad parity/ecc
931 * if there is a dpe on a retry on a delayed write, we don't send another
932 * retry, and eventually the dto timer will expire
934 prop error.io.pci.dpdata-pw-u@PCIFN { IS_LEAF } (0)->
935 ereport.io.pci.mdpe@PCIFN;
937 prop error.io.pci.dpdata-pw-u@PCIFN/PCIFN (3)->
938 ereport.io.pci.mdpe@PCIFN,
939 ereport.io.pci.sec-dpe@PCIFN,
940 error.io.pci.dpdata-pw-u@PCIFN;
942 prop error.io.pci.dpdata-dw-u@PCIFN/PCIFN (1)->
943 ereport.io.pci.sec-dpe@PCIFN;
945 prop error.io.pci.dpdata-dw-u@PCIFN/PCIFN (0)->
946 ereport.io.pci.mdpe@PCIFN,
947 error.io.pci.dpdata-dw-u@PCIFN;
949 prop error.io.pci.dpdata-dw-u@PCIFN/PCIFN (0)->
950 error.io.pci.retry-to-u@PCIFN/PCIFN;
952 prop error.io.pci.dpdata-dr-u@PCIFN/PCIFN (3)->
953 ereport.io.pci.sec-dpe@PCIFN,
954 ereport.io.pci.sec-mdpe@PCIFN,
955 error.io.pci.dpdata-dr-u@PCIFN;
958 * Request with data parity error can propagate downstream. A hardened
959 * leaf driver should handle the error, but may or may not be able to
960 * avoid service impact. We handle to two cases separately. If there is
961 * service impact we will fail immediately, if not we will feed into a SERD
964 * for PCI/X (but not PCI) the split write can optionally be forwarded across
965 * the bridge, maintaining bad parity/ecc
967 * if there is a dpe on a retry on a delayed write, we don't send another
968 * retry, and eventually the dto timer will expire
970 prop error.io.pci.f-dpe-d@PCIFN (1)->
971 error.io.pci.dpdata-pw-d@PCIFN,
972 error.io.pci.dpdata-dw-d@PCIFN,
973 error.io.pci.dpdata-dr-d@PCIFN;
975 prop error.io.pci.f-dpe-d@PCIFN (1)->
976 error.io.pci.f-source-dpdata-u@PCIFN;
978 prop error.io.pci.deg-dpe-d@PCIFN (1)->
979 error.io.pci.dpdata-pw-d@PCIFN,
980 error.io.pci.dpdata-dw-d@PCIFN,
981 error.io.pci.dpdata-dr-d@PCIFN;
983 prop error.io.pci.deg-dpe-d@PCIFN (1)->
984 error.io.pci.deg-source-dpdata-u@PCIFN;
986 prop error.io.pci.nf-dpe-d@PCIFN (1)->
987 error.io.pci.dpdata-pw-d@PCIFN,
988 error.io.pci.dpdata-dw-d@PCIFN,
989 error.io.pci.dpdata-dr-d@PCIFN;
991 prop error.io.pci.nf-dpe-d@PCIFN (1)->
992 error.io.pci.nf-source-dpdata-u@PCIFN;
994 prop error.io.pci.dpdata-pw-d@PCIFN (2)->
995 error.io.pci.perr-pw-u@PCIFN,
996 error.io.pci.dpdata-pw-fwd-d@PCIFN;
998 prop error.io.pci.dpdata-pw-fwd-d@PCIFN { IS_LEAF } (1)->
999 error.io.pci.source-perr-u@PCIFN;
1001 prop error.io.pci.dpdata-pw-fwd-d@PCIFN { IS_LEAF } (0)->
1002 ereport.io.pci.dpe@PCIFN;
1004 prop error.io.pci.dpdata-pw-fwd-d@PCIFN { IS_BDG } (2)->
1005 ereport.io.pci.dpe@PCIFN,
1006 ereport.io.pci.sec-mdpe@PCIFN;
1008 prop error.io.pci.dpdata-pw-fwd-d@PCIFN (1)->
1009 error.io.pci.dpdata-pw-fwd-d@PCIFN/PCIFNHZ;
1011 prop error.io.pci.dpdata-dw-d@PCIFN (3)->
1012 error.io.pci.perr-dw-u@PCIFN,
1013 error.io.pci.target-mdpe-d@PCIFN,
1014 error.io.pci.dpdata-dw-fwd-d@PCIFN;
1016 prop error.io.pci.dpdata-dw-d@PCIFN { IS_BDG } (1)->
1017 ereport.io.pci.dpe@PCIFN;
1019 prop error.io.pci.dpdata-dw-d@PCIFN { IS_BDG } (0)->
1020 error.io.pci.retry-to-d@PCIFN;
1022 prop error.io.pci.dpdata-dw-fwd-d@PCIFN { IS_LEAF } (1)->
1023 error.io.pci.source-perr-u@PCIFN;
1025 prop error.io.pci.dpdata-dw-fwd-d@PCIFN { IS_LEAF } (0)->
1026 ereport.io.pci.dpe@PCIFN;
1028 prop error.io.pci.dpdata-dw-fwd-d@PCIFN { IS_BDG } (0)->
1029 ereport.io.pci.dpe@PCIFN,
1030 ereport.io.pci.sec-mdpe@PCIFN;
1032 prop error.io.pci.dpdata-dw-fwd-d@PCIFN (0)->
1033 error.io.pci.dpdata-dw-fwd-d@PCIFN/PCIFNHZ;
1035 prop error.io.pci.dpdata-dr-d@PCIFN (2)->
1036 error.io.pci.dpdata-dr-fwd-d@PCIFN,
1037 error.io.pci.perr-dr-u@PCIFN;
1039 prop error.io.pci.dpdata-dr-fwd-d@PCIFN { IS_LEAF } (1)->
1040 error.io.pci.source-perr-u@PCIFN;
1042 prop error.io.pci.dpdata-dr-fwd-d@PCIFN { IS_LEAF } (0)->
1043 ereport.io.pci.dpe@PCIFN,
1044 ereport.io.pci.mdpe@PCIFN;
1046 prop error.io.pci.dpdata-dr-fwd-d@PCIFN { IS_BDG } (2)->
1047 ereport.io.pci.dpe@PCIFN,
1048 ereport.io.pci.mdpe@PCIFN;
1050 prop error.io.pci.dpdata-dr-fwd-d@PCIFN (1)->
1051 error.io.pci.dpdata-dr-fwd-d@PCIFN/PCIFNHZ;
1054 * delayed read/write retry timeout can cause dto at a bridge
1056 prop error.io.pci.retry-to-u@PCIFN/PCIFN (0)->
1057 error.io.pci.retry-to-u@PCIFN;
1059 prop error.io.pci.retry-to-u@PCIFN/PCIFN (1)->
1060 ereport.io.pci.dto@PCIFN;
1062 prop error.io.pci.retry-to-u@PCIFN/PCIFN (0)->
1063 error.io.pci.serr-u@PCIFN;
1065 prop error.io.pci.retry-to-d@PCIFN (0)->
1066 error.io.pci.retry-to-d@PCIFN/PCIFN;
1068 prop error.io.pci.retry-to-d@PCIFN { IS_BDG } (1)->
1069 ereport.io.pci.dto@PCIFN;
1071 prop error.io.pci.retry-to-d@PCIFN { IS_BDG } (0)->
1072 error.io.pci.serr-u@PCIFN;
1075 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1076 * source- propagations.
1077 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1079 event error.io.pci.source-ape-u@PCIFN/PCIFN;
1080 event error.io.pcix.source-scpe-u@PCIFN/PCIFN;
1082 prop error.io.pci.source-ape-u@PCIFN (1)->
1083 error.io.pci.source-ape-u@PCIFN/PCIFNHZ;
1085 prop error.io.pcix.source-scpe-u@PCIFN (1)->
1086 error.io.pcix.source-scpe-u@PCIFN/PCIFNHZ;
1089 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1090 * Handling of leaf driver detected internal errors. Use serd engine if
1091 * no service impact - otherwise fail immediately
1092 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1094 event ereport.io.device.inval_state@PCIFN{within(5s)};
1095 event ereport.io.device.no_response@PCIFN{within(5s)};
1096 event ereport.io.device.stall@PCIFN{within(5s)};
1097 event ereport.io.device.badint_limit@PCIFN{within(5s)};
1098 event ereport.io.device.intern_corr@PCIFN{within(5s)};
1099 event ereport.io.device.intern_uncorr@PCIFN{within(5s)};
1101 prop error.io.service.restored@PCIFN { IS_LEAF } (1)->
1102 ereport.io.service.lost@PCIFN,
1103 ereport.io.service.degraded@PCIFN;
1105 prop error.io.service.restored@PCIFN { IS_LEAF } (1)->
1106 ereport.io.service.restored@PCIFN;
1108 prop error.io.device.f-device@PCIFN { IS_LEAF } (1)->
1109 ereport.io.device.inval_state@PCIFN,
1110 ereport.io.device.no_response@PCIFN,
1111 ereport.io.device.stall@PCIFN,
1112 ereport.io.device.badint_limit@PCIFN,
1113 ereport.io.device.intern_corr@PCIFN,
1114 ereport.io.device.intern_uncorr@PCIFN;
1116 prop error.io.device.f-device@PCIFN { IS_LEAF } (1)->
1117 ereport.io.service.lost@PCIFN;
1119 prop error.io.device.deg-device@PCIFN { IS_LEAF } (1)->
1120 ereport.io.device.inval_state@PCIFN,
1121 ereport.io.device.no_response@PCIFN,
1122 ereport.io.device.stall@PCIFN,
1123 ereport.io.device.badint_limit@PCIFN,
1124 ereport.io.device.intern_corr@PCIFN,
1125 ereport.io.device.intern_uncorr@PCIFN;
1127 prop error.io.device.deg-device@PCIFN { IS_LEAF } (1)->
1128 ereport.io.service.degraded@PCIFN;
1130 prop error.io.device.nf-device@PCIFN { IS_LEAF } (1)->
1131 ereport.io.device.inval_state@PCIFN,
1132 ereport.io.device.no_response@PCIFN,
1133 ereport.io.device.stall@PCIFN,
1134 ereport.io.device.badint_limit@PCIFN,
1135 ereport.io.device.intern_corr@PCIFN,
1136 ereport.io.device.intern_uncorr@PCIFN;
1138 prop error.io.device.nf-device@PCIFN { IS_LEAF } (1)->
1139 ereport.io.service.unaffected@PCIFN,
1140 error.io.service.restored@PCIFN;
1143 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1144 * stub unused ereports
1145 * - ignore rx-spl as we can't tell what message it was (and we should have
1146 * diagnosed the problem anyway from standard pci ereports)
1147 * - ignore sec-spl-or/sec-spl-dly as these aren't really faults (tuning info)
1148 * - ignore unex-spl/sec-unex-spl
1149 * - ignore ecc.ue ereports (we get everything we need from dpe/mdpe)
1150 * - ignore ecc.ce ereports for now (could do serd on these)
1151 * - ignore nr ereport
1152 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1155 event ereport.io.pci.nr@PCIFN{within(5s)};
1156 event ereport.io.pcix.unex-spl@PCIFN{within(5s)};
1157 event ereport.io.pcix.rx-spl@PCIFN{within(5s)};
1158 event ereport.io.pcix.sec-unex-spl@PCIFN{within(5s)};
1159 event ereport.io.pcix.sec-spl-or@PCIFN{within(5s)};
1160 event ereport.io.pcix.sec-spl-dly@PCIFN{within(5s)};
1161 event ereport.io.pcix.ecc.ce-addr@PCIFN{within(5s)};
1162 event ereport.io.pcix.ecc.ce-attr@PCIFN{within(5s)};
1163 event ereport.io.pcix.ecc.ce-data@PCIFN{within(5s)};
1164 event ereport.io.pcix.ecc.ue-addr@PCIFN{within(5s)};
1165 event ereport.io.pcix.ecc.ue-attr@PCIFN{within(5s)};
1166 event ereport.io.pcix.ecc.ue-data@PCIFN{within(5s)};
1167 event ereport.io.pcix.s-ce@PCIFN{within(5s)};
1168 event ereport.io.pcix.s-ue@PCIFN{within(5s)};
1169 event ereport.io.pcix.sec-ecc.ce-addr@PCIFN{within(5s)};
1170 event ereport.io.pcix.sec-ecc.ce-attr@PCIFN{within(5s)};
1171 event ereport.io.pcix.sec-ecc.ce-data@PCIFN{within(5s)};
1172 event ereport.io.pcix.sec-ecc.ue-addr@PCIFN{within(5s)};
1173 event ereport.io.pcix.sec-ecc.ue-attr@PCIFN{within(5s)};
1174 event ereport.io.pcix.sec-ecc.ue-data@PCIFN{within(5s)};
1175 event ereport.io.pcix.sec-s-ce@PCIFN{within(5s)};
1176 event ereport.io.pcix.sec-s-ue@PCIFN{within(5s)};
1178 event upset.io.pcix.discard@PCIFN;
1180 prop upset.io.pcix.discard@PCIFN (1)->
1181 ereport.io.pci.nr@PCIFN,
1182 ereport.io.pcix.rx-spl@PCIFN,
1183 ereport.io.pcix.unex-spl@PCIFN,
1184 ereport.io.pcix.sec-unex-spl@PCIFN,
1185 ereport.io.pcix.sec-spl-or@PCIFN,
1186 ereport.io.pcix.sec-spl-dly@PCIFN,
1187 ereport.io.pcix.ecc.ce-addr@PCIFN,
1188 ereport.io.pcix.ecc.ce-attr@PCIFN,
1189 ereport.io.pcix.ecc.ce-data@PCIFN,
1190 ereport.io.pcix.ecc.ue-addr@PCIFN,
1191 ereport.io.pcix.ecc.ue-attr@PCIFN,
1192 ereport.io.pcix.ecc.ue-data@PCIFN,
1193 ereport.io.pcix.s-ce@PCIFN,
1194 ereport.io.pcix.s-ue@PCIFN,
1195 ereport.io.pcix.sec-ecc.ce-addr@PCIFN,
1196 ereport.io.pcix.sec-ecc.ce-attr@PCIFN,
1197 ereport.io.pcix.sec-ecc.ce-data@PCIFN,
1198 ereport.io.pcix.sec-ecc.ue-addr@PCIFN,
1199 ereport.io.pcix.sec-ecc.ue-attr@PCIFN,
1200 ereport.io.pcix.sec-ecc.ue-data@PCIFN,
1201 ereport.io.pcix.sec-s-ce@PCIFN,
1202 ereport.io.pcix.sec-s-ue@PCIFN;