/*
* 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
* 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.
*/
/*
* Eversholt rules for the Fire nexus driver
*/
/*
* Macros for CE Fabric ereports
*
* The current kernel sends ereports with a severity of PF_CE and PF_NO_ERROR.
* However, a simple change in the kernel may end up sending only a severity
* of PF_CE for CE errors. Since both methods are correct, we match on
* an ereport severity of either PF_CE only or PF_CE plus PF_NO_ERROR.
*/
/*
* Test for primary or secondary ereports
*/
/*
* payload: imu-rds
*
* Extract the request id, the BDF, value in the IMU RDS log register
* Example:
* 0x7766554433221100
* ^^^^
*/
#define IMU_MATCH_BDF(b, d, f) \
((b << 8) | (d << 3) | f))
/***************
* JBC ereports
***************/
/***************
* DMC ereports
***************/
/***************
* TLU Other Event ereports
***************/
/***************
* Fire Fabric ereport
* -------------
* Whenever a leaf device sends an error message (fatal, non-fatal, or CE) to
* root complex, the nexus driver publishes this ereport to log the ereport.
***************/
/***************
* sun4v unknown error packets
* -------------
* In a sun4v system, if HV sends an epkt to the guest the following wrong
* things can happen.
* o HV sends malformed epkt
* o Guest has coding error and doesn't understand epkt
* o HV and Guest are out of sync.
***************/
/******************************
* Generic Rules Begin Here *
******************************/
/***************
* Fire Asic HW error
* -------------
* Errors caused by parity or unexpected behaviors in the asic.
***************/
/***************
* -------------
* Errors caused by bad SW or HV
***************/
/***************
***************/
/******************************
* JBC Rules Begin Here *
******************************/
/***************
* EBUS fault
* -------------
* Errors involving the ebus
***************/
/*
* A faulty ebus can cause ebus timeout ebus_to
* ebus_to ereport:
* sun4v: The fmri of the ereport is ioboard/hostbridge
* sun4u: The fmri of the ereport is pciexrc
*/
/***************
* Fire Asic HW error
* -------------
* Errors caused by parity or unexpected behaviors in the asic.
***************/
/***************
* JBC Hostbus Link Errors
* -------------
* Possible Parity Errors caused by bad links traces or cables.
* For instance on Ontarios there is a flex cable. For Chicagos
* it could be the link trace between the CPU and Fire.
***************/
/***************
* JBC Hostbus Errors
* -------------
* Errors being returned from the hostbus side and detected by fire asic.
***************/
/***************
* JBC Datapath Errors
* -------------
* Errors resulting from the datapath of the hostbus and detected by fire asic.
***************/
/* Duplicate the above fault prop for cpumodule */
/***************
* Fire driver is at fault.
* -------------
* The px driver should not have been in this state. Defect the px driver.
***************/
/******************************
* DMC Rules Begin Here *
******************************/
/***************
* Fire PX SW error
* -------------
* Errors caused by bad SW
***************/
/***************
* Unexpected Fire State
* -------------
* The px driver should not have been in this state. Defect the px driver.
***************/
/***************
* Fire Asic HW error
* -------------
* Errors caused by parity or unexpected behaviors in the asic.
***************/
/***************
* Parity errors caused by dmc
* -------------
* Fire asic error.
***************/
/***************
* Malformed MSI
* -------------
***************/
{
IMU_MATCH_BDF(b, d, f) &&
};
{
IMU_MATCH_BDF(b, d, f) &&
};
/***************
* Event queue overflow
* -------------
* Since we don't know which devices are sending too many EQ's, we must
***************/
{
/*
* Indict PCI-E FRU(s) under this root complex excluding the
* one that the Fire ASIC resides on.
*/
(GET_HB_FRU != GET_PCIE_FRU)
};
{
/*
* Indict PCI FRU(s) under this root complex excluding the
* one that the Fire ASIC resides on.
*/
(GET_HB_FRU != GET_PCI_FRU)
};
/***************
* Secondary errors
* -------------
* These are errors that require logs to be diagnosable. Secondary errors
* do not have logs so, just propagate them to no-diag.
***************/
/******************************
* PEC Rules Begin Here *
******************************/
/***************
* Fire PX SW error
* -------------
* Errors caused by bad SW
***************/
/***************
* Fire Asic HW error
* -------------
* Errors caused by parity or unexpected behaviors in the asic.
***************/
/***************
* Failed Links
* -------------
* They will cause the fabric to be scanned and a fire.fabric ereport
* for the suspected devices will be sent. Do no diagnose these
* ereports and let the fire.fabric ereport be diagnosed.
***************/
/*
* Fault at the adjacent node which is right below the Fire ASIC
*/
(0) ->
{
};
/******************************
* Fabric Rules Begin Here *
******************************/
/***************
* fire.fabric rules
* -------------
* Below rules are so we get a single suspect list in 1 fault with percentage
* of indiction being equal among all the suspect FRUs
***************/
};
};
};
};
/* SERD CEs */
{ MATCH_CE };
/***************
* Upsets
* -------------
* Used to hide ereports that are not currently diagnose or should not be
* diagnosed
***************/