/*
* 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 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma dictionary "SUN4V"
/*
* Eversholt rules for the N2 PIU extention to Fire nexus driver
*/
#define HB_FIT 400
#define NONFATAL_COUNT 10
#define NONFATAL_TIME 1hour
#define PCIEX_DEV_FIT 1000
#define LINK_EVENTS_COUNT 10
#define LINK_EVENTS_TIME 1h
/*
* Test for primary or secondary ereports
*/
#define IS_PRIMARY (payloadprop("primary"))
#define IS_SECONDARY (! payloadprop("primary"))
/*
* payload: mmu-tfsr
*
* Extract the request id, the BDF value, in the MMU TFSR register
*
* PRM 2.0, pg 243
* Request ID: bits 15:0
*
* Example:
* 0x7766554433221100
* ^^^^
*/
#define MMU_REQ_ID_BIT_MODULO (1 << 16)
#define MMU_MATCH_BDF(mmu_tfsr, b, d, f) \
( IS_PRIMARY && \
(((mmu_tfsr) % MMU_REQ_ID_BIT_MODULO) == ((b << 8) | (d << 3) | f)) \
)
/*
* Faults, upsets and defects
*/
/* N2 Asic */
fru hostbridge/pciexrc;
asru hostbridge/pciexrc;
event fault.io.fire.asic@hostbridge/pciexrc,
FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
event fault.io.n2.soc@hostbridge/pciexrc,
FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
event fault.io.n2.crossbar@hostbridge/pciexrc,
FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
event fault.io.n2.dmu@hostbridge/pciexrc,
FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
event fault.io.n2.ncu@hostbridge/pciexrc,
FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
event fault.io.n2.siu@hostbridge/pciexrc,
FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
event fault.io.n2.niu@hostbridge/pciexrc,
FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc;
/* No diagnosis */
event upset.io.fire.nodiag@hostbridge;
/*
* Additional "DMC" errors to fire.
* N2 asic parity error
*/
event ereport.io.n2.dmu.iotsbdesc_dpe@hostbridge/pciexrc{within(5s)};
/*
* Additional "PEC" errors to fire.
*/
event ereport.io.n2.peu.err_sds_los@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.peu.lwc@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.peu.nfp@hostbridge/pciexrc{within(5s)};
/*
* Unique SOC errors to N2
*/
/* fault.io.n2.soc */
event ereport.io.n2.soc.ncumondotable@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.ncuctagce@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.ncuinttable@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.ncudataparity@hostbridge/pciexrc{within(5s)};
/* fault.io.n2.crossbar */
event ereport.io.n2.soc.ncupcxdata@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.ncudmucredit@hostbridge/pciexrc{within(5s)};
/* fault.io.n2.dmu */
event ereport.io.n2.soc.siidmuctague@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.siidmuctagce@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.siidmuaparity@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.siidmudparity@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.dmuinternal@hostbridge/pciexrc;
/* fault.io.n2.ncu */
event ereport.io.n2.soc.ncupcxue@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.dmuncucredit@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.ncumondofifo@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.ncucpxue@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.ncudmuue@hostbridge/pciexrc{within(5s)};
/* fault.io.n2.siu */
event ereport.io.n2.soc.ncuctague@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.sioctague@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.dmusiicredit@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.dmudataparity@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.sioctagce@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.dmuctagce@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.dmuctague@hostbridge/pciexrc{within(5s)};
/* fault.io.n2.niu */
event ereport.io.n2.soc.siiniuctagce@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.siiniuctague@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.siiniuaparity@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.siiniudparity@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.niuctague@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.niuctagce@hostbridge/pciexrc{within(5s)};
event ereport.io.n2.soc.niudataparity@hostbridge/pciexrc{within(5s)};
/* fault.io.niu/niufn */
event ereport.io.device.inval_state@niu/niufn{within(5s)};
event ereport.io.device.no_response@niu/niufn{within(5s)};
event ereport.io.device.stall@niu/niufn{within(5s)};
event ereport.io.device.badint_limit@niu/niufn{within(5s)};
event ereport.io.device.intern_corr@niu/niufn{within(5s)};
event ereport.io.device.intern_uncorr@niu/niufn{within(5s)};
event ereport.io.device.nf-device@niu/niufn;
/*
* Fault at the adjacent node which is right below the Fire ASIC
*/
event error.io.fire.pec.adjacentnode@hostbridge/pciexrc;
prop error.io.fire.pec.adjacentnode@hostbridge/pciexrc (0) ->
ereport.io.n2.peu.nfp@hostbridge/pciexrc;
/*
* DMU N2 asic parity error
*/
prop fault.io.fire.asic@hostbridge/pciexrc (0)->
ereport.io.n2.dmu.iotsbdesc_dpe@hostbridge/pciexrc;
/*
* Surprise remove or serdes los, similar to fire ldn event,
* don't diag.
*/
prop upset.io.fire.nodiag@hostbridge (0)->
ereport.io.n2.peu.err_sds_los@hostbridge/pciexrc,
ereport.io.n2.peu.lwc@hostbridge/pciexrc;
/* SOC Errors */
/* fault.io.n2.soc */
prop fault.io.n2.soc@hostbridge/pciexrc (1)->
ereport.io.n2.soc.ncumondotable@hostbridge/pciexrc,
ereport.io.n2.soc.ncuctagce@hostbridge/pciexrc,
ereport.io.n2.soc.ncuinttable@hostbridge/pciexrc,
ereport.io.n2.soc.ncudataparity@hostbridge/pciexrc;
/* fault.io.n2.crossbar */
prop fault.io.n2.crossbar@hostbridge/pciexrc (1)->
ereport.io.n2.soc.ncudmucredit@hostbridge/pciexrc,
ereport.io.n2.soc.ncupcxdata@hostbridge/pciexrc;
/* fault.io.n2.dmu */
prop fault.io.n2.dmu@hostbridge/pciexrc (1)->
ereport.io.n2.soc.siidmuctague@hostbridge/pciexrc,
ereport.io.n2.soc.siidmuctagce@hostbridge/pciexrc,
ereport.io.n2.soc.siidmuaparity@hostbridge/pciexrc,
ereport.io.n2.soc.siidmudparity@hostbridge/pciexrc,
ereport.io.n2.soc.dmuinternal@hostbridge/pciexrc;
/* fault.io.n2.ncu */
prop fault.io.n2.ncu@hostbridge/pciexrc (1)->
ereport.io.n2.soc.ncupcxue@hostbridge/pciexrc,
ereport.io.n2.soc.dmuncucredit@hostbridge/pciexrc,
ereport.io.n2.soc.ncumondofifo@hostbridge/pciexrc,
ereport.io.n2.soc.ncucpxue@hostbridge/pciexrc,
ereport.io.n2.soc.ncudmuue@hostbridge/pciexrc;
/* fault.io.n2.siu */
prop fault.io.n2.siu@hostbridge/pciexrc (1)->
ereport.io.n2.soc.ncuctague@hostbridge/pciexrc,
ereport.io.n2.soc.sioctague@hostbridge/pciexrc,
ereport.io.n2.soc.dmusiicredit@hostbridge/pciexrc,
ereport.io.n2.soc.dmudataparity@hostbridge/pciexrc,
ereport.io.n2.soc.sioctagce@hostbridge/pciexrc,
ereport.io.n2.soc.dmuctagce@hostbridge/pciexrc,
ereport.io.n2.soc.dmuctague@hostbridge/pciexrc;
/* fault.io.n2.niu */
prop fault.io.n2.niu@hostbridge/pciexrc (0)->
ereport.io.n2.soc.siiniuctague@hostbridge/pciexrc,
ereport.io.n2.soc.siiniuaparity@hostbridge/pciexrc,
ereport.io.n2.soc.siiniudparity@hostbridge/pciexrc,
ereport.io.n2.soc.siiniuctagce@hostbridge/pciexrc,
ereport.io.n2.soc.niuctague@hostbridge/pciexrc,
ereport.io.n2.soc.niuctagce@hostbridge/pciexrc,
ereport.io.n2.soc.niudataparity@hostbridge/pciexrc;
/* n2 niu/niufn */
event error.io.device.f-device@niu/niufn;
event error.io.device.nf-device@niu/niufn;
event error.io.service.restored@niu/niufn;
event ereport.io.service.lost@niu/niufn{within(5s)};
event ereport.io.service.restored@niu/niufn{within(30s)};
event ereport.io.service.degraded@niu/niufn{within(5s)};
event ereport.io.service.unaffected@niu/niufn{within(5s)};
/* fault error propogation */
prop fault.io.n2.niu@hostbridge/pciexrc (0)->
error.io.device.f-device@niu/niufn,
error.io.device.nf-device@niu/niufn;
/* fault.io.niu/niufn */
prop error.io.service.restored@niu/niufn (1)->
ereport.io.service.lost@niu/niufn,
ereport.io.service.degraded@niu/niufn;
prop error.io.service.restored@niu/niufn (1)->
ereport.io.service.restored@niu/niufn;
prop error.io.device.f-device@niu/niufn (1)->
ereport.io.device.inval_state@niu/niufn,
ereport.io.device.no_response@niu/niufn,
ereport.io.device.stall@niu/niufn,
ereport.io.device.badint_limit@niu/niufn,
ereport.io.device.intern_corr@niu/niufn,
ereport.io.device.intern_uncorr@niu/niufn;
prop error.io.device.f-device@niu/niufn (1)->
ereport.io.service.lost@niu/niufn,
ereport.io.service.degraded@niu/niufn;
engine serd.io.device.nonfatal@niu/niufn,
N=NONFATAL_COUNT, T=NONFATAL_TIME, method=persistent,
trip=ereport.io.device.nf-device@niu/niufn;
event upset.io.device.nonfatal@niu/niufn,
engine=serd.io.device.nonfatal@niu/niufn;
prop error.io.device.nf-device@niu/niufn (1)->
ereport.io.device.nf-device@niu/niufn;
prop error.io.device.nf-device@niu/niufn (0)->
ereport.io.device.inval_state@niu/niufn,
ereport.io.device.no_response@niu/niufn,
ereport.io.device.stall@niu/niufn,
ereport.io.device.badint_limit@niu/niufn,
ereport.io.device.intern_corr@niu/niufn,
ereport.io.device.intern_uncorr@niu/niufn,
ereport.io.service.unaffected@niu/niufn,
error.io.service.restored@niu/niufn;
prop upset.io.device.nonfatal@niu/niufn (1)->
ereport.io.device.inval_state@niu/niufn,
ereport.io.device.no_response@niu/niufn,
ereport.io.device.stall@niu/niufn,
ereport.io.device.badint_limit@niu/niufn,
ereport.io.device.intern_corr@niu/niufn,
ereport.io.device.intern_uncorr@niu/niufn;
prop upset.io.device.nonfatal@niu/niufn (1)->
ereport.io.service.unaffected@niu/niufn,
error.io.service.restored@niu/niufn;