/*
* 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 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
#pragma dictionary "SUN4U"
#define AGENT_ID_MASK 0x1f
#define AGENT_ID_SHIFT 24
#define CPU_FIT 500
fru cpu;
event fault.io.datapath@cpu, retire=0,
FITrate=CPU_FIT, FRU=cpu;
event ereport.io.psy.ecc.pue@hostbridge{within(5s)};
event ereport.io.sch.ecc.pue@hostbridge{within(5s)};
event ereport.io.xmits.ecc.pue@hostbridge{within(5s)};
event ereport.io.cpu.ecc.thresh@cpu;
/*
* For Starcat we need to apply the following logic to calculate the
* Agentid of the system board in question.
*/
prop fault.io.datapath@cpu[cpuid] (0)->
ereport.io.psy.ecc.pue@hostbridge
{((payloadprop("ecc-afsr") >> AGENT_ID_SHIFT) & AGENT_ID_MASK) ==
((cpuid >> 5) & AGENT_ID_MASK)},
ereport.io.sch.ecc.pue@hostbridge
{((payloadprop("ecc-afsr") >> AGENT_ID_SHIFT) & AGENT_ID_MASK) ==
((cpuid >> 5) & AGENT_ID_MASK)},
ereport.io.xmits.ecc.pue@hostbridge
{((payloadprop("ecc-afsr") >> AGENT_ID_SHIFT) & AGENT_ID_MASK) ==
((cpuid >> 5) & AGENT_ID_MASK)},
ereport.io.cpu.ecc.thresh@cpu[cpuid];
engine serd.io.cpu.ecc@cpu,
N=3, T=1day, method=persistent,
trip=ereport.io.cpu.ecc.thresh@cpu;
event upset.io.datapath@cpu,
engine=serd.io.cpu.ecc@cpu;
event ereport.io.psy.ecc.pce@hostbridge{within(5s)};
event ereport.io.sch.ecc.pce@hostbridge{within(5s)};
event ereport.io.xmits.ecc.pce@hostbridge{within(5s)};
prop upset.io.datapath@cpu[cpuid] (0)->
ereport.io.psy.ecc.pce@hostbridge
{((payloadprop("ecc-afsr") >> AGENT_ID_SHIFT) & AGENT_ID_MASK) ==
((cpuid >> 5) & AGENT_ID_MASK)},
ereport.io.sch.ecc.pce@hostbridge
{((payloadprop("ecc-afsr") >> AGENT_ID_SHIFT) & AGENT_ID_MASK) ==
((cpuid >> 5) & AGENT_ID_MASK)},
ereport.io.xmits.ecc.pce@hostbridge
{((payloadprop("ecc-afsr") >> AGENT_ID_SHIFT) & AGENT_ID_MASK) ==
((cpuid >> 5) & AGENT_ID_MASK)};