xref: /illumos-gate/usr/src/cmd/fm/eversholt/files/common/pciex.esc (revision b0daa853ddd4c48b6374b8ac0dca46629b225c39)
100d0963fSdilpreet/*
200d0963fSdilpreet * CDDL HEADER START
300d0963fSdilpreet *
400d0963fSdilpreet * The contents of this file are subject to the terms of the
500d0963fSdilpreet * Common Development and Distribution License (the "License").
600d0963fSdilpreet * You may not use this file except in compliance with the License.
700d0963fSdilpreet *
800d0963fSdilpreet * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
900d0963fSdilpreet * or http://www.opensolaris.org/os/licensing.
1000d0963fSdilpreet * See the License for the specific language governing permissions
1100d0963fSdilpreet * and limitations under the License.
1200d0963fSdilpreet *
1300d0963fSdilpreet * When distributing Covered Code, include this CDDL HEADER in each
1400d0963fSdilpreet * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1500d0963fSdilpreet * If applicable, add the following below this CDDL HEADER, with the
1600d0963fSdilpreet * fields enclosed by brackets "[]" replaced with your own identifying
1700d0963fSdilpreet * information: Portions Copyright [yyyy] [name of copyright owner]
1800d0963fSdilpreet *
1900d0963fSdilpreet * CDDL HEADER END
2000d0963fSdilpreet */
2100d0963fSdilpreet/*
228cffa125SStephen Hanson * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
2300d0963fSdilpreet * Use is subject to license terms.
2400d0963fSdilpreet */
2500d0963fSdilpreet
2600d0963fSdilpreet#pragma dictionary "PCIEX"
2700d0963fSdilpreet
280eb822a1Scindi#include <fm/topo_hc.h>
290eb822a1Scindi
3000d0963fSdilpreet/*
3100d0963fSdilpreet * FIT rates - assume leaf devices are somewhat less reliable than
3200d0963fSdilpreet * root complexes, switches and bridges
3300d0963fSdilpreet */
3400d0963fSdilpreet#define PCIEX_RC_FIT 500
3500d0963fSdilpreet#define PCIEX_SW_FIT 500
3600d0963fSdilpreet#define PCIEX_BDG_FIT 500
3700d0963fSdilpreet#define PCIEX_DEV_FIT 1000
3800d0963fSdilpreet#define PCIEX_RC_INV_FIT 500
3900d0963fSdilpreet#define PCIEX_DEV_INV_FIT 1000
4000d0963fSdilpreet#define PCIEX_RC_NR_FIT 500
4100d0963fSdilpreet#define PCIEX_SW_NR_FIT 500
4200d0963fSdilpreet#define PCIEX_BDG_NR_FIT 500
4300d0963fSdilpreet#define PCIEX_DEV_NR_FIT 1000
4400d0963fSdilpreet#define PCIEX_BUS_FIT 500
4500d0963fSdilpreet#define PCIEX_BUS_NR_FIT 500
4600d0963fSdilpreet
4700d0963fSdilpreet/*
4800d0963fSdilpreet * SERD parameters.
4900d0963fSdilpreet *
5000d0963fSdilpreet * PCI Express correctable link errors are automatically handled by the
5100d0963fSdilpreet * hardware, so have relatively little impact and we can allow quite a
5200d0963fSdilpreet * high frequency. We will also be quite conservative about nonfatal internal
5300d0963fSdilpreet * errors reported by the driver.
5400d0963fSdilpreet *
5500d0963fSdilpreet * Nonfatal dpe errors (ptlp/ecrc errors) have to be recovered by the hardened
5600d0963fSdilpreet * driver which may cause intermittant performance/responsiveness problems, so
5700d0963fSdilpreet * we have tighter serd parameters for these. These are most likely errors in
5800d0963fSdilpreet * buffers/caches within devices and bridges, so use similar rates to cpu
5900d0963fSdilpreet * data cache parity errors.
6000d0963fSdilpreet */
6100d0963fSdilpreet#define CORRLINK_COUNT 6
6200d0963fSdilpreet#define CORRLINK_TIME 2h
636e1fa242SStephen Hanson#define BTLP_COUNT 6
646e1fa242SStephen Hanson#define BTLP_TIME 2h
656e1fa242SStephen Hanson#define BDLLP_COUNT 6
666e1fa242SStephen Hanson#define BDLLP_TIME 2h
676e1fa242SStephen Hanson#define RTO_COUNT 6
686e1fa242SStephen Hanson#define RTO_TIME 2h
696e1fa242SStephen Hanson#define RNR_COUNT 6
706e1fa242SStephen Hanson#define RNR_TIME 2h
716e1fa242SStephen Hanson#define RE_COUNT 6
726e1fa242SStephen Hanson#define RE_TIME 2h
73b7d3956bSstephh#define NONFATAL_DPE_COUNT 3
74b7d3956bSstephh#define NONFATAL_DPE_TIME 168h
7500d0963fSdilpreet
7600d0963fSdilpreet/*
7700d0963fSdilpreet * if the source-id payload is valid, then check it matches
7800d0963fSdilpreet */
7900d0963fSdilpreet#define SOURCE_ID_MATCHES_BDF \
80e5ba14ffSstephh	(!payloadprop_defined("source-valid") || \
81e5ba14ffSstephh	payloadprop("source-valid") == 0 || \
8200d0963fSdilpreet	payloadprop("source-id") == ((b << 8) | (d << 3) | f))
8300d0963fSdilpreet
8400d0963fSdilpreet#define SOURCE_ID_MATCHES_OWN_BDF \
85e5ba14ffSstephh	(payloadprop_defined("source-valid") && \
86e5ba14ffSstephh	payloadprop("source-valid") == 1 && \
87b7d3956bSstephh	payloadprop("source-id") == (confprop(pciexrc, TOPO_PCI_BDF) + 0))
8800d0963fSdilpreet
8900d0963fSdilpreet/*
9000d0963fSdilpreet * Other useful macros. These use the EXCAP property (PCI Express Capabilities
9100d0963fSdilpreet * register) to find the type for PCI Express devices, and the CLASS-CODE
9200d0963fSdilpreet * property (PCI Class Code register) for to find the type of PCI devices behind
9300d0963fSdilpreet * a PCI Express-PCI bridge - note that 60400 and 60401 are defined as PCI-PCI
9400d0963fSdilpreet * bridges, everything else is consider a PCI leaf device.
9500d0963fSdilpreet */
96b7d3956bSstephh#define	PCIEXFN		pciexbus/pciexdev/pciexfn
97b7d3956bSstephh#define	PCIEXFNHZ	pciexbus<>/pciexdev<>/pciexfn<>
98b7d3956bSstephh#define	PCIEXFN1	pciexbus[b]/pciexdev[d]/pciexfn[f]
99b7d3956bSstephh#define	PCIFN		pcibus/pcidev/pcifn
100b7d3956bSstephh#define	PCIFNHZ		pcibus<>/pcidev<>/pcifn<>
101b7d3956bSstephh#define	PCIFN1		pcibus[b]/pcidev[d]/pcifn[f]
102b7d3956bSstephh#define IS_LF(f) 	(confprop(f, TOPO_PCI_EXCAP) == "pciexdev")
103b7d3956bSstephh#define IS_BG(f) 	(confprop(f, TOPO_PCI_EXCAP) == "pcibus")
104b7d3956bSstephh#define IS_SD(f)	(confprop(f, TOPO_PCI_EXCAP) == "pciexswd")
105b7d3956bSstephh#define IS_SU(f)	(confprop(f, TOPO_PCI_EXCAP) == "pciexswu")
106b7d3956bSstephh#define	IS_PCI_LF(f)	(confprop_defined(f, TOPO_PCI_CLASS) && \
107b7d3956bSstephh			confprop(f, TOPO_PCI_CLASS) != "60400" && \
108b7d3956bSstephh			confprop(f, TOPO_PCI_CLASS) != "60401")
10900d0963fSdilpreet
11000d0963fSdilpreet/*
11100d0963fSdilpreet * define faults
11200d0963fSdilpreet */
11305dd151bSStephen Hansonevent fault.io.pciex.fw_corrupt@PCIEXFN, FITrate=PCIEX_DEV_FIT, retire=0;
11405dd151bSStephen Hansonevent fault.io.pciex.fw_mismatch@PCIEXFN, FITrate=PCIEX_DEV_FIT, retire=0;
11505dd151bSStephen Hanson
116b7d3956bSstephhevent fault.io.pciex.device-interr@PCIEXFN, FITrate=PCIEX_DEV_FIT;
11700d0963fSdilpreet
118b7d3956bSstephhevent fault.io.pciex.device-interr-deg@PCIEXFN, FITrate=PCIEX_DEV_FIT, retire=0;
11900d0963fSdilpreet
120b7d3956bSstephhengine serd.io.pciex.flt-nf@PCIEXFN, N=NONFATAL_DPE_COUNT, T=NONFATAL_DPE_TIME;
121b7d3956bSstephhevent fault.io.pciex.device-interr-unaf@PCIEXFN, FITrate=PCIEX_DEV_FIT,
122b7d3956bSstephh	engine=serd.io.pciex.flt-nf@PCIEXFN;
12300d0963fSdilpreet
1248cffa125SStephen Hansonengine serd.io.device.nonfatal@PCIEXFN, N=CORRLINK_COUNT, T=CORRLINK_TIME;
125b7d3956bSstephhevent fault.io.pciex.device-interr-corr@PCIEXFN, FITrate=PCIEX_DEV_FIT,
1268cffa125SStephen Hanson	engine=serd.io.device.nonfatal@PCIEXFN;
1276e1fa242SStephen Hansonengine serd.io.device.nonfatal@PCIEXFN/PCIEXFN,
1286e1fa242SStephen Hanson	N=CORRLINK_COUNT, T=CORRLINK_TIME;
1296e1fa242SStephen Hansonevent fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN, FITrate=PCIEX_DEV_FIT,
1306e1fa242SStephen Hanson	engine=serd.io.device.nonfatal@PCIEXFN/PCIEXFN;
1316e1fa242SStephen Hansonengine serd.io.device.nonfatal@pciexrc/PCIEXFN,
1326e1fa242SStephen Hanson	N=CORRLINK_COUNT, T=CORRLINK_TIME;
1336e1fa242SStephen Hansonevent fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN, FITrate=PCIEX_DEV_FIT,
1346e1fa242SStephen Hanson	engine=serd.io.device.nonfatal@pciexrc/PCIEXFN;
13500d0963fSdilpreet
136b7d3956bSstephhevent fault.io.pciex.device-interr@pciexrc, FITrate=PCIEX_RC_FIT;
13700d0963fSdilpreet
138b7d3956bSstephhevent fault.io.pciex.device-interr-deg@pciexrc, FITrate=PCIEX_RC_FIT, retire=0;
13900d0963fSdilpreet
140b7d3956bSstephhengine serd.io.pciex.flt-nf@pciexrc, N=NONFATAL_DPE_COUNT, T=NONFATAL_DPE_TIME;
141b7d3956bSstephhevent fault.io.pciex.device-interr-unaf@pciexrc, FITrate=PCIEX_RC_FIT,
142b7d3956bSstephh	engine=serd.io.pciex.flt-nf@pciexrc;
14300d0963fSdilpreet
1448cffa125SStephen Hansonengine serd.io.device.nonfatal@pciexrc, N=CORRLINK_COUNT, T=CORRLINK_TIME;
145b7d3956bSstephhevent fault.io.pciex.device-interr-corr@pciexrc, FITrate=PCIEX_RC_FIT,
1468cffa125SStephen Hanson	engine=serd.io.device.nonfatal@pciexrc;
14700d0963fSdilpreet
148b7d3956bSstephhevent fault.io.pciex.device-invreq@PCIEXFN, FITrate=PCIEX_DEV_INV_FIT;
14900d0963fSdilpreet
150b7d3956bSstephhevent fault.io.pciex.device-invreq@pciexrc, FITrate=PCIEX_RC_FIT;
15100d0963fSdilpreet
152b7d3956bSstephhevent fault.io.pciex.device-noresp@PCIEXFN, FITrate=PCIEX_DEV_NR_FIT;
15300d0963fSdilpreet
154b7d3956bSstephhevent fault.io.pciex.device-noresp@pciexrc, FITrate=PCIEX_RC_NR_FIT;
15500d0963fSdilpreet
156b7d3956bSstephhevent fault.io.pciex.bus-noresp@PCIEXFN, FITrate=PCIEX_BUS_NR_FIT;
15700d0963fSdilpreet
158b7d3956bSstephhevent fault.io.pciex.bus-linkerr@PCIEXFN, FITrate=PCIEX_BUS_FIT;
15927134bdaSstephh
1606e1fa242SStephen Hansonengine serd.io.pciex.corrlink-bus@pciexrc/PCIEXFN,
1616e1fa242SStephen Hanson	N=CORRLINK_COUNT, T=CORRLINK_TIME;
1626e1fa242SStephen Hansonevent fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN, FITrate=PCIEX_BUS_FIT,
1636e1fa242SStephen Hanson	engine=serd.io.pciex.corrlink-bus@pciexrc/PCIEXFN;
1646e1fa242SStephen Hansonengine serd.io.pciex.corrlink-bus@PCIEXFN/PCIEXFN,
1656e1fa242SStephen Hanson	N=CORRLINK_COUNT, T=CORRLINK_TIME;
1666e1fa242SStephen Hansonevent fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN, FITrate=PCIEX_BUS_FIT,
1676e1fa242SStephen Hanson	engine=serd.io.pciex.corrlink-bus@PCIEXFN/PCIEXFN;
16827134bdaSstephh
16900d0963fSdilpreet/*
17000d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
17100d0963fSdilpreet * Handling of leaf driver detected internal errors. Use serd engine if
17200d0963fSdilpreet * no service impact - otherwise fail immediately
17300d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
17400d0963fSdilpreet */
175b7d3956bSstephhevent ereport.io.device.inval_state@PCIEXFN{within(5s)};
176b7d3956bSstephhevent ereport.io.device.no_response@PCIEXFN{within(5s)};
177b7d3956bSstephhevent ereport.io.device.stall@PCIEXFN{within(5s)};
178b7d3956bSstephhevent ereport.io.device.badint_limit@PCIEXFN{within(5s)};
179b7d3956bSstephhevent ereport.io.device.intern_corr@PCIEXFN{within(5s)};
180b7d3956bSstephhevent ereport.io.device.intern_uncorr@PCIEXFN{within(5s)};
181b7d3956bSstephhevent ereport.io.service.lost@PCIEXFN{within(5s)};
182b7d3956bSstephhevent ereport.io.service.degraded@PCIEXFN{within(5s)};
183b7d3956bSstephhevent ereport.io.service.unaffected@PCIEXFN{within(5s)};
184b7d3956bSstephhevent ereport.io.service.restored@PCIEXFN{within(30s)};
185b7d3956bSstephhevent ereport.io.service.lost@PCIFN{within(5s)};
186b7d3956bSstephhevent ereport.io.service.degraded@PCIFN{within(5s)};
187b7d3956bSstephhevent ereport.io.service.unaffected@PCIFN{within(5s)};
18800d0963fSdilpreet
189b7d3956bSstephhevent error.io.pciex.noimpact-d@PCIEXFN;
190b7d3956bSstephhevent error.io.pciex.degraded-d@PCIEXFN;
191b7d3956bSstephhevent error.io.pciex.lost-d@PCIEXFN;
192b7d3956bSstephhevent error.io.service.restored@PCIEXFN;
193b7d3956bSstephhevent error.io.service.restored@PCIFN;
194b7d3956bSstephhevent error.io.device.nf-device@PCIEXFN;
195b7d3956bSstephhevent error.io.device.deg-device@PCIEXFN;
196b7d3956bSstephhevent error.io.device.f-device@PCIEXFN;
19700d0963fSdilpreet
198b7d3956bSstephhprop error.io.device.f-device@PCIEXFN (1)->
199b7d3956bSstephh    ereport.io.device.inval_state@PCIEXFN,
200b7d3956bSstephh    ereport.io.device.no_response@PCIEXFN,
201b7d3956bSstephh    ereport.io.device.stall@PCIEXFN,
202b7d3956bSstephh    ereport.io.device.badint_limit@PCIEXFN,
203b7d3956bSstephh    ereport.io.device.intern_corr@PCIEXFN,
204b7d3956bSstephh    ereport.io.device.intern_uncorr@PCIEXFN;
20500d0963fSdilpreet
2068cffa125SStephen Hansonprop error.io.device.f-device@PCIEXFN (0)->
207b7d3956bSstephh    error.io.pciex.lost-d@PCIEXFN;
20800d0963fSdilpreet
209b7d3956bSstephhprop error.io.device.deg-device@PCIEXFN (1)->
210b7d3956bSstephh    ereport.io.device.inval_state@PCIEXFN,
211b7d3956bSstephh    ereport.io.device.no_response@PCIEXFN,
212b7d3956bSstephh    ereport.io.device.stall@PCIEXFN,
213b7d3956bSstephh    ereport.io.device.badint_limit@PCIEXFN,
214b7d3956bSstephh    ereport.io.device.intern_corr@PCIEXFN,
215b7d3956bSstephh    ereport.io.device.intern_uncorr@PCIEXFN;
21600d0963fSdilpreet
217b7d3956bSstephhprop error.io.device.deg-device@PCIEXFN (1)->
218b7d3956bSstephh    error.io.pciex.degraded-d@PCIEXFN;
21900d0963fSdilpreet
220b7d3956bSstephhprop error.io.device.nf-device@PCIEXFN (1)->
221b7d3956bSstephh    ereport.io.device.inval_state@PCIEXFN,
222b7d3956bSstephh    ereport.io.device.no_response@PCIEXFN,
223b7d3956bSstephh    ereport.io.device.stall@PCIEXFN,
224b7d3956bSstephh    ereport.io.device.badint_limit@PCIEXFN,
225b7d3956bSstephh    ereport.io.device.intern_corr@PCIEXFN,
226b7d3956bSstephh    ereport.io.device.intern_uncorr@PCIEXFN;
22700d0963fSdilpreet
228b7d3956bSstephhprop error.io.device.nf-device@PCIEXFN (1)->
229b7d3956bSstephh    error.io.pciex.noimpact-d@PCIEXFN;
23000d0963fSdilpreet
23100d0963fSdilpreet/*
232b7d3956bSstephh * handling of service impact ereports.
23300d0963fSdilpreet */
2348cffa125SStephen Hansonprop error.io.pciex.lost-d@PCIEXFN (1)->
23526733bfeSStephen Hanson    ereport.io.service.lost@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
23626733bfeSStephen Hanson    ereport.io.service.lost@PCIFNHZ { is_under(PCIEXFN, PCIFNHZ) };
23700d0963fSdilpreet
2388cffa125SStephen Hansonprop error.io.pciex.lost-d@PCIEXFN (0)->
23926733bfeSStephen Hanson    ereport.io.service.unaffected@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
24026733bfeSStephen Hanson    ereport.io.service.unaffected@PCIFNHZ { is_under(PCIEXFN, PCIFNHZ) },
24126733bfeSStephen Hanson    ereport.io.service.degraded@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
24226733bfeSStephen Hanson    ereport.io.service.degraded@PCIFNHZ { is_under(PCIEXFN, PCIFNHZ) };
2438cffa125SStephen Hanson
244b7d3956bSstephhprop error.io.pciex.degraded-d@PCIEXFN (1)->
24526733bfeSStephen Hanson    ereport.io.service.degraded@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
24626733bfeSStephen Hanson    ereport.io.service.degraded@PCIFNHZ { is_under(PCIEXFN, PCIFNHZ) };
24700d0963fSdilpreet
2488cffa125SStephen Hansonprop error.io.pciex.degraded-d@PCIEXFN (0)->
24926733bfeSStephen Hanson    ereport.io.service.unaffected@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
25026733bfeSStephen Hanson    ereport.io.service.unaffected@PCIFNHZ { is_under(PCIEXFN, PCIFNHZ) };
2518cffa125SStephen Hanson
252b7d3956bSstephhprop error.io.pciex.noimpact-d@PCIEXFN (1)->
25326733bfeSStephen Hanson    ereport.io.service.unaffected@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
25426733bfeSStephen Hanson    ereport.io.service.unaffected@PCIFNHZ { is_under(PCIEXFN, PCIFNHZ) },
25526733bfeSStephen Hanson    error.io.service.restored@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
25626733bfeSStephen Hanson    error.io.service.restored@PCIFNHZ { is_under(PCIEXFN, PCIFNHZ) };
25700d0963fSdilpreet
258b7d3956bSstephhprop error.io.service.restored@PCIEXFN (1)->
259b7d3956bSstephh    ereport.io.service.lost@PCIEXFN,
260b7d3956bSstephh    ereport.io.service.degraded@PCIEXFN;
26100d0963fSdilpreet
262b7d3956bSstephhprop error.io.service.restored@PCIEXFN (1)->
263b7d3956bSstephh    ereport.io.service.restored@PCIEXFN;
26400d0963fSdilpreet
26500d0963fSdilpreet/*
26600d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26700d0963fSdilpreet * A faulty PCI Express hostbridge (root complex) may cause:
26800d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26900d0963fSdilpreet * - nr-d:		the device not to respond to a valid upstream request
27000d0963fSdilpreet * - ca-d:		the device to completer abort a valid upstream request
27100d0963fSdilpreet * - mtlp-d:		a malformed tlp to be transmitted downstream
27200d0963fSdilpreet * - badreq-d:		a bad downstream request - not CRC error (may cause
27300d0963fSdilpreet *			completer to respond with ur or ca)
27400d0963fSdilpreet * - ecrcreq-d:		TLP with end-to-end CRC error transmitted downstream
27500d0963fSdilpreet * - ecrccomp-d:	TLP with end-to-end CRC error transmitted downstream
27600d0963fSdilpreet * - poisreq-d:		poisoned request transmitted downstream
27700d0963fSdilpreet * - poiscomp-d:	poisoned completion transmitted downstream
27800d0963fSdilpreet * - corrlink:		correctable link or physical level error
27900d0963fSdilpreet * - fatlink:		fatal link or physical level error
28000d0963fSdilpreet */
281b7d3956bSstephhevent error.io.pciex.nr-d@pciexrc/PCIEXFN;
282b7d3956bSstephhevent error.io.pciex.ca-d@pciexrc/PCIEXFN;
283b7d3956bSstephhevent error.io.pciex.mtlp-d@pciexrc/PCIEXFN;
284b7d3956bSstephhevent error.io.pciex.fatlink@pciexrc/PCIEXFN;
285b7d3956bSstephhevent error.io.pciex.badreq-d@pciexrc/PCIEXFN;
286b7d3956bSstephhevent error.io.pciex.nf-poisecrc-d@pciexrc/PCIEXFN;
287b7d3956bSstephhevent error.io.pciex.f-poisecrc-d@pciexrc/PCIEXFN;
288b7d3956bSstephhevent error.io.pciex.deg-poisecrc-d@pciexrc/PCIEXFN;
2896e1fa242SStephen Hansonevent ereport.io.pciex.dl.btlp@pciexrc{within(5s)};
2906e1fa242SStephen Hansonevent ereport.io.pciex.dl.bdllp@pciexrc{within(5s)};
2916e1fa242SStephen Hansonevent ereport.io.pciex.dl.rto@pciexrc{within(5s)};
2926e1fa242SStephen Hansonevent ereport.io.pciex.dl.rnr@pciexrc{within(5s)};
2936e1fa242SStephen Hansonevent ereport.io.pciex.pl.re@pciexrc{within(5s)};
2946e1fa242SStephen Hansonevent ereport.io.pciex.dl.btlp@pciexrc/PCIEXFN{within(5s)};
2956e1fa242SStephen Hansonevent ereport.io.pciex.dl.bdllp@pciexrc/PCIEXFN{within(5s)};
2966e1fa242SStephen Hansonevent ereport.io.pciex.dl.rto@pciexrc/PCIEXFN{within(5s)};
2976e1fa242SStephen Hansonevent ereport.io.pciex.dl.rnr@pciexrc/PCIEXFN{within(5s)};
2986e1fa242SStephen Hansonevent ereport.io.pciex.pl.re@pciexrc/PCIEXFN{within(5s)};
29900d0963fSdilpreet
30000d0963fSdilpreetprop fault.io.pciex.device-noresp@pciexrc (1)->
301b7d3956bSstephh    error.io.pciex.nr-d@pciexrc/PCIEXFNHZ;
30200d0963fSdilpreet
303eae2e508Skrishnaeprop fault.io.pciex.device-invreq@pciexrc (1)->
304b7d3956bSstephh    error.io.pciex.badreq-d@pciexrc/PCIEXFNHZ;
305b7d3956bSstephh
3066e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@pciexrc {
3076e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_btlp") &&
3086e1fa242SStephen Hanson    setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)->
3096e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@pciexrc,
3106e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@pciexrc/PCIEXFNHZ;
3116e1fa242SStephen Hanson
3126e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@pciexrc {
3136e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_bdllp") &&
3146e1fa242SStephen Hanson    setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)->
3156e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@pciexrc,
3166e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@pciexrc/PCIEXFNHZ;
3176e1fa242SStephen Hanson
3186e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@pciexrc {
3196e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rto") &&
3206e1fa242SStephen Hanson    setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)->
3216e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@pciexrc,
3226e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@pciexrc/PCIEXFNHZ;
3236e1fa242SStephen Hanson
3246e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@pciexrc {
3256e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rnr") &&
3266e1fa242SStephen Hanson    setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)->
3276e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@pciexrc,
3286e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@pciexrc/PCIEXFNHZ;
3296e1fa242SStephen Hanson
3306e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@pciexrc {
3316e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_re") &&
3326e1fa242SStephen Hanson    setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)->
3336e1fa242SStephen Hanson    ereport.io.pciex.pl.re@pciexrc,
3346e1fa242SStephen Hanson    ereport.io.pciex.pl.re@pciexrc/PCIEXFNHZ;
335b7d3956bSstephh
336b7d3956bSstephhprop fault.io.pciex.device-interr-unaf@pciexrc (1)->
337b7d3956bSstephh    error.io.pciex.nf-poisecrc-d@pciexrc/PCIEXFNHZ;
338b7d3956bSstephh
339b7d3956bSstephhprop fault.io.pciex.device-interr-deg@pciexrc (1)->
340b7d3956bSstephh    error.io.pciex.deg-poisecrc-d@pciexrc/PCIEXFNHZ;
34100d0963fSdilpreet
34200d0963fSdilpreetprop fault.io.pciex.device-interr@pciexrc (1)->
343b7d3956bSstephh    error.io.pciex.f-poisecrc-d@pciexrc/PCIEXFNHZ,
344b7d3956bSstephh    error.io.pciex.ca-d@pciexrc/PCIEXFNHZ,
345b7d3956bSstephh    error.io.pciex.mtlp-d@pciexrc/PCIEXFNHZ,
346b7d3956bSstephh    error.io.pciex.fatlink@pciexrc/PCIEXFNHZ;
34700d0963fSdilpreet
34800d0963fSdilpreet/*
34900d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
35000d0963fSdilpreet * A faulty PCI Express leaf device or upstream switch port may cause:
35100d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
352b7d3956bSstephh * - flt-nr-u:		the device not to respond to a valid downstream request
353b7d3956bSstephh * - flt-ca-u:		the device to completer abort a valid downstream request
354b7d3956bSstephh * - flt-badreq-u:	a bad upstream request - not CRC error (may cause
35500d0963fSdilpreet *			completer to respond with ur or ca) - leaf only
356b7d3956bSstephh * - flt-mtlp-u:	a malformed tlp transmitted upstream - leaf only
357b7d3956bSstephh * - flt-ecrcreq-u:	request with end-to-end CRC error transmitted upstream
358b7d3956bSstephh * - flt-ecrccomp-u:	compl with end-to-end CRC error transmitted upstream
359b7d3956bSstephh * - flt-poisreq-u:	poisoned request transmitted upstream
360b7d3956bSstephh * - flt-poiscomp-u:	poisoned completion transmitted upstream
36100d0963fSdilpreet * - device:		internal error reported by leaf device
36200d0963fSdilpreet * - corrlink:		correctable link or physical level error
36300d0963fSdilpreet * - fatlink:		fatal link or physical level error
36400d0963fSdilpreet */
36500d0963fSdilpreet
366b7d3956bSstephhevent error.io.pciex.flt-nr-u@PCIEXFN;
367b7d3956bSstephhevent error.io.pciex.flt-ca-u@PCIEXFN;
368b7d3956bSstephhevent error.io.pciex.flt-mtlp-u@PCIEXFN;
369b7d3956bSstephhevent error.io.pciex.fatlink@PCIEXFN;
370b7d3956bSstephhevent error.io.pciex.flt-badreq-u@PCIEXFN;
371b7d3956bSstephhevent error.io.pciex.flt-nf-poisecrc-u@PCIEXFN;
372b7d3956bSstephhevent error.io.pciex.flt-f-poisecrc-u@PCIEXFN;
373b7d3956bSstephhevent error.io.pciex.flt-deg-poisecrc-u@PCIEXFN;
3746e1fa242SStephen Hansonevent ereport.io.pciex.dl.btlp@PCIEXFN{within(5s)};
3756e1fa242SStephen Hansonevent ereport.io.pciex.dl.bdllp@PCIEXFN{within(5s)};
3766e1fa242SStephen Hansonevent ereport.io.pciex.dl.rto@PCIEXFN{within(5s)};
3776e1fa242SStephen Hansonevent ereport.io.pciex.dl.rnr@PCIEXFN{within(5s)};
3786e1fa242SStephen Hansonevent ereport.io.pciex.pl.re@PCIEXFN{within(5s)};
3796e1fa242SStephen Hansonevent ereport.io.pciex.dl.btlp@PCIEXFN/PCIEXFN{within(5s)};
3806e1fa242SStephen Hansonevent ereport.io.pciex.dl.bdllp@PCIEXFN/PCIEXFN{within(5s)};
3816e1fa242SStephen Hansonevent ereport.io.pciex.dl.rto@PCIEXFN/PCIEXFN{within(5s)};
3826e1fa242SStephen Hansonevent ereport.io.pciex.dl.rnr@PCIEXFN/PCIEXFN{within(5s)};
3836e1fa242SStephen Hansonevent ereport.io.pciex.pl.re@PCIEXFN/PCIEXFN{within(5s)};
38405dd151bSStephen Hansonevent ereport.io.device.fw_corrupt@PCIEXFN{within(5s)};
38505dd151bSStephen Hansonevent ereport.io.device.fw_mismatch@PCIEXFN{within(5s)};
38600d0963fSdilpreet
387b7d3956bSstephhprop fault.io.pciex.device-noresp@PCIEXFN { IS_LF(PCIEXFN) } (1)->
388b7d3956bSstephh    error.io.pciex.flt-nr-u@PCIEXFN;
38900d0963fSdilpreet
390b7d3956bSstephhprop fault.io.pciex.device-noresp@PCIEXFN { IS_SU(PCIEXFN) } (1)->
391b7d3956bSstephh    error.io.pciex.flt-nr-u@PCIEXFN;
39200d0963fSdilpreet
393b7d3956bSstephhprop fault.io.pciex.device-invreq@PCIEXFN { IS_LF(PCIEXFN) } (1)->
394b7d3956bSstephh    error.io.pciex.flt-badreq-u@PCIEXFN;
39500d0963fSdilpreet
3966e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN {
3976e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_btlp") &&
3986e1fa242SStephen Hanson    setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)->
3996e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@pciexrc,
4006e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@pciexrc/PCIEXFNHZ;
4016e1fa242SStephen Hanson
4026e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN {
4036e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_bdllp") &&
4046e1fa242SStephen Hanson    setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)->
4056e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@pciexrc,
4066e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@pciexrc/PCIEXFNHZ;
4076e1fa242SStephen Hanson
4086e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN {
4096e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rto") &&
4106e1fa242SStephen Hanson    setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)->
4116e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@pciexrc,
4126e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@pciexrc/PCIEXFNHZ;
4136e1fa242SStephen Hanson
4146e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN {
4156e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rnr") &&
4166e1fa242SStephen Hanson    setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)->
4176e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@pciexrc,
4186e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@pciexrc/PCIEXFNHZ;
4196e1fa242SStephen Hanson
4206e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN {
4216e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_re") &&
4226e1fa242SStephen Hanson    setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)->
4236e1fa242SStephen Hanson    ereport.io.pciex.pl.re@pciexrc,
4246e1fa242SStephen Hanson    ereport.io.pciex.pl.re@pciexrc/PCIEXFNHZ;
4256e1fa242SStephen Hanson
4266e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN {
4276e1fa242SStephen Hanson    !IS_SD(PCIEXFN/PCIEXFN) &&
4286e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_btlp") &&
4296e1fa242SStephen Hanson    setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)->
4306e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@PCIEXFN,
4316e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@PCIEXFN/PCIEXFNHZ;
4326e1fa242SStephen Hanson
4336e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN {
4346e1fa242SStephen Hanson    !IS_SD(PCIEXFN/PCIEXFN) &&
4356e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_bdllp") &&
4366e1fa242SStephen Hanson    setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)->
4376e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@PCIEXFN,
4386e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@PCIEXFN/PCIEXFNHZ;
4396e1fa242SStephen Hanson
4406e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN {
4416e1fa242SStephen Hanson    !IS_SD(PCIEXFN/PCIEXFN) &&
4426e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rto") &&
4436e1fa242SStephen Hanson    setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)->
4446e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@PCIEXFN,
4456e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@PCIEXFN/PCIEXFNHZ;
4466e1fa242SStephen Hanson
4476e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN {
4486e1fa242SStephen Hanson    !IS_SD(PCIEXFN/PCIEXFN) &&
4496e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rnr") &&
4506e1fa242SStephen Hanson    setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)->
4516e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@PCIEXFN,
4526e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@PCIEXFN/PCIEXFNHZ;
4536e1fa242SStephen Hanson
4546e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN {
4556e1fa242SStephen Hanson    !IS_SD(PCIEXFN/PCIEXFN) &&
4566e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_re") &&
4576e1fa242SStephen Hanson    setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)->
4586e1fa242SStephen Hanson    ereport.io.pciex.pl.re@PCIEXFN,
4596e1fa242SStephen Hanson    ereport.io.pciex.pl.re@PCIEXFN/PCIEXFNHZ;
46000d0963fSdilpreet
461b7d3956bSstephhprop fault.io.pciex.device-interr-unaf@PCIEXFN { IS_SU(PCIEXFN) } (1)->
462b7d3956bSstephh    error.io.pciex.flt-nf-poisecrc-u@PCIEXFN;
463b7d3956bSstephh
4648cffa125SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN { IS_LF(PCIEXFN) } (0)->
465b7d3956bSstephh    error.io.device.nf-device@PCIEXFN;
466b7d3956bSstephh
467b7d3956bSstephhprop fault.io.pciex.device-interr-unaf@PCIEXFN { IS_LF(PCIEXFN) } (1)->
468b7d3956bSstephh    error.io.pciex.flt-nf-poisecrc-u@PCIEXFN;
469b7d3956bSstephh
470b7d3956bSstephhprop fault.io.pciex.device-interr-deg@PCIEXFN { IS_SU(PCIEXFN) } (1)->
471b7d3956bSstephh    error.io.pciex.flt-deg-poisecrc-u@PCIEXFN;
472b7d3956bSstephh
473b7d3956bSstephhprop fault.io.pciex.device-interr@PCIEXFN { IS_SU(PCIEXFN) } (1)->
474b7d3956bSstephh    error.io.pciex.flt-f-poisecrc-u@PCIEXFN,
475b7d3956bSstephh    error.io.pciex.flt-ca-u@PCIEXFN,
476b7d3956bSstephh    error.io.pciex.fatlink@PCIEXFN;
477b7d3956bSstephh
478b7d3956bSstephhprop fault.io.pciex.device-interr-deg@PCIEXFN { IS_LF(PCIEXFN) } (1)->
479b7d3956bSstephh    error.io.pciex.flt-deg-poisecrc-u@PCIEXFN,
480b7d3956bSstephh    error.io.device.deg-device@PCIEXFN;
481b7d3956bSstephh
482b7d3956bSstephhprop fault.io.pciex.device-interr@PCIEXFN { IS_LF(PCIEXFN) } (1)->
483b7d3956bSstephh    error.io.pciex.flt-f-poisecrc-u@PCIEXFN,
484b7d3956bSstephh    error.io.device.f-device@PCIEXFN,
485b7d3956bSstephh    error.io.pciex.flt-ca-u@PCIEXFN,
486b7d3956bSstephh    error.io.pciex.flt-mtlp-u@PCIEXFN,
487b7d3956bSstephh    error.io.pciex.fatlink@PCIEXFN;
48800d0963fSdilpreet
48905dd151bSStephen Hansonprop fault.io.pciex.fw_corrupt@PCIEXFN { IS_LF(PCIEXFN) } (1)->
49005dd151bSStephen Hanson    ereport.io.device.fw_corrupt@PCIEXFN;
49105dd151bSStephen Hanson
49205dd151bSStephen Hansonprop fault.io.pciex.fw_corrupt@PCIEXFN { IS_LF(PCIEXFN) } (0)->
49305dd151bSStephen Hanson    ereport.io.service.lost@PCIEXFN,
49405dd151bSStephen Hanson    ereport.io.service.degraded@PCIEXFN;
49505dd151bSStephen Hanson
49605dd151bSStephen Hansonprop fault.io.pciex.fw_mismatch@PCIEXFN { IS_LF(PCIEXFN) } (1)->
49705dd151bSStephen Hanson    ereport.io.device.fw_mismatch@PCIEXFN;
49805dd151bSStephen Hanson
49905dd151bSStephen Hansonprop fault.io.pciex.fw_mismatch@PCIEXFN { IS_LF(PCIEXFN) } (0)->
50005dd151bSStephen Hanson    ereport.io.service.lost@PCIEXFN,
50105dd151bSStephen Hanson    ereport.io.service.degraded@PCIEXFN;
50205dd151bSStephen Hanson
50300d0963fSdilpreet/*
50400d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
50500d0963fSdilpreet * A faulty PCI Express downstream switch port may cause
50600d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
50700d0963fSdilpreet * - nr-d:		the device not to respond to an upstream request
50800d0963fSdilpreet * - ca-d:		the device to completer abort an upstream request
50900d0963fSdilpreet * - ecrcreq-d:		TLP with end-to-end CRC error transmitted upstream
51000d0963fSdilpreet * - ecrccomp-d:	TLP with end-to-end CRC error transmitted upstream
51100d0963fSdilpreet * - poisreq-d:		poisoned request transmitted upstream
51200d0963fSdilpreet * - poiscomp-d:	poisoned completion transmitted upstream
51300d0963fSdilpreet * - corrlink:		correctable link or physical level error
51400d0963fSdilpreet * - fatlink:		fatal link or physical level error
51500d0963fSdilpreet */
51600d0963fSdilpreet
517b7d3956bSstephhevent error.io.pciex.nr-d@PCIEXFN/PCIEXFN;
518b7d3956bSstephhevent error.io.pciex.ca-d@PCIEXFN/PCIEXFN;
519b7d3956bSstephhevent error.io.pciex.fatlink@PCIEXFN/PCIEXFN;
520b7d3956bSstephhevent error.io.pciex.nf-poisecrc-d@PCIEXFN/PCIEXFN;
521b7d3956bSstephhevent error.io.pciex.f-poisecrc-d@PCIEXFN/PCIEXFN;
522b7d3956bSstephhevent error.io.pciex.deg-poisecrc-d@PCIEXFN/PCIEXFN;
52300d0963fSdilpreet
524b7d3956bSstephhprop fault.io.pciex.device-noresp@PCIEXFN { IS_SD(PCIEXFN) } (1)->
525b7d3956bSstephh    error.io.pciex.nr-d@PCIEXFN/PCIEXFNHZ;
52600d0963fSdilpreet
5276e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN { IS_SD(PCIEXFN) &&
5286e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_btlp") &&
5296e1fa242SStephen Hanson    setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)->
5306e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@PCIEXFN,
5316e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@PCIEXFN/PCIEXFNHZ;
5326e1fa242SStephen Hanson
5336e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN { IS_SD(PCIEXFN) &&
5346e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_bdllp") &&
5356e1fa242SStephen Hanson    setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)->
5366e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@PCIEXFN,
5376e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@PCIEXFN/PCIEXFNHZ;
5386e1fa242SStephen Hanson
5396e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN { IS_SD(PCIEXFN) &&
5406e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rto") &&
5416e1fa242SStephen Hanson    setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)->
5426e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@PCIEXFN,
5436e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@PCIEXFN/PCIEXFNHZ;
5446e1fa242SStephen Hanson
5456e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN { IS_SD(PCIEXFN) &&
5466e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rnr") &&
5476e1fa242SStephen Hanson    setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)->
5486e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@PCIEXFN,
5496e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@PCIEXFN/PCIEXFNHZ;
5506e1fa242SStephen Hanson
5516e1fa242SStephen Hansonprop fault.io.pciex.device-interr-corr@PCIEXFN { IS_SD(PCIEXFN) &&
5526e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_re") &&
5536e1fa242SStephen Hanson    setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)->
5546e1fa242SStephen Hanson    ereport.io.pciex.pl.re@PCIEXFN,
5556e1fa242SStephen Hanson    ereport.io.pciex.pl.re@PCIEXFN/PCIEXFNHZ;
556b7d3956bSstephh
557b7d3956bSstephhprop fault.io.pciex.device-interr-unaf@PCIEXFN { IS_SD(PCIEXFN) } (1)->
558b7d3956bSstephh    error.io.pciex.nf-poisecrc-d@PCIEXFN/PCIEXFNHZ;
559b7d3956bSstephh
560b7d3956bSstephhprop fault.io.pciex.device-interr-deg@PCIEXFN { IS_SD(PCIEXFN) } (1)->
561b7d3956bSstephh    error.io.pciex.deg-poisecrc-d@PCIEXFN/PCIEXFNHZ;
562b7d3956bSstephh
563b7d3956bSstephhprop fault.io.pciex.device-interr@PCIEXFN { IS_SD(PCIEXFN) } (1)->
564b7d3956bSstephh    error.io.pciex.ca-d@PCIEXFN/PCIEXFNHZ,
565b7d3956bSstephh    error.io.pciex.f-poisecrc-d@PCIEXFN/PCIEXFNHZ,
566b7d3956bSstephh    error.io.pciex.fatlink@PCIEXFN/PCIEXFNHZ;
56700d0963fSdilpreet
56800d0963fSdilpreet/*
56900d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
57000d0963fSdilpreet * A faulty PCIEX bus may cause:
57100d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
572b7d3956bSstephh * - flt-nr-u:		a device to not respond because the link is down
57300d0963fSdilpreet * - nr-d:		a device to not respond because the link is down
57400d0963fSdilpreet * - corrlink:		correctable link or physical level error
57500d0963fSdilpreet * - fatlink:		fatal link or physical level error
57600d0963fSdilpreet */
57700d0963fSdilpreet
578b7d3956bSstephhevent error.io.pciex.nr-d@PCIEXFN;
57900d0963fSdilpreet
580b7d3956bSstephhprop fault.io.pciex.bus-noresp@PCIEXFN { !IS_SD(PCIEXFN) } (0)->
581b7d3956bSstephh    error.io.pciex.flt-nr-u@PCIEXFN,
582b7d3956bSstephh    error.io.pciex.nr-d@PCIEXFN;
58300d0963fSdilpreet
5846e1fa242SStephen Hansonprop fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN {
5856e1fa242SStephen Hanson    !IS_SD(PCIEXFN/PCIEXFN) &&
5866e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_btlp") &&
5876e1fa242SStephen Hanson    setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)->
5886e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@PCIEXFN,
5896e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@PCIEXFN/PCIEXFNHZ;
5906e1fa242SStephen Hanson
5916e1fa242SStephen Hansonprop fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN {
5926e1fa242SStephen Hanson    !IS_SD(PCIEXFN/PCIEXFN) &&
5936e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_bdllp") &&
5946e1fa242SStephen Hanson    setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)->
5956e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@PCIEXFN,
5966e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@PCIEXFN/PCIEXFNHZ;
5976e1fa242SStephen Hanson
5986e1fa242SStephen Hansonprop fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN {
5996e1fa242SStephen Hanson    !IS_SD(PCIEXFN/PCIEXFN) &&
6006e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rto") &&
6016e1fa242SStephen Hanson    setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)->
6026e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@PCIEXFN,
6036e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@PCIEXFN/PCIEXFNHZ;
6046e1fa242SStephen Hanson
6056e1fa242SStephen Hansonprop fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN {
6066e1fa242SStephen Hanson    !IS_SD(PCIEXFN/PCIEXFN) &&
6076e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rnr") &&
6086e1fa242SStephen Hanson    setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)->
6096e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@PCIEXFN,
6106e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@PCIEXFN/PCIEXFNHZ;
6116e1fa242SStephen Hanson
6126e1fa242SStephen Hansonprop fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN {
6136e1fa242SStephen Hanson    !IS_SD(PCIEXFN/PCIEXFN) &&
6146e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_re") &&
6156e1fa242SStephen Hanson    setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)->
6166e1fa242SStephen Hanson    ereport.io.pciex.pl.re@PCIEXFN,
6176e1fa242SStephen Hanson    ereport.io.pciex.pl.re@PCIEXFN/PCIEXFNHZ;
6186e1fa242SStephen Hanson
6196e1fa242SStephen Hansonprop fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN {
6206e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_btlp") &&
6216e1fa242SStephen Hanson    setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)->
6226e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@pciexrc,
6236e1fa242SStephen Hanson    ereport.io.pciex.dl.btlp@pciexrc/PCIEXFNHZ;
6246e1fa242SStephen Hanson
6256e1fa242SStephen Hansonprop fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN {
6266e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_bdllp") &&
6276e1fa242SStephen Hanson    setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)->
6286e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@pciexrc,
6296e1fa242SStephen Hanson    ereport.io.pciex.dl.bdllp@pciexrc/PCIEXFNHZ;
6306e1fa242SStephen Hanson
6316e1fa242SStephen Hansonprop fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN {
6326e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rto") &&
6336e1fa242SStephen Hanson    setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)->
6346e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@pciexrc,
6356e1fa242SStephen Hanson    ereport.io.pciex.dl.rto@pciexrc/PCIEXFNHZ;
6366e1fa242SStephen Hanson
6376e1fa242SStephen Hansonprop fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN {
6386e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_rnr") &&
6396e1fa242SStephen Hanson    setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)->
6406e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@pciexrc,
6416e1fa242SStephen Hanson    ereport.io.pciex.dl.rnr@pciexrc/PCIEXFNHZ;
6426e1fa242SStephen Hanson
6436e1fa242SStephen Hansonprop fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN {
6446e1fa242SStephen Hanson    payloadprop_defined("detector") && setserdsuffix("_re") &&
6456e1fa242SStephen Hanson    setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)->
6466e1fa242SStephen Hanson    ereport.io.pciex.pl.re@pciexrc,
6476e1fa242SStephen Hanson    ereport.io.pciex.pl.re@pciexrc/PCIEXFNHZ;
648b7d3956bSstephh
649b7d3956bSstephhprop fault.io.pciex.bus-linkerr@PCIEXFN { !IS_SD(PCIEXFN) } (0)->
650b7d3956bSstephh    error.io.pciex.fatlink@PCIEXFN;
65100d0963fSdilpreet
65200d0963fSdilpreet/*
65300d0963fSdilpreet * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
65400d0963fSdilpreet * A faulty pciex-pci bridge may cause
65500d0963fSdilpreet * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
65600d0963fSdilpreet * The following errors to propagate onto the PCI Express fabric
657b7d3956bSstephh * - flt-nr-u:		the device not to respond to a valid downstream request
658b7d3956bSstephh * - flt-ca-u:		the device to completer abort a valid downstream request
659b7d3956bSstephh * - flt-ecrcreq-u:	request with end-to-end CRC error transmitted upstream
660b7d3956bSstephh * - flt-ecrccomp-u:	compl with end-to-end CRC error transmitted upstream
661b7d3956bSstephh * - flt-poisreq-u:	poisoned request transmitted upstream
662b7d3956bSstephh * - flt-poiscomp-u:	poisoned completion transmitted upstream
66300d0963fSdilpreet * - corrlink:		correctable link or physical level error upstream
66400d0963fSdilpreet * - fatlink:		fatal link or physical level error upstream
66500d0963fSdilpreet * - sec-interr:	internal error on pci express to pci bridge
66600d0963fSdilpreet *
66700d0963fSdilpreet * And the following errors to propagate onto the secondary pci or pci/x bus
66800d0963fSdilpreet * (these will be handled by code in the pci.esc file).
66900d0963fSdilpreet * - nr-pw-d:		the device not to respond to a valid upstream request
67000d0963fSdilpreet * - nr-drw-d:		the device not to respond to a valid upstream request
67100d0963fSdilpreet * - retry-to-d:	failure to retry an downstream delayed request
67200d0963fSdilpreet * - ta-pw-d:		the device responds with a ta to a valid upstream
67300d0963fSdilpreet *			request
67400d0963fSdilpreet * - ta-drw-d:		the device responds with a ta to a valid upstream
67500d0963fSdilpreet *			request
67600d0963fSdilpreet * - ape-d:	address/parity to get corrupted during downstream transmission.
67700d0963fSdilpreet * - dpe-d:	data/parity to get corrupted during downstream transmission.
67800d0963fSdilpreet * - scpe-d:	split completion to get corrupted during downstream transmission
67900d0963fSdilpreet */
68000d0963fSdilpreet
681b7d3956bSstephhevent error.io.pci.ape-d@PCIEXFN/PCIFN;
682b7d3956bSstephhevent error.io.pci.f-dpe-d@PCIEXFN/PCIFN;
683b7d3956bSstephhevent error.io.pci.deg-dpe-d@PCIEXFN/PCIFN;
684b7d3956bSstephhevent error.io.pci.nf-dpe-d@PCIEXFN/PCIFN;
685b7d3956bSstephhevent error.io.pci.retry-to-d@PCIEXFN/PCIFN;
686b7d3956bSstephhevent error.io.pci.nr-pw-d@PCIEXFN/PCIFN;
687b7d3956bSstephhevent error.io.pci.nr-drw-d@PCIEXFN/PCIFN;
688b7d3956bSstephhevent error.io.pci.ta-pw-d@PCIEXFN/PCIFN;
689b7d3956bSstephhevent error.io.pci.ta-drw-d@PCIEXFN/PCIFN;
690b7d3956bSstephhevent error.io.pcix.scpe-d@PCIEXFN/PCIFN;
691b7d3956bSstephhevent error.io.pciex.sec-interr@PCIEXFN;
692b7d3956bSstephhevent ereport.io.pci.sec-sta@PCIEXFN{within(5s)};
69300d0963fSdilpreet
694b7d3956bSstephhprop fault.io.pciex.device-noresp@PCIEXFN { IS_BG(PCIEXFN) } (1)->
695b7d3956bSstephh    error.io.pciex.flt-nr-u@PCIEXFN,
696b7d3956bSstephh    error.io.pci.retry-to-d@PCIEXFN/PCIFNHZ,
697b7d3956bSstephh    error.io.pci.nr-pw-d@PCIEXFN/PCIFNHZ,
698b7d3956bSstephh    error.io.pci.nr-drw-d@PCIEXFN/PCIFNHZ;
69900d0963fSdilpreet
700b7d3956bSstephhprop fault.io.pciex.device-interr-unaf@PCIEXFN { IS_BG(PCIEXFN) } (1)->
701b7d3956bSstephh    error.io.pciex.flt-nf-poisecrc-u@PCIEXFN,
702b7d3956bSstephh    error.io.pci.nf-dpe-d@PCIEXFN/PCIFNHZ;
703b7d3956bSstephh
704b7d3956bSstephhprop fault.io.pciex.device-interr-deg@PCIEXFN { IS_BG(PCIEXFN) } (1)->
705b7d3956bSstephh    error.io.pciex.flt-deg-poisecrc-u@PCIEXFN,
706b7d3956bSstephh    error.io.pci.deg-dpe-d@PCIEXFN/PCIFNHZ;
707b7d3956bSstephh
708b7d3956bSstephhprop fault.io.pciex.device-interr@PCIEXFN { IS_BG(PCIEXFN) } (1)->
709b7d3956bSstephh    error.io.pciex.flt-f-poisecrc-u@PCIEXFN,
710b7d3956bSstephh    error.io.pciex.flt-ca-u@PCIEXFN,
711b7d3956bSstephh    error.io.pciex.flt-mtlp-u@PCIEXFN,
712b7d3956bSstephh    error.io.pciex.sec-interr@PCIEXFN,
713b7d3956bSstephh    error.io.pciex.fatlink@PCIEXFN,
714b7d3956bSstephh    error.io.pci.ta-pw-d@PCIEXFN/PCIFNHZ,
715b7d3956bSstephh    error.io.pci.ta-drw-d@PCIEXFN/PCIFNHZ,
716b7d3956bSstephh    error.io.pci.ape-d@PCIEXFN/PCIFNHZ,
717b7d3956bSstephh    error.io.pcix.scpe-d@PCIEXFN/PCIFNHZ,
718b7d3956bSstephh    error.io.pci.f-dpe-d@PCIEXFN/PCIFNHZ;
719b7d3956bSstephh
720b7d3956bSstephhprop fault.io.pciex.device-interr-unaf@PCIEXFN { IS_BG(PCIEXFN) } (0)->
721b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN;
722b7d3956bSstephh
723b7d3956bSstephhprop fault.io.pciex.device-interr@PCIEXFN { IS_BG(PCIEXFN) } (0)->
724b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN;
725b7d3956bSstephh
726b7d3956bSstephh/*
727b7d3956bSstephh * the following rules for ptlp and ecrc faults are split into fatal and
728b7d3956bSstephh * nonfatal, depending on the service impact reported by the leaf driver
729b7d3956bSstephh */
730b7d3956bSstephhevent error.io.pciex.nf-poisecrc-d@PCIEXFN;
731b7d3956bSstephhevent error.io.pciex.deg-poisecrc-d@PCIEXFN;
732b7d3956bSstephhevent error.io.pciex.f-poisecrc-d@PCIEXFN;
733b7d3956bSstephhevent error.io.pciex.ecrcreq-d@PCIEXFN;
734b7d3956bSstephhevent error.io.pciex.ecrccomp-d@PCIEXFN;
735b7d3956bSstephhevent error.io.pciex.poisreq-d@PCIEXFN;
736b7d3956bSstephhevent error.io.pciex.poiscomp-d@PCIEXFN;
737b7d3956bSstephhevent error.io.pciex.flt-poisreq-u@PCIEXFN;
738b7d3956bSstephhevent error.io.pciex.flt-poiscomp-u@PCIEXFN;
739b7d3956bSstephhevent error.io.pciex.flt-ecrcreq-u@PCIEXFN;
740b7d3956bSstephhevent error.io.pciex.flt-ecrccomp-u@PCIEXFN;
741b7d3956bSstephh
742b7d3956bSstephhprop error.io.pciex.nf-poisecrc-d@PCIEXFN (1)->
743b7d3956bSstephh    error.io.pciex.ecrcreq-d@PCIEXFN,
744b7d3956bSstephh    error.io.pciex.ecrccomp-d@PCIEXFN,
745b7d3956bSstephh    error.io.pciex.poisreq-d@PCIEXFN,
746b7d3956bSstephh    error.io.pciex.poiscomp-d@PCIEXFN;
747b7d3956bSstephh
748b7d3956bSstephhprop error.io.pciex.nf-poisecrc-d@PCIEXFN (1)->
749b7d3956bSstephh    error.io.pciex.noimpact-d@PCIEXFN;
750b7d3956bSstephh
751b7d3956bSstephhprop error.io.pciex.f-poisecrc-d@PCIEXFN (1)->
752b7d3956bSstephh    error.io.pciex.ecrcreq-d@PCIEXFN,
753b7d3956bSstephh    error.io.pciex.ecrccomp-d@PCIEXFN,
754b7d3956bSstephh    error.io.pciex.poisreq-d@PCIEXFN,
755b7d3956bSstephh    error.io.pciex.poiscomp-d@PCIEXFN;
756b7d3956bSstephh
7578cffa125SStephen Hansonprop error.io.pciex.f-poisecrc-d@PCIEXFN (0)->
758b7d3956bSstephh    error.io.pciex.lost-d@PCIEXFN;
759b7d3956bSstephh
760b7d3956bSstephhprop error.io.pciex.deg-poisecrc-d@PCIEXFN (1)->
761b7d3956bSstephh    error.io.pciex.ecrcreq-d@PCIEXFN,
762b7d3956bSstephh    error.io.pciex.ecrccomp-d@PCIEXFN,
763b7d3956bSstephh    error.io.pciex.poisreq-d@PCIEXFN,
764b7d3956bSstephh    error.io.pciex.poiscomp-d@PCIEXFN;
765b7d3956bSstephh
766b7d3956bSstephhprop error.io.pciex.deg-poisecrc-d@PCIEXFN (1)->
767b7d3956bSstephh    error.io.pciex.degraded-d@PCIEXFN;
768b7d3956bSstephh
769b7d3956bSstephhprop error.io.pciex.flt-nf-poisecrc-u@PCIEXFN (1)->
770b7d3956bSstephh    error.io.pciex.flt-ecrcreq-u@PCIEXFN,
771b7d3956bSstephh    error.io.pciex.flt-ecrccomp-u@PCIEXFN,
772b7d3956bSstephh    error.io.pciex.flt-poisreq-u@PCIEXFN,
773b7d3956bSstephh    error.io.pciex.flt-poiscomp-u@PCIEXFN;
774b7d3956bSstephh
775b7d3956bSstephhprop error.io.pciex.flt-nf-poisecrc-u@PCIEXFN (1)->
776b7d3956bSstephh    error.io.pciex.noimpact-d@PCIEXFN;
777b7d3956bSstephh
778b7d3956bSstephhprop error.io.pciex.flt-deg-poisecrc-u@PCIEXFN (1)->
779b7d3956bSstephh    error.io.pciex.flt-ecrcreq-u@PCIEXFN,
780b7d3956bSstephh    error.io.pciex.flt-ecrccomp-u@PCIEXFN,
781b7d3956bSstephh    error.io.pciex.flt-poisreq-u@PCIEXFN,
782b7d3956bSstephh    error.io.pciex.flt-poiscomp-u@PCIEXFN;
783b7d3956bSstephh
784b7d3956bSstephhprop error.io.pciex.flt-deg-poisecrc-u@PCIEXFN (1)->
785b7d3956bSstephh    error.io.pciex.degraded-d@PCIEXFN;
786b7d3956bSstephh
787b7d3956bSstephhprop error.io.pciex.flt-f-poisecrc-u@PCIEXFN (1)->
788b7d3956bSstephh    error.io.pciex.flt-ecrcreq-u@PCIEXFN,
789b7d3956bSstephh    error.io.pciex.flt-ecrccomp-u@PCIEXFN,
790b7d3956bSstephh    error.io.pciex.flt-poisreq-u@PCIEXFN,
791b7d3956bSstephh    error.io.pciex.flt-poiscomp-u@PCIEXFN;
792b7d3956bSstephh
7938cffa125SStephen Hansonprop error.io.pciex.flt-f-poisecrc-u@PCIEXFN (0)->
794b7d3956bSstephh    error.io.pciex.lost-d@PCIEXFN;
79500d0963fSdilpreet
79600d0963fSdilpreet/*
79700d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
79800d0963fSdilpreet * declarations
79900d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
80000d0963fSdilpreet */
801b7d3956bSstephhevent error.io.pciex.fatal@PCIEXFN;
802b7d3956bSstephhevent error.io.pciex.nonfatal@PCIEXFN;
80326733bfeSStephen Hansonevent error.io.pciex.nr-fwd-d@PCIEXFN;
80426733bfeSStephen Hansonevent error.io.pciex.mtlp-fwd-d@PCIEXFN;
805b7d3956bSstephhevent error.io.pciex.flt-ur-u@PCIEXFN;
806b7d3956bSstephhevent error.io.pciex.mtlp-d@PCIEXFN;
807b7d3956bSstephhevent error.io.pciex.ca-d@PCIEXFN;
808b7d3956bSstephhevent error.io.pciex.ca-fwd-d@PCIEXFN;
809b7d3956bSstephhevent error.io.pciex.poisreq-fwd-d@PCIEXFN;
810b7d3956bSstephhevent error.io.pciex.poisreq-fwd-d@pciexrc/PCIEXFN;
811b7d3956bSstephhevent error.io.pciex.poisreq-fwd-d@PCIEXFN/PCIEXFN;
812b7d3956bSstephhevent error.io.pciex.poiscomp-fwd-d@PCIEXFN;
813b7d3956bSstephhevent error.io.pciex.poiscomp-fwd-d@PCIEXFN/PCIEXFN;
814b7d3956bSstephhevent error.io.pciex.ecrcreq-fwd-d@PCIEXFN;
815b7d3956bSstephhevent error.io.pciex.ecrccomp-fwd-d@PCIEXFN;
816b7d3956bSstephhevent error.io.pciex.source-ecrcreq-u@PCIEXFN;
817b7d3956bSstephhevent error.io.pciex.source-ecrccomp-u@PCIEXFN;
818b7d3956bSstephhevent error.io.pciex.source-poiscomp-u@PCIEXFN;
819b7d3956bSstephhevent error.io.pciex.source-poisreq-u@PCIEXFN;
820b7d3956bSstephhevent error.io.pciex.badreq-d@PCIEXFN;
821b7d3956bSstephhevent error.io.pci.badreq-pw-d@PCIEXFN/PCIFN;
822b7d3956bSstephhevent error.io.pci.badreq-drw-d@PCIEXFN/PCIFN;
823b7d3956bSstephhevent error.io.pci.target-ma-d@PCIEXFN;
824b7d3956bSstephhevent error.io.pci.target-rta-d@PCIEXFN;
825b7d3956bSstephhevent error.io.pci.dpdata-pw-d@PCIEXFN/PCIFN;
826b7d3956bSstephhevent error.io.pci.dpdata-dw-d@PCIEXFN/PCIFN;
827b7d3956bSstephhevent error.io.pci.dpdata-dr-d@PCIEXFN/PCIFN;
828b7d3956bSstephhevent error.io.pciex.ca-u@PCIEXFN;
829b7d3956bSstephhevent error.io.pciex.ca-u@PCIEXFN/PCIEXFN;
830b7d3956bSstephhevent error.io.pciex.ca-u@pciexrc/PCIEXFN;
831b7d3956bSstephhevent error.io.pciex.ur-u@PCIEXFN;
832b7d3956bSstephhevent error.io.pciex.ur-u@PCIEXFN/PCIEXFN;
833b7d3956bSstephhevent error.io.pciex.ur-u@pciexrc/PCIEXFN;
834b7d3956bSstephhevent error.io.pciex.nr-u@PCIEXFN;
835b7d3956bSstephhevent error.io.pciex.nr-u@PCIEXFN/PCIEXFN;
836b7d3956bSstephhevent error.io.pciex.nr-u@pciexrc/PCIEXFN;
837b7d3956bSstephhevent error.io.pciex.mtlp-u@PCIEXFN;
838b7d3956bSstephhevent error.io.pciex.mtlp-u@PCIEXFN/PCIEXFN;
839b7d3956bSstephhevent error.io.pciex.mtlp-u@pciexrc/PCIEXFN;
840b7d3956bSstephhevent error.io.pciex.badreq-u@PCIEXFN;
841b7d3956bSstephhevent error.io.pciex.badreq-u@PCIEXFN/PCIEXFN;
842b7d3956bSstephhevent error.io.pciex.badreq-u@pciexrc/PCIEXFN;
843b7d3956bSstephhevent error.io.pciex.poisreq-u@PCIEXFN;
844b7d3956bSstephhevent error.io.pciex.poisreq-u@PCIEXFN/PCIEXFN;
845b7d3956bSstephhevent error.io.pciex.poisreq-u@pciexrc/PCIEXFN;
846b7d3956bSstephhevent error.io.pciex.poiscomp-u@PCIEXFN;
847b7d3956bSstephhevent error.io.pciex.poiscomp-u@PCIEXFN/PCIEXFN;
848b7d3956bSstephhevent error.io.pciex.poiscomp-u@pciexrc/PCIEXFN;
849b7d3956bSstephhevent error.io.pciex.ecrcreq-u@PCIEXFN;
850b7d3956bSstephhevent error.io.pciex.ecrcreq-u@PCIEXFN/PCIEXFN;
851b7d3956bSstephhevent error.io.pciex.ecrccomp-u@PCIEXFN;
852b7d3956bSstephhevent error.io.pciex.ecrccomp-u@PCIEXFN/PCIEXFN;
85300d0963fSdilpreet
854b7d3956bSstephhevent ereport.io.pci.ma@PCIEXFN{within(5s)};
855b7d3956bSstephhevent ereport.io.pci.mdpe@PCIEXFN{within(5s)};
856b7d3956bSstephhevent ereport.io.pci.dpe@PCIEXFN{within(5s)};
857b7d3956bSstephhevent ereport.io.pci.rta@PCIEXFN{within(5s)};
858b7d3956bSstephhevent ereport.io.pci.sta@PCIEXFN{within(5s)};
859b7d3956bSstephhevent ereport.io.pciex.dl.dllp@PCIEXFN{within(5s)};
860b7d3956bSstephhevent ereport.io.pciex.pl.te@PCIEXFN{within(5s)};
861*b0daa853SStephen Hansonevent ereport.io.pciex.pl.sd@PCIEXFN{within(5s)};
862b7d3956bSstephhevent ereport.io.pciex.tl.fcp@PCIEXFN{within(5s)};
863b7d3956bSstephhevent ereport.io.pciex.tl.rof@PCIEXFN{within(5s)};
864b7d3956bSstephhevent ereport.io.pciex.tl.mtlp@PCIEXFN{within(5s)};
865b7d3956bSstephhevent ereport.io.pciex.tl.ur@PCIEXFN{within(5s)};
866b7d3956bSstephhevent ereport.io.pciex.tl.ca@PCIEXFN{within(5s)};
867b7d3956bSstephhevent ereport.io.pciex.tl.ptlp@PCIEXFN{within(5s)};
868b7d3956bSstephhevent ereport.io.pciex.tl.ecrc@PCIEXFN{within(5s)};
869b7d3956bSstephhevent ereport.io.pciex.tl.uc@PCIEXFN{within(5s)};
870b7d3956bSstephhevent ereport.io.pciex.tl.cto@PCIEXFN{within(5s)};
87100d0963fSdilpreetevent ereport.io.pciex.dl.dllp@pciexrc{within(5s)};
87200d0963fSdilpreetevent ereport.io.pciex.pl.te@pciexrc{within(5s)};
873*b0daa853SStephen Hansonevent ereport.io.pciex.pl.sd@pciexrc{within(5s)};
87400d0963fSdilpreetevent ereport.io.pciex.tl.fcp@pciexrc{within(5s)};
87500d0963fSdilpreetevent ereport.io.pciex.tl.rof@pciexrc{within(5s)};
87600d0963fSdilpreetevent ereport.io.pciex.tl.mtlp@pciexrc{within(5s)};
87700d0963fSdilpreetevent ereport.io.pciex.tl.ur@pciexrc{within(5s)};
87800d0963fSdilpreetevent ereport.io.pciex.tl.ca@pciexrc{within(5s)};
87900d0963fSdilpreetevent ereport.io.pciex.tl.ptlp@pciexrc{within(5s)};
88000d0963fSdilpreetevent ereport.io.pciex.tl.ecrc@pciexrc{within(5s)};
88100d0963fSdilpreetevent ereport.io.pciex.tl.cto@pciexrc{within(5s)};
88200d0963fSdilpreetevent ereport.io.pci.sec-ma@pciexrc{within(5s)};
88300d0963fSdilpreetevent ereport.io.pci.sec-mdpe@pciexrc{within(5s)};
88400d0963fSdilpreetevent ereport.io.pci.sec-dpe@pciexrc{within(5s)};
88500d0963fSdilpreetevent ereport.io.pci.sec-rta@pciexrc{within(5s)};
88600d0963fSdilpreetevent ereport.io.pci.sec-sta@pciexrc{within(5s)};
887b7d3956bSstephhevent ereport.io.pci.sec-mdpe@PCIEXFN{within(5s)};
888b7d3956bSstephhevent ereport.io.pci.sec-dpe@PCIEXFN{within(5s)};
889b7d3956bSstephhevent ereport.io.pci.sec-rserr@PCIEXFN{within(5s)};
890b7d3956bSstephhevent ereport.io.pci.sserr@PCIEXFN{within(5s)};
89100d0963fSdilpreetevent ereport.io.pci.sec-rserr@pciexrc{within(5s)};
89200d0963fSdilpreetevent ereport.io.pciex.rc.fe-msg@pciexrc{within(5s)};
89300d0963fSdilpreetevent ereport.io.pciex.rc.nfe-msg@pciexrc{within(5s)};
894b7d3956bSstephhevent ereport.io.pciex.rc.mue-msg@pciexrc{within(5s)};
895b7d3956bSstephhevent ereport.io.pciex.bdg.sec-interr@PCIEXFN{within(5s)};
896b7d3956bSstephhevent ereport.io.pciex.bdg.sec-ude@PCIEXFN{within(5s)};
897b7d3956bSstephhevent ereport.io.pci.target-mdpe@PCIEXFN{within(5s)};
898b7d3956bSstephhevent ereport.io.pci.target-mdpe@PCIFN{within(5s)};
89900d0963fSdilpreet
90000d0963fSdilpreet/*
90100d0963fSdilpreet * handling of fatal and nonfatal error messages propagated up to root complex
90200d0963fSdilpreet *
90300d0963fSdilpreet * Use these for errors reported by root-complex on behalf of another device.
90400d0963fSdilpreet * Can use source-id payload to identify where the message came from.
90500d0963fSdilpreet */
906b7d3956bSstephhprop error.io.pciex.fatal@PCIEXFN1 (1)->
907b7d3956bSstephh    ereport.io.pciex.rc.mue-msg@pciexrc { is_under(pciexrc, PCIEXFN1) },
908b7d3956bSstephh    ereport.io.pciex.rc.fe-msg@pciexrc { is_under(pciexrc, PCIEXFN1) &&
909b7d3956bSstephh	SOURCE_ID_MATCHES_BDF };
91000d0963fSdilpreet
911b7d3956bSstephhprop error.io.pciex.fatal@PCIEXFN (0)->
9126e1fa242SStephen Hanson    ereport.io.pci.sserr@PCIEXFN;
91300d0963fSdilpreet
914b7d3956bSstephhprop error.io.pciex.fatal@PCIEXFN { is_under(PCIEXFN1, PCIEXFN) } (0)->
915b7d3956bSstephh    ereport.io.pci.sserr@PCIEXFN1,
916b7d3956bSstephh    ereport.io.pci.sec-rserr@PCIEXFN1;
91700d0963fSdilpreet
918b7d3956bSstephhprop error.io.pciex.fatal@PCIEXFN { is_under(pciexrc, PCIEXFN) } (0)->
91900d0963fSdilpreet    ereport.io.pci.sec-rserr@pciexrc;
92000d0963fSdilpreet
921b7d3956bSstephhprop error.io.pciex.nonfatal@PCIEXFN1 (1)->
922b7d3956bSstephh    ereport.io.pciex.rc.mue-msg@pciexrc { is_under(pciexrc, PCIEXFN1) },
923b7d3956bSstephh    ereport.io.pciex.rc.nfe-msg@pciexrc { is_under(pciexrc, PCIEXFN1) &&
924b7d3956bSstephh	SOURCE_ID_MATCHES_BDF };
92500d0963fSdilpreet
926b7d3956bSstephhprop error.io.pciex.nonfatal@PCIEXFN (0)->
927b7d3956bSstephh    ereport.io.pci.sserr@PCIEXFN;
92800d0963fSdilpreet
929b7d3956bSstephhprop error.io.pciex.nonfatal@PCIEXFN { is_under(PCIEXFN1, PCIEXFN) } (0)->
930b7d3956bSstephh    ereport.io.pci.sserr@PCIEXFN1,
931b7d3956bSstephh    ereport.io.pci.sec-rserr@PCIEXFN1;
93200d0963fSdilpreet
933b7d3956bSstephhprop error.io.pciex.nonfatal@PCIEXFN { is_under(pciexrc, PCIEXFN) } (0)->
93400d0963fSdilpreet    ereport.io.pci.sec-rserr@pciexrc;
93500d0963fSdilpreet
93600d0963fSdilpreet/*
93700d0963fSdilpreet * link-level errors - could generate ereports at either end of link
93800d0963fSdilpreet *
93900d0963fSdilpreet * can use may propagations here as these ereports are only seen for these
94000d0963fSdilpreet * faults.
94100d0963fSdilpreet */
942b7d3956bSstephhprop error.io.pciex.fatlink@PCIEXFN { !IS_SD(PCIEXFN) } (0)->
943b7d3956bSstephh    error.io.pciex.fatal@PCIEXFN;
94400d0963fSdilpreet
945b7d3956bSstephhprop error.io.pciex.fatlink@PCIEXFN { !IS_SD(PCIEXFN) } (0)->
946b7d3956bSstephh    ereport.io.pciex.dl.dllp@PCIEXFN,
947b7d3956bSstephh    ereport.io.pciex.tl.fcp@PCIEXFN,
948b7d3956bSstephh    ereport.io.pciex.tl.rof@PCIEXFN;
94900d0963fSdilpreet
950b7d3956bSstephhprop error.io.pciex.fatlink@PCIEXFN/PCIEXFN { IS_SD(PCIEXFN) } (0)->
951b7d3956bSstephh    error.io.pciex.fatal@PCIEXFN;
95200d0963fSdilpreet
953b7d3956bSstephhprop error.io.pciex.fatlink@PCIEXFN/PCIEXFN { IS_SD(PCIEXFN) } (0)->
954b7d3956bSstephh    ereport.io.pciex.dl.dllp@PCIEXFN,
955b7d3956bSstephh    ereport.io.pciex.pl.te@PCIEXFN,
956*b0daa853SStephen Hanson    ereport.io.pciex.pl.sd@PCIEXFN,
957b7d3956bSstephh    ereport.io.pciex.tl.fcp@PCIEXFN,
958b7d3956bSstephh    ereport.io.pciex.tl.rof@PCIEXFN;
95900d0963fSdilpreet
960b7d3956bSstephhprop error.io.pciex.fatlink@pciexrc/PCIEXFN (0)->
96100d0963fSdilpreet    ereport.io.pciex.dl.dllp@pciexrc,
96200d0963fSdilpreet    ereport.io.pciex.pl.te@pciexrc,
963*b0daa853SStephen Hanson    ereport.io.pciex.pl.sd@pciexrc,
96400d0963fSdilpreet    ereport.io.pciex.tl.fcp@pciexrc,
96500d0963fSdilpreet    ereport.io.pciex.tl.rof@pciexrc;
96600d0963fSdilpreet
96700d0963fSdilpreet/*
96800d0963fSdilpreet * bridge internal error
96900d0963fSdilpreet */
970b7d3956bSstephhprop error.io.pciex.sec-interr@PCIEXFN { IS_BG(PCIEXFN) } (2) ->
971b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
972b7d3956bSstephh    ereport.io.pciex.bdg.sec-interr@PCIEXFN;
97300d0963fSdilpreet
97400d0963fSdilpreet/*
97500d0963fSdilpreet * downstream poisoned request
97600d0963fSdilpreet *
97700d0963fSdilpreet * - poisreq-d cascades down to the leaf device/bridge and any switch ports
97800d0963fSdilpreet *   on route must raise a ptlp ereport while any switch ports forwarding
97900d0963fSdilpreet *   the poisoned request must raise sec-mdpe ereports. The originator of the
98000d0963fSdilpreet *   poisoning (be it root complex or downstream port of a switch) also raises
981b7d3956bSstephh *   sec-mdpe. A hardened leaf driver will also raise ptlp. A target-mdpe may
982b7d3956bSstephh *   be seen at the leaf (which may be a pci device beyond the bridge).
98300d0963fSdilpreet *
98400d0963fSdilpreet * Additionally, the leaf/bridge may treat the request as a ur, which the
98500d0963fSdilpreet * root complex will see and report an ma. Use flt-ur-u to represent this.
98600d0963fSdilpreet *
98700d0963fSdilpreet * The fault can always be recognized and the source identified using the ptlp
98800d0963fSdilpreet * and sec-mdpe ereports.
98900d0963fSdilpreet */
990b7d3956bSstephhprop error.io.pciex.poisreq-d@PCIEXFN (1)->
991b7d3956bSstephh    error.io.pciex.poisreq-fwd-d@PCIEXFN;
99200d0963fSdilpreet
993b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_SD(PCIEXFN) ||
994b7d3956bSstephh    IS_SU(PCIEXFN) } (1)->
995b7d3956bSstephh    error.io.pciex.flt-ur-u@PCIEXFN,
996b7d3956bSstephh    error.io.pciex.poisreq-fwd-d@PCIEXFN/PCIEXFNHZ;
99700d0963fSdilpreet
998b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@pciexrc/PCIEXFN (1)->
99900d0963fSdilpreet    ereport.io.pci.sec-mdpe@pciexrc;
100000d0963fSdilpreet
1001b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN/PCIEXFN { IS_SU(PCIEXFN) } (0)->
1002b7d3956bSstephh    ereport.io.pci.sec-mdpe@PCIEXFN;
100300d0963fSdilpreet
1004b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (2)->
1005b7d3956bSstephh    ereport.io.pci.dpe@PCIEXFN,
1006b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN;
100700d0963fSdilpreet
1008b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (0)->
1009b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
101000d0963fSdilpreet
1011b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN/PCIEXFN { IS_SD(PCIEXFN) } (1)->
1012b7d3956bSstephh    ereport.io.pci.sec-mdpe@PCIEXFN;
101300d0963fSdilpreet
1014b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_SD(PCIEXFN) } (0)->
1015b7d3956bSstephh    ereport.io.pci.dpe@PCIEXFN,
1016b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN,
1017b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
101800d0963fSdilpreet
1019b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (3)->
1020b7d3956bSstephh    ereport.io.pci.dpe@PCIEXFN,
1021b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN,
1022b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
102300d0963fSdilpreet
1024b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (1)->
1025b7d3956bSstephh    error.io.pci.dpdata-pw-d@PCIEXFN/PCIFNHZ,
1026b7d3956bSstephh    error.io.pci.dpdata-dw-d@PCIEXFN/PCIFNHZ;
102700d0963fSdilpreet
1028b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (1)->
1029b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
1030b7d3956bSstephh
1031b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1032b7d3956bSstephh    ereport.io.pci.dpe@PCIEXFN,
1033b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN,
1034b7d3956bSstephh    error.io.pciex.flt-ur-u@PCIEXFN;
1035b7d3956bSstephh
1036b7d3956bSstephhprop error.io.pciex.poisreq-fwd-d@PCIEXFN (0)->
1037b7d3956bSstephh    ereport.io.pci.target-mdpe@PCIEXFN;
103800d0963fSdilpreet
103900d0963fSdilpreet/*
104000d0963fSdilpreet * downstream poisoned completion
104100d0963fSdilpreet *
104200d0963fSdilpreet * - poiscomp-d cascades down to the leaf device/bridge and any switch ports on
104300d0963fSdilpreet *   route must raise ptlp and mdpe ereports.  A hardened leaf driver will also
104400d0963fSdilpreet *   raise pltp and mdpe. For non-hardened leaf devices, no ptlp/mdpe may be
104500d0963fSdilpreet *   reported, and though we should still see a nonfatal error reported from
104600d0963fSdilpreet *   the root complex identifying the leaf device, we won't actually be informed
104700d0963fSdilpreet *   that the error was an ptlp.
104800d0963fSdilpreet */
1049b7d3956bSstephhprop error.io.pciex.poiscomp-d@PCIEXFN (1)->
1050b7d3956bSstephh    error.io.pciex.poiscomp-fwd-d@PCIEXFN;
105100d0963fSdilpreet
1052b7d3956bSstephhprop error.io.pciex.poiscomp-fwd-d@PCIEXFN (1)->
1053b7d3956bSstephh    error.io.pciex.poiscomp-fwd-d@PCIEXFN/PCIEXFNHZ;
105400d0963fSdilpreet
1055b7d3956bSstephhprop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (2)->
1056b7d3956bSstephh    ereport.io.pci.dpe@PCIEXFN,
1057b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN;
105800d0963fSdilpreet
1059b7d3956bSstephhprop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (1)->
1060b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN,
1061b7d3956bSstephh    ereport.io.pci.sec-mdpe@PCIEXFN;
106200d0963fSdilpreet
1063b7d3956bSstephhprop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (0)->
1064b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
106500d0963fSdilpreet
1066b7d3956bSstephhprop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_SD(PCIEXFN) } (0)->
1067b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN,
1068b7d3956bSstephh    ereport.io.pci.sec-mdpe@PCIEXFN,
1069b7d3956bSstephh    ereport.io.pci.dpe@PCIEXFN,
1070b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN,
1071b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
107200d0963fSdilpreet
1073b7d3956bSstephhprop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (4)->
1074b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN,
1075b7d3956bSstephh    ereport.io.pci.dpe@PCIEXFN,
1076b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN,
1077b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
10788aec9182Sstephh
1079b7d3956bSstephhprop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (1)->
1080b7d3956bSstephh    error.io.pci.dpdata-dr-d@PCIEXFN/PCIFNHZ;
108100d0963fSdilpreet
1082b7d3956bSstephhprop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (1)->
1083b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
108400d0963fSdilpreet
1085b7d3956bSstephhprop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1086b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN,
1087b7d3956bSstephh    ereport.io.pci.dpe@PCIEXFN,
1088b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN;
108900d0963fSdilpreet
109000d0963fSdilpreet/*
109100d0963fSdilpreet * downstream request with ecrc error.
109200d0963fSdilpreet *
109300d0963fSdilpreet * - ecrcreq-d cascades down to the leaf device/bridge and any switches on
109400d0963fSdilpreet *   route can optionally raise an ecrc ereport. A hardened leaf driver may also
109500d0963fSdilpreet *   raise ecrc. For non-hardened leaf devices, no ecrc may be reported, and
109600d0963fSdilpreet *   though we should still see a nonfatal error reported from the root complex
109700d0963fSdilpreet *   identifying the leaf device, we won't actually be informed that the error
109800d0963fSdilpreet *   was an ecrc.
109900d0963fSdilpreet *
110000d0963fSdilpreet * Additionally, as the leaf/bridge will just throw away the packet, we should
1101b7d3956bSstephh * eventually get a cto at the root complex - so use an nr-u at the pciex
110200d0963fSdilpreet * leaf or bridge to get the appropriate behaviour. For the case where the leaf
110300d0963fSdilpreet * driver wasn't hardened we may be able to identify the leaf device (and
110400d0963fSdilpreet * therefore any intermediate switches which might have caused the problem)
110500d0963fSdilpreet * either via a target-ma ereport if available or via the nonfatal error
110600d0963fSdilpreet * reported from the root complex identifying the leaf device. The combination
110700d0963fSdilpreet * of a nonfatal error reported from the root complex and a cto from the root
110800d0963fSdilpreet * complex is sufficient to positively identify this case.
110900d0963fSdilpreet */
1110b7d3956bSstephhprop error.io.pciex.ecrcreq-d@PCIEXFN (1)->
111126733bfeSStephen Hanson    error.io.pciex.ecrcreq-fwd-d@PCIEXFN,
111226733bfeSStephen Hanson    error.io.pciex.ecrcreq-fwd-d@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) };
111300d0963fSdilpreet
1114b7d3956bSstephhprop error.io.pciex.ecrcreq-fwd-d@PCIEXFN { IS_SU(PCIEXFN) ||
1115b7d3956bSstephh    IS_SD(PCIEXFN) } (1)->
111626733bfeSStephen Hanson    error.io.pciex.flt-nr-u@PCIEXFN;
111700d0963fSdilpreet
1118b7d3956bSstephhprop error.io.pciex.ecrcreq-fwd-d@PCIEXFN { IS_SU(PCIEXFN) ||
1119b7d3956bSstephh    IS_SD(PCIEXFN) } (0)->
1120b7d3956bSstephh    ereport.io.pciex.tl.ecrc@PCIEXFN,
1121b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
112200d0963fSdilpreet
1123b7d3956bSstephhprop error.io.pciex.ecrcreq-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (3)->
1124b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1125b7d3956bSstephh    ereport.io.pciex.tl.ecrc@PCIEXFN,
1126b7d3956bSstephh    error.io.pciex.flt-nr-u@PCIEXFN;
112700d0963fSdilpreet
1128b7d3956bSstephhprop error.io.pciex.ecrcreq-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (2)->
1129b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1130b7d3956bSstephh    error.io.pciex.flt-nr-u@PCIEXFN;
113100d0963fSdilpreet
1132b7d3956bSstephhprop error.io.pciex.ecrcreq-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1133b7d3956bSstephh    ereport.io.pciex.tl.ecrc@PCIEXFN;
113400d0963fSdilpreet
113500d0963fSdilpreet/*
113600d0963fSdilpreet * downstream completion with ecrc error.
113700d0963fSdilpreet *
113800d0963fSdilpreet * - ecrccomp-d cascades down to the leaf device/bridge and any switches on
113900d0963fSdilpreet *   route can optionally raise an ecrc ereport. A hardened leaf driver may
114000d0963fSdilpreet *   also raise ecrc. For non-hardened leaf devices, no ecrc may be reported,
114100d0963fSdilpreet *   and though we should still see a nonfatal error reported from the root
114200d0963fSdilpreet *   complex identifying the leaf device, we won't actually be informed that
114300d0963fSdilpreet *   the error was an ecrc.
114400d0963fSdilpreet *
114500d0963fSdilpreet * Additionally, as the leaf/bridge will just throw away the packet, we should
114600d0963fSdilpreet * eventually get a cto. Note the leaf ereports are optional (ie in case driver
114700d0963fSdilpreet * not hardened) but if we get both ecrc and cto we need to distinguish from
114800d0963fSdilpreet * cto only which would be an nr-d.
114900d0963fSdilpreet */
1150b7d3956bSstephhprop error.io.pciex.ecrccomp-d@PCIEXFN (1)->
115126733bfeSStephen Hanson    error.io.pciex.ecrccomp-fwd-d@PCIEXFN,
115226733bfeSStephen Hanson    error.io.pciex.ecrccomp-fwd-d@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) };
115300d0963fSdilpreet
1154b7d3956bSstephhprop error.io.pciex.ecrccomp-fwd-d@PCIEXFN { IS_SU(PCIEXFN) ||
1155b7d3956bSstephh    IS_SD(PCIEXFN) } (0)->
1156b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1157b7d3956bSstephh    ereport.io.pciex.tl.ecrc@PCIEXFN;
115800d0963fSdilpreet
1159b7d3956bSstephhprop error.io.pciex.ecrccomp-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (3)->
1160b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1161b7d3956bSstephh    ereport.io.pciex.tl.ecrc@PCIEXFN,
1162b7d3956bSstephh    error.io.pciex.nr-d@PCIEXFN;
116300d0963fSdilpreet
1164b7d3956bSstephhprop error.io.pciex.ecrccomp-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (1)->
1165b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
116600d0963fSdilpreet
1167b7d3956bSstephhprop error.io.pciex.ecrccomp-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1168b7d3956bSstephh    ereport.io.pciex.tl.ecrc@PCIEXFN,
1169b7d3956bSstephh    error.io.pciex.nr-d@PCIEXFN;
117000d0963fSdilpreet
117100d0963fSdilpreet/*
117200d0963fSdilpreet * upstream poisoned request
117300d0963fSdilpreet *
1174b7d3956bSstephh * - flt-poisreq-u is on the pciex node which generated the fault
1175b7d3956bSstephh * - source-poisreq-u refers to at least one leaf or bridge device
1176b7d3956bSstephh *   whose bdf (if leaf) must match the source-id in the payload of the
11778aec9182Sstephh *   ereport generated from the root complex.
1178b7d3956bSstephh * - poisreq-u propagates up to the root complex and any switch ports on
117900d0963fSdilpreet *   route will raise a ptlp ereport, while any upstream devices generating
118000d0963fSdilpreet *   or forwarding the poisoned packed will raise an mdpe ereport. The root
118100d0963fSdilpreet *   complex should also report a ptlp.
118200d0963fSdilpreet *
118300d0963fSdilpreet * Additionally, as the root complex may treat the request as a ur, which the
118400d0963fSdilpreet * leaf/bridge will see (and if hardened report) as an ma (including sending a
118500d0963fSdilpreet * ta onto the child pci bus if this was a delayed write).
118600d0963fSdilpreet *
118700d0963fSdilpreet * We can always recognize what sort of fault this is from the ptlp (with no
118800d0963fSdilpreet * sec-mdpe) at the root complex. Recognizing which originating devices may be
118900d0963fSdilpreet * implicated can be done using the mdpe ereport (for a hardened leaf driver),
119000d0963fSdilpreet * or for a non-hardened leaf driver by using the source-id payload in the ptlp
119100d0963fSdilpreet * ereport to identify the originator of the request.  The ptlp/mdpe ereports
119200d0963fSdilpreet * at the intervening switches will narrow the fault down to a single suspect.
119300d0963fSdilpreet */
119400d0963fSdilpreet
1195b7d3956bSstephhprop error.io.pciex.flt-poisreq-u@PCIEXFN1 { (IS_LF(PCIEXFN) ||
1196b7d3956bSstephh    IS_BG(PCIEXFN)) && is_under(PCIEXFN1, PCIEXFN) } (0)->
1197b7d3956bSstephh    error.io.pciex.source-poisreq-u@PCIEXFN;
119800d0963fSdilpreet
1199b7d3956bSstephhprop error.io.pciex.source-poisreq-u@PCIEXFN1 { IS_LF(PCIEXFN1) &&
1200b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(pciexrc, PCIEXFN1) } (0)->
1201b7d3956bSstephh    ereport.io.pciex.tl.ptlp@pciexrc,
1202b7d3956bSstephh    ereport.io.pciex.tl.ur@pciexrc;
120300d0963fSdilpreet
1204b7d3956bSstephhprop error.io.pciex.source-poisreq-u@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1205b7d3956bSstephh    ereport.io.pci.ma@PCIEXFN;
120600d0963fSdilpreet
1207b7d3956bSstephhprop error.io.pciex.source-poisreq-u@PCIEXFN { IS_BG(PCIEXFN) &&
1208b7d3956bSstephh    is_under(pciexrc, PCIEXFN) } (0)->
1209b7d3956bSstephh    ereport.io.pciex.tl.ptlp@pciexrc,
1210b7d3956bSstephh    ereport.io.pciex.tl.ur@pciexrc;
121100d0963fSdilpreet
1212b7d3956bSstephhprop error.io.pciex.source-poisreq-u@PCIEXFN { IS_BG(PCIEXFN) } (0)->
1213b7d3956bSstephh    ereport.io.pci.ma@PCIEXFN,
1214b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN,
1215b7d3956bSstephh    error.io.pci.ta-drw-d@PCIEXFN/PCIFN;
121600d0963fSdilpreet
1217b7d3956bSstephhprop error.io.pciex.flt-poisreq-u@PCIEXFN (1)->
1218b7d3956bSstephh    error.io.pciex.poisreq-u@PCIEXFN;
121900d0963fSdilpreet
1220b7d3956bSstephh/*
1221b7d3956bSstephh * the remaining propagations are also used for poisoned requests propagating
1222b7d3956bSstephh * up due to a fault behind a pcie-pci bridge
1223b7d3956bSstephh */
1224b7d3956bSstephhprop error.io.pciex.poisreq-u@PCIEXFN/PCIEXFN (1)->
1225b7d3956bSstephh    error.io.pciex.poisreq-u@PCIEXFN;
122600d0963fSdilpreet
1227b7d3956bSstephhprop error.io.pciex.poisreq-u@PCIEXFN { IS_BG(PCIEXFN) } (1)->
1228b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN;
122900d0963fSdilpreet
1230b7d3956bSstephhprop error.io.pciex.poisreq-u@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1231b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN;
123200d0963fSdilpreet
1233b7d3956bSstephhprop error.io.pciex.poisreq-u@PCIEXFN { IS_SD(PCIEXFN) } (2)->
1234b7d3956bSstephh    ereport.io.pci.sec-dpe@PCIEXFN,
1235b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN;
123600d0963fSdilpreet
1237b7d3956bSstephhprop error.io.pciex.poisreq-u@PCIEXFN { IS_SD(PCIEXFN) } (0)->
1238b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN,
1239b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
124000d0963fSdilpreet
1241b7d3956bSstephhprop error.io.pciex.poisreq-u@PCIEXFN { IS_SU(PCIEXFN) } (1)->
1242b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN;
124300d0963fSdilpreet
1244b7d3956bSstephhprop error.io.pciex.poisreq-u@PCIEXFN { IS_SU(PCIEXFN) } (0)->
1245b7d3956bSstephh    ereport.io.pci.sec-dpe@PCIEXFN,
1246b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN,
1247b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
124800d0963fSdilpreet
1249b7d3956bSstephhprop error.io.pciex.poisreq-u@pciexrc/PCIEXFN (1)->
125000d0963fSdilpreet    ereport.io.pci.sec-dpe@pciexrc;
125100d0963fSdilpreet
125200d0963fSdilpreet/*
125300d0963fSdilpreet * upstream poisoned completion
125400d0963fSdilpreet *
1255b7d3956bSstephh * - flt-poiscomp-u is on the pciex node which generated the fault. There will
125600d0963fSdilpreet *   be a target-mdpe downstream from here.
1257b7d3956bSstephh * - source-poiscomp-u refers to at least one leaf or bridge device
1258b7d3956bSstephh *   whose bdf (if leaf) must match the source-id in the payload of the
12598aec9182Sstephh *   ereport generated from the root complex.
1260b7d3956bSstephh * - poiscomp-u propagates up to the root complex and any switches on
126100d0963fSdilpreet *   route will raise ptlp and sec-mdpe ereports. The root complex will also
126200d0963fSdilpreet *   raise a sec-mdpe and ptlp.
126300d0963fSdilpreet *
126400d0963fSdilpreet * We can always recognize what sort of fault this is from the ptlp/sec-mdpe at
126500d0963fSdilpreet * the root complex. Recognizing which originating devices may be implicated
126600d0963fSdilpreet * can be done using the source-id payload in the ptlp ereport to identify the
126700d0963fSdilpreet * originator of the completion. The ptlp/sec-mdpe ereports at the intervening
126800d0963fSdilpreet * switches will narrow the fault down to a single suspect.
126900d0963fSdilpreet */
1270b7d3956bSstephhprop error.io.pciex.flt-poiscomp-u@PCIEXFN { IS_LF(PCIEXFN1) &&
1271b7d3956bSstephh    is_under(PCIEXFN, PCIEXFN1) } (0)->
1272b7d3956bSstephh    ereport.io.pci.target-mdpe@PCIEXFN1;
127300d0963fSdilpreet
1274b7d3956bSstephhprop error.io.pciex.flt-poiscomp-u@PCIEXFN { IS_PCI_LF(PCIFN) &&
1275b7d3956bSstephh    is_under(PCIEXFN, PCIFN) } (0)->
1276b7d3956bSstephh    ereport.io.pci.target-mdpe@PCIFN;
127700d0963fSdilpreet
1278b7d3956bSstephhprop error.io.pciex.flt-poiscomp-u@PCIEXFN1 { (IS_LF(PCIEXFN) ||
1279b7d3956bSstephh    IS_BG(PCIEXFN)) && is_under(PCIEXFN1, PCIEXFN) } (0)->
1280b7d3956bSstephh    error.io.pciex.source-poiscomp-u@PCIEXFN;
128100d0963fSdilpreet
1282b7d3956bSstephhprop error.io.pciex.source-poiscomp-u@PCIEXFN1 { IS_LF(PCIEXFN1) &&
1283b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(pciexrc, PCIEXFN1) } (0)->
1284b7d3956bSstephh    ereport.io.pciex.tl.ptlp@pciexrc;
128500d0963fSdilpreet
1286b7d3956bSstephhprop error.io.pciex.source-poiscomp-u@PCIEXFN1 { IS_BG(PCIEXFN1) &&
1287b7d3956bSstephh    is_under(pciexrc, PCIEXFN1) } (0)->
1288b7d3956bSstephh    ereport.io.pciex.tl.ptlp@pciexrc;
128900d0963fSdilpreet
1290b7d3956bSstephhprop error.io.pciex.flt-poiscomp-u@PCIEXFN (1)->
1291b7d3956bSstephh    error.io.pciex.poiscomp-u@PCIEXFN;
129200d0963fSdilpreet
1293b7d3956bSstephh/*
1294b7d3956bSstephh * the remaining propagations are also used for poisoned completions propagating
1295b7d3956bSstephh * up due to a fault behind a pcie-pci bridge
1296b7d3956bSstephh */
1297b7d3956bSstephhprop error.io.pciex.poiscomp-u@PCIEXFN/PCIEXFN (1)->
1298b7d3956bSstephh    error.io.pciex.poiscomp-u@PCIEXFN;
129900d0963fSdilpreet
1300b7d3956bSstephhprop error.io.pciex.poiscomp-u@PCIEXFN { IS_SD(PCIEXFN) } (2)->
1301b7d3956bSstephh    ereport.io.pci.sec-dpe@PCIEXFN,
1302b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN;
130300d0963fSdilpreet
1304b7d3956bSstephhprop error.io.pciex.poiscomp-u@PCIEXFN { IS_SD(PCIEXFN) } (1)->
1305b7d3956bSstephh    ereport.io.pci.sec-mdpe@PCIEXFN,
1306b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN;
130700d0963fSdilpreet
1308b7d3956bSstephhprop error.io.pciex.poiscomp-u@PCIEXFN { IS_SD(PCIEXFN) } (0)->
1309b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
131000d0963fSdilpreet
1311b7d3956bSstephhprop error.io.pciex.poiscomp-u@PCIEXFN { IS_SU(PCIEXFN) } (0)->
1312b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN,
1313b7d3956bSstephh    ereport.io.pci.sec-mdpe@PCIEXFN,
1314b7d3956bSstephh    ereport.io.pci.sec-dpe@PCIEXFN,
1315b7d3956bSstephh    ereport.io.pciex.tl.ptlp@PCIEXFN,
1316b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
131700d0963fSdilpreet
1318b7d3956bSstephhprop error.io.pciex.poiscomp-u@pciexrc/PCIEXFN (1)->
131900d0963fSdilpreet    ereport.io.pci.sec-dpe@pciexrc;
132000d0963fSdilpreet
1321b7d3956bSstephhprop error.io.pciex.poiscomp-u@pciexrc/PCIEXFN (0)->
132200d0963fSdilpreet    ereport.io.pci.sec-mdpe@pciexrc;
132300d0963fSdilpreet
132400d0963fSdilpreet/*
132500d0963fSdilpreet * upstream request with ecrc error.
132600d0963fSdilpreet *
1327b7d3956bSstephh * - flt-ecrcreq-u is on the pciex node which generated the fault.
132800d0963fSdilpreet * - source-ecrcreq-u cascades down to at least one leaf device (pciex or pci),
13298aec9182Sstephh *   whose bdf (if pciex) must match the source-id in the payload of the
13308aec9182Sstephh *   ereport generated from the root complex.
1331b7d3956bSstephh * - ecrcreq-u propagates up to the root complex which must report it with an
1332b7d3956bSstephh *   ecrc ereport and any switches on route can optionally raise an ecrc ereport
133300d0963fSdilpreet *
13348aec9182Sstephh * Additionally, as the root complex will just throw away the packet, we may
133500d0963fSdilpreet * eventually get a cto - so use an nr-d at the pciex leaf or bridge to get
133600d0963fSdilpreet * the appropriate behaviour.
133700d0963fSdilpreet *
133800d0963fSdilpreet * We can always recognize what sort of fault this is from the ecrc (with no
133900d0963fSdilpreet * cto) at the root complex. Recognizing which leaf device may be implicated
134000d0963fSdilpreet * can be done from the cto ereport (for a hardened leaf driver) or for a
134100d0963fSdilpreet * non-hardened leaf using the source-id payload of the ecrc.
134200d0963fSdilpreet */
1343b7d3956bSstephhprop error.io.pciex.flt-ecrcreq-u@PCIEXFN1 { (IS_LF(PCIEXFN) ||
1344b7d3956bSstephh    IS_BG(PCIEXFN)) && is_under(PCIEXFN1, PCIEXFN) } (0)->
1345b7d3956bSstephh    error.io.pciex.source-ecrcreq-u@PCIEXFN;
134600d0963fSdilpreet
1347b7d3956bSstephhprop error.io.pciex.source-ecrcreq-u@PCIEXFN (0)->
1348b7d3956bSstephh    error.io.pciex.nr-d@PCIEXFN;
134900d0963fSdilpreet
1350b7d3956bSstephhprop error.io.pciex.source-ecrcreq-u@PCIEXFN1 { IS_LF(PCIEXFN1) &&
1351b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(pciexrc, PCIEXFN1) } (0)->
1352b7d3956bSstephh    ereport.io.pciex.tl.ecrc@pciexrc;
135300d0963fSdilpreet
1354b7d3956bSstephhprop error.io.pciex.source-ecrcreq-u@PCIEXFN { IS_BG(PCIEXFN) &&
1355b7d3956bSstephh    is_under(pciexrc, PCIEXFN) } (0)->
1356b7d3956bSstephh    ereport.io.pciex.tl.ecrc@pciexrc;
135700d0963fSdilpreet
1358b7d3956bSstephhprop error.io.pciex.flt-ecrcreq-u@PCIEXFN (1)->
1359b7d3956bSstephh     error.io.pciex.ecrcreq-u@PCIEXFN;
136000d0963fSdilpreet
1361b7d3956bSstephhprop error.io.pciex.ecrcreq-u@PCIEXFN/PCIEXFN (1)->
1362b7d3956bSstephh     error.io.pciex.ecrcreq-u@PCIEXFN;
136300d0963fSdilpreet
1364b7d3956bSstephhprop error.io.pciex.ecrcreq-u@PCIEXFN { IS_SD(PCIEXFN)||IS_SU(PCIEXFN) } (0)->
1365b7d3956bSstephh    ereport.io.pciex.tl.ecrc@PCIEXFN,
1366b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
136700d0963fSdilpreet
136800d0963fSdilpreet/*
136900d0963fSdilpreet * upstream completion with ecrc error.
137000d0963fSdilpreet *
1371b7d3956bSstephh * - flt-ecrccomp-u is on the pciex node which generated the fault.
137200d0963fSdilpreet * - source-ecrccomp-u cascades down to at least one leaf device (pciex or pci),
13738aec9182Sstephh *   whose bdf (if pciex) must match the source-id in the payload of the
13748aec9182Sstephh *   ereport generated from the root complex.
1375b7d3956bSstephh * - ecrccomp-u propagates up to the root complex, which should report it with
1376b7d3956bSstephh *   an ecrc ereport and any switches on route can optionally raise an ecrc
137700d0963fSdilpreet *   ereport.
137800d0963fSdilpreet *
137900d0963fSdilpreet * Additionally, as the root complex will just throw away the packet, we'll
138000d0963fSdilpreet * eventually get a cto - so use an flt-nr-u at the pciex leaf or bridge to get
138100d0963fSdilpreet * the appropriate behaviour.
138200d0963fSdilpreet *
138300d0963fSdilpreet * We can always recognize what sort of fault this from the ecrc/cto from the
138400d0963fSdilpreet * root complex. Recognizing which leaf device may be implicated can be done
138500d0963fSdilpreet * using either the source-id payload of the ecrc or the target-ma ereport if
138600d0963fSdilpreet * available.
138700d0963fSdilpreet */
1388b7d3956bSstephhprop error.io.pciex.flt-ecrccomp-u@PCIEXFN1 { (IS_LF(PCIEXFN) ||
1389b7d3956bSstephh    IS_BG(PCIEXFN)) && is_under(PCIEXFN1, PCIEXFN) } (0)->
1390b7d3956bSstephh    error.io.pciex.source-ecrccomp-u@PCIEXFN;
139100d0963fSdilpreet
1392b7d3956bSstephhprop error.io.pciex.source-ecrccomp-u@PCIEXFN (0)->
1393b7d3956bSstephh    error.io.pciex.flt-nr-u@PCIEXFN;
139400d0963fSdilpreet
1395b7d3956bSstephhprop error.io.pciex.source-ecrccomp-u@PCIEXFN1 { IS_LF(PCIEXFN1) &&
1396b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(pciexrc, PCIEXFN1) } (0)->
1397b7d3956bSstephh    ereport.io.pciex.tl.ecrc@pciexrc;
139800d0963fSdilpreet
1399b7d3956bSstephhprop error.io.pciex.source-ecrccomp-u@PCIEXFN { IS_BG(PCIEXFN) &&
1400b7d3956bSstephh    is_under(pciexrc, PCIEXFN) } (0)->
1401b7d3956bSstephh    ereport.io.pciex.tl.ecrc@pciexrc;
140200d0963fSdilpreet
1403b7d3956bSstephhprop error.io.pciex.flt-ecrccomp-u@PCIEXFN (1)->
1404b7d3956bSstephh    error.io.pciex.ecrccomp-u@PCIEXFN;
140500d0963fSdilpreet
1406b7d3956bSstephhprop error.io.pciex.ecrccomp-u@PCIEXFN/PCIEXFN (1)->
1407b7d3956bSstephh    error.io.pciex.ecrccomp-u@PCIEXFN;
140800d0963fSdilpreet
1409b7d3956bSstephhprop error.io.pciex.ecrccomp-u@PCIEXFN { IS_SD(PCIEXFN)||IS_SU(PCIEXFN) } (0)->
1410b7d3956bSstephh    ereport.io.pciex.tl.ecrc@PCIEXFN,
1411b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
141200d0963fSdilpreet
141300d0963fSdilpreet/*
141400d0963fSdilpreet * no response to downstream requester
141500d0963fSdilpreet *
141600d0963fSdilpreet * - nr-d will effectively cascade downstream to the requester. The fault here
141700d0963fSdilpreet *   is always at the root complex. For a hardened leaf device driver, we will
141800d0963fSdilpreet *   always be able to recognize this as the requester will report this as a
141900d0963fSdilpreet *   cto. For non-hardened leaf devices, no cto will be reported, and though we
142000d0963fSdilpreet *   should still see a nonfatal error reported from the root complex
142100d0963fSdilpreet *   identifying the leaf device, we won't actually be informed that the error
142200d0963fSdilpreet *   was a cto.
142300d0963fSdilpreet */
1424b7d3956bSstephhprop error.io.pciex.nr-d@PCIEXFN (1)->
142526733bfeSStephen Hanson    error.io.pciex.nr-fwd-d@PCIEXFN { IS_BG(PCIEXFN) || IS_LF(PCIEXFN) },
142626733bfeSStephen Hanson    error.io.pciex.nr-fwd-d@PCIEXFNHZ { (IS_BG(PCIEXFNHZ) ||
142726733bfeSStephen Hanson    IS_LF(PCIEXFNHZ)) && is_under(PCIEXFN, PCIEXFNHZ) };
142800d0963fSdilpreet
142926733bfeSStephen Hansonprop error.io.pciex.nr-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (2)->
1430b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1431b7d3956bSstephh    ereport.io.pciex.tl.cto@PCIEXFN;
143200d0963fSdilpreet
143326733bfeSStephen Hansonprop error.io.pciex.nr-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (0)->
1434b7d3956bSstephh    ereport.io.pci.ma@PCIEXFN,
1435b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN,
1436b7d3956bSstephh    error.io.pci.nr-drw-d@PCIEXFN/PCIFN,
1437b7d3956bSstephh    error.io.pci.ta-drw-d@PCIEXFN/PCIFN;
143800d0963fSdilpreet
143926733bfeSStephen Hansonprop error.io.pciex.nr-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (1)->
1440b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
144100d0963fSdilpreet
144226733bfeSStephen Hansonprop error.io.pciex.nr-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1443b7d3956bSstephh    ereport.io.pci.ma@PCIEXFN,
1444b7d3956bSstephh    ereport.io.pciex.tl.cto@PCIEXFN;
144500d0963fSdilpreet
144600d0963fSdilpreet/*
144700d0963fSdilpreet * no response to upstream requester
144800d0963fSdilpreet *
1449b7d3956bSstephh * - flt-nr-u will effectively cascade upstream to the root complex which will
145000d0963fSdilpreet *   report it as a cto.
145100d0963fSdilpreet *
145200d0963fSdilpreet * We have to use target-ma to informs us which device failed to respond.
145300d0963fSdilpreet */
1454b7d3956bSstephhprop error.io.pciex.flt-nr-u@PCIEXFN (1)->
1455b7d3956bSstephh    error.io.pci.target-ma-d@PCIEXFN;
145600d0963fSdilpreet
1457b7d3956bSstephhprop error.io.pciex.flt-nr-u@PCIEXFN (1)->
1458b7d3956bSstephh    error.io.pciex.nr-u@PCIEXFN;
145900d0963fSdilpreet
1460b7d3956bSstephhprop error.io.pciex.nr-u@PCIEXFN/PCIEXFN (1)->
1461b7d3956bSstephh    error.io.pciex.nr-u@PCIEXFN;
1462b7d3956bSstephh
1463b7d3956bSstephhprop error.io.pciex.nr-u@pciexrc/PCIEXFN (1)->
146400d0963fSdilpreet    ereport.io.pciex.tl.cto@pciexrc;
146500d0963fSdilpreet
1466b7d3956bSstephhprop error.io.pciex.nr-u@pciexrc/PCIEXFN (0)->
146700d0963fSdilpreet    ereport.io.pci.sec-ma@pciexrc;
146800d0963fSdilpreet
146900d0963fSdilpreet/*
147000d0963fSdilpreet * downstream malformed tlp
147100d0963fSdilpreet *
147200d0963fSdilpreet * This will cascade downstream to the receiver which will report it as an mtlp.
147300d0963fSdilpreet * For non-hardened leaf drivers, no mtlp will be reported, and though we should
147400d0963fSdilpreet * still see a fatal error reported from the root complex identifying the leaf
147500d0963fSdilpreet * device, we won't actually be informed that the error was a mtlp.
147600d0963fSdilpreet * Note that sw-mtlp-d is to handle the case where the switch is actually
147700d0963fSdilpreet * the target of the packet (config request etc).
147800d0963fSdilpreet */
147926733bfeSStephen Hansonprop error.io.pciex.mtlp-d@PCIEXFN (1)->
148026733bfeSStephen Hanson    error.io.pciex.mtlp-fwd-d@PCIEXFN { !IS_SD(PCIEXFN) },
148126733bfeSStephen Hanson    error.io.pciex.mtlp-fwd-d@PCIEXFNHZ { !IS_SD(PCIEXFNHZ) &&
148226733bfeSStephen Hanson    is_under(PCIEXFN, PCIEXFNHZ) };
148300d0963fSdilpreet
148426733bfeSStephen Hansonprop error.io.pciex.mtlp-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (2)->
1485b7d3956bSstephh    error.io.pciex.fatal@PCIEXFN,
1486b7d3956bSstephh    ereport.io.pciex.tl.mtlp@PCIEXFN;
148700d0963fSdilpreet
148826733bfeSStephen Hansonprop error.io.pciex.mtlp-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (2)->
1489b7d3956bSstephh    error.io.pciex.fatal@PCIEXFN,
1490b7d3956bSstephh    ereport.io.pciex.tl.mtlp@PCIEXFN;
149100d0963fSdilpreet
149226733bfeSStephen Hansonprop error.io.pciex.mtlp-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (1)->
1493b7d3956bSstephh    error.io.pciex.fatal@PCIEXFN;
149400d0963fSdilpreet
149526733bfeSStephen Hansonprop error.io.pciex.mtlp-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1496b7d3956bSstephh    ereport.io.pciex.tl.mtlp@PCIEXFN;
149700d0963fSdilpreet
149800d0963fSdilpreet/*
149900d0963fSdilpreet * upstream malformed tlp
150000d0963fSdilpreet *
150100d0963fSdilpreet * This will cascade upstream to the receiver which will report it as an mtlp.
150200d0963fSdilpreet */
1503b7d3956bSstephhprop error.io.pciex.flt-mtlp-u@PCIEXFN (1)->
1504b7d3956bSstephh    error.io.pciex.mtlp-u@PCIEXFN;
150500d0963fSdilpreet
1506b7d3956bSstephhprop error.io.pciex.mtlp-u@PCIEXFN/PCIEXFN (1)->
1507b7d3956bSstephh    error.io.pciex.mtlp-u@PCIEXFN;
150800d0963fSdilpreet
1509b7d3956bSstephhprop error.io.pciex.mtlp-u@pciexrc/PCIEXFN (1)->
1510b7d3956bSstephh    ereport.io.pciex.tl.mtlp@pciexrc;
151100d0963fSdilpreet
151200d0963fSdilpreet/*
151300d0963fSdilpreet * downstream completer aborts
151400d0963fSdilpreet *
151500d0963fSdilpreet * This could be the fault of the root complex or a switch reporting an internal
151600d0963fSdilpreet * error, or of the leaf device sending an invalid request (the latter is
1517b7d3956bSstephh * handled by the flt-badreq-u case below).
151800d0963fSdilpreet *
151900d0963fSdilpreet * This is reported by the completer or by an intervening downstream switch
152000d0963fSdilpreet * port. The completer abort response propagates down to the initiator which
152100d0963fSdilpreet * will set the legacy pci bit rta.
152200d0963fSdilpreet *
152300d0963fSdilpreet * The fault can always be recognized by the ca ereport from the root complex
152400d0963fSdilpreet * or downstream switch port. The originator of the request can be recognized
152500d0963fSdilpreet * by the rta for a hardened driver or by using the source-id payload of the
152600d0963fSdilpreet * ca ereport for a non-hardened driver.
152700d0963fSdilpreet */
1528b7d3956bSstephhprop error.io.pciex.ca-d@pciexrc/PCIEXFN (0)->
15298aec9182Sstephh    ereport.io.pciex.tl.ca@pciexrc;
15308aec9182Sstephh
1531b7d3956bSstephhprop error.io.pciex.ca-d@pciexrc/PCIEXFN (1)->
153200d0963fSdilpreet    ereport.io.pci.sec-sta@pciexrc;
153300d0963fSdilpreet
1534b7d3956bSstephhprop error.io.pciex.ca-d@PCIEXFN/PCIEXFN (0)->
1535b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN;
153600d0963fSdilpreet
1537b7d3956bSstephhprop error.io.pciex.ca-d@PCIEXFN/PCIEXFN (2)->
1538b7d3956bSstephh    ereport.io.pciex.tl.ca@PCIEXFN,
1539b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
154000d0963fSdilpreet
154126733bfeSStephen Hansonprop error.io.pciex.ca-d@PCIEXFN (1)->
154226733bfeSStephen Hanson    error.io.pciex.ca-fwd-d@PCIEXFN { IS_BG(PCIEXFN) || IS_LF(PCIEXFN) },
154326733bfeSStephen Hanson    error.io.pciex.ca-fwd-d@PCIEXFNHZ { (IS_BG(PCIEXFNHZ) ||
154426733bfeSStephen Hanson    IS_LF(PCIEXFNHZ)) && is_under(PCIEXFN, PCIEXFNHZ) };
154500d0963fSdilpreet
1546b7d3956bSstephhprop error.io.pciex.ca-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (1)->
1547b7d3956bSstephh    ereport.io.pci.rta@PCIEXFN;
154800d0963fSdilpreet
1549b7d3956bSstephhprop error.io.pciex.ca-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (0)->
1550b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN,
1551b7d3956bSstephh    error.io.pci.ta-drw-d@PCIEXFN/PCIFN;
155200d0963fSdilpreet
1553b7d3956bSstephhprop error.io.pciex.ca-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1554b7d3956bSstephh    ereport.io.pci.rta@PCIEXFN;
155500d0963fSdilpreet
155600d0963fSdilpreet/*
155700d0963fSdilpreet * upstream completer aborts
155800d0963fSdilpreet *
155900d0963fSdilpreet * This could be the fault of the leaf device/bridge/upstream switch port
156000d0963fSdilpreet * reporting an internal error, or of the root complex sending an invalid
156100d0963fSdilpreet * request (the latter case is handled by badreq-d below).
156200d0963fSdilpreet *
15638aec9182Sstephh * This is reported as a ca by the completer. The completer (for non-posted
1564b7d3956bSstephh * requests) sends the appropriate error bits in the completion message to
15658aec9182Sstephh * the initiator which will set the legacy pci bit sec-rta.
156600d0963fSdilpreet *
156700d0963fSdilpreet * The fault can always be recognized from the sec-rta bit at the root complex.
156800d0963fSdilpreet *
156900d0963fSdilpreet * If the fault was with a PCI Express leaf with a hardened driver, then we
157000d0963fSdilpreet * will identify the device from the ca ereport.
157100d0963fSdilpreet *
157200d0963fSdilpreet * If the fault was with a PCI Express leaf with a non-hardened driver, then we
157300d0963fSdilpreet * can still identify the leaf device from the source-id payload of the nonfatal
157400d0963fSdilpreet * message ereport from the root complex or from the target-rta ereport.
157500d0963fSdilpreet */
1576b7d3956bSstephhprop error.io.pciex.flt-ca-u@PCIEXFN { !IS_LF(PCIEXFN) } (1)->
1577b7d3956bSstephh    ereport.io.pciex.tl.ca@PCIEXFN;
157800d0963fSdilpreet
1579b7d3956bSstephhprop error.io.pciex.flt-ca-u@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1580b7d3956bSstephh    ereport.io.pciex.tl.ca@PCIEXFN;
158100d0963fSdilpreet
1582b7d3956bSstephhprop error.io.pciex.flt-ca-u@PCIEXFN (0)->
1583b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1584b7d3956bSstephh    ereport.io.pci.sta@PCIEXFN;
15858aec9182Sstephh
1586b7d3956bSstephhprop error.io.pciex.flt-ca-u@PCIEXFN (2)->
1587b7d3956bSstephh    error.io.pci.target-rta-d@PCIEXFN,
1588b7d3956bSstephh    error.io.pciex.ca-u@PCIEXFN;
158900d0963fSdilpreet
1590b7d3956bSstephhprop error.io.pciex.ca-u@PCIEXFN/PCIEXFN (1)->
1591b7d3956bSstephh    error.io.pciex.ca-u@PCIEXFN;
159200d0963fSdilpreet
1593b7d3956bSstephhprop error.io.pciex.ca-u@pciexrc/PCIEXFN (0)->
159400d0963fSdilpreet    ereport.io.pci.sec-rta@pciexrc;
159500d0963fSdilpreet
159600d0963fSdilpreet/*
159700d0963fSdilpreet * upstream bad request
159800d0963fSdilpreet *
159900d0963fSdilpreet * When detecting bad data on a request the completer (or any switch on the
160000d0963fSdilpreet * way to the completer) may report ur or ca. If the switch detects the problem
160100d0963fSdilpreet * first then the request doesn't get forwarded on to the completer.
160200d0963fSdilpreet *
16038aec9182Sstephh * These are reported as ur/ca ereports. For non-posted requests, the reporter
16048aec9182Sstephh * then sends the appropriate error bits in the completion message to the
16058aec9182Sstephh * initiator which will set the legacy pci bits ma or rta.
160600d0963fSdilpreet *
1607b7d3956bSstephh * For flt-badreq-u, the ca/ur ereports contain a source-id payload that
1608b7d3956bSstephh * identifies the initiator.
160900d0963fSdilpreet *
161000d0963fSdilpreet * The fault can always be recognized by the ca/ur ereport from the root
161100d0963fSdilpreet * complex or downstream switch port. The originator of the request can be
161200d0963fSdilpreet * recognized by the rta/ma for a hardened driver or by using the source-id
161300d0963fSdilpreet * payload of the ca/ur ereport for a non-hardened driver.
161400d0963fSdilpreet */
1615b7d3956bSstephhprop error.io.pciex.flt-badreq-u@PCIEXFN (0)->
1616b7d3956bSstephh    ereport.io.pci.ma@PCIEXFN,
1617b7d3956bSstephh    ereport.io.pci.rta@PCIEXFN;
161800d0963fSdilpreet
1619b7d3956bSstephhprop error.io.pciex.flt-badreq-u@PCIEXFN1 {
1620b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(pciexrc, PCIEXFN1) } (0)->
1621b7d3956bSstephh    ereport.io.pciex.tl.ur@pciexrc,
1622b7d3956bSstephh    ereport.io.pciex.tl.ca@pciexrc;
162300d0963fSdilpreet
1624b7d3956bSstephhprop error.io.pciex.flt-badreq-u@PCIEXFN (1)->
1625b7d3956bSstephh    error.io.pciex.badreq-u@PCIEXFN;
1626b7d3956bSstephh
1627b7d3956bSstephhprop error.io.pciex.badreq-u@PCIEXFN/PCIEXFN (1)->
1628b7d3956bSstephh    error.io.pciex.badreq-u@PCIEXFN;
1629b7d3956bSstephh
1630b7d3956bSstephhprop error.io.pciex.badreq-u@pciexrc/PCIEXFN (0)->
163100d0963fSdilpreet    ereport.io.pci.sec-sta@pciexrc;
163200d0963fSdilpreet
1633b7d3956bSstephhprop error.io.pciex.flt-badreq-u@PCIEXFN1 { IS_SD(PCIEXFN) &&
1634b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIEXFN1) } (0)->
1635b7d3956bSstephh    ereport.io.pciex.tl.ur@PCIEXFN,
1636b7d3956bSstephh    ereport.io.pciex.tl.ca@PCIEXFN;
163700d0963fSdilpreet
1638b7d3956bSstephhprop error.io.pciex.flt-badreq-u@PCIEXFN1 { IS_SD(PCIEXFN) &&
1639b7d3956bSstephh    is_under(PCIEXFN, PCIEXFN1) } (0)->
1640b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN,
1641b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
164200d0963fSdilpreet
164300d0963fSdilpreet/*
164400d0963fSdilpreet * downstream bad request
164500d0963fSdilpreet *
164600d0963fSdilpreet * When detecting bad data on a request the completer (or any switch on the
164700d0963fSdilpreet * way to the completer) may report ur or ca. If the switch detects the problem
164800d0963fSdilpreet * first then the request doesn't get forwarded on to the completer.
164900d0963fSdilpreet *
165000d0963fSdilpreet * These are reported as ur/ca ereports (except where the completer is a non-
165100d0963fSdilpreet * hardened leaf driver when all we get is a nonfatal error from the root
165200d0963fSdilpreet * complex identifying the leaf device). The reporter then sends the appropriate
165300d0963fSdilpreet * error bits in the completion message to the initiator which will set the
165400d0963fSdilpreet * legacy pci bits ma or rta (oddly there is no equivalent in pcie error
165500d0963fSdilpreet * reporting).
165600d0963fSdilpreet */
165726733bfeSStephen Hansonprop error.io.pciex.badreq-d@PCIEXFN (1)->
1658b7d3956bSstephh    error.io.pciex.flt-ur-u@PCIEXFN,
1659b7d3956bSstephh    error.io.pciex.flt-ca-u@PCIEXFN,
166026733bfeSStephen Hanson    error.io.pciex.flt-ur-u@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
166126733bfeSStephen Hanson    error.io.pciex.flt-ca-u@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
166226733bfeSStephen Hanson    error.io.pci.badreq-pw-d@PCIEXFNHZ/PCIFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
166326733bfeSStephen Hanson    error.io.pci.badreq-drw-d@PCIEXFNHZ/PCIFNHZ { is_under(PCIEXFN,PCIEXFNHZ) };
1664b7d3956bSstephh
1665b7d3956bSstephhprop error.io.pciex.flt-ur-u@PCIEXFN { !IS_LF(PCIEXFN) } (1)->
1666b7d3956bSstephh    ereport.io.pciex.tl.ur@PCIEXFN;
1667b7d3956bSstephh
1668b7d3956bSstephhprop error.io.pciex.flt-ur-u@PCIEXFN { IS_LF(PCIEXFN) } (0)->
1669b7d3956bSstephh    ereport.io.pciex.tl.ur@PCIEXFN;
1670b7d3956bSstephh
1671b7d3956bSstephhprop error.io.pciex.flt-ur-u@PCIEXFN (2)->
1672b7d3956bSstephh    error.io.pci.target-ma-d@PCIEXFN,
1673b7d3956bSstephh    error.io.pciex.ur-u@PCIEXFN;
1674b7d3956bSstephh
1675b7d3956bSstephhprop error.io.pciex.flt-ur-u@PCIEXFN (0)->
1676b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
1677b7d3956bSstephh
1678b7d3956bSstephhprop error.io.pciex.ur-u@PCIEXFN/PCIEXFN (1)->
1679b7d3956bSstephh    error.io.pciex.ur-u@PCIEXFN;
1680b7d3956bSstephh
1681b7d3956bSstephhprop error.io.pciex.ur-u@pciexrc/PCIEXFN (0)->
1682b7d3956bSstephh    ereport.io.pci.sec-ma@pciexrc;
168300d0963fSdilpreet
168400d0963fSdilpreet/*
168500d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
168600d0963fSdilpreet * Stub unused legacy pci ereports at root complex.
168700d0963fSdilpreet * Stub tl.uc as we can't do anything useful with it (we should eventually
168800d0963fSdilpreet * get a cto which we can do something with - a uc without a cto is a genuinely
168900d0963fSdilpreet * spurious completion which is at least harmless).
169000d0963fSdilpreet * Stub messages that the root complex sends to itself.
169100d0963fSdilpreet * Stub mce/mue/ce/nr/noadverr.
169200d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
169300d0963fSdilpreet */
169400d0963fSdilpreet
169500d0963fSdilpreetevent error.io.pciex.discard_rc@pciexrc;
169600d0963fSdilpreet
1697b7d3956bSstephhevent ereport.io.pciex.noadverr@PCIEXFN{within(5s)};
1698b7d3956bSstephhevent ereport.io.pciex.correctable@PCIEXFN{within(5s)};
1699b7d3956bSstephhevent ereport.io.pciex.nonfatal@PCIEXFN{within(5s)};
1700b7d3956bSstephhevent ereport.io.pciex.a-nonfatal@PCIEXFN{within(5s)};
1701b7d3956bSstephhevent ereport.io.pciex.fatal@PCIEXFN{within(5s)};
1702b7d3956bSstephhevent ereport.io.pci.nr@PCIEXFN{within(5s)};
170300d0963fSdilpreetevent ereport.io.pci.nr@pciexrc{within(5s)};
170400d0963fSdilpreetevent ereport.io.pci.ma@pciexrc{within(5s)};
170500d0963fSdilpreetevent ereport.io.pci.rta@pciexrc{within(5s)};
170600d0963fSdilpreetevent ereport.io.pci.sta@pciexrc{within(5s)};
170700d0963fSdilpreetevent ereport.io.pci.dpe@pciexrc{within(5s)};
170800d0963fSdilpreetevent ereport.io.pci.mdpe@pciexrc{within(5s)};
170900d0963fSdilpreetevent ereport.io.pci.sserr@pciexrc{within(5s)};
171000d0963fSdilpreetevent ereport.io.pciex.tl.uc@pciexrc{within(5s)};
171100d0963fSdilpreetevent ereport.io.pciex.noadverr@pciexrc{within(5s)};
17121d76b125Sstephhevent ereport.io.pciex.a-nonfatal@pciexrc{within(5s)};
171300d0963fSdilpreetevent ereport.io.pciex.rc.ce-msg@pciexrc{within(5s)};
171400d0963fSdilpreetevent ereport.io.pciex.rc.mce-msg@pciexrc{within(5s)};
171500d0963fSdilpreet
1716b7d3956bSstephhevent upset.io.pciex.discard_uc@PCIEXFN;
1717b7d3956bSstephhevent upset.io.pciex.discard@PCIEXFN;
171800d0963fSdilpreetevent upset.io.pciex.discard@pciexrc;
171900d0963fSdilpreet
1720b7d3956bSstephhprop upset.io.pciex.discard_uc@PCIEXFN { IS_BG(PCIEXFN) } (1)->
1721b7d3956bSstephh    ereport.io.pciex.tl.uc@PCIEXFN;
172200d0963fSdilpreet
1723b7d3956bSstephhprop upset.io.pciex.discard_uc@PCIEXFN { IS_LF(PCIEXFN) } (1)->
1724b7d3956bSstephh    ereport.io.pciex.tl.uc@PCIEXFN;
172500d0963fSdilpreet
1726b7d3956bSstephhprop upset.io.pciex.discard@PCIEXFN (1)->
1727b7d3956bSstephh    ereport.io.pci.nr@PCIEXFN,
1728b7d3956bSstephh    ereport.io.pciex.noadverr@PCIEXFN,
1729b7d3956bSstephh    ereport.io.pciex.correctable@PCIEXFN,
1730b7d3956bSstephh    ereport.io.pciex.nonfatal@PCIEXFN,
1731b7d3956bSstephh    ereport.io.pciex.a-nonfatal@PCIEXFN,
1732b7d3956bSstephh    ereport.io.pciex.fatal@PCIEXFN;
173300d0963fSdilpreet
1734b7d3956bSstephhprop error.io.pciex.discard_rc@pciexrc (0)->
1735b7d3956bSstephh    ereport.io.pciex.rc.mue-msg@pciexrc,
173600d0963fSdilpreet    ereport.io.pciex.rc.fe-msg@pciexrc { SOURCE_ID_MATCHES_OWN_BDF },
1737b7d3956bSstephh    ereport.io.pciex.rc.nfe-msg@pciexrc { SOURCE_ID_MATCHES_OWN_BDF };
173800d0963fSdilpreet
173900d0963fSdilpreetprop upset.io.pciex.discard@pciexrc (1)->
174000d0963fSdilpreet    error.io.pciex.discard_rc@pciexrc,
174100d0963fSdilpreet    ereport.io.pci.nr@pciexrc,
174200d0963fSdilpreet    ereport.io.pciex.noadverr@pciexrc,
17431d76b125Sstephh    ereport.io.pciex.a-nonfatal@pciexrc,
174400d0963fSdilpreet    ereport.io.pciex.rc.ce-msg@pciexrc,
174500d0963fSdilpreet    ereport.io.pciex.rc.mce-msg@pciexrc,
174600d0963fSdilpreet    ereport.io.pciex.tl.uc@pciexrc,
174700d0963fSdilpreet    ereport.io.pci.ma@pciexrc,
174800d0963fSdilpreet    ereport.io.pci.rta@pciexrc,
174900d0963fSdilpreet    ereport.io.pci.sta@pciexrc,
175000d0963fSdilpreet    ereport.io.pci.dpe@pciexrc,
175100d0963fSdilpreet    ereport.io.pci.mdpe@pciexrc,
175200d0963fSdilpreet    ereport.io.pci.sserr@pciexrc;
175300d0963fSdilpreet
175400d0963fSdilpreet/*
175500d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1756b7d3956bSstephh * rules for propagations from child PCI bus
175700d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
175800d0963fSdilpreet */
175900d0963fSdilpreet
1760b7d3956bSstephhevent error.io.pci.retry-to-u@PCIEXFN/PCIFN;
1761b7d3956bSstephhevent error.io.pci.ma-u@PCIEXFN/PCIFN;
1762b7d3956bSstephhevent error.io.pci.ta-u@PCIEXFN/PCIFN;
1763b7d3956bSstephhevent error.io.pci.ape-u@PCIEXFN/PCIFN;
1764b7d3956bSstephhevent error.io.pci.source-ape-u@PCIFN;
1765b7d3956bSstephhevent error.io.pci.target-ma-d@PCIFN;
1766b7d3956bSstephhevent error.io.pci.target-rta-d@PCIFN;
1767b7d3956bSstephhevent error.io.pci.badreq-pw-u@PCIEXFN/PCIFN;
1768b7d3956bSstephhevent error.io.pci.badreq-drw-u@PCIEXFN/PCIFN;
1769b7d3956bSstephhevent error.io.pci.source-perr-u@PCIFN;
1770b7d3956bSstephhevent error.io.pci.source-dpdata-u@PCIFN;
1771b7d3956bSstephhevent error.io.pci.dpdata-pw-u@PCIEXFN/PCIFN;
1772b7d3956bSstephhevent error.io.pci.dpdata-dw-u@PCIEXFN/PCIFN;
1773b7d3956bSstephhevent error.io.pci.dpdata-dr-u@PCIEXFN/PCIFN;
1774b7d3956bSstephhevent error.io.pci.perr-pw-u@PCIEXFN/PCIFN;
1775b7d3956bSstephhevent error.io.pci.perr-dw-u@PCIEXFN/PCIFN;
1776b7d3956bSstephhevent error.io.pci.perr-dr-u@PCIEXFN/PCIFN;
1777b7d3956bSstephhevent error.io.pci.serr-u@PCIEXFN/PCIFN;
1778b7d3956bSstephhevent error.io.pcix.scpe-u@PCIEXFN/PCIFN;
1779b7d3956bSstephhevent error.io.pcix.source-scpe-u@PCIFN;
1780b7d3956bSstephhevent error.io.pcix.spl-comp-ma-u@PCIEXFN/PCIFN;
1781b7d3956bSstephhevent error.io.pcix.spl-comp-ta-u@PCIEXFN/PCIFN;
1782b7d3956bSstephhevent error.io.pcix.spl-comp-ma-d@PCIEXFN/PCIFN;
1783b7d3956bSstephhevent error.io.pcix.spl-comp-ta-d@PCIEXFN/PCIFN;
1784b7d3956bSstephhevent error.io.pcix.uscmd@PCIEXFN;
178500d0963fSdilpreet
1786b7d3956bSstephhevent ereport.io.pcix.sec-spl-dis@PCIEXFN{within(5s)};
1787b7d3956bSstephhevent ereport.io.pciex.bdg.uscmd@PCIEXFN{within(5s)};
1788b7d3956bSstephhevent ereport.io.pciex.bdg.sec-perr@PCIEXFN{within(5s)};
1789b7d3956bSstephhevent ereport.io.pciex.bdg.sec-uadr@PCIEXFN{within(5s)};
1790b7d3956bSstephhevent ereport.io.pciex.bdg.sec-uat@PCIEXFN{within(5s)};
1791b7d3956bSstephhevent ereport.io.pciex.bdg.sec-serr@PCIEXFN{within(5s)};
1792b7d3956bSstephhevent ereport.io.pciex.bdg.sec-tex@PCIEXFN{within(5s)};
1793b7d3956bSstephhevent ereport.io.pciex.bdg.sec-rma@PCIEXFN{within(5s)};
1794b7d3956bSstephhevent ereport.io.pciex.bdg.sec-rta@PCIEXFN{within(5s)};
1795b7d3956bSstephhevent ereport.io.pciex.bdg.sec-ma-sc@PCIEXFN{within(5s)};
1796b7d3956bSstephhevent ereport.io.pciex.bdg.sec-ta-sc@PCIEXFN{within(5s)};
1797b7d3956bSstephhevent ereport.io.pci.dto@PCIEXFN{within(5s)};
1798b7d3956bSstephhevent ereport.io.pci.sec-rta@PCIEXFN{within(5s)};
1799b7d3956bSstephhevent ereport.io.pci.sec-ma@PCIEXFN{within(5s)};
180000d0963fSdilpreet
180100d0963fSdilpreet/*
180200d0963fSdilpreet * ma-u will only propagate on to pciex bus for non-posted accesses. It
180300d0963fSdilpreet * is then represented as an unsupported request.
180400d0963fSdilpreet */
1805b7d3956bSstephhprop error.io.pci.ma-u@PCIEXFN/PCIFN (0)->
1806*b0daa853SStephen Hanson    ereport.io.pciex.tl.ur@PCIEXFN,
1807*b0daa853SStephen Hanson    error.io.pciex.ur-u@PCIEXFN;
180800d0963fSdilpreet
1809b7d3956bSstephhprop error.io.pci.ma-u@PCIEXFN/PCIFN (2)->
1810b7d3956bSstephh    ereport.io.pci.sec-ma@PCIEXFN,
1811b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
1812b7d3956bSstephh
1813b7d3956bSstephhprop error.io.pci.target-ma-d@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) &&
1814b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)->
1815b7d3956bSstephh    ereport.io.pciex.bdg.sec-rma@PCIEXFN;
181600d0963fSdilpreet
181700d0963fSdilpreet/*
181800d0963fSdilpreet * ta-u will only propagate on to pciex bus for non-posted accesses. It is
181900d0963fSdilpreet * then represented as a completer abort.
182000d0963fSdilpreet */
1821b7d3956bSstephhprop error.io.pci.ta-u@PCIEXFN/PCIFN (0)->
1822b7d3956bSstephh    ereport.io.pci.sta@PCIEXFN,
1823*b0daa853SStephen Hanson    ereport.io.pciex.tl.ca@PCIEXFN,
1824*b0daa853SStephen Hanson    error.io.pciex.ca-u@PCIEXFN;
182500d0963fSdilpreet
1826b7d3956bSstephhprop error.io.pci.ta-u@PCIEXFN/PCIFN (2)->
1827b7d3956bSstephh    ereport.io.pci.sec-rta@PCIEXFN,
1828b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
1829b7d3956bSstephh
1830b7d3956bSstephhprop error.io.pci.target-rta-d@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) &&
1831b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)->
1832b7d3956bSstephh    ereport.io.pciex.bdg.sec-rta@PCIEXFN;
183300d0963fSdilpreet
183400d0963fSdilpreet/*
183500d0963fSdilpreet * PERR# on a delayed write is represented as an unsupported request
183600d0963fSdilpreet */
1837b7d3956bSstephhprop error.io.pci.perr-dw-u@PCIEXFN/PCIFN (1)->
1838b7d3956bSstephh    ereport.io.pci.sec-mdpe@PCIEXFN;
183900d0963fSdilpreet
1840b7d3956bSstephhprop error.io.pci.perr-dw-u@PCIEXFN/PCIFN (0)->
1841b7d3956bSstephh    error.io.pciex.flt-ur-u@PCIEXFN;
184200d0963fSdilpreet
1843b7d3956bSstephhprop error.io.pci.perr-pw-u@PCIEXFN/PCIFN (1)->
1844b7d3956bSstephh    ereport.io.pci.sec-mdpe@PCIEXFN;
184500d0963fSdilpreet
1846b7d3956bSstephhprop error.io.pci.perr-pw-u@PCIEXFN/PCIFN (0)->
1847b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
184800d0963fSdilpreet
1849b7d3956bSstephhprop error.io.pci.perr-dr-u@PCIEXFN/PCIFN (1)->
1850b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
185100d0963fSdilpreet
1852b7d3956bSstephhprop error.io.pci.source-perr-u@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) &&
1853b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)->
1854b7d3956bSstephh    ereport.io.pciex.bdg.sec-perr@PCIEXFN;
185500d0963fSdilpreet
185600d0963fSdilpreet/*
185700d0963fSdilpreet * If the bridge receives data with bad ecc/parity from pci/pci-x, it will
185800d0963fSdilpreet * propagate onto pci express as a poisoned tlp
185900d0963fSdilpreet */
1860b7d3956bSstephhprop error.io.pci.dpdata-dr-u@PCIEXFN/PCIFN (2)->
1861b7d3956bSstephh    ereport.io.pci.sec-dpe@PCIEXFN,
1862b7d3956bSstephh    error.io.pciex.poiscomp-u@PCIEXFN;
186300d0963fSdilpreet
1864b7d3956bSstephhprop error.io.pci.dpdata-dr-u@PCIEXFN/PCIFN (0)->
1865b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN;
1866eae2e508Skrishnae
1867b7d3956bSstephhprop error.io.pci.dpdata-dr-u@PCIEXFN/PCIFN (1)->
1868b7d3956bSstephh    ereport.io.pci.sec-mdpe@PCIEXFN,
1869b7d3956bSstephh    ereport.io.pci.mdpe@PCIEXFN;
187000d0963fSdilpreet
1871b7d3956bSstephhprop error.io.pci.dpdata-dw-u@PCIEXFN/PCIFN (1)->
1872b7d3956bSstephh    ereport.io.pci.sec-dpe@PCIEXFN;
187300d0963fSdilpreet
1874b7d3956bSstephhprop error.io.pci.dpdata-dw-u@PCIEXFN/PCIFN (0)->
1875b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1876b7d3956bSstephh    error.io.pciex.poisreq-u@PCIEXFN,
1877b7d3956bSstephh    ereport.io.pci.ma@PCIEXFN,
1878b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN,
1879b7d3956bSstephh    error.io.pci.ta-drw-d@PCIEXFN/PCIFN;
188000d0963fSdilpreet
1881b7d3956bSstephhprop error.io.pci.dpdata-pw-u@PCIEXFN/PCIFN (2)->
1882b7d3956bSstephh    ereport.io.pci.sec-dpe@PCIEXFN,
1883b7d3956bSstephh    error.io.pciex.poisreq-u@PCIEXFN;
18848aec9182Sstephh
1885b7d3956bSstephhprop error.io.pci.dpdata-pw-u@PCIEXFN/PCIFN (0)->
1886b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1887b7d3956bSstephh    ereport.io.pci.ma@PCIEXFN;
1888b7d3956bSstephh
1889b7d3956bSstephhprop error.io.pci.source-dpdata-u@PCIFN { is_under(pciexrc, PCIFN) } (0)->
1890b7d3956bSstephh    ereport.io.pciex.tl.ptlp@pciexrc,
1891b7d3956bSstephh    ereport.io.pciex.tl.ur@pciexrc;
1892b7d3956bSstephh
1893b7d3956bSstephhprop error.io.pci.source-dpdata-u@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1)
1894b7d3956bSstephh    && SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)->
1895b7d3956bSstephh    ereport.io.pciex.bdg.sec-ude@PCIEXFN;
189600d0963fSdilpreet
189700d0963fSdilpreet/*
189800d0963fSdilpreet * If the bridge sees an address or attribute parity error it is considered
189900d0963fSdilpreet * a fatal error.
190000d0963fSdilpreet */
1901b7d3956bSstephhprop error.io.pci.ape-u@PCIEXFN/PCIFN (2)->
1902b7d3956bSstephh    ereport.io.pci.sec-dpe@PCIEXFN,
1903b7d3956bSstephh    error.io.pciex.fatal@PCIEXFN;
190400d0963fSdilpreet
1905b7d3956bSstephhprop error.io.pci.source-ape-u@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) &&
1906b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)->
1907b7d3956bSstephh    ereport.io.pciex.bdg.sec-uat@PCIEXFN,
1908b7d3956bSstephh    ereport.io.pciex.bdg.sec-uadr@PCIEXFN;
190900d0963fSdilpreet
1910b7d3956bSstephhprop error.io.pci.ape-u@PCIEXFN/PCIFN (0)->
1911b7d3956bSstephh    ereport.io.pci.sec-rserr@PCIEXFN,
1912b7d3956bSstephh    ereport.io.pciex.bdg.sec-serr@PCIEXFN,
1913b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN;
191400d0963fSdilpreet
191500d0963fSdilpreet/*
191600d0963fSdilpreet * If the bridge sees a split completion error (pci-x only) it could
191700d0963fSdilpreet * result in a number of things
191800d0963fSdilpreet * - unrecovered split completion message data error (uscmd). This would
191900d0963fSdilpreet *   happen on a pio write. A completer abort is returned to the initiator.
192000d0963fSdilpreet * - for various faults in the split completion (eg address parity error)
192100d0963fSdilpreet *   we will respond with a target abort (which the child device will treat
192200d0963fSdilpreet *   as a split completion ta)
192300d0963fSdilpreet * - for other faults we can't tell who send the split completion and so
192400d0963fSdilpreet *   just drop the request (which the child device sees as a split
192500d0963fSdilpreet *   completion ma)
192600d0963fSdilpreet */
1927b7d3956bSstephhprop error.io.pcix.scpe-u@PCIEXFN/PCIFN (0)->
1928b7d3956bSstephh    ereport.io.pci.sec-dpe@PCIEXFN,
1929b7d3956bSstephh    ereport.io.pci.sec-rserr@PCIEXFN,
1930b7d3956bSstephh    ereport.io.pciex.bdg.sec-serr@PCIEXFN,
1931b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN,
1932b7d3956bSstephh    error.io.pciex.fatal@PCIEXFN;
193300d0963fSdilpreet
1934b7d3956bSstephhprop error.io.pcix.source-scpe-u@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) &&
1935b7d3956bSstephh    SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)->
1936b7d3956bSstephh    ereport.io.pciex.bdg.sec-uat@PCIEXFN,
1937b7d3956bSstephh    ereport.io.pciex.bdg.sec-uadr@PCIEXFN;
193800d0963fSdilpreet
1939b7d3956bSstephhprop error.io.pcix.scpe-u@PCIEXFN/PCIFN (1)->
1940b7d3956bSstephh    error.io.pcix.uscmd@PCIEXFN,
1941b7d3956bSstephh    error.io.pcix.spl-comp-ma-d@PCIEXFN/PCIFN,
1942b7d3956bSstephh    error.io.pcix.spl-comp-ta-d@PCIEXFN/PCIFN;
194300d0963fSdilpreet
1944b7d3956bSstephhprop error.io.pcix.uscmd@PCIEXFN (4)->
1945b7d3956bSstephh    error.io.pciex.fatal@PCIEXFN,
1946b7d3956bSstephh    ereport.io.pci.sta@PCIEXFN,
1947b7d3956bSstephh    ereport.io.pciex.tl.ca@PCIEXFN,
1948b7d3956bSstephh    ereport.io.pciex.bdg.uscmd@PCIEXFN;
1949b7d3956bSstephh
1950*b0daa853SStephen Hansonprop error.io.pcix.uscmd@PCIEXFN (0)->
1951*b0daa853SStephen Hanson    error.io.pciex.ca-u@PCIEXFN;
195200d0963fSdilpreet
195300d0963fSdilpreet/*
195400d0963fSdilpreet * Similarly a child device may have responded with a master abort or
195500d0963fSdilpreet * target abort to one of our split competions. The hardware just logs these.
195600d0963fSdilpreet */
1957b7d3956bSstephhprop error.io.pcix.spl-comp-ma-u@PCIEXFN/PCIFN (3)->
1958b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1959b7d3956bSstephh    ereport.io.pcix.sec-spl-dis@PCIEXFN,
1960b7d3956bSstephh    ereport.io.pciex.bdg.sec-ma-sc@PCIEXFN;
19618aec9182Sstephh
1962b7d3956bSstephhprop error.io.pcix.spl-comp-ma-u@PCIEXFN/PCIFN (0)->
1963b7d3956bSstephh    ereport.io.pci.sec-ma@PCIEXFN;
196400d0963fSdilpreet
1965b7d3956bSstephhprop error.io.pcix.spl-comp-ta-u@PCIEXFN/PCIFN (4)->
1966b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1967b7d3956bSstephh    ereport.io.pcix.sec-spl-dis@PCIEXFN,
1968b7d3956bSstephh    ereport.io.pciex.bdg.sec-ta-sc@PCIEXFN,
1969b7d3956bSstephh    ereport.io.pci.sec-rta@PCIEXFN;
197000d0963fSdilpreet
197100d0963fSdilpreet/*
197200d0963fSdilpreet * SERR# is considered fatal
197300d0963fSdilpreet */
1974b7d3956bSstephhprop error.io.pci.serr-u@PCIEXFN/PCIFN (3)->
1975b7d3956bSstephh    error.io.pciex.fatal@PCIEXFN,
1976b7d3956bSstephh    ereport.io.pci.sec-rserr@PCIEXFN,
1977b7d3956bSstephh    ereport.io.pciex.bdg.sec-serr@PCIEXFN;
197800d0963fSdilpreet
197900d0963fSdilpreet/*
198000d0963fSdilpreet * Retry time-out is nonfatal. The initial requester has stopped retrying so
198100d0963fSdilpreet * there's nothing else the hardware can do but flag the error.
198200d0963fSdilpreet */
1983b7d3956bSstephhprop error.io.pci.retry-to-u@PCIEXFN/PCIFN (2)->
1984b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN,
1985b7d3956bSstephh    ereport.io.pciex.bdg.sec-tex@PCIEXFN;
198600d0963fSdilpreet
1987b7d3956bSstephhprop error.io.pci.retry-to-u@PCIEXFN/PCIFN (0)->
1988b7d3956bSstephh    ereport.io.pci.sta@PCIEXFN,
1989*b0daa853SStephen Hanson    ereport.io.pci.dto@PCIEXFN,
1990*b0daa853SStephen Hanson    error.io.pciex.ca-u@PCIEXFN;
199100d0963fSdilpreet
199200d0963fSdilpreet/*
199300d0963fSdilpreet * A bad dma request (eg with invalid address) propagates onto pci express
199400d0963fSdilpreet * as a bad dma request. The end result may be a master abort or target abort
199500d0963fSdilpreet * (depending on whether the child is pci-x or pci).
199600d0963fSdilpreet */
1997b7d3956bSstephhprop error.io.pci.badreq-pw-u@PCIEXFN/PCIFN (0)->
1998b7d3956bSstephh    ereport.io.pci.ma@PCIEXFN,
1999b7d3956bSstephh    ereport.io.pci.rta@PCIEXFN,
2000*b0daa853SStephen Hanson    error.io.pciex.badreq-u@PCIEXFN,
2001b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN;
200200d0963fSdilpreet
2003b7d3956bSstephhprop error.io.pci.badreq-pw-u@PCIEXFN/PCIFN {
2004b7d3956bSstephh    is_under(pciexrc, PCIEXFN/PCIFN) } (0)->
2005b7d3956bSstephh    ereport.io.pciex.tl.ur@pciexrc,
2006*b0daa853SStephen Hanson    ereport.io.pciex.tl.ca@pciexrc;
2007b7d3956bSstephh
2008b7d3956bSstephhprop error.io.pci.badreq-pw-u@PCIEXFN/PCIFN { IS_SD(PCIEXFN1) &&
2009b7d3956bSstephh    is_under(PCIEXFN1, PCIEXFN/PCIFN) } (0)->
2010b7d3956bSstephh    ereport.io.pciex.tl.ur@PCIEXFN1,
2011b7d3956bSstephh    ereport.io.pciex.tl.ca@PCIEXFN1,
2012b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN1,
2013b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN1;
2014b7d3956bSstephh
2015b7d3956bSstephhprop error.io.pci.badreq-drw-u@PCIEXFN/PCIFN (0)->
2016b7d3956bSstephh    ereport.io.pci.ma@PCIEXFN,
2017b7d3956bSstephh    ereport.io.pci.rta@PCIEXFN,
2018*b0daa853SStephen Hanson    error.io.pciex.badreq-u@PCIEXFN,
2019b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN;
2020b7d3956bSstephh
2021b7d3956bSstephhprop error.io.pci.badreq-drw-u@PCIEXFN/PCIFN {
2022b7d3956bSstephh    is_under(pciexrc, PCIEXFN/PCIFN) } (0)->
2023b7d3956bSstephh    ereport.io.pciex.tl.ur@pciexrc,
2024*b0daa853SStephen Hanson    ereport.io.pciex.tl.ca@pciexrc;
2025b7d3956bSstephh
2026b7d3956bSstephhprop error.io.pci.badreq-drw-u@PCIEXFN/PCIFN { IS_SD(PCIEXFN1) &&
2027b7d3956bSstephh    is_under(PCIEXFN1, PCIEXFN/PCIFN) } (0)->
2028b7d3956bSstephh    ereport.io.pciex.tl.ur@PCIEXFN1,
2029b7d3956bSstephh    ereport.io.pciex.tl.ca@PCIEXFN1,
2030b7d3956bSstephh    ereport.io.pci.sec-sta@PCIEXFN1,
2031b7d3956bSstephh    error.io.pciex.nonfatal@PCIEXFN1;
203200d0963fSdilpreet
203300d0963fSdilpreet/*
203400d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2035b7d3956bSstephh * target- propagations
203600d0963fSdilpreet *
203700d0963fSdilpreet * A Root Complex driver may generate "target-" ereports when knowledge of the
203800d0963fSdilpreet * physical address associated with a fault allows the target device to be
203900d0963fSdilpreet * determined. This is not a requirement of the Diagnosis Engine, but can be
204000d0963fSdilpreet * valuable when available.
204100d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
204200d0963fSdilpreet */
2043b7d3956bSstephhevent error.io.pci.target-ma-d@PCIEXFN/PCIFN;
2044b7d3956bSstephhevent error.io.pci.target-rta-d@PCIEXFN/PCIFN;
2045b7d3956bSstephhevent ereport.io.pci.target-rta@PCIEXFN{within(5s)};
2046b7d3956bSstephhevent ereport.io.pci.target-ma@PCIEXFN{within(5s)};
204700d0963fSdilpreet
2048b7d3956bSstephhprop error.io.pci.target-ma-d@PCIEXFN (0)->
204926733bfeSStephen Hanson    ereport.io.pci.target-ma@PCIEXFN,
205026733bfeSStephen Hanson    ereport.io.pci.target-ma@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
205126733bfeSStephen Hanson    error.io.pci.target-ma-d@PCIEXFNHZ/PCIFNHZ { is_under(PCIEXFN, PCIEXFNHZ) };
205200d0963fSdilpreet
2053b7d3956bSstephhprop error.io.pci.target-rta-d@PCIEXFN (0)->
205426733bfeSStephen Hanson    ereport.io.pci.target-rta@PCIEXFN,
205526733bfeSStephen Hanson    ereport.io.pci.target-rta@PCIEXFNHZ { is_under(PCIEXFN, PCIEXFNHZ) },
205626733bfeSStephen Hanson    error.io.pci.target-rta-d@PCIEXFNHZ/PCIFNHZ { is_under(PCIEXFN,PCIEXFNHZ) };
205700d0963fSdilpreet
205800d0963fSdilpreet/*
205900d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
206000d0963fSdilpreet * stub unused pciex-pci bridge ereports
206100d0963fSdilpreet * - ignore usc/sec-unex-spl
206200d0963fSdilpreet * - ignore sec-spl-or/sec-spl-dly as these aren't really faults (tuning info)
206300d0963fSdilpreet * - ignore ecc.ue ereports (we get everything we need from dpe/mdpe)
206400d0963fSdilpreet * - ignore ecc.ce ereports for now (could do serd on these)
206500d0963fSdilpreet * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
206600d0963fSdilpreet */
206700d0963fSdilpreet
2068b7d3956bSstephhevent ereport.io.pciex.bdg.usc@PCIEXFN{within(5s)};
2069b7d3956bSstephhevent ereport.io.pcix.sec-unex-spl@PCIEXFN{within(5s)};
2070b7d3956bSstephhevent ereport.io.pcix.sec-spl-or@PCIEXFN{within(5s)};
2071b7d3956bSstephhevent ereport.io.pcix.sec-spl-dly@PCIEXFN{within(5s)};
2072b7d3956bSstephhevent ereport.io.pcix.sec-ecc.ce-addr@PCIEXFN{within(5s)};
2073b7d3956bSstephhevent ereport.io.pcix.sec-ecc.ce-attr@PCIEXFN{within(5s)};
2074b7d3956bSstephhevent ereport.io.pcix.sec-ecc.ce-data@PCIEXFN{within(5s)};
2075b7d3956bSstephhevent ereport.io.pcix.sec-ecc.ue-addr@PCIEXFN{within(5s)};
2076b7d3956bSstephhevent ereport.io.pcix.sec-ecc.ue-attr@PCIEXFN{within(5s)};
2077b7d3956bSstephhevent ereport.io.pcix.sec-ecc.ue-data@PCIEXFN{within(5s)};
2078b7d3956bSstephhevent ereport.io.pcix.sec-s-ce@PCIEXFN{within(5s)};
2079b7d3956bSstephhevent ereport.io.pcix.sec-s-ue@PCIEXFN{within(5s)};
208000d0963fSdilpreet
2081b7d3956bSstephhevent upset.io.pciex.discard-bdg@PCIEXFN;
208200d0963fSdilpreet
2083b7d3956bSstephhprop upset.io.pciex.discard-bdg@PCIEXFN (1)->
2084b7d3956bSstephh    ereport.io.pciex.bdg.usc@PCIEXFN,
2085b7d3956bSstephh    ereport.io.pcix.sec-unex-spl@PCIEXFN,
2086b7d3956bSstephh    ereport.io.pcix.sec-spl-or@PCIEXFN,
2087b7d3956bSstephh    ereport.io.pcix.sec-spl-dly@PCIEXFN,
2088b7d3956bSstephh    ereport.io.pcix.sec-ecc.ce-addr@PCIEXFN,
2089b7d3956bSstephh    ereport.io.pcix.sec-ecc.ce-attr@PCIEXFN,
2090b7d3956bSstephh    ereport.io.pcix.sec-ecc.ce-data@PCIEXFN,
2091b7d3956bSstephh    ereport.io.pcix.sec-ecc.ue-addr@PCIEXFN,
2092b7d3956bSstephh    ereport.io.pcix.sec-ecc.ue-attr@PCIEXFN,
2093b7d3956bSstephh    ereport.io.pcix.sec-ecc.ue-data@PCIEXFN,
2094b7d3956bSstephh    ereport.io.pcix.sec-s-ce@PCIEXFN,
2095b7d3956bSstephh    ereport.io.pcix.sec-s-ue@PCIEXFN;
2096