/*
* 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 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
* Define FITrates for different types of errors. For the ultrSPARC-T2plus
* interconnect, they are all defined to provide relative likelihood as
* actual FITrates are unavailable. We define them here in case more
* accurate values become available in future.
*/
/*
* Define propogation delays for the ereports.
*
* For immediate processing, we specify a very short delay, which seems to
* work better than 0. For ereports that are to be ignored, we delay longer,
* 1 second.
*/
/*
* Test for primary or secondary ereports
*/
/*
* Tests to determine what CHIP is associated with an ereport
*/
/*
* SERD values used by the LFU subsystem
*/
/*
* ASRU and FRU definitions used by this diagnosis engine.
*/
/*
* Define the errors that propogate to a CHIP fault.
*/
/*
* OPU Subsystem
*/
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
/*
* Declare the intermediate errors that will be generated by the ereports
* in this subsystem. These errors will, in turn, propogate to the
* appropriate fault.
*/
/*
* This fault is diagnosed for uncorrectible OPU errors
*/
/*
* This fault is diagnosed for correctible OPU errors.
*/
/*
* All of the following ereports are associated with a CHIP. Propogate
* them to the appropriate error for diagnosis to a CHIP fault, above.
*/
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)};
/*
* LFU Subsystem
*/
{within (SERD_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (RETRAIN_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (RETRAIN_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (SERD_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (RETRAIN_DELAY)};
{within (RETRAIN_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (RETRAIN_DELAY)};
{within (RETRAIN_DELAY)};
{within (RETRAIN_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
{within (IMMEDIATE_DELAY)};
/*
* Declare the intermediate errors that will be generated by the ereports
* in this subsystem. These errors will, in turn, propogate to the
* appropriate fault.
*/
/*
* Declare the upsets that may be diagnosed for the LFU subsystem
*/
/*
* Declare the faults that may be generated for the LFU subsystem.
*/
/*
* Define how the intermediate errors propogate to faults for the LFU
* subsystem.
*/
/*
* We want to count CRC errors on each connection between an interconnect
* and a CHIP. Each interconnect is connected to each CHIP, so we need 16
* SERD engines (4 interconnects, and 4 CHIPs).
*
* The topology does not include interconnect/chip, so we cannot do this
* automatically. Instead, we explicitly declare 4 sets of serd engine
* propogations, one for each CHIP, and let eversholt expand to all available
* interconnects.
*/
/*
* CHIP0 SERD rules
*
* These rules create a SERD engine for the connection between each
* interconnect and CHIP 0.
*/
{MATCH_CPUID(0)};
{MATCH_CPUID(0)};
/*
* CHIP1 SERD rules
*
* These rules create a SERD engine for the connection between each
* interconnect and CHIP 1.
*/
{MATCH_CPUID(1)};
{MATCH_CPUID(1)};
/*
* CHIP2 SERD rules
*
* These rules create a SERD engine for the connection between each
* interconnect and CHIP 2.
*/
{MATCH_CPUID(2)};
{MATCH_CPUID(2)};
/*
* CHIP3 SERD rules
*
* These rules create a SERD engine for the connection between each
* interconnect and CHIP 3.
*/
{MATCH_CPUID(3)};
{MATCH_CPUID(3)};
/*
* LFU propogations that generate
* error.asic.ultraSPARC-T2plus.interconnect.lfu-f@interconnect
*/
/*
* LFU propogations that generate
* error.cpu.ultraSPARC-T2plus.lfu-f.chip@chip
*/
{MATCH_CPUID(chip_num)};
/*
* LFU propogations that generate
* error.cpu.ultrSPARC-T2plus.lfu-u.chip
*/
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)};
/*
* LFU propogations that generate
* error.asic.ultraSPARC-T2plus.interconnect.lfu-u@interconnect
*/
/*
* LFU propogations that generate
* error.asic.ultraSPARC-T2plus.interconnect.lfu.ignore@interconnect
*/
/*
* LFU propogations that generate
* error.cpu.ultraSPARC-T2plus.lfu-c.chip@chip
*/
{chip_num == 0},
{chip_num == 1},
{chip_num == 2},
{chip_num == 3},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)},
{MATCH_CPUID(chip_num)};
/*
* GPD Subsystem
*/
/*
* Declare the intermediate errors that will be generated by the ereports
* in this subsystem. These errors will, in turn, propogate to the
* appropriate fault.
*/
/*
* Declare the upsets that may be diagnosed for this subsystem
*/
/*
* Declare the faults that may be generated for this subsystem.
*/
/*
* Define how the intermediate errors propogate to faults for this subsystem.
*/
/*
* GPD suspect list
* fault.asic.ultraSPARC-T2plus.interconnect.gpd-u
* fault.cpu.ultraSPARC-T2plus.chip
*
* Events in this list are diagnosed only if they are primary errors.
* The necessary information is unavailable for secondary errors, so
* they are logged but not diagnosed.
*/
{IS_PRIMARY},
{IS_PRIMARY},
{IS_PRIMARY},
{IS_PRIMARY},
{IS_PRIMARY};
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY};
{IS_PRIMARY},
{IS_PRIMARY},
{IS_PRIMARY},
{IS_PRIMARY},
{IS_PRIMARY},
{IS_PRIMARY},
{IS_PRIMARY},
{IS_PRIMARY},
{IS_PRIMARY};
/*
* ASU Subsystem
*/
/*
* Declare the intermediate errors that will be generated by the ereports
* in this subsystem. These errors will, in turn, propogate to the
* appropriate fault.
*/
/*
* Declare the upsets that may be diagnosed for this subsystem
*/
/*
* Declare the faults that may be generated for this subsystem.
*/
/*
* Define how the intermediate errors propogate to faults for this subsystem.
*/
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY},
{IS_SECONDARY};