xref: /onnv-gate/usr/src/cmd/fm/eversholt/files/sparc/sun4u/psycho.esc (revision 7197:6062b005c7ea)
10Sstevel@tonic-gate/*
20Sstevel@tonic-gate * CDDL HEADER START
30Sstevel@tonic-gate *
40Sstevel@tonic-gate * The contents of this file are subject to the terms of the
51865Sdilpreet * Common Development and Distribution License (the "License").
61865Sdilpreet * You may not use this file except in compliance with the License.
70Sstevel@tonic-gate *
80Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
90Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
100Sstevel@tonic-gate * See the License for the specific language governing permissions
110Sstevel@tonic-gate * and limitations under the License.
120Sstevel@tonic-gate *
130Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
140Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
150Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
160Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
170Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
180Sstevel@tonic-gate *
190Sstevel@tonic-gate * CDDL HEADER END
200Sstevel@tonic-gate */
210Sstevel@tonic-gate/*
22*7197Sstephh * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
230Sstevel@tonic-gate * Use is subject to license terms.
240Sstevel@tonic-gate */
250Sstevel@tonic-gate
260Sstevel@tonic-gate#pragma ident	"%Z%%M%	%I%	%E% SMI"
270Sstevel@tonic-gate
280Sstevel@tonic-gate#pragma dictionary "SUN4U"
290Sstevel@tonic-gate
300Sstevel@tonic-gate#define	AGENT_ID_MASK	0x1f
310Sstevel@tonic-gate#define	AGENT_ID_SHIFT	24
320Sstevel@tonic-gate
330Sstevel@tonic-gate#define	HB_FIT		1000
340Sstevel@tonic-gate#define HBUS_FIT	1000
350Sstevel@tonic-gate#define PCI_BUS_FIT	500
360Sstevel@tonic-gate#define PCI_DEV_FIT	1000
370Sstevel@tonic-gate#define	CPU_FIT		500
380Sstevel@tonic-gate
390Sstevel@tonic-gate#define	PCI_HB_DEV_PATH hostbridge/pcibus/pcidev[32]/pcifn[0]
400Sstevel@tonic-gate
410Sstevel@tonic-gatefru hostbridge;
420Sstevel@tonic-gateasru hostbridge;
430Sstevel@tonic-gate
440Sstevel@tonic-gateevent fault.io.psycho@hostbridge,
450Sstevel@tonic-gate    FITrate=HB_FIT, FRU=hostbridge, ASRU=hostbridge;
460Sstevel@tonic-gate
472488Sstephhevent error.io.psy.ecc.thresh@hostbridge;
480Sstevel@tonic-gateevent ereport.io.psy.ecc.pue@hostbridge{within(5s)};
490Sstevel@tonic-gateevent ereport.io.psy.ecc.s-pue@hostbridge{within(5s)};
500Sstevel@tonic-gateevent ereport.io.psy.ecc.thresh@hostbridge;
510Sstevel@tonic-gate
520Sstevel@tonic-gate/*
530Sstevel@tonic-gate * A faulty Psycho hostbridge may cause:
540Sstevel@tonic-gate *
550Sstevel@tonic-gate *  - pue:	the psycho to detect a PIO uncorrectable error, bad reader.
560Sstevel@tonic-gate *  - s-pue:	the psycho to detect a secondary PIO UE, bad reader.
570Sstevel@tonic-gate *  - ecc:	the SERD engine to gather enough PIO CEs to generate an ereport.
580Sstevel@tonic-gate */
590Sstevel@tonic-gateprop fault.io.psycho@hostbridge (0)->
600Sstevel@tonic-gate    ereport.io.psy.ecc.pue@hostbridge,
610Sstevel@tonic-gate    ereport.io.psy.ecc.s-pue@hostbridge,
622488Sstephh    error.io.psy.ecc.thresh@hostbridge;
630Sstevel@tonic-gate
640Sstevel@tonic-gateengine serd.io.psycho.ecc@hostbridge,
650Sstevel@tonic-gate    N=3, T=1day, method=persistent,
660Sstevel@tonic-gate    trip=ereport.io.psy.ecc.thresh@hostbridge;
670Sstevel@tonic-gate
680Sstevel@tonic-gateevent upset.io.psycho@hostbridge,
690Sstevel@tonic-gate    engine=serd.io.psycho.ecc@hostbridge;
700Sstevel@tonic-gate
710Sstevel@tonic-gateevent ereport.io.psy.ecc.pce@hostbridge{within(5s)};
720Sstevel@tonic-gateevent ereport.io.psy.ecc.s-pce@hostbridge{within(5s)};
730Sstevel@tonic-gate
742488Sstephhprop error.io.psy.ecc.thresh@hostbridge (2)->
752488Sstephh    ereport.io.psy.ecc.thresh@hostbridge,
762488Sstephh    ereport.io.psy.ecc.pce@hostbridge;
772488Sstephh
780Sstevel@tonic-gate/*
790Sstevel@tonic-gate * An upset Psycho may cause:
800Sstevel@tonic-gate *
810Sstevel@tonic-gate *  - pce:	the psycho to detect a PIO correctable error, bad reader.
820Sstevel@tonic-gate */
830Sstevel@tonic-gateprop upset.io.psycho@hostbridge (0)->
840Sstevel@tonic-gate    ereport.io.psy.ecc.pce@hostbridge;
850Sstevel@tonic-gate
860Sstevel@tonic-gateevent fault.io.hbus@hostbridge,
870Sstevel@tonic-gate    FITrate=HBUS_FIT, FRU=hostbridge, ASRU=hostbridge;
880Sstevel@tonic-gate
890Sstevel@tonic-gate/*
900Sstevel@tonic-gate * A faulty host bus may cause:
910Sstevel@tonic-gate *
920Sstevel@tonic-gate *  - pue:	a PIO uncorrectable error.
930Sstevel@tonic-gate *  - s-pue:	a secondary PIO UE.
940Sstevel@tonic-gate *  - ecc:	the SERD engine to gather enough PIO CEs to generate an ereport.
950Sstevel@tonic-gate */
960Sstevel@tonic-gateprop fault.io.hbus@hostbridge (0)->
970Sstevel@tonic-gate    ereport.io.psy.ecc.pue@hostbridge,
980Sstevel@tonic-gate    ereport.io.psy.ecc.s-pue@hostbridge,
992488Sstephh    error.io.psy.ecc.thresh@hostbridge;
1000Sstevel@tonic-gate
1010Sstevel@tonic-gatefru cpu;
1020Sstevel@tonic-gate
103*7197Sstephhevent fault.io.datapath@cpu, retire=0,
1040Sstevel@tonic-gate    FITrate=CPU_FIT, FRU=cpu;
1050Sstevel@tonic-gate
1062488Sstephhevent error.io.cpu.ecc.thresh@cpu;
1070Sstevel@tonic-gate
1080Sstevel@tonic-gate/*
1090Sstevel@tonic-gate * A faulty CPU may cause:
1100Sstevel@tonic-gate *
1110Sstevel@tonic-gate *  - pue:	a PIO uncorrectable error, where the captured Agentid matches
1120Sstevel@tonic-gate *		the cpuid.
1130Sstevel@tonic-gate *  - ecc:	the SERD engine for the CPU to fire due to PIO CEs from this
1140Sstevel@tonic-gate *		CPU
1150Sstevel@tonic-gate */
1160Sstevel@tonic-gateprop fault.io.datapath@cpu[cpuid] (0)->
1170Sstevel@tonic-gate    ereport.io.psy.ecc.pue@hostbridge
1182488Sstephh    {((payloadprop("ecc-afsr") >> AGENT_ID_SHIFT) & AGENT_ID_MASK) == cpuid};
1190Sstevel@tonic-gate
1202488Sstephhprop fault.io.datapath@cpu (0)->
1212488Sstephh    error.io.cpu.ecc.thresh@cpu;
1220Sstevel@tonic-gate
1232488Sstephhprop error.io.cpu.ecc.thresh@cpu (1)->
1242488Sstephh    ereport.io.psy.ecc.thresh@hostbridge<>;
1250Sstevel@tonic-gate
1262488Sstephhprop error.io.cpu.ecc.thresh@cpu[cpuid] (1)->
1272488Sstephh    ereport.io.psy.ecc.pce@hostbridge<>
1280Sstevel@tonic-gate    {((payloadprop("ecc-afsr") >> AGENT_ID_SHIFT) & AGENT_ID_MASK) == cpuid};
1290Sstevel@tonic-gate
1300Sstevel@tonic-gateasru pcibus/pcidev/pcifn;
1310Sstevel@tonic-gatefru pcibus/pcidev;
1320Sstevel@tonic-gate
1331865Sdilpreetevent fault.io.pci.device-interr@hostbridge/pcibus/pcidev/pcifn,
1341865Sdilpreet    FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
1351865Sdilpreet
1361865Sdilpreetevent fault.io.pci.device-interr@pcibus/pcidev/pcifn,
1370Sstevel@tonic-gate    FITrate=PCI_DEV_FIT, FRU=pcibus/pcidev, ASRU=pcibus/pcidev/pcifn;
1380Sstevel@tonic-gate
1390Sstevel@tonic-gateevent error.io.psy.pbm.rl@hostbridge/pcibus/pcidev/pcifn;
1401865Sdilpreetevent error.io.psy.pbm.rl@pcibus/pcidev/pcifn;
1411865Sdilpreetevent error.io.psy.pbm.rl@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1421865Sdilpreetevent error.io.psy.pbm.target-rl@pcibus/pcidev/pcifn;
1431865Sdilpreetevent error.io.psy.pbm.target-rl@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn;
1441865Sdilpreetevent error.io.pci.ma-u@hostbridge/pcibus/pcidev/pcifn;
1451865Sdilpreetevent error.io.pci.perr-pw-u@hostbridge/pcibus/pcidev/pcifn;
1461865Sdilpreetevent error.io.pci.perr-dw-u@hostbridge/pcibus/pcidev/pcifn;
1471865Sdilpreetevent error.io.pci.dpdata-dr-u@hostbridge/pcibus/pcidev/pcifn;
1481865Sdilpreetevent error.io.pci.ta-u@hostbridge/pcibus/pcidev/pcifn;
1491865Sdilpreetevent error.io.pci.serr-u@hostbridge/pcibus/pcidev/pcifn;
1501865Sdilpreetevent error.io.pci.retry-to-d@hostbridge/pcibus/pcidev/pcifn;
1510Sstevel@tonic-gateevent error.psy.cpu.berr@cpu;
1520Sstevel@tonic-gate
1530Sstevel@tonic-gateevent ereport.io.psy.sbh@hostbridge/pcibus/pcidev/pcifn{within(5s)};
1540Sstevel@tonic-gateevent ereport.io.psy.pbm.rl@hostbridge/pcibus/pcidev/pcifn{within(5s)};
1550Sstevel@tonic-gateevent ereport.io.psy.pbm.s-rl@hostbridge/pcibus/pcidev/pcifn{within(5s)};
1560Sstevel@tonic-gateevent ereport.io.psy.pbm.s-ma@hostbridge/pcibus/pcidev/pcifn{within(5s)};
1570Sstevel@tonic-gateevent ereport.io.psy.pbm.s-rta@hostbridge/pcibus/pcidev/pcifn{within(5s)};
1580Sstevel@tonic-gateevent ereport.io.psy.pbm.s-mdpe@hostbridge/pcibus/pcidev/pcifn{within(5s)};
1591865Sdilpreetevent ereport.io.psy.pbm.target-rl@pcibus/pcidev/pcifn{within(5s)};
1600Sstevel@tonic-gateevent ereport.io.pci.rserr@hostbridge/pcibus/pcidev/pcifn{within(5s)};
1610Sstevel@tonic-gateevent ereport.cpu.ultraSPARC-II.berr@cpu{within(5s)};
1620Sstevel@tonic-gate
1630Sstevel@tonic-gate/*
1640Sstevel@tonic-gate * A faulty PCI device may cause:
1650Sstevel@tonic-gate *
1660Sstevel@tonic-gate *  - rl:	it to retry a transaction beyond the specified limit.
1670Sstevel@tonic-gate *  - sbh:	it to generate a streaming byte hole.
1681865Sdilpreet *
1691865Sdilpreet * For rl, there may be a target-rl ereport on a child device. There may also be
1701865Sdilpreet * an associated dto - the retry-to-d error propagates into the pci.esc rules
1711865Sdilpreet * to handle this.
1720Sstevel@tonic-gate */
1730Sstevel@tonic-gate
1741865Sdilpreetprop fault.io.pci.device-interr@pcibus/pcidev[fromdev]/pcifn (0)->
1751865Sdilpreet    error.io.psy.pbm.rl@pcibus/pcidev<todev>/pcifn {
1761865Sdilpreet	fromdev == todev && fromdev != 32 },
1771865Sdilpreet    error.io.psy.pbm.target-rl@pcibus/pcidev<todev>/pcifn {
1781865Sdilpreet	fromdev == todev && fromdev != 32 };
1791865Sdilpreet
1801865Sdilpreetprop error.io.psy.pbm.rl@pcibus/pcidev/pcifn/pcibus/pcidev/pcifn (1)->
1811865Sdilpreet    error.io.psy.pbm.rl@pcibus/pcidev/pcifn;
1820Sstevel@tonic-gate
1830Sstevel@tonic-gateprop error.io.psy.pbm.rl@hostbridge/pcibus/pcidev/pcifn (1)->
1840Sstevel@tonic-gate    ereport.io.psy.pbm.rl@PCI_HB_DEV_PATH,
1850Sstevel@tonic-gate    ereport.io.psy.pbm.s-rl@PCI_HB_DEV_PATH;
1860Sstevel@tonic-gate
1871865Sdilpreetprop error.io.psy.pbm.target-rl@pcibus/pcidev/pcifn (1)->
1881865Sdilpreet    error.io.psy.pbm.target-rl@pcibus/pcidev/pcifn/pcibus<>/pcidev<>/pcifn<>;
1891865Sdilpreet
1901865Sdilpreetprop error.io.psy.pbm.target-rl@pcibus/pcidev/pcifn (0)->
1911865Sdilpreet    ereport.io.psy.pbm.target-rl@pcibus/pcidev/pcifn;
1921865Sdilpreet
1930Sstevel@tonic-gateprop error.io.psy.pbm.rl@hostbridge/pcibus/pcidev/pcifn (0)->
1941865Sdilpreet    error.io.pci.retry-to-d@hostbridge/pcibus/pcidev/pcifn;
1950Sstevel@tonic-gate
1960Sstevel@tonic-gateprop error.io.psy.pbm.rl@hostbridge/pcibus/pcidev/pcifn (0)->
1970Sstevel@tonic-gate    error.psy.cpu.berr@cpu;
1980Sstevel@tonic-gate
1991865Sdilpreetprop fault.io.pci.device-interr@hostbridge/pcibus/pcidev/pcifn (0)->
2001865Sdilpreet    ereport.io.psy.sbh@PCI_HB_DEV_PATH;
2011865Sdilpreet
2020Sstevel@tonic-gate/*
2030Sstevel@tonic-gate * Need to add the following psycho specific propagations to complete the PCI
2041865Sdilpreet * fault tree. These are to allow propagations to secondary errors and cpu
2051865Sdilpreet * bus errors, and to represent the way the chip raises rserr
2061865Sdilpreet * on detection of SERR#
2070Sstevel@tonic-gate */
2081865Sdilpreetprop error.io.pci.ma-u@hostbridge/pcibus/pcidev/pcifn (0)->
2090Sstevel@tonic-gate    ereport.io.psy.pbm.s-ma@PCI_HB_DEV_PATH;
2100Sstevel@tonic-gate
2111865Sdilpreetprop error.io.pci.ta-u@hostbridge/pcibus/pcidev/pcifn (0)->
2120Sstevel@tonic-gate    ereport.io.psy.pbm.s-rta@PCI_HB_DEV_PATH;
2130Sstevel@tonic-gate
2141865Sdilpreetprop error.io.pci.perr-pw-u@hostbridge/pcibus/pcidev/pcifn (0)->
2151865Sdilpreet    ereport.io.psy.pbm.s-mdpe@PCI_HB_DEV_PATH;
2161865Sdilpreet
2171865Sdilpreetprop error.io.pci.perr-dw-u@hostbridge/pcibus/pcidev/pcifn (0)->
2180Sstevel@tonic-gate    ereport.io.psy.pbm.s-mdpe@PCI_HB_DEV_PATH;
2190Sstevel@tonic-gate
2201865Sdilpreetprop error.io.pci.dpdata-dr-u@hostbridge/pcibus/pcidev/pcifn (0)->
2211865Sdilpreet    ereport.io.psy.pbm.s-mdpe@PCI_HB_DEV_PATH;
2221865Sdilpreet
2231865Sdilpreetprop error.io.pci.ta-u@hostbridge/pcibus/pcidev/pcifn (0)->
2240Sstevel@tonic-gate    error.psy.cpu.berr@cpu;
2250Sstevel@tonic-gate
2261865Sdilpreetprop error.io.pci.dpdata-dr-u@hostbridge/pcibus/pcidev/pcifn (0)->
2270Sstevel@tonic-gate    error.psy.cpu.berr@cpu;
2280Sstevel@tonic-gate
2291865Sdilpreetprop error.io.pci.ma-u@hostbridge/pcibus/pcidev/pcifn (0)->
2300Sstevel@tonic-gate    error.psy.cpu.berr@cpu;
2310Sstevel@tonic-gate
2320Sstevel@tonic-gateprop error.psy.cpu.berr@cpu (0)->
2330Sstevel@tonic-gate    ereport.cpu.ultraSPARC-II.berr@cpu;
2340Sstevel@tonic-gate
2351865Sdilpreetprop error.io.pci.serr-u@hostbridge/pcibus/pcidev/pcifn (1)->
2360Sstevel@tonic-gate    ereport.io.pci.rserr@PCI_HB_DEV_PATH;
2370Sstevel@tonic-gate
2380Sstevel@tonic-gateevent ereport.io.psy.nodiag@hostbridge;
2390Sstevel@tonic-gate
2400Sstevel@tonic-gate/*
2410Sstevel@tonic-gate * Upset used to hide ereports that can not be currently diagnosed.
2420Sstevel@tonic-gate */
2430Sstevel@tonic-gateengine serd.io.psy.nodiag@hostbridge,
2440Sstevel@tonic-gate    N=1000, T=1hour, method=persistent,
2450Sstevel@tonic-gate    trip=ereport.io.psy.nodiag@hostbridge;
2460Sstevel@tonic-gate
2470Sstevel@tonic-gateevent upset.io.psy.nodiag@hostbridge,
2480Sstevel@tonic-gate    engine=serd.io.psy.nodiag@hostbridge;
2490Sstevel@tonic-gate
2500Sstevel@tonic-gateprop upset.io.psy.nodiag@hostbridge (0)->
2510Sstevel@tonic-gate    ereport.io.psy.ecc.s-pce@hostbridge,
2520Sstevel@tonic-gate    ereport.io.psy.nodiag@hostbridge;
253