pci.esc revision 05d7cf284e1a38c8b80fcd4e074f782f3f34717e
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
#pragma dictionary "PCI"
#include <fm/topo_hc.h>
#define PCI_DEV_FIT 1000
#define PCI_BUS_FIT 500
/*
* SERD parameters.
*
* Nonfatal dpe errors have to be recovered by the hardened driver which may
* cause intermittant performance/responsiveness problems, so we have tighter
* serd parameters for these. These are most likely errors in buffers/caches
* within devices and bridges, so use similar rates to cpu data cache parity
* errors.
*
* We will be more conservative about nonfatal internal errors reported
* by the driver.
*/
#define NONFATAL_COUNT 6
#define NONFATAL_TIME 2h
#define NONFATAL_DPE_U_COUNT 3
#define NONFATAL_DPE_U_TIME 168h
#define NONFATAL_DPE_D_COUNT 3
#define NONFATAL_DPE_D_TIME 168h
#define IS_LEAF \
(confprop_defined(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) && \
confprop(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) != "60400" && \
confprop(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) != "60401")
#define IS_BDG \
(confprop(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) == "60400" || \
confprop(asru(pcibus/pcidev/pcifn), TOPO_PCI_CLASS) == "60401")
#define FD_IS_LEAF \
(confprop_defined(asru(pcibus/pcidev[fromdev]/pcifn), \
TOPO_PCI_CLASS) && \
confprop(asru(pcibus/pcidev[fromdev]/pcifn), TOPO_PCI_CLASS) != \
"60400" && \
confprop(asru(pcibus/pcidev[fromdev]/pcifn), TOPO_PCI_CLASS) != "60401")
/*
* note general rule for errors is that for upstream propagations
* @pcibus/pcidev/pcifn is the sending device while for downstream
* propagations it is the receiving device.
*/
asru pcibus/pcidev/pcifn;
fru pcibus/pcidev;
event fault.io.pci.device-interr@pcibus/pcidev/pcifn,
FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
event fault.io.pci.device-invreq@pcibus/pcidev/pcifn,
FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
event fault.io.pci.device-noresp@pcibus/pcidev/pcifn,
FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
/*
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* A faulty hostbridge may cause:
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* - nr-pw-d: the device not to respond to an upstream request
* - nr-drw-d: the device not to respond to an upstream request
* - ta-pw-d: the device to send a target abort to an upstream request
* - ta-drw-d: the device to send a target abort to an upstream request
* - serr-u: the device to report itself in error
* - badreq-pw-d:a bad downstream request - not parity error (may cause target
* to target abort or master abort)
* - badreq-drw-d:a bad downstream request - not parity error (may cause
* target to target abort or master abort)
* - ape-d: address/parity to get corrupted during downstream transmission
* - scpe-d: split completion to get corrupted during downstream transmission
* - dpe-d: the device to transfer bad data and/or bad parity downstream
* - retry-to-d: the device to exceed the set timeout for a delayed
* transaction retry.
*/
#define PCI_TO_HB pcibus/pcidev<todev>/pcifn<> {fromdev != 32 && todev == 32}
#define PCI_FROM_HB pcibus/pcidev<todev>/pcifn<> {fromdev == 32 && todev != 32}
event error.io.pci.retry-to-d@pcibus/pcidev/pcifn;
event error.io.pci.nr-pw-d@pcibus/pcidev/pcifn;
event error.io.pci.nr-drw-d@pcibus/pcidev/pcifn;
event error.io.pci.ta-pw-d@pcibus/pcidev/pcifn;
event error.io.pci.ta-drw-d@pcibus/pcidev/pcifn;
event error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn;
event error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn;
event error.io.pci.f-dpe-d@pcibus/pcidev/pcifn;
event error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
event error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn;
event error.io.pci.ape-d@pcibus/pcidev/pcifn;
event error.io.pci.ape-u@pcibus/pcidev/pcifn;
event error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn;
event error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn;
event error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn;
event error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn;
event error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn;
event error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn;
event error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
event error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
event error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
event error.io.pci.ta-u@pcibus/pcidev/pcifn;
event error.io.pci.ma-u@pcibus/pcidev/pcifn;
event error.io.pci.perr-dw-u@pcibus/pcidev/pcifn;
event error.io.pci.perr-pw-u@pcibus/pcidev/pcifn;
event error.io.pci.perr-dr-u@pcibus/pcidev/pcifn;
event error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn;
event error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn;
event error.io.pci.device-serr@pcibus/pcidev/pcifn;
event error.io.pci.device-ta@pcibus/pcidev/pcifn;
event error.io.pci.device-par@pcibus/pcidev/pcifn;
event error.io.pci.serr-u@pcibus/pcidev/pcifn;
event error.io.pcix.scpe-d@pcibus/pcidev/pcifn;
event error.io.pcix.scpe-u@pcibus/pcidev/pcifn;
event error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn;
event error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn;
event error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn;
event error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn;
event ereport.io.pci.ma@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.rta@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.mdpe@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.sta@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.sserr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.dpe@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.target-mdpe@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.target-rta@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.target-ma@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.discard@pcibus/pcidev/pcifn{within(5s)};
prop fault.io.pci.device-noresp@pcibus/pcidev[fromdev]/pcifn (0)->
error.io.pci.nr-pw-d@PCI_FROM_HB,
error.io.pci.nr-drw-d@PCI_FROM_HB,
error.io.pci.retry-to-d@PCI_FROM_HB;
prop fault.io.pci.device-invreq@pcibus/pcidev[fromdev]/pcifn (0)->
error.io.pci.badreq-pw-d@PCI_FROM_HB,
error.io.pci.badreq-drw-d@PCI_FROM_HB;
prop fault.io.pci.device-interr@pcibus/pcidev/pcifn (0)->
error.io.pci.device-par@pcibus/pcidev/pcifn,
error.io.pci.device-ta@pcibus/pcidev/pcifn,
error.io.pci.device-serr@pcibus/pcidev/pcifn;
prop error.io.pci.device-par@pcibus/pcidev[fromdev]/pcifn (1)->
error.io.pci.f-dpe-d@PCI_FROM_HB,
error.io.pci.nf-dpe-d@PCI_FROM_HB,
error.io.pcix.scpe-d@PCI_FROM_HB,
error.io.pci.ape-d@PCI_FROM_HB;
prop error.io.pci.device-ta@pcibus/pcidev[fromdev]/pcifn (1)->
error.io.pci.ta-pw-d@PCI_FROM_HB,
error.io.pci.ta-drw-d@PCI_FROM_HB;
prop error.io.pci.device-ta@pcibus/pcidev[fromdev]/pcifn (1)->
ereport.io.pci.sta@pcibus/pcidev<todev>/pcifn {
todev == fromdev && fromdev == 32 };
prop error.io.pci.device-serr@pcibus/pcidev/pcifn (2)->
error.io.pci.serr-u@pcibus/pcidev/pcifn,
ereport.io.pci.sserr@pcibus/pcidev/pcifn;
prop error.io.pci.f-dpe-d@pcibus/pcidev/pcifn (1)->
error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn,
error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn,
error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn;
prop error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn (1)->
error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn,
error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn,
error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn;
/*
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* ereport generation rules for hostbridge
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
prop error.io.pci.dpdata-pw-u@pcibus/pcidev[fromdev]/pcifn (1)->
ereport.io.pci.dpe@PCI_TO_HB;
prop error.io.pci.dpdata-dw-u@pcibus/pcidev[fromdev]/pcifn (1)->
ereport.io.pci.dpe@PCI_TO_HB;
prop error.io.pci.dpdata-dr-u@pcibus/pcidev[fromdev]/pcifn (2)->
ereport.io.pci.mdpe@PCI_TO_HB,
ereport.io.pci.dpe@PCI_TO_HB;
prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (3)->
ereport.io.pci.dpe@PCI_TO_HB,
error.io.pci.serr-u@PCI_TO_HB,
ereport.io.pci.sserr@PCI_TO_HB;
prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (0)->
ereport.io.pci.sta@PCI_TO_HB;
prop error.io.pci.ma-u@pcibus/pcidev[fromdev]/pcifn (1)->
ereport.io.pci.ma@PCI_TO_HB;
prop error.io.pci.ta-u@pcibus/pcidev[fromdev]/pcifn (1)->
ereport.io.pci.rta@PCI_TO_HB;
prop error.io.pci.perr-dw-u@pcibus/pcidev[fromdev]/pcifn (1)->
ereport.io.pci.mdpe@PCI_TO_HB;
prop error.io.pci.perr-pw-u@pcibus/pcidev[fromdev]/pcifn (1)->
ereport.io.pci.mdpe@PCI_TO_HB;
prop error.io.pci.badreq-drw-u@pcibus/pcidev[fromdev]/pcifn (0)->
ereport.io.pci.sta@PCI_TO_HB;
prop error.io.pci.badreq-pw-u@pcibus/pcidev[fromdev]/pcifn (0)->
ereport.io.pci.sta@PCI_TO_HB;
prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn (1)->
error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn,
error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn;
prop error.io.pcix.scpe-u@pcibus/pcidev[fromdev]/pcifn (0)->
ereport.io.pci.dpe@PCI_TO_HB,
error.io.pci.serr-u@PCI_TO_HB,
ereport.io.pci.sserr@PCI_TO_HB,
ereport.io.pci.sta@PCI_TO_HB;
prop error.io.pcix.spl-comp-ma-u@pcibus/pcidev[fromdev]/pcifn (3)->
ereport.io.pcix.discard@PCI_TO_HB,
error.io.pci.serr-u@PCI_TO_HB,
ereport.io.pci.sserr@PCI_TO_HB;
prop error.io.pcix.spl-comp-ta-u@pcibus/pcidev[fromdev]/pcifn (3)->
ereport.io.pcix.discard@PCI_TO_HB,
error.io.pci.serr-u@PCI_TO_HB,
ereport.io.pci.sserr@PCI_TO_HB;
/*
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* A faulty PCI leaf device or pci-pci bridge may cause:
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* - nr-pw-u: the device not to respond to a valid downstream request
* - nr-drw-u: the device not to respond to a valid downstream request
* - ta-pw-u: the device responds with a ta to a valid downstream
* request
* - ta-drw-u: the device responds with a ta to a valid downstream
* request
* - serr-u: the device to report itself in error
* - badreq-pw-u: a bad upstream request (may cause target to target
* abort or master abort)
* - badreq-drw-u: a bad upstream request (may cause target to target
* abort or master abort)
* - ape-u: the transfer of bad address/parity upstream.
* - scpe-u: the transfer of bad split completion upstream.
* - dpe-u: the device to deliver bad data/parity upstream.
* - retry-to-u: the device to exceed the set timeout for a delayed
* transaction retry.
*
* A faulty PCI-X leaf device or bridge may also cause:
*
* - tx-oor: the device sends a byte count larger than the completers
* address range.
* - rx-unex-sc: the device recieved a split completion with a tag
* which does not match any outstanding transaction.
*/
#define PCI_NOT_HB pcibus/pcidev[fromdev]/pcifn {fromdev != 32}
event error.io.pci.retry-to-u@pcibus/pcidev/pcifn;
event error.io.pci.nr-pw-u@pcibus/pcidev/pcifn;
event error.io.pci.nr-drw-u@pcibus/pcidev/pcifn;
event error.io.pci.ta-pw-u@pcibus/pcidev/pcifn;
event error.io.pci.ta-drw-u@pcibus/pcidev/pcifn;
event error.io.pci.f-dpe-u@pcibus/pcidev/pcifn;
event error.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
event error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn;
event error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn;
event error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn;
event error.io.pci.flt-f-dpdata-dw-u@pcibus/pcidev/pcifn;
event error.io.pci.flt-nf-dpdata-dw-u@pcibus/pcidev/pcifn;
event error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn;
event error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn;
event error.io.pci.perr-d@pcibus/pcidev/pcifn;
event error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
event error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.target-rta-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.target-ma-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pcix.tx-oor@pcibus/pcidev/pcifn;
event error.io.pcix.rx-unex-sc@pcibus/pcidev/pcifn;
event error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn;
event error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn;
event error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn;
event error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn;
event error.io.device.nf-device@pcibus/pcidev/pcifn;
event error.io.device.f-device@pcibus/pcidev/pcifn;
event ereport.io.pcix.oor@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.unex-sc@pcibus/pcidev/pcifn{within(5s)};
prop fault.io.pci.device-noresp@pcibus/pcidev[fromdev]/pcifn (0)->
error.io.pci.nr-pw-u@PCI_NOT_HB,
error.io.pci.nr-drw-u@PCI_NOT_HB,
error.io.pci.retry-to-u@PCI_NOT_HB;
prop fault.io.pci.device-interr@pcibus/pcidev[fromdev]/pcifn (0)->
error.io.pci.ta-pw-u@PCI_NOT_HB,
error.io.pci.ta-drw-u@PCI_NOT_HB,
error.io.pci.serr-u@PCI_NOT_HB,
error.io.pci.ape-u@PCI_NOT_HB,
error.io.pci.f-dpe-u@PCI_NOT_HB,
error.io.pci.nf-dpe-u@PCI_NOT_HB,
error.io.device.f-device@PCI_NOT_HB,
error.io.device.nf-device@PCI_NOT_HB,
error.io.pcix.scpe-u@PCI_NOT_HB,
error.io.pcix.tx-oor@PCI_NOT_HB,
error.io.pcix.rx-unex-sc@PCI_NOT_HB;
prop fault.io.pci.device-invreq@pcibus/pcidev[fromdev]/pcifn {FD_IS_LEAF} (0)->
error.io.pci.badreq-drw-u@PCI_NOT_HB,
error.io.pci.badreq-pw-u@PCI_NOT_HB;
prop error.io.pcix.tx-oor@pcibus/pcidev/pcifn (1)->
ereport.io.pcix.oor@pcibus/pcidev/pcifn;
prop error.io.pcix.rx-unex-sc@pcibus/pcidev[fromdev]/pcifn (1)->
ereport.io.pcix.unex-sc@pcibus/pcidev<todev>/pcifn<> {fromdev != todev};
prop error.io.pci.f-dpe-u@pcibus/pcidev/pcifn (1)->
error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn,
error.io.pci.flt-f-dpdata-dw-u@pcibus/pcidev/pcifn,
error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn;
prop error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn (2)->
error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn,
error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
prop error.io.pci.flt-f-dpdata-pw-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pci.flt-f-dpdata-dw-u@pcibus/pcidev/pcifn (3)->
error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn,
error.io.pci.perr-d@pcibus/pcidev/pcifn,
error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
prop error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn (2)->
error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn,
error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
prop error.io.pci.flt-f-dpdata-dr-u@pcibus/pcidev/pcifn (1)->
error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
prop error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn (1)->
error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn,
error.io.pci.flt-nf-dpdata-dw-u@pcibus/pcidev/pcifn,
error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn;
prop error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn (2)->
error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn,
error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
prop error.io.pci.flt-nf-dpdata-pw-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pci.flt-nf-dpdata-dw-u@pcibus/pcidev/pcifn (3)->
error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn,
error.io.pci.perr-d@pcibus/pcidev/pcifn,
error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
prop error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn (2)->
error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn,
error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
prop error.io.pci.flt-nf-dpdata-dr-u@pcibus/pcidev/pcifn (1)->
error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
/*
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* A faulty pci-pci bridge may also cause
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* - nr-pw-d: the device not to respond to a valid upstream request
* - nr-drw-d: the device not to respond to a valid upstream request
* - ta-pw-d: the device responds with a ta to a valid upstream
* request
* - ta-drw-d: the device responds with a ta to a valid upstream
* request
* - ape-d: address/parity to get corrupted during downstream transmission.
* - scpe-d: split completion gets corrupted during downstream transmission.
* - dpe-d: data/parity to get corrupted during downstream transmission.
* - retry-to-d: the device to exceed the set timeout for a delayed
* transaction retry.
*/
event error.io.pci.ape-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.f-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.retry-to-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.nr-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.nr-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pcix.scpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
prop fault.io.pci.device-noresp@pcibus/pcidev/pcifn (0)->
error.io.pci.nr-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
error.io.pci.nr-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
error.io.pci.retry-to-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
prop fault.io.pci.device-interr@pcibus/pcidev/pcifn (0)->
error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
error.io.pci.ape-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
error.io.pcix.scpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
error.io.pci.f-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
/*
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* A faulty PCI bus may cause:
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* - ape-d: address/parity to get corrupted during downstream transmission.
* - scpe-d: split completion gets corrupted during downstream transmission.
* - dpe-d: data/parity to get corrupted during downstream transmission.
* - ape-u: address/parity to get corrupted during upstream transmission.
* - dpe-u: data/parity to get corrupted during read upstream transmission.
* - scpe-u: split completion to get corrupted during upstream transmission.
*/
fru pcibus;
asru pcibus;
event fault.io.pci.bus-linkerr@pcibus,
FITrate=PCI_BUS_FIT, FRU=pcibus, ASRU=pcibus;
prop fault.io.pci.bus-linkerr@pcibus (0)->
error.io.pci.ape-d@pcibus/pcidev<todev>/pcifn { todev != 32},
error.io.pci.f-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
error.io.pci.nf-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
error.io.pci.ape-u@pcibus/pcidev<todev>/pcifn { todev != 32},
error.io.pci.f-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
error.io.pci.nf-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
error.io.pcix.scpe-d@pcibus/pcidev<todev>/pcifn { todev != 32},
error.io.pcix.scpe-u@pcibus/pcidev<todev>/pcifn { todev != 32},
error.io.pcix.tx-oor@pcibus/pcidev<todev>/pcifn { todev != 32},
error.io.pcix.rx-unex-sc@pcibus/pcidev<todev>/pcifn { todev != 32};
/*
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* recursive rules for pci-pci bridges
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
event error.io.pci.serr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.perr-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.perr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.perr-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn;
event error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn;
event error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.leaf-ape-d@pcibus/pcidev/pcifn;
event error.io.pci.ape-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.source-ape-u@pcibus/pcidev/pcifn;
event error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn;
event error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn;
event error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.ta-d@pcibus/pcidev/pcifn;
event error.io.pci.ta-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.target-rta-d@pcibus/pcidev/pcifn;
event error.io.pci.target-ma-d@pcibus/pcidev/pcifn;
event error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.nr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.ta-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pcix.scpe-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn;
event error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event ereport.io.pci.sec-ma@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.sec-sta@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.sec-rta@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pci.dto@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-spl-dis@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn{within(5s)};
/*
* SERR# can propagate upstream and may be seen by other devices on the bus
*/
prop error.io.pci.serr-u@pcibus/pcidev[fromdev]/pcifn (0)->
ereport.io.pci.sserr@pcibus/pcidev<todev>/pcifn<> {todev!=fromdev};
prop error.io.pci.serr-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
ereport.io.pci.sserr@pcibus/pcidev/pcifn;
prop error.io.pci.serr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn;
/*
* PERR# can propagate upstream for delayed writes. For posted writes
* it turns into an SERR#.
*/
prop error.io.pci.perr-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
error.io.pci.perr-dw-u@pcibus/pcidev/pcifn;
prop error.io.pci.perr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn;
/*
* PERR# can propagate downstream (only for downstream dw parity error)
*/
prop error.io.pci.perr-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.perr-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.perr-d@pcibus/pcidev/pcifn (1)->
error.io.pci.perr-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
/*
* downstream target ereports are for any descendant device
*
* A hostbridge driver may generate "target-" ereports when knowledge of the
* physical address associated with a fault allows the target device to be
* determined. This is not a requirement of the Diagnosis Engine, but can be
* valuable when available.
*/
prop error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn (0)->
ereport.io.pci.target-mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn (1)->
error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.target-rta-d@pcibus/pcidev/pcifn (0)->
ereport.io.pci.target-rta@pcibus/pcidev/pcifn;
prop error.io.pci.target-rta-d@pcibus/pcidev/pcifn (1)->
error.io.pci.target-rta-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.target-ma-d@pcibus/pcidev/pcifn (0)->
ereport.io.pci.target-ma@pcibus/pcidev/pcifn;
prop error.io.pci.target-ma-d@pcibus/pcidev/pcifn (1)->
error.io.pci.target-ma-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
/*
* target aborts propagate upstream
*/
prop error.io.pci.ta-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
ereport.io.pci.sta@pcibus/pcidev/pcifn;
prop error.io.pci.ta-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.sta@pcibus/pcidev/pcifn;
prop error.io.pci.ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
ereport.io.pci.sec-rta@pcibus/pcidev/pcifn,
error.io.pci.ta-u@pcibus/pcidev/pcifn;
/*
* bad data (ie invalid but not an ape or dpe) can propagate downstream,
* and at some point may result in a target or master abort
*/
prop error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn (1)->
error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>,
error.io.pci.nr-pw-u@pcibus/pcidev/pcifn,
error.io.pci.ta-pw-u@pcibus/pcidev/pcifn;
prop error.io.pci.badreq-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
error.io.pci.nr-pw-u@pcibus/pcidev/pcifn,
error.io.pci.ta-pw-u@pcibus/pcidev/pcifn;
prop error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn (1)->
error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>,
error.io.pci.nr-drw-u@pcibus/pcidev/pcifn,
error.io.pci.ta-drw-u@pcibus/pcidev/pcifn;
prop error.io.pci.badreq-drw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
error.io.pci.nr-drw-u@pcibus/pcidev/pcifn,
error.io.pci.ta-drw-u@pcibus/pcidev/pcifn;
prop error.io.pci.nr-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
ereport.io.pci.sec-ma@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pci.ta-pw-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.sta@pcibus/pcidev/pcifn;
prop error.io.pci.ta-pw-u@pcibus/pcidev/pcifn { IS_BDG } (1)->
ereport.io.pci.sta@pcibus/pcidev/pcifn;
prop error.io.pci.ta-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
ereport.io.pci.sec-rta@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pci.nr-drw-u@pcibus/pcidev/pcifn (1)->
error.io.pci.ma-u@pcibus/pcidev/pcifn;
prop error.io.pci.nr-drw-u@pcibus/pcidev/pcifn (1)->
error.io.pci.target-rta-d@pcibus/pcidev/pcifn,
error.io.pci.target-ma-d@pcibus/pcidev/pcifn;
prop error.io.pci.ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
ereport.io.pci.sec-ma@pcibus/pcidev/pcifn;
prop error.io.pci.ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
error.io.pci.ma-u@pcibus/pcidev/pcifn,
error.io.pci.ta-u@pcibus/pcidev/pcifn;
prop error.io.pci.ta-drw-u@pcibus/pcidev/pcifn (1)->
error.io.pci.ta-u@pcibus/pcidev/pcifn;
prop error.io.pci.ta-drw-u@pcibus/pcidev/pcifn (1)->
error.io.pci.target-rta-d@pcibus/pcidev/pcifn;
/*
* bad data (ie invalid but not an ape or dpe) can propagate upstream,
* and at some point may result in a target or master abort
*/
prop error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn,
error.io.pci.nr-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn,
error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
prop error.io.pci.badreq-pw-u@pcibus/pcidev/pcifn (0)->
error.io.pci.nr-pw-d@pcibus/pcidev/pcifn,
error.io.pci.ta-pw-d@pcibus/pcidev/pcifn;
prop error.io.pci.nr-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.ma@pcibus/pcidev/pcifn;
prop error.io.pci.nr-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
ereport.io.pci.ma@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pci.ta-pw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
prop error.io.pci.ta-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.rta@pcibus/pcidev/pcifn;
prop error.io.pci.ta-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
ereport.io.pci.rta@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn;
/*
* for delayed writes we treat upstream badreq specially as rta always
* propagates back downstream to the leaf
*/
prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.rta@pcibus/pcidev/pcifn,
ereport.io.pci.ma@pcibus/pcidev/pcifn;
prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
ereport.io.pci.ma@pcibus/pcidev/pcifn,
ereport.io.pci.rta@pcibus/pcidev/pcifn;
prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
prop error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
error.io.pci.badreq-drw-u@pcibus/pcidev/pcifn;
prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.ma@pcibus/pcidev/pcifn;
prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
ereport.io.pci.ma@pcibus/pcidev/pcifn;
prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
prop error.io.pci.nr-drw-d@pcibus/pcidev/pcifn (1)->
error.io.pci.ta-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>,
error.io.pci.nr-drw-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.ta-drw-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
ereport.io.pci.sec-sta@pcibus/pcidev/pcifn;
prop error.io.pci.ta-drw-d@pcibus/pcidev/pcifn (1)->
error.io.pci.ta-d@pcibus/pcidev/pcifn;
prop error.io.pci.ta-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.rta@pcibus/pcidev/pcifn;
prop error.io.pci.ta-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
ereport.io.pci.sec-sta@pcibus/pcidev/pcifn,
ereport.io.pci.rta@pcibus/pcidev/pcifn;
prop error.io.pci.ta-d@pcibus/pcidev/pcifn (1)->
error.io.pci.ta-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
/*
* Request with address parity error must be detected by parent device
* and can optionally result in a target or master abort.
* It may also be detected by sibling devices on a bus
*/
prop error.io.pci.ape-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pci.ape-u@pcibus/pcidev/pcifn (0)->
error.io.pci.nr-drw-d@pcibus/pcidev/pcifn,
error.io.pci.ta-drw-d@pcibus/pcidev/pcifn,
error.io.pci.nr-pw-d@pcibus/pcidev/pcifn,
error.io.pci.ta-pw-d@pcibus/pcidev/pcifn;
prop error.io.pci.ape-u@pcibus/pcidev/pcifn (0)->
ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (0)->
ereport.io.pci.dpe@pcibus/pcidev<todev>/pcifn<> {fromdev != todev},
ereport.io.pci.sserr@pcibus/pcidev<todev>/pcifn<> {fromdev != todev};
prop error.io.pci.ape-u@pcibus/pcidev/pcifn (1)->
error.io.pci.source-ape-u@pcibus/pcidev/pcifn;
/*
* If the bridge sees an upstream split completion error (pci-x only) it could
* result in a number of things
* - for various faults in the split completion (eg address parity error)
* we will respond with a target abort (which the child device will treat
* as a split completion ta)
* - for other faults we can't tell who send the split completion and so
* just drop the request (which the child device sees as a split
* completion ma)
*/
prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
ereport.io.pci.sec-sta@pcibus/pcidev/pcifn,
ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
ereport.io.pci.sec-rserr@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn (1)->
error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn,
error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn;
prop error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn (1)->
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.sserr@pcibus/pcidev/pcifn,
ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn;
prop error.io.pcix.spl-comp-ma-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn,
ereport.io.pci.ma@pcibus/pcidev/pcifn;
prop error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn (1)->
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.sserr@pcibus/pcidev/pcifn,
ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn;
prop error.io.pcix.spl-comp-ta-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
ereport.io.pcix.spl-dis@pcibus/pcidev/pcifn,
ereport.io.pci.rta@pcibus/pcidev/pcifn;
prop error.io.pcix.scpe-u@pcibus/pcidev/pcifn (1)->
error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn;
/*
* request with address parity error must be detected by child device
* and can optionally result in a target or master abort.
*/
prop error.io.pci.ape-d@pcibus/pcidev/pcifn (1)->
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pci.ape-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
error.io.pci.leaf-ape-d@pcibus/pcidev/pcifn;
prop error.io.pci.leaf-ape-d@pcibus/pcidev/pcifn { IS_LEAF } (2)->
ereport.io.pci.sserr@pcibus/pcidev/pcifn,
ereport.io.pci.dpe@pcibus/pcidev/pcifn;
prop error.io.pci.ape-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn;
prop error.io.pci.ape-d@pcibus/pcidev/pcifn (0)->
error.io.pci.ta-pw-u@pcibus/pcidev/pcifn,
error.io.pci.ta-drw-u@pcibus/pcidev/pcifn,
error.io.pci.nr-pw-u@pcibus/pcidev/pcifn,
error.io.pci.nr-drw-u@pcibus/pcidev/pcifn;
/*
* If the device sees a downstream split completion error (pci-x only) it could
* result in a number of things
* - for various faults in the split completion (eg address parity error)
* we will respond with a target abort (which the parent bridge will treat
* as a split completion ta)
* - for other faults we can't tell who send the split completion and so
* just drop the request (which the parent bridge sees as a split
* completion ma)
*/
prop error.io.pcix.scpe-d@pcibus/pcidev/pcifn (0)->
ereport.io.pci.sta@pcibus/pcidev/pcifn,
ereport.io.pci.dpe@pcibus/pcidev/pcifn,
ereport.io.pci.sserr@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pcix.scpe-d@pcibus/pcidev/pcifn (1)->
error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn,
error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn;
prop error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (2)->
ereport.io.pcix.sec-spl-dis@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pcix.spl-comp-ma-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
ereport.io.pci.sec-ma@pcibus/pcidev/pcifn;
prop error.io.pcix.spl-comp-ta-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
ereport.io.pcix.sec-spl-dis@pcibus/pcidev/pcifn,
error.io.pci.serr-u@pcibus/pcidev/pcifn,
ereport.io.pci.sec-rta@pcibus/pcidev/pcifn;
/*
* request with data parity error can propagate upstream
*
* for PCI/X (but not PCI) the split write can optionally be forwarded across
* the bridge, maintaining bad parity/ecc
*
* if there is a dpe on a retry on a delayed write, we don't send another
* retry, and eventually the dto timer will expire
*/
prop error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
ereport.io.pci.mdpe@pcibus/pcidev/pcifn,
ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
error.io.pci.dpdata-pw-u@pcibus/pcidev/pcifn;
prop error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn;
prop error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
ereport.io.pci.mdpe@pcibus/pcidev/pcifn,
error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn;
prop error.io.pci.dpdata-dw-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
prop error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (3)->
ereport.io.pci.sec-dpe@pcibus/pcidev/pcifn,
ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
error.io.pci.dpdata-dr-u@pcibus/pcidev/pcifn;
/*
* Request with data parity error can propagate downstream. A hardened
* leaf driver should handle the error, but may or may not be able to
* avoid service impact. We handle to two cases separately. If there is
* service impact we will fail immediately, if not we will feed into a SERD
* engine.
*
* for PCI/X (but not PCI) the split write can optionally be forwarded across
* the bridge, maintaining bad parity/ecc
*
* if there is a dpe on a retry on a delayed write, we don't send another
* retry, and eventually the dto timer will expire
*/
prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn (2)->
error.io.pci.perr-pw-u@pcibus/pcidev/pcifn,
error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn;
prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn;
prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn,
ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.f-dpdata-pw-d@pcibus/pcidev/pcifn (1)->
error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn (2)->
error.io.pci.perr-pw-u@pcibus/pcidev/pcifn,
error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn,
ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpdata-pw-d@pcibus/pcidev/pcifn (1)->
error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn;
prop error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn,
ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn (1)->
error.io.pci.dpdata-pw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn (3)->
error.io.pci.perr-dw-u@pcibus/pcidev/pcifn,
error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn,
error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn (0)->
ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn;
prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn;
prop error.io.pci.f-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
error.io.pci.retry-to-d@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn (3)->
error.io.pci.perr-dw-u@pcibus/pcidev/pcifn,
error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn,
error.io.pci.target-mdpe-d@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn (0)->
ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpdata-dw-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
error.io.pci.retry-to-d@pcibus/pcidev/pcifn;
prop error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn (0)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn,
ereport.io.pci.sec-mdpe@pcibus/pcidev/pcifn,
error.io.pci.dpdata-dw-fwd-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn (2)->
error.io.pci.perr-dr-u@pcibus/pcidev/pcifn,
error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn;
prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn,
ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn,
ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn (1)->
error.io.pci.f-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn (2)->
error.io.pci.perr-dr-u@pcibus/pcidev/pcifn,
error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn,
ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn { IS_BDG } (2)->
ereport.io.pci.dpe@pcibus/pcidev/pcifn,
ereport.io.pci.mdpe@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn (1)->
error.io.pci.nf-dpdata-dr-d@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
/*
* delayed read/write retry timeout can cause dto at a bridge
*/
prop error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
error.io.pci.retry-to-u@pcibus/pcidev/pcifn;
prop error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
ereport.io.pci.dto@pcibus/pcidev/pcifn;
prop error.io.pci.retry-to-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (0)->
error.io.pci.serr-u@pcibus/pcidev/pcifn;
prop error.io.pci.retry-to-d@pcibus/pcidev/pcifn (0)->
error.io.pci.retry-to-d@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
prop error.io.pci.retry-to-d@pcibus/pcidev/pcifn { IS_BDG } (1)->
ereport.io.pci.dto@pcibus/pcidev/pcifn;
prop error.io.pci.retry-to-d@pcibus/pcidev/pcifn { IS_BDG } (0)->
error.io.pci.serr-u@pcibus/pcidev/pcifn;
/*
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* source- propagations.
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
event error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pci.source-ape-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
event error.io.service.restored@pcibus/pcidev/pcifn;
event ereport.io.service.lost@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.service.degraded@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.service.unaffected@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.service.restored@pcibus/pcidev/pcifn{within(30s)};
prop error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.service.lost@pcibus/pcidev/pcifn,
ereport.io.service.degraded@pcibus/pcidev/pcifn;
prop error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.service.unaffected@pcibus/pcidev/pcifn,
error.io.service.restored@pcibus/pcidev/pcifn;
prop error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.service.lost@pcibus/pcidev/pcifn,
ereport.io.service.degraded@pcibus/pcidev/pcifn;
prop error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.service.unaffected@pcibus/pcidev/pcifn,
error.io.service.restored@pcibus/pcidev/pcifn;
prop error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.service.lost@pcibus/pcidev/pcifn,
ereport.io.service.degraded@pcibus/pcidev/pcifn;
prop error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.service.unaffected@pcibus/pcidev/pcifn,
error.io.service.restored@pcibus/pcidev/pcifn;
prop error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn (1)->
error.io.pci.source-f-perr-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn (1)->
error.io.pci.source-nf-perr-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn (1)->
error.io.pci.source-f-dpdata-w-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn (1)->
error.io.pci.source-nf-dpdata-w-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn (1)->
error.io.pci.source-f-dpdata-r-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn (1)->
error.io.pci.source-nf-dpdata-r-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pci.source-ape-u@pcibus/pcidev/pcifn (1)->
error.io.pci.source-ape-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
prop error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn (1)->
error.io.pcix.source-scpe-u@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
/*
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* Handling of leaf driver detected internal errors. Use serd engine if
* no service impact - otherwise fail immediately
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
event ereport.io.device.inval_state@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.device.no_response@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.device.stall@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.device.badint_limit@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.device.intern_corr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.device.intern_uncorr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.device.nf-device@pcibus/pcidev/pcifn;
prop error.io.service.restored@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.service.lost@pcibus/pcidev/pcifn,
ereport.io.service.degraded@pcibus/pcidev/pcifn;
prop error.io.service.restored@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.service.restored@pcibus/pcidev/pcifn;
prop error.io.device.f-device@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.device.inval_state@pcibus/pcidev/pcifn,
ereport.io.device.no_response@pcibus/pcidev/pcifn,
ereport.io.device.stall@pcibus/pcidev/pcifn,
ereport.io.device.badint_limit@pcibus/pcidev/pcifn,
ereport.io.device.intern_corr@pcibus/pcidev/pcifn,
ereport.io.device.intern_uncorr@pcibus/pcidev/pcifn;
prop error.io.device.f-device@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.service.lost@pcibus/pcidev/pcifn,
ereport.io.service.degraded@pcibus/pcidev/pcifn;
engine serd.io.device.nonfatal@pcibus/pcidev/pcifn,
N=NONFATAL_COUNT, T=NONFATAL_TIME, method=persistent,
trip=ereport.io.device.nf-device@pcibus/pcidev/pcifn;
event upset.io.device.nonfatal@pcibus/pcidev/pcifn,
engine=serd.io.device.nonfatal@pcibus/pcidev/pcifn;
prop error.io.device.nf-device@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.device.nf-device@pcibus/pcidev/pcifn;
prop error.io.device.nf-device@pcibus/pcidev/pcifn { IS_LEAF } (0)->
ereport.io.device.inval_state@pcibus/pcidev/pcifn,
ereport.io.device.no_response@pcibus/pcidev/pcifn,
ereport.io.device.stall@pcibus/pcidev/pcifn,
ereport.io.device.badint_limit@pcibus/pcidev/pcifn,
ereport.io.device.intern_corr@pcibus/pcidev/pcifn,
ereport.io.device.intern_uncorr@pcibus/pcidev/pcifn,
ereport.io.service.unaffected@pcibus/pcidev/pcifn,
error.io.service.restored@pcibus/pcidev/pcifn;
prop upset.io.device.nonfatal@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.device.inval_state@pcibus/pcidev/pcifn,
ereport.io.device.no_response@pcibus/pcidev/pcifn,
ereport.io.device.stall@pcibus/pcidev/pcifn,
ereport.io.device.badint_limit@pcibus/pcidev/pcifn,
ereport.io.device.intern_corr@pcibus/pcidev/pcifn,
ereport.io.device.intern_uncorr@pcibus/pcidev/pcifn;
prop upset.io.device.nonfatal@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.service.unaffected@pcibus/pcidev/pcifn,
error.io.service.restored@pcibus/pcidev/pcifn;
/*
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* Handling of pci express nonfatal errors (dpe). Use serd engine if
* no service impact - otherwise fail immediately
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
event ereport.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
event ereport.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
engine serd.io.pci.nf-dpe-u@pcibus/pcidev/pcifn,
N=NONFATAL_DPE_U_COUNT, T=NONFATAL_DPE_U_TIME, method=persistent,
trip=ereport.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
event upset.io.pci.nf-dpe-u@pcibus/pcidev/pcifn,
engine=serd.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.pci.nf-dpe-u@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (0)->
error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn,
ereport.io.service.unaffected@pcibus/pcidev/pcifn,
error.io.service.restored@pcibus/pcidev/pcifn;
prop upset.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
error.io.pci.nonfatal-dpe-u@pcibus/pcidev/pcifn;
prop upset.io.pci.nf-dpe-u@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.service.unaffected@pcibus/pcidev/pcifn,
error.io.service.restored@pcibus/pcidev/pcifn;
engine serd.io.pci.nf-dpe-d@pcibus/pcidev/pcifn,
N=NONFATAL_DPE_D_COUNT, T=NONFATAL_DPE_D_TIME, method=persistent,
trip=ereport.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
event upset.io.pci.nf-dpe-d@pcibus/pcidev/pcifn,
engine=serd.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.pci.nf-dpe-d@pcibus/pcidev/pcifn;
prop error.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (0)->
error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn,
ereport.io.service.unaffected@pcibus/pcidev/pcifn,
error.io.service.restored@pcibus/pcidev/pcifn;
prop upset.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (1)->
error.io.pci.nonfatal-dpe-d@pcibus/pcidev/pcifn;
prop upset.io.pci.nf-dpe-d@pcibus/pcidev/pcifn { IS_LEAF } (1)->
ereport.io.service.unaffected@pcibus/pcidev/pcifn,
error.io.service.restored@pcibus/pcidev/pcifn;
/*
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* stub unused ereports
* - ignore rx-spl as we can't tell what message it was (and we should have
* diagnosed the problem anyway from standard pci ereports)
* - ignore sec-spl-or/sec-spl-dly as these aren't really faults (tuning info)
* - ignore unex-spl/sec-unex-spl
* - ignore ecc.ue ereports (we get everything we need from dpe/mdpe)
* - ignore ecc.ce ereports for now (could do serd on these)
* - ignore nr ereport
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
event ereport.io.pci.nr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.unex-spl@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.rx-spl@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-unex-spl@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-spl-or@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-spl-dly@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.ecc.ce-addr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.ecc.ce-attr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.ecc.ce-data@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.ecc.ue-addr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.ecc.ue-attr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.ecc.ue-data@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.s-ce@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.s-ue@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-ecc.ce-addr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-ecc.ce-attr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-ecc.ce-data@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-ecc.ue-addr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-ecc.ue-attr@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-ecc.ue-data@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-s-ce@pcibus/pcidev/pcifn{within(5s)};
event ereport.io.pcix.sec-s-ue@pcibus/pcidev/pcifn{within(5s)};
event upset.io.pcix.discard@pcibus/pcidev/pcifn;
prop upset.io.pcix.discard@pcibus/pcidev/pcifn (1)->
ereport.io.pci.nr@pcibus/pcidev/pcifn,
ereport.io.pcix.rx-spl@pcibus/pcidev/pcifn,
ereport.io.pcix.unex-spl@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-unex-spl@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-spl-or@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-spl-dly@pcibus/pcidev/pcifn,
ereport.io.pcix.ecc.ce-addr@pcibus/pcidev/pcifn,
ereport.io.pcix.ecc.ce-attr@pcibus/pcidev/pcifn,
ereport.io.pcix.ecc.ce-data@pcibus/pcidev/pcifn,
ereport.io.pcix.ecc.ue-addr@pcibus/pcidev/pcifn,
ereport.io.pcix.ecc.ue-attr@pcibus/pcidev/pcifn,
ereport.io.pcix.ecc.ue-data@pcibus/pcidev/pcifn,
ereport.io.pcix.s-ce@pcibus/pcidev/pcifn,
ereport.io.pcix.s-ue@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-ecc.ce-addr@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-ecc.ce-attr@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-ecc.ce-data@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-ecc.ue-addr@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-ecc.ue-attr@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-ecc.ue-data@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-s-ce@pcibus/pcidev/pcifn,
ereport.io.pcix.sec-s-ue@pcibus/pcidev/pcifn;