/*
* 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 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
* eversholt rules for generic-sparc sparc cpu errors.
*
* Most propagations are generated by preprocessor macros. The event
* declarations are deliberately not part of the propagation macros
* so that we know we have full coverage - propagations defined without
* events, or events not used in propagations, will produce compiler
* whinges.
*/
((payloadprop_defined("filter_ratio") && \
/*
* The ereport and fault events are declared at multiple levels:
* some set of @chip, @core, and @strand resources since this is
* a generic DE and must be flexible and handle present and future
* sun4v platforms. For example, one processor may have an L2
* cache per chip, another may have an L2 per core.
*
* For UE errors, faults are produced immediately.
*
* For CE errors, the errors are put through a SERD engine. If
* the SERD engine trips, the fault is produced. SERD engine
* names are of the format:
* serd.cpu.generic-sparc.<resource><suffix>
* Ex: serd.cpu.generic-sparc.chipitlb
* SERD N/T values are set to default values, but can be
* overridden via the ereport or the eft.conf file. The
* order or precedence of the SERD N/T values is:
* - the 'serd_override' tunable via eft.conf
* - the 'serd_n' and 'serd_t' payload members in the
* incoming ereport
* - the built-in default values
*
* The increment rate of the SERD engines can also be
* controlled via the ereport payload using the 'filter_ratio'
* payload member. N in incremented by the value of
* 'filter_ratio' if the payload member is present, 1 otherwise.
*/
/*
* Ereport event for cpu errors
*/
/*
* Ereports for uncorrectable cpu errors
*/
/*
* Propagations for CPU UE errors
* A fault is produced immediately for a CPU UE errors.
*/
\
{ DIAGNOSE_ERPT } (0)-> \
\
\
{ !DIAGNOSE_ERPT } (0)-> \
retire=0; \
\
{ DIAGNOSE_ERPT } (0)-> \
\
\
{ !DIAGNOSE_ERPT } (0)-> \
/*
* Ereport events for corectable errors.
*/
/*
* Propagations for CE errors
* Errors are serded and fault is generated when the SERD engine trips
* The serd name & the N & T values are set at the running time.
*/
\
/* Simple fault event */ \
\
/* When the correctable engine trips, diagnose a fault */ \
\
\
{ !DIAGNOSE_ERPT } (0) -> \
\
/* Simple fault event */ \
retire=0, \
\
/* When the correctable engine trips, diagnose a fault */ \
\
\
{ !DIAGNOSE_ERPT } (0)-> \
/*
* c2c-link-uc, c2c-prot-uc, c2c-failover errors
* The detector and sender are faulted immediately.
* If ereport does not have a sender, all chips are faulted
*/
{ DIAGNOSE_ERPT } (0) ->
{ DIAGNOSE_ERPT } (0) ->
{ !DIAGNOSE_ERPT } (0) ->
{ DIAGNOSE_ERPT } (0) ->
{ !DIAGNOSE_ERPT } (0) ->
/*
* c2c-link, c2c-prot. Errors are serded. When the serd trips,
* the detector & sender will be faulted.
* If ereport does not have a sender, all chips will be faulted
* If ereport sender or detector was faulted, discard ereport
*/
{ !DIAGNOSE_ERPT } (0) ->
/*
* and firmware is not represented in topology. Rather than ignore
* the error, the DE generates a defect with no FRU or ASRU. It
* is generated @chassis so no location (label) is picked up out
* of the topology. The associated knowledge article can instruct
* users what steps to take to address the error.
*/
{ DIAGNOSE_ERPT } (0) ->
{ !DIAGNOSE_ERPT } (0) ->
{ DIAGNOSE_ERPT } (0) ->
{ !DIAGNOSE_ERPT } (0) ->
/*
* bootbus-prot, bootbus-to and bootbus-par errors. Fault the detector.
*/
{ DIAGNOSE_ERPT } (0) ->
{ DIAGNOSE_ERPT } (0) ->
{ DIAGNOSE_ERPT } (0) ->
{ !DIAGNOSE_ERPT } (0) ->
/*
* ignore the pio-read error.
*/