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