17532SSean.Ye@Sun.COM /* 27532SSean.Ye@Sun.COM * CDDL HEADER START 37532SSean.Ye@Sun.COM * 47532SSean.Ye@Sun.COM * The contents of this file are subject to the terms of the 57532SSean.Ye@Sun.COM * Common Development and Distribution License (the "License"). 67532SSean.Ye@Sun.COM * You may not use this file except in compliance with the License. 77532SSean.Ye@Sun.COM * 87532SSean.Ye@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97532SSean.Ye@Sun.COM * or http://www.opensolaris.org/os/licensing. 107532SSean.Ye@Sun.COM * See the License for the specific language governing permissions 117532SSean.Ye@Sun.COM * and limitations under the License. 127532SSean.Ye@Sun.COM * 137532SSean.Ye@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 147532SSean.Ye@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157532SSean.Ye@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 167532SSean.Ye@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 177532SSean.Ye@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 187532SSean.Ye@Sun.COM * 197532SSean.Ye@Sun.COM * CDDL HEADER END 207532SSean.Ye@Sun.COM */ 217532SSean.Ye@Sun.COM 227532SSean.Ye@Sun.COM /* 239783SAdrian.Frost@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 247532SSean.Ye@Sun.COM * Use is subject to license terms. 257532SSean.Ye@Sun.COM */ 267532SSean.Ye@Sun.COM 277532SSean.Ye@Sun.COM #ifndef _NB5000_H 287532SSean.Ye@Sun.COM #define _NB5000_H 297532SSean.Ye@Sun.COM 307532SSean.Ye@Sun.COM #ifdef __cplusplus 317532SSean.Ye@Sun.COM extern "C" { 327532SSean.Ye@Sun.COM #endif 337532SSean.Ye@Sun.COM 347532SSean.Ye@Sun.COM #include <sys/cpu_module.h> 357532SSean.Ye@Sun.COM 367532SSean.Ye@Sun.COM #define NB_5000_MAX_MEM_CONTROLLERS 2 3710049SVuong.Nguyen@Sun.COM #define NB_MAX_DIMMS_PER_CHANNEL (nb_chipset == INTEL_NB_5100 ? 3 : \ 3810049SVuong.Nguyen@Sun.COM (nb_chipset == INTEL_NB_7300 ? 8 : 4)) 3910049SVuong.Nguyen@Sun.COM #define NB_MAX_CHANNELS_PER_BRANCH 2 4010049SVuong.Nguyen@Sun.COM #define NB_5100_RANKS_PER_CHANNEL 6 4110049SVuong.Nguyen@Sun.COM #define NB_MEM_BRANCH_SELECT \ 4210049SVuong.Nguyen@Sun.COM (nb_chipset == INTEL_NB_5400 || nb_chipset == INTEL_NB_5100 ? 2 : 3) 437532SSean.Ye@Sun.COM #define NB_MAX_MEM_BRANCH_SELECT 3 447532SSean.Ye@Sun.COM #define NB_MEM_RANK_SELECT (nb_chipset == INTEL_NB_7300 ? 7 : 5) 457532SSean.Ye@Sun.COM #define NB_MAX_MEM_RANK_SELECT 7 467532SSean.Ye@Sun.COM #define NB_RANKS_IN_SELECT 4 477532SSean.Ye@Sun.COM #define NB_PCI_DEV 10 487532SSean.Ye@Sun.COM 497532SSean.Ye@Sun.COM #define NB_PCI_NFUNC 4 507532SSean.Ye@Sun.COM 517532SSean.Ye@Sun.COM #define DOCMD_PEX_MASK 0x00 527532SSean.Ye@Sun.COM #define DOCMD_5400_PEX_MASK 0x000 537532SSean.Ye@Sun.COM #define DOCMD_PEX 0xf0 547532SSean.Ye@Sun.COM #define DOCMD_5400_PEX 0xff0 557532SSean.Ye@Sun.COM 567532SSean.Ye@Sun.COM #define SPD_BUSY 0x1000 577532SSean.Ye@Sun.COM #define SPD_BUS_ERROR 0x2000 587532SSean.Ye@Sun.COM #define SPD_READ_DATA_VALID 0x8000 597532SSean.Ye@Sun.COM #define SPD_EEPROM_WRITE 0xa8000000 607532SSean.Ye@Sun.COM #define SPD_ADDR(slave, addr) ((((slave) & 7) << 24) | (((addr) & 0xff) << 16)) 617532SSean.Ye@Sun.COM 627532SSean.Ye@Sun.COM #define MC_MIRROR 0x10000 637532SSean.Ye@Sun.COM #define MC_PATROL_SCRUB 0x80 647532SSean.Ye@Sun.COM #define MC_DEMAND_SCRUB 0x40 657532SSean.Ye@Sun.COM 667532SSean.Ye@Sun.COM #define MCA_SCHDIMM 0x4000 677532SSean.Ye@Sun.COM 687532SSean.Ye@Sun.COM #define TLOW_MAX 0x100000000ULL 697532SSean.Ye@Sun.COM 707532SSean.Ye@Sun.COM #define MTR_PRESENT(mtr) \ 7110049SVuong.Nguyen@Sun.COM ((mtr) & (nb_chipset == INTEL_NB_5400 || nb_chipset == INTEL_NB_5100 ? \ 7210049SVuong.Nguyen@Sun.COM 0x0400 : 0x0100)) 737532SSean.Ye@Sun.COM #define MTR_ETHROTTLE(mtr) \ 7410049SVuong.Nguyen@Sun.COM ((mtr) & (nb_chipset == INTEL_NB_5400 || nb_chipset == INTEL_NB_5100 ? \ 7510049SVuong.Nguyen@Sun.COM ? 0x0200 : 0x0080)) 767532SSean.Ye@Sun.COM #define MTR_WIDTH(mtr) \ 7710049SVuong.Nguyen@Sun.COM ((mtr) & (nb_chipset == INTEL_NB_5400 || nb_chipset == INTEL_NB_5100 ? \ 7810049SVuong.Nguyen@Sun.COM 0x0100 : 0x0040) ? 8 : 4) 797532SSean.Ye@Sun.COM #define MTR_NUMBANK(mtr) \ 8010049SVuong.Nguyen@Sun.COM ((mtr) & (nb_chipset == INTEL_NB_5400 || nb_chipset == INTEL_NB_5100 ? \ 8110049SVuong.Nguyen@Sun.COM 0x0040 : 0x0020) ? 8 : 4) 8210049SVuong.Nguyen@Sun.COM #define MTR_NUMRANK(mtr) (nb_chipset == INTEL_NB_5100 ? 1 : \ 8310049SVuong.Nguyen@Sun.COM (((mtr) & (nb_chipset == INTEL_NB_5400 ? 0x0020 : 0x0010)) ? 2 : 1)) 847532SSean.Ye@Sun.COM #define MTR_NUMROW(mtr) ((((mtr) >> 2) & 3) + 13) 857532SSean.Ye@Sun.COM #define MTR_NUMCOL(mtr) (((mtr) & 3) + 10) 867532SSean.Ye@Sun.COM 877532SSean.Ye@Sun.COM #define MTR_DIMMSIZE(mtr) ((1ULL << (MTR_NUMCOL(mtr) + MTR_NUMROW(mtr))) \ 887532SSean.Ye@Sun.COM * MTR_NUMRANK(mtr) * MTR_NUMBANK(mtr) * MTR_WIDTH(mtr)) 8910049SVuong.Nguyen@Sun.COM #define DIMMSIZE(nrow, ncol, nrank, nbank, width) \ 9010049SVuong.Nguyen@Sun.COM ((1ULL << ((ncol) + (nrow))) * (nrank) * (nbank) * (width)) 9110049SVuong.Nguyen@Sun.COM #define MTR_DDR2_DIMMSIZE(mtr, nrank) \ 9210049SVuong.Nguyen@Sun.COM ((1ULL << (MTR_NUMCOL(mtr) + MTR_NUMROW(mtr))) \ 9310049SVuong.Nguyen@Sun.COM * (nrank) * MTR_NUMBANK(mtr) * MTR_WIDTH(mtr)) 947532SSean.Ye@Sun.COM 957532SSean.Ye@Sun.COM /* FERR_GLOBAL and NERR_GLOBAL */ 967532SSean.Ye@Sun.COM #define GE_FERR_FSB3_FATAL 0x800000000ULL /* FSB3 Fatal Error */ 977532SSean.Ye@Sun.COM #define GE_FERR_FSB2_FATAL 0x400000000ULL /* FSB2 Fatal Error */ 987532SSean.Ye@Sun.COM #define GE_FERR_FSB3_NF 0x200000000ULL /* FSB3 Non-Fatal Error */ 997532SSean.Ye@Sun.COM #define GE_FERR_FSB2_NF 0x100000000ULL /* FSB2 Non-Fatal Error */ 1007532SSean.Ye@Sun.COM 1017532SSean.Ye@Sun.COM #define GE_INT_FATAL 0x80000000 /* North Bridge Internal Error */ 1027532SSean.Ye@Sun.COM #define GE_DMA_FATAL 0x40000000 /* DMA engine Fatal Error */ 1037532SSean.Ye@Sun.COM #define GE_FSB1_FATAL 0x20000000 /* FSB1 Fatal Error */ 1047532SSean.Ye@Sun.COM #define GE_FSB0_FATAL 0x10000000 /* FSB0 Fatal Error */ 1057532SSean.Ye@Sun.COM #define GE_FERR_FBD_FATAL 0x08000000 /* FBD channel Fatal Error */ 1067532SSean.Ye@Sun.COM #define GE_FERR_FBD3_FATAL 0x08000000 /* FBD3 channel Fatal Error */ 1077532SSean.Ye@Sun.COM #define GE_FERR_FBD2_FATAL 0x04000000 /* FBD2 channel Fatal Error */ 1087532SSean.Ye@Sun.COM #define GE_FERR_FBD1_FATAL 0x02000000 /* FBD1 channel Fatal Error */ 1097532SSean.Ye@Sun.COM #define GE_FERR_FBD0_FATAL 0x01000000 /* FBD0 channel Fatal Error */ 1107532SSean.Ye@Sun.COM #define GE_FERR_THERMAL_FATAL 0x04000000 /* Thermal Fatal Error */ 1117532SSean.Ye@Sun.COM #define GE_PCIEX9_FATAL 0x02000000 /* PCI Express device 9 Fatal Error */ 1127532SSean.Ye@Sun.COM #define GE_PCIEX8_FATAL 0x01000000 /* PCI Express device 8 Fatal Error */ 1137532SSean.Ye@Sun.COM #define GE_PCIEX7_FATAL 0x00800000 /* PCI Express device 7 Fatal Error */ 1147532SSean.Ye@Sun.COM #define GE_PCIEX6_FATAL 0x00400000 /* PCI Express device 6 Fatal Error */ 1157532SSean.Ye@Sun.COM #define GE_PCIEX5_FATAL 0x00200000 /* PCI Express device 5 Fatal Error */ 1167532SSean.Ye@Sun.COM #define GE_PCIEX4_FATAL 0x00100000 /* PCI Express device 4 Fatal Error */ 1177532SSean.Ye@Sun.COM #define GE_PCIEX3_FATAL 0x00080000 /* PCI Express device 3 Fatal Error */ 1187532SSean.Ye@Sun.COM #define GE_PCIEX2_FATAL 0x00040000 /* PCI Express device 2 Fatal Error */ 1197532SSean.Ye@Sun.COM #define GE_PCIEX1_FATAL 0x00020000 /* PCI Express device 1 Fatal Error */ 1207532SSean.Ye@Sun.COM #define GE_ESI_FATAL 0x00010000 /* ESI Fatal Error */ 1217532SSean.Ye@Sun.COM #define GE_INT_NF 0x00008000 /* North Bridge Internal Error */ 1227532SSean.Ye@Sun.COM #define GE_DMA_NF 0x00004000 /* DMA engine Non-Fatal Error */ 1237532SSean.Ye@Sun.COM #define GE_FSB1_NF 0x00002000 /* FSB1 Non-Fatal Error */ 1247532SSean.Ye@Sun.COM #define GE_FSB0_NF 0x00001000 /* FSB0 Non-Fatal Error */ 1257532SSean.Ye@Sun.COM #define GE_FERR_FBD3_NF 0x00000800 /* FBD channel 3 Non-Fatal Error */ 1267532SSean.Ye@Sun.COM #define GE_FERR_FBD2_NF 0x00000400 /* FBD channel 2 Non-Fatal Error */ 1277532SSean.Ye@Sun.COM #define GE_FERR_FBD1_NF 0x00000200 /* FBD channel 1 Non-Fatal Error */ 1287532SSean.Ye@Sun.COM #define GE_FERR_FBD0_NF 0x00000100 /* FBD channel 0 Non-Fatal Error */ 1297532SSean.Ye@Sun.COM #define GE_FERR_FBD_NF 0x00000800 /* FBD channel Non-Fatal Error */ 13010049SVuong.Nguyen@Sun.COM #define GE_FERR_MEM1_NF 0x00000200 /* DDR channel 1 Non-Fatal Error */ 13110049SVuong.Nguyen@Sun.COM #define GE_FERR_MEM0_NF 0x00000100 /* DDR channel 0 Non-Fatal Error */ 1327532SSean.Ye@Sun.COM #define GE_FERR_THERMAL_NF 0x00000400 /* Thermal Non-Fatal Error */ 1337532SSean.Ye@Sun.COM #define GE_PCIEX9_NF 0x00000200 /* PCI Express dev 9 Non-Fatal Error */ 1347532SSean.Ye@Sun.COM #define GE_PCIEX8_NF 0x00000100 /* PCI Express dev 8 Non-Fatal Error */ 1357532SSean.Ye@Sun.COM #define GE_PCIEX7_NF 0x00000080 /* PCI Express dev 7 Non-Fatal Error */ 1367532SSean.Ye@Sun.COM #define GE_PCIEX6_NF 0x00000040 /* PCI Express dev 6 Non-Fatal Error */ 1377532SSean.Ye@Sun.COM #define GE_PCIEX5_NF 0x00000020 /* PCI Express dev 5 Non-Fatal Error */ 1387532SSean.Ye@Sun.COM #define GE_PCIEX4_NF 0x00000010 /* PCI Express dev 4 Non-Fatal Error */ 1397532SSean.Ye@Sun.COM #define GE_PCIEX3_NF 0x00000008 /* PCI Express dev 3 Non-Fatal Error */ 1407532SSean.Ye@Sun.COM #define GE_PCIEX2_NF 0x00000004 /* PCI Express dev 2 Non-Fatal Error */ 1417532SSean.Ye@Sun.COM #define GE_PCIEX1_NF 0x00000002 /* PCI Express dev 1 Non-Fatal Error */ 1427532SSean.Ye@Sun.COM #define GE_ESI_NF 0x00000001 /* ESI Non-Fatal Error */ 1437532SSean.Ye@Sun.COM 1447532SSean.Ye@Sun.COM #define GE_NERR_FSB2_FATAL 0x08000000 /* FSB2 Fatal Error */ 1457532SSean.Ye@Sun.COM #define GE_NERR_FSB3_FATAL 0x04000000 /* FSB3 Fatal Error */ 14610049SVuong.Nguyen@Sun.COM #define GE_NERR_FBD_FATAL (nb_chipset == INTEL_NB_5100 ? 0 : 0x01000000) 14710049SVuong.Nguyen@Sun.COM /* FBD channel Fatal Error */ 1487532SSean.Ye@Sun.COM #define GE_NERR_FSB2_NF 0x00000800 /* FSB2 Non-Fatal Error */ 1497532SSean.Ye@Sun.COM #define GE_NERR_FSB3_NF 0x00000400 /* FSB3 Non-Fatal Error */ 15010049SVuong.Nguyen@Sun.COM #define GE_NERR_FBD_NF (nb_chipset == INTEL_NB_5100 ? 0 : 0x00000100) 15110049SVuong.Nguyen@Sun.COM /* FBD channel Non-Fatal Error */ 15210049SVuong.Nguyen@Sun.COM #define GE_NERR_MEM_NF (nb_chipset == INTEL_NB_5100 ? 0x00000100 : 0) 15310049SVuong.Nguyen@Sun.COM /* DDR channel0,1 Non-Fatal Error */ 1547532SSean.Ye@Sun.COM #define ERR_FAT_FSB_F9 0x20 /* F9Msk FSB Protocol */ 1557532SSean.Ye@Sun.COM #define ERR_FAT_FSB_F2 0x08 /* F2Msk Unsupported Bus Transaction */ 1567532SSean.Ye@Sun.COM #define ERR_FAT_FSB_F1 0x01 /* F1Msk Request/Address Parity */ 1577532SSean.Ye@Sun.COM 1587532SSean.Ye@Sun.COM #define ERR_NF_FSB_F7 0x04 /* F7Msk Detected MCERR */ 1597532SSean.Ye@Sun.COM #define ERR_NF_FSB_F8 0x02 /* F8Msk B-INIT */ 1607532SSean.Ye@Sun.COM #define ERR_NF_FSB_F6 0x01 /* F6Msk Data Parity */ 1617532SSean.Ye@Sun.COM 1627532SSean.Ye@Sun.COM #define EMASK_FSB_F1 0x0001 /* F1Msk Request/Address Parity */ 1637532SSean.Ye@Sun.COM #define EMASK_FSB_F2 0x0002 /* F2Msk Unsupported Bus Transaction */ 1647532SSean.Ye@Sun.COM #define EMASK_FSB_F6 0x0020 /* F6Msk Data Parity */ 1657532SSean.Ye@Sun.COM #define EMASK_FSB_F7 0x0040 /* F7Msk Detected MCERR */ 1667532SSean.Ye@Sun.COM #define EMASK_FSB_F8 0x0080 /* F8Msk B-INIT */ 1677532SSean.Ye@Sun.COM #define EMASK_FSB_F9 0x0100 /* F9Msk FSB Protocol */ 1687532SSean.Ye@Sun.COM 1697532SSean.Ye@Sun.COM #define EMASK_FSB_FATAL (EMASK_FSB_F1 | EMASK_FSB_F2 | EMASK_FSB_F9) 1707532SSean.Ye@Sun.COM #define EMASK_FSB_NF (EMASK_FSB_F6 | EMASK_FSB_F7 | EMASK_FSB_F8) 1717532SSean.Ye@Sun.COM 1727532SSean.Ye@Sun.COM #define ERR_FBD_CH_SHIFT 28 /* channel index in fat_fbd and nf_fbd */ 1737532SSean.Ye@Sun.COM 1747532SSean.Ye@Sun.COM #define ERR_FAT_FBD_M23 0x00400000 /* M23Err Non-Redundant Fast Reset */ 1757532SSean.Ye@Sun.COM /* Timeout */ 1767532SSean.Ye@Sun.COM #define ERR_FAT_FBD_M3 0x00000004 /* M3Err >Tmid thermal event with */ 1777532SSean.Ye@Sun.COM /* intelligent throttling disabled */ 1787532SSean.Ye@Sun.COM #define ERR_FAT_FBD_M2 0x00000002 /* M2Err memory or FBD configuration */ 1797532SSean.Ye@Sun.COM /* CRC read error */ 1807532SSean.Ye@Sun.COM #define ERR_FAT_FBD_M1 0x00000001 /* M1Err memory write error on */ 1817532SSean.Ye@Sun.COM /* non-redundant retry or FBD */ 1827532SSean.Ye@Sun.COM /* configuration write error on retry */ 1837532SSean.Ye@Sun.COM #define ERR_FAT_FBD_MASK 0x007fffff 1847532SSean.Ye@Sun.COM 1857532SSean.Ye@Sun.COM #define ERR_NF_FBD_M29 0x02000000 /* M29Err DIMM-Isolation Completed */ 1867532SSean.Ye@Sun.COM #define ERR_NF_FBD_M28 0x01000000 /* M28Err DIMM-Spare Copy Completed */ 1877532SSean.Ye@Sun.COM #define ERR_NF_FBD_M27 0x00800000 /* M27Err DIMM-Spare Copy Initiated */ 1887532SSean.Ye@Sun.COM #define ERR_NF_FBD_M26 0x00400000 /* M26Err Redundant Fast Reset */ 1897532SSean.Ye@Sun.COM /* Timeout */ 1907532SSean.Ye@Sun.COM #define ERR_NF_FBD_M25 0x00200000 /* M25Err Memory write error on */ 1917532SSean.Ye@Sun.COM #define ERR_NF_FBD_M24 0x00100000 /* M24Err refresh error */ 1927532SSean.Ye@Sun.COM /* redundant retry */ 1937532SSean.Ye@Sun.COM #define ERR_NF_FBD_M22 0x00040000 /* M22Err SPD protocol */ 1947532SSean.Ye@Sun.COM #define ERR_NF_FBD_M21 0x00020000 /* M21Err FBD Northbound parity on */ 1957532SSean.Ye@Sun.COM /* FBD sync status */ 1967532SSean.Ye@Sun.COM #define ERR_NF_FBD_M20 0x00010000 /* M20Err Correctable patrol data ECC */ 1977532SSean.Ye@Sun.COM #define ERR_NF_FBD_M19 0x00008000 /* M19Err Correctasble resilver or */ 1987532SSean.Ye@Sun.COM /* spare-copy data ECC */ 1997532SSean.Ye@Sun.COM #define ERR_NF_FBD_M18 0x00004000 /* M18Err Correctable Mirrored demand */ 2007532SSean.Ye@Sun.COM /* data ECC */ 2017532SSean.Ye@Sun.COM #define ERR_NF_FBD_M17 0x00002000 /* M17Err Correctable Non-mirrored */ 2027532SSean.Ye@Sun.COM /* demand data ECC */ 2037532SSean.Ye@Sun.COM #define ERR_NF_FBD_M16 0x00001000 /* M16Err channel failed over */ 2047532SSean.Ye@Sun.COM #define ERR_NF_FBD_M15 0x00000800 /* M15Err Memory or FBD configuration */ 2057532SSean.Ye@Sun.COM /* CRC read error */ 2067532SSean.Ye@Sun.COM #define ERR_NF_FBD_M14 0x00000400 /* M14Err FBD configuration write */ 2077532SSean.Ye@Sun.COM /* error on first attempt */ 2087532SSean.Ye@Sun.COM #define ERR_NF_FBD_M13 0x00000200 /* M13Err Memory write error on first */ 2097532SSean.Ye@Sun.COM /* attempt */ 2107532SSean.Ye@Sun.COM #define ERR_NF_FBD_M12 0x00000100 /* M12Err Non-Aliased uncorrectable */ 2117532SSean.Ye@Sun.COM /* patrol data ECC */ 2127532SSean.Ye@Sun.COM #define ERR_NF_FBD_M11 0x00000080 /* M11Err Non-Aliased uncorrectable */ 2137532SSean.Ye@Sun.COM /* resilver or spare copy data ECC */ 2147532SSean.Ye@Sun.COM #define ERR_NF_FBD_M10 0x00000040 /* M10Err Non-Aliased uncorrectable */ 2157532SSean.Ye@Sun.COM /* mirrored demand data ECC */ 2167532SSean.Ye@Sun.COM #define ERR_NF_FBD_M9 0x00000020 /* M9Err Non-Aliased uncorrectable */ 2177532SSean.Ye@Sun.COM /* non-mirrored demand data ECC */ 2187532SSean.Ye@Sun.COM #define ERR_NF_FBD_M8 0x00000010 /* M8Err Aliased uncorrectable */ 2197532SSean.Ye@Sun.COM /* patrol data ECC */ 2207532SSean.Ye@Sun.COM #define ERR_NF_FBD_M7 0x00000008 /* M7Err Aliased uncorrectable */ 2217532SSean.Ye@Sun.COM /* resilver or spare copy data ECC */ 2227532SSean.Ye@Sun.COM #define ERR_NF_FBD_M6 0x00000004 /* M6Err Aliased uncorrectable */ 2237532SSean.Ye@Sun.COM /* mirrored demand data ECC */ 2247532SSean.Ye@Sun.COM #define ERR_NF_FBD_M5 0x00000002 /* M5Err Aliased uncorrectable */ 2257532SSean.Ye@Sun.COM /* non-mirrored demand data ECC */ 2267532SSean.Ye@Sun.COM #define ERR_NF_FBD_M4 0x00000001 /* M4Err uncorrectable data ECC on */ 2277532SSean.Ye@Sun.COM /* replay */ 2287532SSean.Ye@Sun.COM 22910199SVuong.Nguyen@Sun.COM #define ERR_DEFAULT_NF_FBD_MASK 0x01ffffff 23010199SVuong.Nguyen@Sun.COM #define ERR_5000_NF_FBD_MASK (ERR_NF_FBD_M28|ERR_NF_FBD_M27|ERR_NF_FBD_M22| \ 23110199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M21|ERR_NF_FBD_M20|ERR_NF_FBD_M19|ERR_NF_FBD_M18| \ 23210199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M17|ERR_NF_FBD_M15|ERR_NF_FBD_M14|ERR_NF_FBD_M13| \ 23310199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M12|ERR_NF_FBD_M11|ERR_NF_FBD_M10|ERR_NF_FBD_M9|ERR_NF_FBD_M8| \ 23410199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M7|ERR_NF_FBD_M6|ERR_NF_FBD_M5|ERR_NF_FBD_M4) 23510199SVuong.Nguyen@Sun.COM #define ERR_5400_NF_FBD_MASK (ERR_NF_FBD_M29|ERR_NF_FBD_M28|ERR_NF_FBD_M27| \ 23610199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M26|ERR_NF_FBD_M25|ERR_NF_FBD_M24|ERR_NF_FBD_M22| \ 23710199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M21|ERR_NF_FBD_M20|ERR_NF_FBD_M19|ERR_NF_FBD_M18| \ 23810199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M17|ERR_NF_FBD_M16|ERR_NF_FBD_M15|ERR_NF_FBD_M14| \ 23910199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M13|ERR_NF_FBD_M12|ERR_NF_FBD_M11|ERR_NF_FBD_M10| \ 24010199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M9|ERR_NF_FBD_M8|ERR_NF_FBD_M7|ERR_NF_FBD_M6|ERR_NF_FBD_M5| \ 24110199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M4) 24210199SVuong.Nguyen@Sun.COM #define ERR_7300_NF_FBD_MASK (ERR_NF_FBD_M28|ERR_NF_FBD_M27|ERR_NF_FBD_M26| \ 24310199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M25|ERR_NF_FBD_M22|ERR_NF_FBD_M21|ERR_NF_FBD_M20| \ 24410199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M19|ERR_NF_FBD_M18|ERR_NF_FBD_M17|ERR_NF_FBD_M15| \ 24510199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M14|ERR_NF_FBD_M13|ERR_NF_FBD_M12|ERR_NF_FBD_M11| \ 24610199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M10|ERR_NF_FBD_M9|ERR_NF_FBD_M8|ERR_NF_FBD_M7|ERR_NF_FBD_M6| \ 24710199SVuong.Nguyen@Sun.COM ERR_NF_FBD_M5|ERR_NF_FBD_M4) 24810199SVuong.Nguyen@Sun.COM 24910199SVuong.Nguyen@Sun.COM /* Bitmask of the FB-DIMM non-fatal errors */ 25010199SVuong.Nguyen@Sun.COM #define ERR_NF_FBD_MASK ( \ 25110199SVuong.Nguyen@Sun.COM (nb_chipset == INTEL_NB_5000P || nb_chipset == INTEL_NB_5000V || \ 25210199SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000Z) ? \ 25310199SVuong.Nguyen@Sun.COM ERR_5000_NF_FBD_MASK : \ 25410199SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_5400 ? ERR_5400_NF_FBD_MASK : \ 25510199SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_7300 ? ERR_7300_NF_FBD_MASK : \ 25610199SVuong.Nguyen@Sun.COM ERR_DEFAULT_NF_FBD_MASK) 25710199SVuong.Nguyen@Sun.COM 2587532SSean.Ye@Sun.COM #define ERR_NF_FBD_ECC_UE (ERR_NF_FBD_M12|ERR_NF_FBD_M11|ERR_NF_FBD_M10| \ 2597532SSean.Ye@Sun.COM ERR_NF_FBD_M9|ERR_NF_FBD_M8|ERR_NF_FBD_M7|ERR_NF_FBD_M6|ERR_NF_FBD_M5| \ 2607532SSean.Ye@Sun.COM ERR_NF_FBD_M4) 2617532SSean.Ye@Sun.COM #define ERR_NF_FBD_MA (ERR_NF_FBD_M14) 2627532SSean.Ye@Sun.COM #define ERR_NF_FBD_ECC_CE (ERR_NF_FBD_M20|ERR_NF_FBD_M19|ERR_NF_FBD_M18| \ 2637532SSean.Ye@Sun.COM ERR_NF_FBD_M17|ERR_NF_FBD_M15|ERR_NF_FBD_M21) 2647532SSean.Ye@Sun.COM #define ERR_NF_FBD_SPARE (ERR_NF_FBD_M28|ERR_NF_FBD_M27) 2657532SSean.Ye@Sun.COM 2667532SSean.Ye@Sun.COM #define EMASK_FBD_M29 0x10000000 /* M29Err DIMM-Isolation Completed */ 2677532SSean.Ye@Sun.COM #define EMASK_FBD_M28 0x08000000 /* M28Err DIMM-Spare Copy Completed */ 2687532SSean.Ye@Sun.COM #define EMASK_FBD_M27 0x04000000 /* M27Err DIMM-Spare Copy Initiated */ 2697532SSean.Ye@Sun.COM #define EMASK_FBD_M26 0x02000000 /* M26Err Redundant Fast Reset */ 2707532SSean.Ye@Sun.COM /* Timeout */ 2717532SSean.Ye@Sun.COM #define EMASK_FBD_M25 0x01000000 /* M25Err Memory write error on */ 2727532SSean.Ye@Sun.COM /* redundant retry */ 2737532SSean.Ye@Sun.COM #define EMASK_FBD_M24 0x00800000 /* M24Err refresh error */ 2747532SSean.Ye@Sun.COM #define EMASK_FBD_M23 0x00400000 /* M23Err Non-Redundant Fast Reset */ 2757532SSean.Ye@Sun.COM /* Timeout */ 2767532SSean.Ye@Sun.COM #define EMASK_FBD_M22 0x00200000 /* M22Err SPD protocol */ 2777532SSean.Ye@Sun.COM #define EMASK_FBD_M21 0x00100000 /* M21Err FBD Northbound parity on */ 2787532SSean.Ye@Sun.COM /* FBD sync status */ 2797532SSean.Ye@Sun.COM #define EMASK_FBD_M20 0x00080000 /* M20Err Correctable patrol data ECC */ 2807532SSean.Ye@Sun.COM #define EMASK_FBD_M19 0x00040000 /* M19Err Correctasble resilver or */ 2817532SSean.Ye@Sun.COM /* spare-copy data ECC */ 2827532SSean.Ye@Sun.COM #define EMASK_FBD_M18 0x00020000 /* M18Err Correctable Mirrored demand */ 2837532SSean.Ye@Sun.COM /* data ECC */ 2847532SSean.Ye@Sun.COM #define EMASK_FBD_M17 0x00010000 /* M17Err Correctable Non-mirrored */ 2857532SSean.Ye@Sun.COM /* demand data ECC */ 2867532SSean.Ye@Sun.COM #define EMASK_FBD_M16 0x00008000 /* M16Err channel failed over */ 2877532SSean.Ye@Sun.COM #define EMASK_FBD_M15 0x00004000 /* M15Err Memory or FBD configuration */ 2887532SSean.Ye@Sun.COM /* CRC read error */ 2897532SSean.Ye@Sun.COM #define EMASK_FBD_M14 0x00002000 /* M14Err FBD configuration write */ 2907532SSean.Ye@Sun.COM /* error on first attempt */ 2917532SSean.Ye@Sun.COM #define EMASK_FBD_M13 0x00001000 /* M13Err Memory write error on first */ 2927532SSean.Ye@Sun.COM /* attempt */ 2937532SSean.Ye@Sun.COM #define EMASK_FBD_M12 0x00000800 /* M12Err Non-Aliased uncorrectable */ 2947532SSean.Ye@Sun.COM /* patrol data ECC */ 2957532SSean.Ye@Sun.COM #define EMASK_FBD_M11 0x00000400 /* M11Err Non-Aliased uncorrectable */ 2967532SSean.Ye@Sun.COM /* resilver or spare copy data ECC */ 2977532SSean.Ye@Sun.COM #define EMASK_FBD_M10 0x00000200 /* M10Err Non-Aliased uncorrectable */ 2987532SSean.Ye@Sun.COM /* mirrored demand data ECC */ 2997532SSean.Ye@Sun.COM #define EMASK_FBD_M9 0x00000100 /* M9Err Non-Aliased uncorrectable */ 3007532SSean.Ye@Sun.COM /* non-mirrored demand data ECC */ 3017532SSean.Ye@Sun.COM #define EMASK_FBD_M8 0x00000080 /* M8Err Aliased uncorrectable */ 3027532SSean.Ye@Sun.COM /* patrol data ECC */ 3037532SSean.Ye@Sun.COM #define EMASK_FBD_M7 0x00000040 /* M7Err Aliased uncorrectable */ 3047532SSean.Ye@Sun.COM /* resilver or spare copy data ECC */ 3057532SSean.Ye@Sun.COM #define EMASK_FBD_M6 0x00000020 /* M6Err Aliased uncorrectable */ 3067532SSean.Ye@Sun.COM /* mirrored demand data ECC */ 3077532SSean.Ye@Sun.COM #define EMASK_FBD_M5 0x00000010 /* M5Err Aliased uncorrectable */ 3087532SSean.Ye@Sun.COM /* non-mirrored demand data ECC */ 3097532SSean.Ye@Sun.COM #define EMASK_FBD_M4 0x00000008 /* M4Err uncorrectable data ECC on */ 3107532SSean.Ye@Sun.COM /* replay */ 3117532SSean.Ye@Sun.COM #define EMASK_FBD_M3 0x00000004 /* M3Err >Tmid thermal event with */ 3127532SSean.Ye@Sun.COM /* intelligent throttling disabled */ 3137532SSean.Ye@Sun.COM #define EMASK_FBD_M2 0x00000002 /* M2Err memory or FBD configuration */ 3147532SSean.Ye@Sun.COM /* CRC read error */ 3157532SSean.Ye@Sun.COM #define EMASK_FBD_M1 0x00000001 /* M1Err memory write error on */ 3167532SSean.Ye@Sun.COM /* non-redundant retry or FBD */ 3177532SSean.Ye@Sun.COM /* configuration write error on retry */ 3187532SSean.Ye@Sun.COM /* MCH 7300 errata 34 (reserved mask bits) */ 3197532SSean.Ye@Sun.COM #define EMASK_5000_FBD_RES (EMASK_FBD_M24|EMASK_FBD_M16) 3207532SSean.Ye@Sun.COM #define EMASK_FBD_RES (nb_chipset == INTEL_NB_5400 ? 0 : EMASK_5000_FBD_RES) 3217532SSean.Ye@Sun.COM 322*10668SVuong.Nguyen@Sun.COM #define EMASK_FBD_FATAL (EMASK_FBD_M3|EMASK_FBD_M2|EMASK_FBD_M1) 3237532SSean.Ye@Sun.COM #define EMASK_FBD_NF (EMASK_FBD_M28|EMASK_FBD_M27|EMASK_FBD_M26|EMASK_FBD_M25| \ 3247532SSean.Ye@Sun.COM EMASK_FBD_M22|EMASK_FBD_M21|EMASK_FBD_M20|EMASK_FBD_M19|EMASK_FBD_M18| \ 3257532SSean.Ye@Sun.COM EMASK_FBD_M17|EMASK_FBD_M15|EMASK_FBD_M14|EMASK_FBD_M13|EMASK_FBD_M12| \ 3267532SSean.Ye@Sun.COM EMASK_FBD_M11|EMASK_FBD_M10|EMASK_FBD_M9|EMASK_FBD_M8|EMASK_FBD_M7| \ 3277532SSean.Ye@Sun.COM EMASK_FBD_M6|EMASK_FBD_M5|EMASK_FBD_M4) 3287532SSean.Ye@Sun.COM #define EMASK_5400_FBD_FATAL (EMASK_FBD_M23|EMASK_FBD_M2|EMASK_FBD_M1) 3297532SSean.Ye@Sun.COM #define EMASK_5400_FBD_NF (EMASK_FBD_M29|EMASK_FBD_M28|EMASK_FBD_M27| \ 3307532SSean.Ye@Sun.COM EMASK_FBD_M26|EMASK_FBD_M25|EMASK_FBD_M24|EMASK_FBD_M22|EMASK_FBD_M21| \ 3317532SSean.Ye@Sun.COM EMASK_FBD_M20|EMASK_FBD_M19|EMASK_FBD_M18|EMASK_FBD_M17|EMASK_FBD_M16| \ 3327532SSean.Ye@Sun.COM EMASK_FBD_M15|EMASK_FBD_M14|EMASK_FBD_M13|EMASK_FBD_M12| \ 3337532SSean.Ye@Sun.COM EMASK_FBD_M11|EMASK_FBD_M10|EMASK_FBD_M9|EMASK_FBD_M8|EMASK_FBD_M7| \ 3347532SSean.Ye@Sun.COM EMASK_FBD_M6|EMASK_FBD_M5|EMASK_FBD_M4) 335*10668SVuong.Nguyen@Sun.COM #define EMASK_7300_FBD_FATAL (EMASK_FBD_M23|EMASK_FBD_M3|EMASK_FBD_M2| \ 336*10668SVuong.Nguyen@Sun.COM EMASK_FBD_M1) 337*10668SVuong.Nguyen@Sun.COM #define EMASK_7300_FBD_NF EMASK_FBD_NF 3387532SSean.Ye@Sun.COM 33910049SVuong.Nguyen@Sun.COM /* FERR_NF_MEM: MC First non-fatal errors */ 34010049SVuong.Nguyen@Sun.COM #define ERR_MEM_CH_SHIFT 28 /* channel index in nf_mem */ 34110049SVuong.Nguyen@Sun.COM 34210049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M21 0x00200000 /* M21Err Spare Copy Completed */ 34310049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M20 0x00100000 /* M20Err Spare Copy Initiated */ 34410049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M18 0x00040000 /* M18Err SPD protocal */ 34510049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M16 0x00010000 /* M16Err Correctable Patrol Data ECC */ 34610049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M15 0x00008000 /* M15Err Correctable Spare-copy ECC */ 34710049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M14 0x00004000 /* M14Err Correctable demand data ECC */ 34810049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M12 0x00001000 /* M12Err non-aliased ue Patrol ECC */ 34910049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M11 0x00000800 /* M11Err non-aliased ue Spare-copy */ 35010049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M10 0x00000400 /* M10Err non-aliased ue demand data */ 35110049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M6 0x00000040 /* M6Err aliased ue Patrol Data ECC */ 35210049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M5 0x00000020 /* M5Err aliased ue Spare-copy ECC */ 35310049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M4 0x00000010 /* M4Err aliased ue demand data ECC */ 35410049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_M1 0x00000002 /* M1Err ue data ECC on replay */ 35510049SVuong.Nguyen@Sun.COM 35610049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_MASK 0x0003fffff 35710049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_ECC_UE (ERR_NF_MEM_M12|ERR_NF_MEM_M11|ERR_NF_MEM_M10| \ 35810049SVuong.Nguyen@Sun.COM ERR_NF_MEM_M6|ERR_NF_MEM_M5|ERR_NF_MEM_M4|ERR_NF_MEM_M1) 35910049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_ECC_CE (ERR_NF_MEM_M16|ERR_NF_MEM_M15|ERR_NF_MEM_M14) 36010049SVuong.Nguyen@Sun.COM #define ERR_NF_MEM_SPARE (ERR_NF_MEM_M21|ERR_NF_MEM_M20) 36110049SVuong.Nguyen@Sun.COM 36210049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M21 ERR_NF_MEM_M21 36310049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M20 ERR_NF_MEM_M20 36410049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M18 ERR_NF_MEM_M18 36510049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M16 ERR_NF_MEM_M16 36610049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M15 ERR_NF_MEM_M15 36710049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M14 ERR_NF_MEM_M14 36810049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M12 ERR_NF_MEM_M12 36910049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M11 ERR_NF_MEM_M11 37010049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M10 ERR_NF_MEM_M10 37110049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M6 ERR_NF_MEM_M6 37210049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M5 ERR_NF_MEM_M5 37310049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M4 ERR_NF_MEM_M4 37410049SVuong.Nguyen@Sun.COM #define EMASK_MEM_M1 ERR_NF_MEM_M1 37510049SVuong.Nguyen@Sun.COM 37610049SVuong.Nguyen@Sun.COM #define EMASK_MEM_NF (EMASK_FBD_M21|EMASK_FBD_M20|EMASK_FBD_M18|EMASK_FBD_M16| \ 37710049SVuong.Nguyen@Sun.COM EMASK_FBD_M15|EMASK_FBD_M14|EMASK_FBD_M12|EMASK_FBD_M11|EMASK_FBD_M10| \ 37810049SVuong.Nguyen@Sun.COM EMASK_MEM_M6|EMASK_MEM_M5|EMASK_MEM_M4|EMASK_MEM_M1) 37910049SVuong.Nguyen@Sun.COM 3809783SAdrian.Frost@Sun.COM #define ERR_INT_ALL (nb_chipset == INTEL_NB_5400 ? 0xffffffff : 0xff) 3819783SAdrian.Frost@Sun.COM 3827532SSean.Ye@Sun.COM #define ERR_FAT_INT_B14 0x0400 /* B14Msk SF Scrub DBE */ 3837532SSean.Ye@Sun.COM #define ERR_FAT_INT_B12 0x0100 /* B12Msk Parity Protected register */ 3847532SSean.Ye@Sun.COM #define ERR_FAT_INT_B25 0x0080 /* B25Msk illegal HISMM/TSEG access */ 3857532SSean.Ye@Sun.COM #define ERR_FAT_INT_B23 0x0040 /* B23Msk Vt Unaffiliated port error */ 3867532SSean.Ye@Sun.COM #define ERR_FAT_INT_B21 0x0020 /* B21Msk illegal way */ 3877532SSean.Ye@Sun.COM #define ERR_FAT_INT_B7 0x0010 /* B7Msk Multiple ECC error in any of */ 3887532SSean.Ye@Sun.COM /* the ways during SF lookup */ 3897532SSean.Ye@Sun.COM #define ERR_FAT_INT_B4 0x08 /* B4Msk Virtual pin port error */ 3907532SSean.Ye@Sun.COM #define ERR_FAT_INT_B3 0x04 /* B3Msk Coherency violation error for EWB */ 3917532SSean.Ye@Sun.COM #define ERR_FAT_INT_B2 0x02 /* B2Msk Multi-tag hit SF */ 3927532SSean.Ye@Sun.COM #define ERR_FAT_INT_B1 0x01 /* B1Msk DM parity error */ 3937532SSean.Ye@Sun.COM 3947532SSean.Ye@Sun.COM #define ERR_NF_INT_B27 0x4000 /* B27Msk Request received when in S1 */ 3957532SSean.Ye@Sun.COM #define ERR_NF_INT_B24 0x2000 /* B24Msk DFXERR */ 3967532SSean.Ye@Sun.COM #define ERR_NF_INT_B19 0x1000 /* B19Msk scrub SBE (SF) */ 3977532SSean.Ye@Sun.COM #define ERR_NF_INT_B18 0x0800 /* B18Msk perfmon task completion */ 3987532SSean.Ye@Sun.COM #define ERR_NF_INT_B17 0x0400 /* B17Msk JTAG/TAP error status */ 3997532SSean.Ye@Sun.COM #define ERR_NF_INT_B16 0x0200 /* B16Msk SMBus error status */ 4007532SSean.Ye@Sun.COM #define ERR_NF_INT_B22 0x0080 /* B22Msk Victim ROM parity */ 4017532SSean.Ye@Sun.COM #define ERR_NF_INT_B20 0x0040 /* B20Msk Configuration write abort */ 4027532SSean.Ye@Sun.COM #define ERR_NF_INT_B11 0x0020 /* B11Msk Victim Ram parity error */ 4037532SSean.Ye@Sun.COM #define ERR_NF_INT_B10 0x0010 /* B10Msk DM Parity */ 4047532SSean.Ye@Sun.COM #define ERR_NF_INT_B9 0x0008 /* B9Msk illeagl access */ 4057532SSean.Ye@Sun.COM #define ERR_NF_INT_B8 0x0004 /* B8Msk SF Coherency Error for BIL */ 4067532SSean.Ye@Sun.COM #define ERR_NF_INT_B6 0x0002 /* B6Msk Single ECC error on SF lookup */ 4077532SSean.Ye@Sun.COM #define ERR_NF_INT_B5 0x0001 /* B5Msk Address Map error */ 4087532SSean.Ye@Sun.COM 4097532SSean.Ye@Sun.COM #define NERR_NF_5400_INT_B26 0x0004 /* B26Msk Illeagl Access to */ 4107532SSean.Ye@Sun.COM /* non-coherent address space */ 4117532SSean.Ye@Sun.COM 4127532SSean.Ye@Sun.COM #define EMASK_INT_RES 0x02000000 /* Do not change */ 4137532SSean.Ye@Sun.COM #define EMASK_INT_B25 0x01000000 /* B25Msk illegal HISMM/TSEG access */ 4147532SSean.Ye@Sun.COM #define EMASK_INT_B23 0x00400000 /* B23Msk Vt Unaffiliated port error */ 4157532SSean.Ye@Sun.COM #define EMASK_INT_B22 0x00200000 /* B22Msk Victim ROM parity */ 4167532SSean.Ye@Sun.COM #define EMASK_INT_B21 0x00100000 /* B21Msk illegal way */ 4177532SSean.Ye@Sun.COM #define EMASK_INT_B20 0x00080000 /* B20Msk Configuration write abort */ 4187532SSean.Ye@Sun.COM #define EMASK_INT_B19 0x00040000 /* B19Msk Scrub SBE */ 4197532SSean.Ye@Sun.COM #define EMASK_INT_B14 0x00002000 /* B14Msk Scrub DBE */ 4207532SSean.Ye@Sun.COM #define EMASK_INT_B12 0x00000800 /* B12Msk Parity Protected */ 4217532SSean.Ye@Sun.COM #define EMASK_INT_B11 0x00000400 /* B11Msk Victim Ram parity error */ 4227532SSean.Ye@Sun.COM #define EMASK_INT_B10 0x00000200 /* B10Msk DM Parity */ 4237532SSean.Ye@Sun.COM #define EMASK_INT_B9 0x00000100 /* B9Msk Illegal Accesss */ 4247532SSean.Ye@Sun.COM 4257532SSean.Ye@Sun.COM #define EMASK_INT_B8 0x80 /* B8Msk SF Coherency Error for BIL */ 4267532SSean.Ye@Sun.COM #define EMASK_INT_B7 0x40 /* B7Msk Multiple ECC error in any of */ 4277532SSean.Ye@Sun.COM /* the ways during SF lookup */ 4287532SSean.Ye@Sun.COM #define EMASK_INT_B6 0x20 /* B6Msk Single ECC error on SF lookup */ 4297532SSean.Ye@Sun.COM #define EMASK_INT_B5 0x10 /* B5Msk Address Map error */ 4307532SSean.Ye@Sun.COM #define EMASK_INT_B4 0x08 /* B4Msk Virtual pin port error */ 4317532SSean.Ye@Sun.COM #define EMASK_INT_B3 0x04 /* B3Msk Coherency violation error for EWB */ 4327532SSean.Ye@Sun.COM #define EMASK_INT_B2 0x02 /* B2Msk Multi-tag hit SF */ 4337532SSean.Ye@Sun.COM #define EMASK_INT_B1 0x01 /* B1Msk DM parity error */ 4347532SSean.Ye@Sun.COM 435*10668SVuong.Nguyen@Sun.COM /* MCH 5000 errata 2: disable B1 */ 4367532SSean.Ye@Sun.COM #define EMASK_INT_5000 EMASK_INT_B1 437*10668SVuong.Nguyen@Sun.COM /* MCH 5100: mask all except B3 and B5 */ 438*10668SVuong.Nguyen@Sun.COM #define EMASK_INT_5100 (~(EMASK_INT_B5|EMASK_INT_B3) & 0xff) 4397532SSean.Ye@Sun.COM /* MCH 7300 errata 17 & 20 */ 4407532SSean.Ye@Sun.COM #define EMASK_INT_7300 (EMASK_INT_B3|EMASK_INT_B1) 4417532SSean.Ye@Sun.COM /* MCH 7300 errata 17,20 & 21 */ 4427532SSean.Ye@Sun.COM #define EMASK_INT_7300_STEP_0 (EMASK_INT_B7|EMASK_INT_B3|EMASK_INT_B1) 4439783SAdrian.Frost@Sun.COM #define EMASK_INT_5400 0 4447532SSean.Ye@Sun.COM 4457532SSean.Ye@Sun.COM #define EMASK_INT_FATAL (EMASK_INT_B7|EMASK_INT_B4|EMASK_INT_B3|EMASK_INT_B2| \ 4467532SSean.Ye@Sun.COM EMASK_INT_B1) 4477532SSean.Ye@Sun.COM #define EMASK_INT_NF (EMASK_INT_B8|EMASK_INT_B6|EMASK_INT_B5) 448*10668SVuong.Nguyen@Sun.COM #define EMASK_INT_5100_FATAL (EMASK_INT_B3|EMASK_INT_B1) 449*10668SVuong.Nguyen@Sun.COM #define EMASK_INT_5100_NF (EMASK_INT_B5) 450*10668SVuong.Nguyen@Sun.COM 4517532SSean.Ye@Sun.COM #define GE_FBD_FATAL ((nb_chipset == INTEL_NB_5400) ? GE_FERR_FBD_FATAL : \ 45210049SVuong.Nguyen@Sun.COM (nb_chipset == INTEL_NB_5100) ? 0 : \ 4537532SSean.Ye@Sun.COM (GE_FERR_FBD0_FATAL|GE_FERR_FBD1_FATAL|GE_FERR_FBD2_FATAL| \ 4547532SSean.Ye@Sun.COM GE_FERR_FBD3_FATAL)) 4557532SSean.Ye@Sun.COM #define GE_FBD_NF ((nb_chipset == INTEL_NB_5400) ? GE_FERR_FBD_NF : \ 45610049SVuong.Nguyen@Sun.COM (nb_chipset == INTEL_NB_5100) ? 0 : \ 4577532SSean.Ye@Sun.COM (GE_FERR_FBD0_NF|GE_FERR_FBD1_NF|GE_FERR_FBD2_NF|GE_FERR_FBD3_NF)) 45810049SVuong.Nguyen@Sun.COM #define GE_MEM_NF ((nb_chipset == INTEL_NB_5100) ? \ 45910049SVuong.Nguyen@Sun.COM (GE_FERR_MEM0_NF|GE_FERR_MEM1_NF) : 0) 4607532SSean.Ye@Sun.COM 4617532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO18 0x00200000 /* ESI Reset timeout */ 4627532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO2 0x00100000 /* Received an unsupported */ 4637532SSean.Ye@Sun.COM /* request */ 4647532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO9 0x00040000 /* Malformed TLP Status */ 4657532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO10 0x00020000 /* Received buffer overflow */ 4667532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO8 0x00010000 /* unexpected completion */ 4677532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO7 0x00008000 /* completion abort */ 4687532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO6 0x00004000 /* completion timeout */ 4697532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO5 0x00002000 /* flow control protocol */ 4707532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO4 0x00001000 /* poisoned TLP */ 4717532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO19 0x00000020 /* surprise link down */ 4727532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO0 0x00000010 /* data link protocol */ 4737532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_IO3 0x00000001 /* training error */ 4747532SSean.Ye@Sun.COM 4757532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO20 0x00002000 /* Advisory Non Fatal */ 4767532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO16 0x00001000 /* replay timer timeout */ 4777532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO15 0x00000100 /* replay num pollover */ 4787532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO14 0x00000080 /* bad DLLP */ 4797532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO13 0x00000040 /* bad TLP */ 4807532SSean.Ye@Sun.COM #define EMASK_COR_PEX_IO12 0x00000001 /* receiver error mask */ 4817532SSean.Ye@Sun.COM 4827532SSean.Ye@Sun.COM #define EMASK_RP_PEX_IO1 0x00000004 /* fatal message detect */ 4837532SSean.Ye@Sun.COM #define EMASK_RP_PEX_IO11 0x00000002 /* uncorrectable message */ 4847532SSean.Ye@Sun.COM #define EMASK_RP_PEX_IO17 0x00000001 /* correctable message */ 4857532SSean.Ye@Sun.COM 4867532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO33 0x00002000 /* Link autonomous BW change */ 4877532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO32 0x00001000 /* Received CA Posted Req */ 4887532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO31 0x00000800 /* Received UR Posted Req */ 4897532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO30 0x00000400 /* VT-d internal HW */ 4907532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO29 0x00000200 /* MSI address */ 4917532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO28 0x00000100 /* Link BW change */ 4927532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO27 0x00000080 /* stop & scream */ 4937532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO26 0x00000040 /* Received CA response */ 4947532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO25 0x00000020 /* Received UR response */ 4957532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO24 0x00000010 /* Outbound poisoned data */ 4967532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO23 0x00000008 /* VTd fault */ 4977532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO22 0x00000004 /* internal header/ctl parity */ 4987532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_IO18 0x00000002 /* ESI reset timeout */ 4997532SSean.Ye@Sun.COM #define EMASK_UNIT_PEX_VPP 0x00000001 /* correctable message detect */ 5007532SSean.Ye@Sun.COM 5017532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO32 0x00800000 /* Received CA Posted Request */ 5027532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO31 0x00400000 /* Received UR Posted Request */ 5037532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO30 0x00200000 /* VT-d Internal HW */ 5047532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO29 0x00100000 /* MSI Address */ 5057532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO27 0x00040000 /* Stop & Scream */ 5067532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO26 0x00020000 /* Received CA Response */ 5077532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO25 0x00010000 /* Received UR Response */ 5087532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO24 0x00008000 /* Outbound poisoned TLP */ 5097532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO23 0x00004000 /* VT-d Fault */ 5107532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO22 0x00002000 /* Internal Header/Control */ 5117532SSean.Ye@Sun.COM /* Parity */ 5127532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO18 0x00001000 /* ESI reset timeout */ 5137532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO1 0x00000400 /* received fatal error msg */ 5147532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO2 0x00000200 /* received unsupported req */ 5157532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO9 0x00000100 /* malformed TLP */ 5167532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO10 0x00000080 /* receiver buffer overflow */ 5177532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO8 0x00000040 /* unexpected completion */ 5187532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO7 0x00000020 /* completer abort */ 5197532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO6 0x00000010 /* completion timeout */ 5207532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO5 0x00000008 /* flow control protocol */ 5217532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO4 0x00000004 /* poisoned TLP */ 5227532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO19 0x00000002 /* surprise link down */ 5237532SSean.Ye@Sun.COM #define PEX_5400_FAT_IO0 0x00000001 /* data link layer protocol */ 5247532SSean.Ye@Sun.COM #define PEX_FAT_IO19 0x00001000 /* surprise link down */ 5257532SSean.Ye@Sun.COM #define PEX_FAT_IO18 0x00000800 /* ESI reset timeout */ 5267532SSean.Ye@Sun.COM #define PEX_FAT_IO9 0x00000400 /* malformed TLP */ 5277532SSean.Ye@Sun.COM #define PEX_FAT_IO10 0x00000200 /* receiver buffer overflow */ 5287532SSean.Ye@Sun.COM #define PEX_FAT_IO8 0x00000100 /* unexpected completion */ 5297532SSean.Ye@Sun.COM #define PEX_FAT_IO7 0x00000080 /* completer abort */ 5307532SSean.Ye@Sun.COM #define PEX_FAT_IO6 0x00000040 /* completion timeout */ 5317532SSean.Ye@Sun.COM #define PEX_FAT_IO5 0x00000020 /* flow control protocol */ 5327532SSean.Ye@Sun.COM #define PEX_FAT_IO4 0x00000010 /* poisoned TLP */ 5337532SSean.Ye@Sun.COM #define PEX_FAT_IO3 0x00000008 /* training error */ 5347532SSean.Ye@Sun.COM #define PEX_FAT_IO2 0x00000004 /* received unsupported req */ 5357532SSean.Ye@Sun.COM #define PEX_FAT_IO1 0x00000002 /* received fatal error message */ 5367532SSean.Ye@Sun.COM #define PEX_FAT_IO0 0x00000001 /* data link layer protocol */ 5377532SSean.Ye@Sun.COM 5387532SSean.Ye@Sun.COM #define PEX_5400_NF_IO33 0x20000000 /* link autonomous bandwidth */ 5397532SSean.Ye@Sun.COM /* change (correctable) */ 5407532SSean.Ye@Sun.COM #define PEX_5400_NF_IO32 0x10000000 /* Received CA Posted Request */ 5417532SSean.Ye@Sun.COM #define PEX_5400_NF_IO31 0x08000000 /* Received UR Posted Request */ 5427532SSean.Ye@Sun.COM #define PEX_5400_NF_IO30 0x04000000 /* VT-d Internal HW */ 5437532SSean.Ye@Sun.COM #define PEX_5400_NF_IO29 0x02000000 /* MSI Address */ 5447532SSean.Ye@Sun.COM #define PEX_5400_NF_IO28 0x01000000 /* Link bandwidth change */ 5457532SSean.Ye@Sun.COM #define PEX_5400_NF_IO27 0x00800000 /* Stop & Scream */ 5467532SSean.Ye@Sun.COM #define PEX_5400_NF_IO26 0x00400000 /* Received CA Response */ 5477532SSean.Ye@Sun.COM #define PEX_5400_NF_IO25 0x00200000 /* Received UR Response */ 5487532SSean.Ye@Sun.COM #define PEX_5400_NF_IO24 0x00100000 /* Outbound poisoned TLP */ 5497532SSean.Ye@Sun.COM #define PEX_5400_NF_IO23 0x00080000 /* VT-d Fault */ 5507532SSean.Ye@Sun.COM #define PEX_5400_NF_IO11 0x00040000 /* received non fatal err msg */ 5517532SSean.Ye@Sun.COM #define PEX_5400_NF_IO17 0x00020000 /* rec correctable error msg */ 5527532SSean.Ye@Sun.COM #define PEX_5400_NF_IO2 0x00008000 /* Received unsupported req */ 5537532SSean.Ye@Sun.COM #define PEX_5400_NF_IO9 0x00004000 /* Malformed TLP */ 5547532SSean.Ye@Sun.COM #define PEX_5400_NF_IO10 0x00002000 /* Received buffer overflow */ 5557532SSean.Ye@Sun.COM #define PEX_5400_NF_IO8 0x00001000 /* unexpected completion err */ 5567532SSean.Ye@Sun.COM #define PEX_5400_NF_IO7 0x00000800 /* completion abort */ 5577532SSean.Ye@Sun.COM #define PEX_5400_NF_IO6 0x00000400 /* completion timeout */ 5587532SSean.Ye@Sun.COM #define PEX_5400_NF_IO5 0x00000200 /* flow control protocol */ 5597532SSean.Ye@Sun.COM #define PEX_5400_NF_IO4 0x00000100 /* poisoned TLP */ 5607532SSean.Ye@Sun.COM #define PEX_5400_NF_IO19 0x00000080 /* surprise link down */ 5617532SSean.Ye@Sun.COM #define PEX_5400_NF_IO0 0x00000040 /* data link layer protocol */ 5627532SSean.Ye@Sun.COM #define PEX_5400_NF_IO20 0x00000020 /* Advisory Non Fatel */ 5637532SSean.Ye@Sun.COM #define PEX_5400_NF_IO16 0x00000010 /* replay timer timeout */ 5647532SSean.Ye@Sun.COM #define PEX_5400_NF_IO15 0x00000008 /* replay num pollover */ 5657532SSean.Ye@Sun.COM #define PEX_5400_NF_IO14 0x00000004 /* bad DLLP */ 5667532SSean.Ye@Sun.COM #define PEX_5400_NF_IO13 0x00000002 /* bad TLP */ 5677532SSean.Ye@Sun.COM #define PEX_5400_NF_IO12 0x00000001 /* receiver error mask */ 5687532SSean.Ye@Sun.COM #define PEX_NF_IO19 0x00020000 /* surprise link down */ 5697532SSean.Ye@Sun.COM #define PEX_NF_IO17 0x00010000 /* received correctable error message */ 5707532SSean.Ye@Sun.COM #define PEX_NF_IO16 0x00008000 /* replay timer timeout */ 5717532SSean.Ye@Sun.COM #define PEX_NF_IO15 0x00004000 /* replay num pollover */ 5727532SSean.Ye@Sun.COM #define PEX_NF_IO14 0x00002000 /* bad DLLP */ 5737532SSean.Ye@Sun.COM #define PEX_NF_IO13 0x00001000 /* bad TLP */ 5747532SSean.Ye@Sun.COM #define PEX_NF_IO12 0x00000800 /* receiver error mask */ 5757532SSean.Ye@Sun.COM #define PEX_NF_IO11 0x00000400 /* received non fatal error message */ 5767532SSean.Ye@Sun.COM #define PEX_NF_IO10 0x00000200 /* Received buffer overflow */ 5777532SSean.Ye@Sun.COM #define PEX_NF_IO9 0x00000100 /* Malformed TLP */ 5787532SSean.Ye@Sun.COM #define PEX_NF_IO8 0x00000080 5797532SSean.Ye@Sun.COM #define PEX_NF_IO7 0x00000040 5807532SSean.Ye@Sun.COM #define PEX_NF_IO6 0x00000020 /* completion timeout */ 5817532SSean.Ye@Sun.COM #define PEX_NF_IO5 0x00000010 /* flow control protocol */ 5827532SSean.Ye@Sun.COM #define PEX_NF_IO4 0x00000008 /* poisoned TLP */ 5837532SSean.Ye@Sun.COM #define PEX_NF_IO3 0x00000004 5847532SSean.Ye@Sun.COM #define PEX_NF_IO2 0x00000002 5857532SSean.Ye@Sun.COM #define PEX_NF_IO0 0x00000001 /* data link layer protocol */ 5867532SSean.Ye@Sun.COM 5877532SSean.Ye@Sun.COM #define ERR_FAT_TH2 0x02 /* >tmid thermal event */ 5887532SSean.Ye@Sun.COM #define ERR_FAT_TH1 0x01 /* Catastrophic on-die thermal event */ 5897532SSean.Ye@Sun.COM 5907532SSean.Ye@Sun.COM #define ERR_NF_TH5 0x10 /* timeout on cooling update */ 5917532SSean.Ye@Sun.COM #define ERR_NF_TH4 0x08 /* TSMAX update */ 5927532SSean.Ye@Sun.COM #define ERR_NF_TH3 0x04 /* on-die throttling event */ 5937532SSean.Ye@Sun.COM 5947532SSean.Ye@Sun.COM #define EMASK_TH5 0x0010 /* TH5Msk timeout on cooling update */ 5957532SSean.Ye@Sun.COM #define EMASK_TH4 0x0008 /* TH4Msk TSMAX update */ 5967532SSean.Ye@Sun.COM #define EMASK_TH3 0x0004 /* TH3Msk on-die throttling event */ 5977532SSean.Ye@Sun.COM #define EMASK_TH2 0x0002 /* TH2Msk >tmid thermal event */ 5987532SSean.Ye@Sun.COM #define EMASK_TH1 0x0001 /* TH1Msk Catastrophic on-die thermal event */ 5997532SSean.Ye@Sun.COM 6007532SSean.Ye@Sun.COM #define GE_FERR_FSB(ferr) ( \ 6017532SSean.Ye@Sun.COM ((ferr) & (GE_FSB0_FATAL|GE_FSB0_NF)) ? 0 : \ 6027532SSean.Ye@Sun.COM ((ferr) & (GE_FSB1_FATAL|GE_FSB1_NF)) ? 1 : \ 6037532SSean.Ye@Sun.COM (nb_chipset == INTEL_NB_7300) && \ 6047532SSean.Ye@Sun.COM ((ferr) & (GE_FERR_FSB2_FATAL|GE_FERR_FSB2_NF)) ? 2 : \ 6057532SSean.Ye@Sun.COM (nb_chipset == INTEL_NB_7300) && \ 6067532SSean.Ye@Sun.COM ((ferr) & (GE_FERR_FSB3_FATAL|GE_FERR_FSB3_NF)) ? 3 : \ 6077532SSean.Ye@Sun.COM -1) 6087532SSean.Ye@Sun.COM 6097532SSean.Ye@Sun.COM #define GE_NERR_TO_FERR_FSB(nerr) \ 6107532SSean.Ye@Sun.COM ((((nerr) & GE_NERR_FSB3_FATAL) ? GE_FERR_FSB3_FATAL : 0) | \ 6117532SSean.Ye@Sun.COM (((nerr) & GE_NERR_FSB2_FATAL) ? GE_FERR_FSB2_FATAL : 0) | \ 6127532SSean.Ye@Sun.COM (((nerr) & GE_FSB1_FATAL) ? GE_FSB1_FATAL : 0) | \ 6137532SSean.Ye@Sun.COM (((nerr) & GE_FSB0_FATAL) ? GE_FSB0_FATAL : 0) | \ 6147532SSean.Ye@Sun.COM (((nerr) & GE_NERR_FSB3_NF) ? GE_FERR_FSB3_NF : 0) | \ 6157532SSean.Ye@Sun.COM (((nerr) & GE_NERR_FSB2_NF) ? GE_FERR_FSB2_NF : 0) | \ 6167532SSean.Ye@Sun.COM (((nerr) & GE_FSB1_NF) ? GE_FSB1_NF : 0) | \ 6177532SSean.Ye@Sun.COM (((nerr) & GE_FSB0_NF) ? GE_FSB0_NF : 0)) 6187532SSean.Ye@Sun.COM 6197532SSean.Ye@Sun.COM #define GE_ERR_PEX(ferr) ( \ 6207532SSean.Ye@Sun.COM ((ferr) & (GE_ESI_FATAL|GE_ESI_NF)) ? 0 : \ 6217532SSean.Ye@Sun.COM ((nb_chipset == INTEL_NB_7300 || nb_chipset == INTEL_NB_5400) && \ 6227532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX1_FATAL|GE_PCIEX1_NF))) ? 1 : \ 6237532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX2_FATAL|GE_PCIEX2_NF)) ? 2 : \ 6247532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX3_FATAL|GE_PCIEX3_NF)) ? 3 : \ 6257532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX4_FATAL|GE_PCIEX4_NF)) ? 4 : \ 6267532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX5_FATAL|GE_PCIEX5_NF)) ? 5 : \ 6277532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX6_FATAL|GE_PCIEX6_NF)) ? 6 : \ 6287532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX7_FATAL|GE_PCIEX7_NF)) ? 7 : \ 6297532SSean.Ye@Sun.COM (nb_chipset == INTEL_NB_5400) && \ 6307532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX8_FATAL|GE_PCIEX8_NF)) ? 8 : \ 6317532SSean.Ye@Sun.COM ((ferr) & (GE_PCIEX9_FATAL|GE_PCIEX9_NF)) ? 9 : \ 6327532SSean.Ye@Sun.COM -1) 6337532SSean.Ye@Sun.COM 6347532SSean.Ye@Sun.COM #define GE_FERR_FATAL ((nb_chipset == INTEL_NB_7300) ? \ 6357532SSean.Ye@Sun.COM (GE_INT_FATAL|GE_DMA_FATAL|GE_FERR_FSB3_FATAL|GE_FERR_FSB2_FATAL| \ 6367532SSean.Ye@Sun.COM GE_FSB1_FATAL|GE_FSB0_FATAL|GE_FBD_FATAL|GE_PCIEX7_FATAL| \ 6377532SSean.Ye@Sun.COM GE_PCIEX6_FATAL| GE_PCIEX5_FATAL|GE_PCIEX4_FATAL|GE_PCIEX3_FATAL| \ 6387532SSean.Ye@Sun.COM GE_PCIEX2_FATAL| GE_ESI_FATAL) : \ 6397532SSean.Ye@Sun.COM (GE_INT_FATAL|GE_DMA_FATAL|GE_FSB1_FATAL|GE_FSB0_FATAL|GE_FBD_FATAL| \ 6407532SSean.Ye@Sun.COM GE_PCIEX7_FATAL|GE_PCIEX6_FATAL|GE_PCIEX5_FATAL|GE_PCIEX4_FATAL| \ 6417532SSean.Ye@Sun.COM GE_PCIEX3_FATAL|GE_PCIEX2_FATAL|GE_ESI_FATAL)) 6427532SSean.Ye@Sun.COM 6437532SSean.Ye@Sun.COM #define GE_NERR_FATAL ((nb_chipset == INTEL_NB_7300) ? \ 6447532SSean.Ye@Sun.COM (GE_INT_FATAL|GE_DMA_FATAL|GE_NERR_FSB3_FATAL|GE_NERR_FSB2_FATAL| \ 6457532SSean.Ye@Sun.COM GE_FSB1_FATAL|GE_FSB0_FATAL|GE_FBD_FATAL|GE_PCIEX7_FATAL| \ 6467532SSean.Ye@Sun.COM GE_PCIEX6_FATAL|GE_PCIEX5_FATAL|GE_PCIEX4_FATAL|GE_PCIEX3_FATAL| \ 6477532SSean.Ye@Sun.COM GE_PCIEX2_FATALGE_ESI_FATAL) : \ 6487532SSean.Ye@Sun.COM (GE_INT_FATAL|GE_DMA_FATAL|GE_FSB1_FATAL|GE_FSB0_FATAL|GE_FBD_FATAL| \ 6497532SSean.Ye@Sun.COM GE_PCIEX7_FATAL|GE_PCIEX6_FATAL|GE_PCIEX5_FATAL|GE_PCIEX4_FATAL| \ 6507532SSean.Ye@Sun.COM GE_PCIEX3_FATAL|GE_PCIEX2_FATAL|GE_ESI_FATAL)) 6517532SSean.Ye@Sun.COM 6527532SSean.Ye@Sun.COM #define GE_PCIEX_FATAL (GE_ESI_FATAL|GE_PCIEX1_FATAL|GE_PCIEX2_FATAL| \ 6537532SSean.Ye@Sun.COM GE_PCIEX3_FATAL|GE_PCIEX4_FATAL|GE_PCIEX5_FATAL|GE_PCIEX6_FATAL| \ 6547532SSean.Ye@Sun.COM GE_PCIEX7_FATAL) 6557532SSean.Ye@Sun.COM #define GE_PCIEX_NF (GE_ESI_NF|GE_PCIEX1_NF|GE_PCIEX2_NF|GE_PCIEX3_NF| \ 6567532SSean.Ye@Sun.COM GE_PCIEX4_NF|GE_PCIEX5_NF|GE_PCIEX6_NF|GE_PCIEX7_NF) 6577532SSean.Ye@Sun.COM #define GE_FERR_FSB_FATAL ((nb_chipset == INTEL_NB_7300) ? \ 6587532SSean.Ye@Sun.COM (GE_FSB0_FATAL|GE_FSB1_FATAL|GE_FERR_FSB2_FATAL|GE_FERR_FSB3_FATAL) : \ 6597532SSean.Ye@Sun.COM (GE_FSB0_FATAL|GE_FSB1_FATAL)) 6607532SSean.Ye@Sun.COM #define GE_NERR_FSB_FATAL ((nb_chipset == INTEL_NB_7300) ? \ 6617532SSean.Ye@Sun.COM (GE_FSB0_FATAL|GE_FSB1_FATAL|GE_NERR_FSB2_FATAL|GE_NERR_FSB3_FATAL) : \ 6627532SSean.Ye@Sun.COM (GE_FSB0_FATAL|GE_FSB1_FATAL)) 6637532SSean.Ye@Sun.COM #define GE_FERR_FSB_NF ((nb_chipset == INTEL_NB_7300) ? \ 6647532SSean.Ye@Sun.COM (GE_FSB0_NF|GE_FSB1_NF|GE_FERR_FSB2_NF|GE_FERR_FSB3_NF) : \ 6657532SSean.Ye@Sun.COM (GE_FSB0_NF|GE_FSB1_NF)) 6667532SSean.Ye@Sun.COM #define GE_NERR_FSB_NF ((nb_chipset == INTEL_NB_7300) ? \ 6677532SSean.Ye@Sun.COM (GE_FSB0_NF|GE_FSB1_NF|GE_NERR_FSB2_NF|GE_NERR_FSB3_NF) : \ 6687532SSean.Ye@Sun.COM (GE_FSB0_NF|GE_FSB1_NF)) 6697532SSean.Ye@Sun.COM 6707532SSean.Ye@Sun.COM #define FERR_FBD_CHANNEL(reg) ((reg)>>28 & 3) 6717532SSean.Ye@Sun.COM 6727532SSean.Ye@Sun.COM #define NB5000_STEPPING() nb_pci_getw(0, 0, 0, 8, 0) 6737532SSean.Ye@Sun.COM 6747532SSean.Ye@Sun.COM #define FERR_GLOBAL_RD() ((nb_chipset == INTEL_NB_7300) ? \ 6757532SSean.Ye@Sun.COM ((uint64_t)nb_pci_getl(0, 16, 2, \ 6767532SSean.Ye@Sun.COM 0x48, 0) << 32) | nb_pci_getl(0, 16, 2, \ 6777532SSean.Ye@Sun.COM 0x40, 0) : \ 6787532SSean.Ye@Sun.COM (uint64_t)nb_pci_getl(0, 16, 2, 0x40, 0)) 6797532SSean.Ye@Sun.COM #define NERR_GLOBAL_RD() nb_pci_getl(0, 16, 2, 0x44, 0) 6807532SSean.Ye@Sun.COM #define FERR_FAT_FSB_RD(fsb, ip) ((nb_chipset == INTEL_NB_7300) ? \ 6817532SSean.Ye@Sun.COM nb_pci_getb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc0 : 0x40, ip) : \ 6827532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 0, fsb ? 0x480 : 0x180, ip)) 6837532SSean.Ye@Sun.COM #define FERR_NF_FSB_RD(fsb, ip) ((nb_chipset == INTEL_NB_7300) ? \ 6847532SSean.Ye@Sun.COM nb_pci_getb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc1 : 0x41, ip) : \ 6857532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 0, fsb ? 0x481 : 0x181, ip)) 6867532SSean.Ye@Sun.COM #define NERR_FAT_FSB_RD(fsb, ip) ((nb_chipset == INTEL_NB_7300) ? \ 6877532SSean.Ye@Sun.COM nb_pci_getb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc2 : 0x42, ip) : \ 6887532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 0, fsb ? 0x482 : 0x182, ip)) 6897532SSean.Ye@Sun.COM #define NERR_NF_FSB_RD(fsb, ip) ((nb_chipset == INTEL_NB_7300) ? \ 6907532SSean.Ye@Sun.COM nb_pci_getb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc3 : 0x43, ip) : \ 6917532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 0, fsb ? 0x483 : 0x183, ip)) 6927532SSean.Ye@Sun.COM 6937532SSean.Ye@Sun.COM #define NRECFSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 6947532SSean.Ye@Sun.COM nb_pci_getl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc4 : 0x44, 0) : \ 6957532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 0, fsb ? 0x484 : 0x184, 0)) 6967532SSean.Ye@Sun.COM #define NRECFSB_WR(fsb) \ 6977532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) { \ 6987532SSean.Ye@Sun.COM nb_pci_putl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc4 : 0x44, \ 6997532SSean.Ye@Sun.COM 0); \ 7007532SSean.Ye@Sun.COM } else { \ 7017532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 0, fsb ? 0x484 : 0x184, 0); \ 7027532SSean.Ye@Sun.COM } 7037532SSean.Ye@Sun.COM #define RECFSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 7047532SSean.Ye@Sun.COM nb_pci_getl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc8 : 0x48, 0) : \ 7057532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 0, fsb ? 0x488 : 0x188, 0)) 7067532SSean.Ye@Sun.COM #define RECFSB_WR(fsb) \ 7077532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) { \ 7087532SSean.Ye@Sun.COM nb_pci_putl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc8 : 0x48, \ 7097532SSean.Ye@Sun.COM 0); \ 7107532SSean.Ye@Sun.COM } else { \ 7117532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 0, fsb ? 0x488 : 0x188, 0); \ 7127532SSean.Ye@Sun.COM } 7137532SSean.Ye@Sun.COM #define NRECADDR_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 7147532SSean.Ye@Sun.COM ((uint64_t)(nb_pci_getb(0, 17, (fsb & 2) ? 3 : 0, \ 7157532SSean.Ye@Sun.COM (fsb & 1) ? 0xd0 : 0x50, 0)) << 32) | \ 7167532SSean.Ye@Sun.COM nb_pci_getl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xcc : 0x4c, 0) : \ 7177532SSean.Ye@Sun.COM ((uint64_t)(nb_pci_getb(0, 16, 0, fsb ? 0x490 : 0x190, 0)) << 32) | \ 7187532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 0, fsb ? 0x48c : 0x18c, 0)) 7197532SSean.Ye@Sun.COM #define NRECADDR_WR(fsb) \ 7207532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) { \ 7217532SSean.Ye@Sun.COM nb_pci_putb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xd0 : 0x50, \ 7227532SSean.Ye@Sun.COM 0); \ 7237532SSean.Ye@Sun.COM nb_pci_putl(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xcc : 0x4c, \ 7247532SSean.Ye@Sun.COM 0); \ 7257532SSean.Ye@Sun.COM } else { \ 7267532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 0, fsb ? 0x490 : 0x190, 0); \ 7277532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 0, fsb ? 0x48c : 0x18c, 0); \ 7287532SSean.Ye@Sun.COM } 7297532SSean.Ye@Sun.COM #define EMASK_FSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 7307532SSean.Ye@Sun.COM nb_pci_getw(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xd2 : 0x52, 0) : \ 7317532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 0, fsb ? 0x492 : 0x192, 0)) 7327532SSean.Ye@Sun.COM #define ERR0_FSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 7337532SSean.Ye@Sun.COM nb_pci_getw(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xd4 : 0x54, 0) : \ 7347532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 0, fsb ? 0x494 : 0x194, 0)) 7357532SSean.Ye@Sun.COM #define ERR1_FSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 7367532SSean.Ye@Sun.COM nb_pci_getw(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xd6 : 0x56, 0) : \ 7377532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 0, fsb ? 0x496 : 0x196, 0)) 7387532SSean.Ye@Sun.COM #define ERR2_FSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 7397532SSean.Ye@Sun.COM nb_pci_getw(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xd8 : 0x58, 0) : \ 7407532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 0, fsb ? 0x498 : 0x198, 0)) 7417532SSean.Ye@Sun.COM #define MCERR_FSB_RD(fsb) ((nb_chipset == INTEL_NB_7300) ? \ 7427532SSean.Ye@Sun.COM nb_pci_getw(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xda : 0x5a, 0) : \ 7437532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 0, fsb ? 0x49a : 0x19a, 0)) 7447532SSean.Ye@Sun.COM 7457532SSean.Ye@Sun.COM #define FERR_GLOBAL_WR(val) \ 7467532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 7477532SSean.Ye@Sun.COM { \ 7487532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0x48, (uint32_t)(val >> 32)); \ 7497532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0x40, (uint32_t)val); \ 7507532SSean.Ye@Sun.COM } else { \ 7517532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0x40, (uint32_t)val); \ 7527532SSean.Ye@Sun.COM } 7537532SSean.Ye@Sun.COM #define NERR_GLOBAL_WR(val) nb_pci_putl(0, 16, 2, 0x44, val) 7547532SSean.Ye@Sun.COM #define FERR_FAT_FSB_WR(fsb, val) ((nb_chipset == INTEL_NB_7300) ? \ 7557532SSean.Ye@Sun.COM nb_pci_putb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc0 : 0x40, val) : \ 7567532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 0, fsb ? 0x480 : 0x180, val)) 7577532SSean.Ye@Sun.COM #define FERR_NF_FSB_WR(fsb, val) ((nb_chipset == INTEL_NB_7300) ? \ 7587532SSean.Ye@Sun.COM nb_pci_putb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc1 : 0x41, val) : \ 7597532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 0, fsb ? 0x481 : 0x181, val)) 7607532SSean.Ye@Sun.COM #define NERR_FAT_FSB_WR(fsb, val) ((nb_chipset == INTEL_NB_7300) ? \ 7617532SSean.Ye@Sun.COM nb_pci_putb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc2 : 0x42, val) : \ 7627532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 0, fsb ? 0x482 : 0x182, val)) 7637532SSean.Ye@Sun.COM #define NERR_NF_FSB_WR(fsb, val) ((nb_chipset == INTEL_NB_7300) ? \ 7647532SSean.Ye@Sun.COM nb_pci_putb(0, 17, (fsb & 2) ? 3 : 0, (fsb & 1) ? 0xc3 : 0x43, val) : \ 7657532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 0, fsb ? 0x483 : 0x183, val)) 7667532SSean.Ye@Sun.COM #define EMASK_FSB_WR(fsb, val) \ 7677532SSean.Ye@Sun.COM { \ 7687532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 7697532SSean.Ye@Sun.COM nb_pci_putw(0, 17, ((fsb) & 2) ? 3 : 0, \ 7707532SSean.Ye@Sun.COM ((fsb) & 1) ? 0xd2 : 0x52, val); \ 7717532SSean.Ye@Sun.COM else \ 7727532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 0, fsb ? 0x492 : 0x192, val); \ 7737532SSean.Ye@Sun.COM } 7747532SSean.Ye@Sun.COM #define ERR0_FSB_WR(fsb, val) \ 7757532SSean.Ye@Sun.COM { \ 7767532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 7777532SSean.Ye@Sun.COM nb_pci_putw(0, 17, (fsb & 2) ? 3 : 0, \ 7787532SSean.Ye@Sun.COM (fsb & 1) ? 0xd4 : 0x54, val); \ 7797532SSean.Ye@Sun.COM else \ 7807532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 0, fsb ? 0x494 : 0x194, val); \ 7817532SSean.Ye@Sun.COM } 7827532SSean.Ye@Sun.COM #define ERR1_FSB_WR(fsb, val) \ 7837532SSean.Ye@Sun.COM { \ 7847532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 7857532SSean.Ye@Sun.COM nb_pci_putw(0, 17, (fsb & 2) ? 3 : 0, \ 7867532SSean.Ye@Sun.COM (fsb & 1) ? 0xd6 : 0x56, val); \ 7877532SSean.Ye@Sun.COM else \ 7887532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 0, fsb ? 0x496 : 0x196, val); \ 7897532SSean.Ye@Sun.COM } 7907532SSean.Ye@Sun.COM #define ERR2_FSB_WR(fsb, val) \ 7917532SSean.Ye@Sun.COM { \ 7927532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 7937532SSean.Ye@Sun.COM nb_pci_putw(0, 17, (fsb & 2) ? 3 : 0, \ 7947532SSean.Ye@Sun.COM (fsb & 1) ? 0xd8 : 0x58, val); \ 7957532SSean.Ye@Sun.COM else \ 7967532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 0, fsb ? 0x498 : 0x198, val); \ 7977532SSean.Ye@Sun.COM } 7987532SSean.Ye@Sun.COM #define MCERR_FSB_WR(fsb, val) \ 7997532SSean.Ye@Sun.COM { \ 8007532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_7300) \ 8017532SSean.Ye@Sun.COM nb_pci_putw(0, 17, (fsb & 2) ? 3 : 0, \ 8027532SSean.Ye@Sun.COM (fsb & 1) ? 0xda : 0x5a, val); \ 8037532SSean.Ye@Sun.COM else \ 8047532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 0, fsb ? 0x49a : 0x19a, val); \ 8057532SSean.Ye@Sun.COM } 8067532SSean.Ye@Sun.COM 8077532SSean.Ye@Sun.COM #define NRECSF_RD() (nb_chipset == INTEL_NB_5000X || \ 8087532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300) ? ((uint64_t)( \ 8097532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xb4, 0)) << 32) | \ 8107532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xb0, 0) : 0LL 8117532SSean.Ye@Sun.COM #define RECSF_RD() (nb_chipset == INTEL_NB_5000X || \ 8127532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300) ? ((uint64_t)( \ 8137532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xbc, 0)) << 32) | \ 8147532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xb8, 0) : 0LL 8157532SSean.Ye@Sun.COM 8167532SSean.Ye@Sun.COM #define NRECSF_WR() if (nb_chipset == INTEL_NB_5000X || \ 8177532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300) { \ 8187532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xbc, 0); \ 8197532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xb0, 0); \ 8207532SSean.Ye@Sun.COM } 8217532SSean.Ye@Sun.COM #define RECSF_WR() if (nb_chipset == INTEL_NB_5000X || \ 8227532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300) { \ 8237532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xbc, 0); \ 8247532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xb8, 0); \ 8257532SSean.Ye@Sun.COM } 8267532SSean.Ye@Sun.COM 8277532SSean.Ye@Sun.COM #define FERR_FAT_INT_RD(ip) (((nb_chipset == INTEL_NB_5400) ? \ 8287532SSean.Ye@Sun.COM ((uint16_t)nb_pci_getb(0, 16, 2, 0xc1, ip) << 8) : (uint16_t)0) | \ 8297532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 2, 0xc0, ip)) 8307532SSean.Ye@Sun.COM #define FERR_NF_INT_RD(ip) ((nb_chipset == INTEL_NB_5400) ? \ 8317532SSean.Ye@Sun.COM ((uint16_t)nb_pci_getb(0, 16, 2, 0xc3, ip) << 8) | \ 8327532SSean.Ye@Sun.COM nb_pci_getb(0, 16, 2, 0xc2, ip) : \ 8337532SSean.Ye@Sun.COM (uint16_t)nb_pci_getb(0, 16, 2, 0xc1, ip)) 8347532SSean.Ye@Sun.COM #define NERR_FAT_INT_RD(ip) ((nb_chipset == INTEL_NB_5400) ? \ 8359783SAdrian.Frost@Sun.COM ((uint16_t)nb_pci_getb(0, 16, 2, 0xc5, ip) << 8) | \ 8369783SAdrian.Frost@Sun.COM nb_pci_getb(0, 16, 2, 0xc4, ip) : \ 8377532SSean.Ye@Sun.COM (uint16_t)nb_pci_getb(0, 16, 2, 0xc2, ip)) 8387532SSean.Ye@Sun.COM #define NERR_NF_INT_RD(ip) ((nb_chipset == INTEL_NB_5400) ? \ 8399783SAdrian.Frost@Sun.COM ((uint16_t)nb_pci_getb(0, 16, 2, 0xc7, ip) << 8) | \ 8409783SAdrian.Frost@Sun.COM nb_pci_getb(0, 16, 2, 0xc6, ip) : \ 8417532SSean.Ye@Sun.COM (uint16_t)nb_pci_getb(0, 16, 2, 0xc3, ip)) 8427532SSean.Ye@Sun.COM #define EMASK_INT_RD() ((nb_chipset == INTEL_NB_5400) ? \ 8437532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xd0, 0) : nb_pci_getb(0, 16, 2, 0xcc, 0)) 8447532SSean.Ye@Sun.COM #define ERR0_INT_RD() ((nb_chipset == INTEL_NB_5400) ? \ 8457532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xd4, 0) : nb_pci_getb(0, 16, 2, 0xd0, 0)) 8467532SSean.Ye@Sun.COM #define ERR1_INT_RD() ((nb_chipset == INTEL_NB_5400) ? \ 8477532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xd8, 0) : nb_pci_getb(0, 16, 2, 0xd1, 0)) 8487532SSean.Ye@Sun.COM #define ERR2_INT_RD() ((nb_chipset == INTEL_NB_5400) ? \ 8497532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xdc, 0) : nb_pci_getb(0, 16, 2, 0xd2, 0)) 8507532SSean.Ye@Sun.COM #define MCERR_INT_RD() ((nb_chipset == INTEL_NB_5400) ? \ 8517532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 2, 0xe0, 0) : nb_pci_getb(0, 16, 2, 0xd3, 0)) 8527532SSean.Ye@Sun.COM 8537532SSean.Ye@Sun.COM #define FERR_FAT_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 8547532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc0, \ 8557532SSean.Ye@Sun.COM val & 0xff); \ 8567532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc1, val >> 8); \ 8577532SSean.Ye@Sun.COM } else { \ 8587532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc0, val); \ 8597532SSean.Ye@Sun.COM } 8607532SSean.Ye@Sun.COM #define FERR_NF_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 8617532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc2, \ 8627532SSean.Ye@Sun.COM val & 0xff); \ 8637532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc3, val >> 8); \ 8647532SSean.Ye@Sun.COM } else { \ 8657532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc1, val); \ 8667532SSean.Ye@Sun.COM } 8677532SSean.Ye@Sun.COM #define NERR_FAT_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 8687532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc4, \ 8697532SSean.Ye@Sun.COM val & 0xff); \ 8707532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc5, val >> 8); \ 8717532SSean.Ye@Sun.COM } else { \ 8727532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc2, val); \ 8737532SSean.Ye@Sun.COM } 8747532SSean.Ye@Sun.COM #define NERR_NF_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 8757532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc6, \ 8767532SSean.Ye@Sun.COM val & 0xff); \ 8777532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc7, val >> 8); \ 8787532SSean.Ye@Sun.COM } else { \ 8797532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xc3, val); \ 8807532SSean.Ye@Sun.COM } 8817532SSean.Ye@Sun.COM #define EMASK_5000_INT_WR(val) nb_pci_putb(0, 16, 2, 0xcc, val) 8827532SSean.Ye@Sun.COM #define EMASK_5400_INT_WR(val) nb_pci_putl(0, 16, 2, 0xd0, val) 8837532SSean.Ye@Sun.COM #define EMASK_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 8847532SSean.Ye@Sun.COM EMASK_5400_INT_WR(val); \ 8857532SSean.Ye@Sun.COM } else { \ 8867532SSean.Ye@Sun.COM EMASK_5000_INT_WR(val); \ 8877532SSean.Ye@Sun.COM } 8887532SSean.Ye@Sun.COM #define ERR0_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 8897532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xd4, val); \ 8907532SSean.Ye@Sun.COM } else { \ 8917532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xd0, val); \ 8927532SSean.Ye@Sun.COM } 8937532SSean.Ye@Sun.COM #define ERR1_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 8947532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xd8, val); \ 8957532SSean.Ye@Sun.COM } else { \ 8967532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xd1, val); \ 8977532SSean.Ye@Sun.COM } 8987532SSean.Ye@Sun.COM #define ERR2_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 8997532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xdc, val); \ 9007532SSean.Ye@Sun.COM } else { \ 9017532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xd2, val); \ 9027532SSean.Ye@Sun.COM } 9037532SSean.Ye@Sun.COM #define MCERR_INT_WR(val) if (nb_chipset == INTEL_NB_5400) { \ 9047532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 2, 0xe0, val); \ 9057532SSean.Ye@Sun.COM } else { \ 9067532SSean.Ye@Sun.COM nb_pci_putb(0, 16, 2, 0xd3, val); \ 9077532SSean.Ye@Sun.COM } 9087532SSean.Ye@Sun.COM 90910049SVuong.Nguyen@Sun.COM #define NRECINT_RD() nb_pci_getl(0, 16, 2, \ 91010049SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_5400 ? 0xc8 : 0xc4, 0) 91110049SVuong.Nguyen@Sun.COM #define RECINT_RD() nb_pci_getl(0, 16, 2, \ 91210049SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_5400 ? 0xcc : 0xc8, 0) 9137532SSean.Ye@Sun.COM 91410049SVuong.Nguyen@Sun.COM #define NRECINT_WR() nb_pci_putl(0, 16, 2, \ 91510049SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_5400 ? 0xc8 : 0xc4, 0) 91610049SVuong.Nguyen@Sun.COM #define RECINT_WR() nb_pci_putl(0, 16, 2, \ 91710049SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_5400 ? 0xcc : 0xc8, 0) 91810049SVuong.Nguyen@Sun.COM 9197532SSean.Ye@Sun.COM 9207532SSean.Ye@Sun.COM #define FERR_FAT_FBD_RD(ip) nb_pci_getl(0, 16, 1, 0x98, ip) 9217532SSean.Ye@Sun.COM #define NERR_FAT_FBD_RD(ip) nb_pci_getl(0, 16, 1, 0x9c, ip) 9227532SSean.Ye@Sun.COM #define FERR_NF_FBD_RD(ip) nb_pci_getl(0, 16, 1, 0xa0, ip) 9237532SSean.Ye@Sun.COM #define NERR_NF_FBD_RD(ip) nb_pci_getl(0, 16, 1, 0xa4, ip) 9247532SSean.Ye@Sun.COM #define EMASK_FBD_RD() nb_pci_getl(0, 16, 1, 0xa8, 0) 9257532SSean.Ye@Sun.COM #define ERR0_FBD_RD() nb_pci_getl(0, 16, 1, 0xac, 0) 9267532SSean.Ye@Sun.COM #define ERR1_FBD_RD() nb_pci_getl(0, 16, 1, 0xb0, 0) 9277532SSean.Ye@Sun.COM #define ERR2_FBD_RD() nb_pci_getl(0, 16, 1, 0xb4, 0) 9287532SSean.Ye@Sun.COM #define MCERR_FBD_RD() nb_pci_getl(0, 16, 1, 0xb8, 0) 9297532SSean.Ye@Sun.COM 9307532SSean.Ye@Sun.COM #define FERR_FAT_FBD_WR(val) nb_pci_putl(0, 16, 1, 0x98, val) 9317532SSean.Ye@Sun.COM #define NERR_FAT_FBD_WR(val) nb_pci_putl(0, 16, 1, 0x9c, val) 9327532SSean.Ye@Sun.COM #define FERR_NF_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xa0, val) 9337532SSean.Ye@Sun.COM #define NERR_NF_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xa4, val) 9347532SSean.Ye@Sun.COM #define EMASK_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xa8, val) 9357532SSean.Ye@Sun.COM #define ERR0_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xac, val) 9367532SSean.Ye@Sun.COM #define ERR1_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xb0, val) 9377532SSean.Ye@Sun.COM #define ERR2_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xb4, val) 9387532SSean.Ye@Sun.COM #define MCERR_FBD_WR(val) nb_pci_putl(0, 16, 1, 0xb8, val) 9397532SSean.Ye@Sun.COM 9407532SSean.Ye@Sun.COM #define NRECMEMA_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9417532SSean.Ye@Sun.COM nb_pci_getw(0, (branch) ? 22 : 21, 1, 0xbe, 0) : \ 9427532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 1, 0xbe, 0)) 9437532SSean.Ye@Sun.COM #define NRECMEMB_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9447532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xc0, 0) : \ 9457532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, 0xc0, 0)) 9467532SSean.Ye@Sun.COM #define NRECFGLOG_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9477532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0x74, 0) : \ 94810650SVuong.Nguyen@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0x74 : 0xc4, 0)) 9497532SSean.Ye@Sun.COM #define NRECFBDA_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9507532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xc4, 0) : \ 9517532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xc4 : 0xc8, 0)) 9527532SSean.Ye@Sun.COM #define NRECFBDB_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9537532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xc8, 0) : \ 9547532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xc8 : 0xcc, 0)) 9557532SSean.Ye@Sun.COM #define NRECFBDC_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9567532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xcc, 0) : \ 9577532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xcc : 0xd0, 0)) 9587532SSean.Ye@Sun.COM #define NRECFBDD_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9597532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xd0, 0) : \ 9607532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xd0 : 0xd4, 0)) 9617532SSean.Ye@Sun.COM #define NRECFBDE_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9627532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xd4, 0) : \ 9637532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xd4 : 0xd8, 0)) 9647532SSean.Ye@Sun.COM #define NRECFBDF_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9657532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xd8, 0) : \ 9667532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300 ? nb_pci_getw(0, 16, 1, 0xd8, 0) : 0) 9677532SSean.Ye@Sun.COM #define REDMEMB_RD() (nb_chipset == INTEL_NB_5400 ? \ 9687532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0x7c, 0) : \ 9697532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, 0x7c, 0)) 9707532SSean.Ye@Sun.COM #define RECMEMA_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9717532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xe0, 0) & 0xffffff : \ 9727532SSean.Ye@Sun.COM nb_pci_getw(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xe0 : 0xe2, 0)) 9737532SSean.Ye@Sun.COM #define RECMEMB_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9747532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xe4, 0) : \ 9757532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, 0xe4, 0)) 9767532SSean.Ye@Sun.COM #define RECFGLOG_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9777532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0x78, 0) : \ 9787532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300 ? nb_pci_getl(0, 16, 1, 0x78, 0) : \ 9797532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, 0xe8, 0)) 9807532SSean.Ye@Sun.COM #define RECFBDA_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9817532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xe8, 0) : \ 9827532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xe8 : 0xec, 0)) 9837532SSean.Ye@Sun.COM #define RECFBDB_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9847532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xec, 0) : \ 9857532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xec : 0xf0, 0)) 9867532SSean.Ye@Sun.COM #define RECFBDC_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9877532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xf0, 0) : \ 9887532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xf0 : 0xf4, 0)) 9897532SSean.Ye@Sun.COM #define RECFBDD_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9907532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xf4, 0) : \ 9917532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xf4 : 0xf8, 0)) 9927532SSean.Ye@Sun.COM #define RECFBDE_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9937532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xf8, 0) : \ 9947532SSean.Ye@Sun.COM nb_pci_getl(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xf8 : 0xfc, 0)) 9957532SSean.Ye@Sun.COM #define RECFBDF_RD(branch) (nb_chipset == INTEL_NB_5400 ? \ 9967532SSean.Ye@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 1, 0xfc, 0) : \ 9977532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_7300 ? nb_pci_getw(0, 16, 1, 0xfc, 0) : 0) 9987532SSean.Ye@Sun.COM #define NRECMEMA_WR(branch) (nb_chipset == INTEL_NB_5400 ? \ 9997532SSean.Ye@Sun.COM nb_pci_putw(0, (branch) ? 22 : 21, 1, 0xbe, 0) : \ 10007532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 1, 0xbe, 0)) 10017532SSean.Ye@Sun.COM #define NRECMEMB_WR(branch) (nb_chipset == INTEL_NB_5400 ? \ 10027532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xc0, 0) : \ 10037532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xc0, 0)) 10047532SSean.Ye@Sun.COM #define NRECFGLOG_WR(branch) \ 10057532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10067532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0x74, 0); \ 10077532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10087532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0x74, 0); \ 10097532SSean.Ye@Sun.COM else \ 10107532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xc4, 0) 10117532SSean.Ye@Sun.COM #define NRECFBDA_WR(branch) \ 10127532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10137532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xc4, 0); \ 10147532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10157532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xc4, 0); \ 10167532SSean.Ye@Sun.COM else \ 10177532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xc8, 0) 10187532SSean.Ye@Sun.COM #define NRECFBDB_WR(branch) \ 10197532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10207532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xc8, 0); \ 10217532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10227532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xc8, 0); \ 10237532SSean.Ye@Sun.COM else \ 10247532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xcc, 0) 10257532SSean.Ye@Sun.COM #define NRECFBDC_WR(branch) \ 10267532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10277532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xcc, 0); \ 10287532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10297532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xcc, 0); \ 10307532SSean.Ye@Sun.COM else \ 10317532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xd0, 0) 10327532SSean.Ye@Sun.COM #define NRECFBDD_WR(branch) \ 10337532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10347532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xd0, 0); \ 10357532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10367532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xd0, 0); \ 10377532SSean.Ye@Sun.COM else \ 10387532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xd4, 0) 10397532SSean.Ye@Sun.COM #define NRECFBDE_WR(branch) \ 10407532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10417532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xd4, 0); \ 10427532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10437532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xd4, 0); \ 10447532SSean.Ye@Sun.COM else \ 10457532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xd8, 0) 10467532SSean.Ye@Sun.COM #define NRECFBDF_WR(branch) \ 10477532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10487532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xd8, 0); \ 10497532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10507532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 1, 0xd8, 0); 10517532SSean.Ye@Sun.COM #define REDMEMB_WR(branch) \ 10527532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10537532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0x7c, 0); \ 10547532SSean.Ye@Sun.COM else \ 10557532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0x7c, 0) 10567532SSean.Ye@Sun.COM #define RECMEMA_WR(branch) \ 10577532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10587532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xe0, 0); \ 10597532SSean.Ye@Sun.COM else \ 10607532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 1, nb_chipset == INTEL_NB_7300 ? 0xe0 : \ 10617532SSean.Ye@Sun.COM 0xe2, 0) 10627532SSean.Ye@Sun.COM #define RECMEMB_WR(branch) \ 10637532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10647532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xe4, 0); \ 10657532SSean.Ye@Sun.COM else \ 10667532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xe4, 0) 10677532SSean.Ye@Sun.COM #define RECFGLOG_WR(branch) \ 10687532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10697532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0x78, 0); \ 10707532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10717532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0x78, 0); \ 10727532SSean.Ye@Sun.COM else \ 10737532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xe8, 0) 10747532SSean.Ye@Sun.COM #define RECFBDA_WR(branch) \ 10757532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10767532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xe8, 0); \ 10777532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10787532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xe8, 0); \ 10797532SSean.Ye@Sun.COM else \ 10807532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xec, 0) 10817532SSean.Ye@Sun.COM #define RECFBDB_WR(branch) \ 10827532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10837532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xec, 0); \ 10847532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10857532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xec, 0); \ 10867532SSean.Ye@Sun.COM else \ 10877532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf0, 0) 10887532SSean.Ye@Sun.COM #define RECFBDC_WR(branch) \ 10897532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10907532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xf0, 0); \ 10917532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10927532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf0, 0); \ 10937532SSean.Ye@Sun.COM else \ 10947532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf4, 0) 10957532SSean.Ye@Sun.COM #define RECFBDD_WR(branch) \ 10967532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 10977532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xf4, 0); \ 10987532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 10997532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf4, 0); \ 11007532SSean.Ye@Sun.COM else \ 11017532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf8, 0) 11027532SSean.Ye@Sun.COM #define RECFBDE_WR(branch) \ 11037532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 11047532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xf8, 0); \ 11057532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 11067532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xf8, 0); \ 11077532SSean.Ye@Sun.COM else \ 11087532SSean.Ye@Sun.COM nb_pci_putl(0, 16, 1, 0xfc, 0) 11097532SSean.Ye@Sun.COM #define RECFBDF_WR(branch) \ 11107532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5400) \ 11117532SSean.Ye@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 1, 0xfc, 0); \ 11127532SSean.Ye@Sun.COM else if (nb_chipset == INTEL_NB_7300) \ 11137532SSean.Ye@Sun.COM nb_pci_putw(0, 16, 1, 0xf8, 0); \ 11147532SSean.Ye@Sun.COM 111510049SVuong.Nguyen@Sun.COM #define FERR_NF_MEM_RD(ip) nb_pci_getl(0, 16, 1, 0xa0, ip) 111610049SVuong.Nguyen@Sun.COM #define NERR_NF_MEM_RD(ip) nb_pci_getl(0, 16, 1, 0xa4, ip) 111710049SVuong.Nguyen@Sun.COM #define EMASK_MEM_RD() nb_pci_getl(0, 16, 1, 0xa8, 0) 111810049SVuong.Nguyen@Sun.COM #define ERR0_MEM_RD() nb_pci_getl(0, 16, 1, 0xac, 0) 111910049SVuong.Nguyen@Sun.COM #define ERR1_MEM_RD() nb_pci_getl(0, 16, 1, 0xb0, 0) 112010049SVuong.Nguyen@Sun.COM #define ERR2_MEM_RD() nb_pci_getl(0, 16, 1, 0xb4, 0) 112110049SVuong.Nguyen@Sun.COM #define MCERR_MEM_RD() nb_pci_getl(0, 16, 1, 0xb8, 0) 112210049SVuong.Nguyen@Sun.COM #define FERR_NF_MEM_WR(val) \ 112310049SVuong.Nguyen@Sun.COM nb_pci_putl(0, 16, 1, 0xa0, (val)) 112410049SVuong.Nguyen@Sun.COM #define NERR_NF_MEM_WR(val) \ 112510049SVuong.Nguyen@Sun.COM nb_pci_putl(0, 16, 1, 0xa4, (val)) 112610049SVuong.Nguyen@Sun.COM #define EMASK_MEM_WR(val) \ 112710049SVuong.Nguyen@Sun.COM nb_pci_putl(0, 16, 1, 0xa8, (val)) 112810049SVuong.Nguyen@Sun.COM #define ERR0_MEM_WR(val) \ 112910049SVuong.Nguyen@Sun.COM nb_pci_putl(0, 16, 1, 0xac, (val)) 113010049SVuong.Nguyen@Sun.COM #define ERR1_MEM_WR(val) \ 113110049SVuong.Nguyen@Sun.COM nb_pci_putl(0, 16, 1, 0xb0, (val)) 113210049SVuong.Nguyen@Sun.COM #define ERR2_MEM_WR(val) \ 113310049SVuong.Nguyen@Sun.COM nb_pci_putl(0, 16, 1, 0xb4, (val)) 113410049SVuong.Nguyen@Sun.COM #define MCERR_MEM_WR(val) \ 113510049SVuong.Nguyen@Sun.COM nb_pci_putl(0, 16, 1, 0xb8, (val)) 113610049SVuong.Nguyen@Sun.COM #define VALIDLOG_RD(branch) \ 113710049SVuong.Nguyen@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 0, 0x18c, 0) 113810049SVuong.Nguyen@Sun.COM #define MEM_NRECMEMA_RD(branch) \ 113910049SVuong.Nguyen@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 0, 0x190, 0) 114010049SVuong.Nguyen@Sun.COM #define MEM_NRECMEMB_RD(branch) \ 114110049SVuong.Nguyen@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 0, 0x194, 0) 114210049SVuong.Nguyen@Sun.COM #define MEM_REDMEMA_RD(branch) \ 114310049SVuong.Nguyen@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 0, 0x198, 0) 114410049SVuong.Nguyen@Sun.COM #define MEM_REDMEMB_RD(branch) \ 114510049SVuong.Nguyen@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 0, 0x19c, 0) 114610049SVuong.Nguyen@Sun.COM #define MEM_RECMEMA_RD(branch) \ 114710049SVuong.Nguyen@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 0, 0x1a0, 0) 114810049SVuong.Nguyen@Sun.COM #define MEM_RECMEMB_RD(branch) \ 114910049SVuong.Nguyen@Sun.COM nb_pci_getl(0, (branch) ? 22 : 21, 0, 0x1a4, 0) 115010049SVuong.Nguyen@Sun.COM #define MEM_CERRCNT_RD(branch) nb_pci_getl(0, 21, 0, 0x180, 0) 115110049SVuong.Nguyen@Sun.COM #define MEM_CERRCNT_EXT_RD(branch) nb_pci_getw(0, 21, 0, 0x184, 0) 115210049SVuong.Nguyen@Sun.COM #define MEM_NRECMEMA_WR(branch) \ 115310049SVuong.Nguyen@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 0, 0x190, 0) 115410049SVuong.Nguyen@Sun.COM #define MEM_NRECMEMB_WR(branch) \ 115510049SVuong.Nguyen@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 0, 0x194, 0) 115610049SVuong.Nguyen@Sun.COM #define MEM_REDMEMA_WR(branch) \ 115710049SVuong.Nguyen@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 0, 0x198, 0) 115810049SVuong.Nguyen@Sun.COM #define MEM_REDMEMB_WR(branch) \ 115910049SVuong.Nguyen@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 0, 0x19c, 0) 116010049SVuong.Nguyen@Sun.COM #define MEM_RECMEMA_WR(branch) \ 116110049SVuong.Nguyen@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 0, 0x1a0, 0) 116210049SVuong.Nguyen@Sun.COM #define MEM_RECMEMB_WR(branch) \ 116310049SVuong.Nguyen@Sun.COM nb_pci_putl(0, (branch) ? 22 : 21, 0, 0x1a4, 0) 116410049SVuong.Nguyen@Sun.COM 11657532SSean.Ye@Sun.COM #define MC_RD() nb_pci_getl(0, 16, 1, 0x40, 0) 11667532SSean.Ye@Sun.COM #define MC_WR(val) nb_pci_putl(0, 16, 1, 0x40, val) 11677532SSean.Ye@Sun.COM #define MCA_RD() nb_pci_getl(0, 16, 1, 0x58, 0) 11687532SSean.Ye@Sun.COM #define TOLM_RD() nb_pci_getw(0, 16, 1, 0x6c, 0) 11697532SSean.Ye@Sun.COM 117010049SVuong.Nguyen@Sun.COM #define MTR_5100_RD(channel, rank) ((rank) < 4 ? \ 117110049SVuong.Nguyen@Sun.COM nb_pci_getw(0, (channel) == 0 ? 21 : 22, 0, 0x154 + ((rank) * 2), 0) : \ 117210049SVuong.Nguyen@Sun.COM nb_pci_getw(0, (channel) == 0 ? 21 : 22, 0, 0x1b0 + (((rank) & 3) * 2),\ 117310049SVuong.Nguyen@Sun.COM 0)) 117410049SVuong.Nguyen@Sun.COM 117510049SVuong.Nguyen@Sun.COM #define MTR_RD(branch, dimm) (nb_chipset == INTEL_NB_5100 ? \ 117610049SVuong.Nguyen@Sun.COM MTR_5100_RD(branch, dimm) : \ 117710049SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_5400 ? \ 11787532SSean.Ye@Sun.COM nb_pci_getw(0, (branch) == 0 ? 21 : 22, 0, 0x80 + dimm * 2, 0) : \ 11797532SSean.Ye@Sun.COM ((branch) == 0) ? \ 11807532SSean.Ye@Sun.COM nb_pci_getw(0, 21, 0, \ 11817532SSean.Ye@Sun.COM dimm >= 4 ? 0x82 + (dimm & 3) * 4 : 0x80 + dimm * 4, 0) : \ 11827532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 11837532SSean.Ye@Sun.COM nb_pci_getw(0, 22, 0, \ 11847532SSean.Ye@Sun.COM dimm >= 4 ? 0x82 + (dimm & 3) * 4 : 0x80 + dimm * 4, 0) : 0) 11857532SSean.Ye@Sun.COM #define MIR_RD(reg) nb_pci_getw(0, 16, 1, 0x80 + ((reg)*4), 0) 11867532SSean.Ye@Sun.COM 11877532SSean.Ye@Sun.COM #define DMIR_RD(branch, reg) \ 118810049SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_5100 ? \ 118910049SVuong.Nguyen@Sun.COM nb_pci_getl(0, ((branch) == 0) ? 21 : 22, 0, 0x15c + ((reg)*4), 0) : \ 11907532SSean.Ye@Sun.COM ((branch) == 0) ? nb_pci_getl(0, 21, 0, 0x90 + ((reg)*4), 0) : \ 11917532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 11927532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0x90 + ((reg)*4), 0) : 0 11937532SSean.Ye@Sun.COM 11947532SSean.Ye@Sun.COM #define SPCPC_RD(branch) (nb_chipset == INTEL_NB_5000P || \ 11957532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 11967532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? \ 11977532SSean.Ye@Sun.COM (((branch) == 0) ? \ 11987532SSean.Ye@Sun.COM (uint32_t)nb_pci_getb(0, 21, 0, 0x40, 0) : \ 11997532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12007532SSean.Ye@Sun.COM (uint32_t)nb_pci_getb(0, 22, 0, 0x40, 0) : 0) : \ 12017532SSean.Ye@Sun.COM nb_pci_getl(0, ((branch) == 0) ? 21 : 22, 0, 0x40, 0)) 12027532SSean.Ye@Sun.COM 12037532SSean.Ye@Sun.COM #define SPCPC_SPARE_ENABLE (nb_chipset == INTEL_NB_5000P || \ 12047532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 12057532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 1 : 0x20) 12067532SSean.Ye@Sun.COM #define SPCPC_SPRANK(spcpc) (nb_chipset == INTEL_NB_5000P || \ 12077532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 12087532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? \ 12097532SSean.Ye@Sun.COM (((spcpc) >> 1) & 7) : ((spcpc) & 0xf)) 12107532SSean.Ye@Sun.COM 12117532SSean.Ye@Sun.COM #define SPCPS_RD(branch) ((branch) == 0) ? \ 12127532SSean.Ye@Sun.COM nb_pci_getb(0, 21, 0, nb_chipset == INTEL_NB_5000P || \ 12137532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 12147532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x41 : 0x43, 0) : \ 12157532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12167532SSean.Ye@Sun.COM nb_pci_getb(0, 22, 0, nb_chipset == INTEL_NB_5000P || \ 12177532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 12187532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x41 : 0x43, 0) : 0 12197532SSean.Ye@Sun.COM 12207532SSean.Ye@Sun.COM #define SPCPS_WR(branch) \ 12217532SSean.Ye@Sun.COM if ((branch) == 0) { \ 12227532SSean.Ye@Sun.COM nb_pci_putb(0, 21, 0, nb_chipset == INTEL_NB_5000P || \ 12237532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || \ 12247532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000V || \ 12257532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x41 : 0x43, 0); \ 12267532SSean.Ye@Sun.COM } else if (nb_number_memory_controllers == 2) { \ 12277532SSean.Ye@Sun.COM nb_pci_putb(0, 22, 0, nb_chipset == INTEL_NB_5000P || \ 12287532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || \ 12297532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000V || \ 12307532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x41 : 0x43, 0); \ 12317532SSean.Ye@Sun.COM } 12327532SSean.Ye@Sun.COM 12337532SSean.Ye@Sun.COM #define SPCPS_SPARE_DEPLOYED (nb_chipset == INTEL_NB_5000P || \ 12347532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 12357532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x11 : 0x60) 12367532SSean.Ye@Sun.COM #define SPCPS_FAILED_RANK(spcps) (nb_chipset == INTEL_NB_5000P || \ 12377532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 12387532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? (((spcps) >> 1) & 7) : ((spcps) & 0xf)) 12397532SSean.Ye@Sun.COM 12407532SSean.Ye@Sun.COM #define UERRCNT_RD(branch) ((branch) == 0) ? \ 12417532SSean.Ye@Sun.COM nb_pci_getl(0, 21, 0, 0xa4, 0) : \ 12427532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12437532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0xa4, 0) : 0 12447532SSean.Ye@Sun.COM #define CERRCNT_RD(branch) ((branch) == 0) ? \ 12457532SSean.Ye@Sun.COM nb_pci_getl(0, 21, 0, 0xa8, 0) : \ 12467532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12477532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0xa8, 0) : 0 12487532SSean.Ye@Sun.COM #define CERRCNTA_RD(branch, channel) \ 12497532SSean.Ye@Sun.COM nb_pci_getl(0, branch == 0 ? 21 : 22, 0, \ 12507532SSean.Ye@Sun.COM (channel & 1) == 0 ? 0xe0 : 0xf0, 0) 12517532SSean.Ye@Sun.COM #define CERRCNTB_RD(branch, channel) \ 12527532SSean.Ye@Sun.COM nb_pci_getl(0, branch == 0 ? 21 : 22, 0, \ 12537532SSean.Ye@Sun.COM (channel & 1) == 0 ? 0xe4 : 0xf4, 0) 12547532SSean.Ye@Sun.COM #define CERRCNTC_RD(branch, channel) \ 12557532SSean.Ye@Sun.COM (nb_chipset == INTEL_NB_7300 ? \ 12567532SSean.Ye@Sun.COM nb_pci_getl(0, branch == 0 ? 21 : 22, 0, \ 12577532SSean.Ye@Sun.COM (channel & 1) == 0 ? 0xe8 : 0xf8, 0) : 0) 12587532SSean.Ye@Sun.COM #define CERRCNTD_RD(branch, channel) \ 12597532SSean.Ye@Sun.COM (nb_chipset == INTEL_NB_7300 ? \ 12607532SSean.Ye@Sun.COM nb_pci_getl(0, branch == 0 ? 21 : 22, 0, \ 12617532SSean.Ye@Sun.COM (channel & 1) == 0 ? 0xec : 0xfc, 0) : 0) 12627532SSean.Ye@Sun.COM #define BADRAMA_RD(branch) ((branch) == 0) ? \ 12637532SSean.Ye@Sun.COM nb_pci_getl(0, 21, 0, 0xac, 0) : \ 12647532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12657532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0xac, 0) : 0 12667532SSean.Ye@Sun.COM #define BADRAMB_RD(branch) ((branch) == 0) ? \ 12677532SSean.Ye@Sun.COM nb_pci_getw(0, 21, 0, 0xb0, 0) : \ 12687532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12697532SSean.Ye@Sun.COM nb_pci_getw(0, 22, 0, 0xb0, 0) : 0 12707532SSean.Ye@Sun.COM #define BADCNT_RD(branch) ((branch) == 0) ? \ 12717532SSean.Ye@Sun.COM nb_pci_getl(0, 21, 0, 0xb4, 0) : \ 12727532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12737532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0xb4, 0) : 0 12747532SSean.Ye@Sun.COM 12757532SSean.Ye@Sun.COM #define UERRCNT_WR(branch, val) ((branch) == 0) ? \ 12767532SSean.Ye@Sun.COM nb_pci_putl(0, 21, 0, 0xa4, val) : \ 12777532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12787532SSean.Ye@Sun.COM nb_pci_putl(0, 22, 0, 0xa4, val) \ 12797532SSean.Ye@Sun.COM : 0 12807532SSean.Ye@Sun.COM #define CERRCNT_WR(branch, val) ((branch) == 0) ? \ 12817532SSean.Ye@Sun.COM nb_pci_putl(0, 21, 0, 0xa8, val) : \ 12827532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12837532SSean.Ye@Sun.COM nb_pci_putl(0, 22, 0, 0xa8, val) : 0 12847532SSean.Ye@Sun.COM #define BADRAMA_WR(branch, val) ((branch) == 0) ? \ 12857532SSean.Ye@Sun.COM nb_pci_putl(0, 21, 0, 0xac, val) : \ 12867532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12877532SSean.Ye@Sun.COM nb_pci_putl(0, 22, 0, 0xac, val) : 0 12887532SSean.Ye@Sun.COM #define BADRAMB_WR(branch, val) ((branch) == 0) ? \ 12897532SSean.Ye@Sun.COM nb_pci_putw(0, 21, 0, 0xb0, val) : \ 12907532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12917532SSean.Ye@Sun.COM nb_pci_putw(0, 22, 0, 0xb0) : 0 12927532SSean.Ye@Sun.COM #define BADCNT_WR(branch, val) ((branch) == 0) ? \ 12937532SSean.Ye@Sun.COM nb_pci_putl(0, 21, 0, 0xb4, val) : \ 12947532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 12957532SSean.Ye@Sun.COM nb_pci_putl(0, 22, 0, 0xb4, val) : 0 12967532SSean.Ye@Sun.COM 129710049SVuong.Nguyen@Sun.COM #define SPD_RD(branch, channel) \ 129810049SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_5100 ? nb_pci_getw(0, 16, 1, 0x48, 0) : \ 129910049SVuong.Nguyen@Sun.COM ((branch) == 0) ? \ 13007532SSean.Ye@Sun.COM nb_pci_getw(0, 21, 0, 0x74 + ((channel) * 2), 0) : \ 13017532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 13027532SSean.Ye@Sun.COM nb_pci_getw(0, 22, 0, 0x74 + ((channel) * 2), 0) : 0 13037532SSean.Ye@Sun.COM #define SPDCMDRD(branch, channel) ((branch) == 0) ? \ 13047532SSean.Ye@Sun.COM nb_pci_getl(0, 21, 0, 0x78 + ((channel) * 4), 0) : \ 13057532SSean.Ye@Sun.COM (nb_number_memory_controllers == 2) ? \ 13067532SSean.Ye@Sun.COM nb_pci_getl(0, 22, 0, 0x78 + ((channel) * 4), 0) : 0 13077532SSean.Ye@Sun.COM 13087532SSean.Ye@Sun.COM #define SPDCMD1_1_WR(val) nb_pci_putl(0, 21, 0, 0x7c, val) 13097532SSean.Ye@Sun.COM #define SPDCMD_WR(branch, channel, val) \ 131010049SVuong.Nguyen@Sun.COM if (nb_chipset == INTEL_NB_5100) \ 131110049SVuong.Nguyen@Sun.COM nb_pci_putl(0, 16, 1, 0x4c, val); \ 131210049SVuong.Nguyen@Sun.COM else if ((branch) == 0) \ 13137532SSean.Ye@Sun.COM nb_pci_putl(0, 21, 0, 0x78 + ((channel) * 4), val); \ 13147532SSean.Ye@Sun.COM else if (nb_number_memory_controllers == 2) \ 13157532SSean.Ye@Sun.COM nb_pci_putl(0, 22, 0, 0x78 + ((channel) * 4), val) 13167532SSean.Ye@Sun.COM 13177532SSean.Ye@Sun.COM #define UNCERRSTS_RD(pex) nb_pci_getl(0, pex, 0, 0x104, 0) 13187532SSean.Ye@Sun.COM #define UNCERRMSK_RD(pex) nb_pci_getl(0, pex, 0, 0x108, 0) 13197532SSean.Ye@Sun.COM #define PEX_FAT_FERR_ESI_RD() nb_pci_getl(0, 0, 0, 0x154, 0) 13207532SSean.Ye@Sun.COM #define PEX_FAT_NERR_ESI_RD() nb_pci_getl(0, 0, 0, 0x15c, 0) 13217532SSean.Ye@Sun.COM #define PEX_NF_FERR_ESI_RD() nb_pci_getl(0, 0, 0, 0x158, 0) 13227532SSean.Ye@Sun.COM #define PEX_NF_NERR_ESI_RD() nb_pci_getl(0, 0, 0, 0x160, 0) 13237532SSean.Ye@Sun.COM #define PEX_ERR_DOCMD_RD(pex) ((nb_chipset == INTEL_NB_5400) ? \ 13247532SSean.Ye@Sun.COM nb_pci_getw(0, pex, 0, 0x144, 0) : nb_pci_getl(0, pex, 0, 0x144, 0)) 13257532SSean.Ye@Sun.COM #define PEX_ERR_PIN_MASK_RD(pex) nb_pci_getw(0, pex, 0, 0x146, 0) 13267532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_RD(pex) nb_pci_getl(0, pex, 0, 0x148, 0) 13277532SSean.Ye@Sun.COM #define EMASK_COR_PEX_RD(pex) nb_pci_getl(0, pex, 0, 0x14c, 0) 13287532SSean.Ye@Sun.COM #define EMASK_RP_PEX_RD(pex) nb_pci_getl(0, pex, 0, 0x150, 0) 13297532SSean.Ye@Sun.COM 13307532SSean.Ye@Sun.COM #define UNCERRSTS_WR(pex, val) nb_pci_putl(0, pex, 0, 0x104, val) 13317532SSean.Ye@Sun.COM #define UNCERRMSK_WR(pex, val) nb_pci_putl(0, pex, 0, 0x108, val) 13327532SSean.Ye@Sun.COM #define PEX_FAT_FERR_ESI_WR(val) nb_pci_putl(0, 0, 0, 0x154, val) 13337532SSean.Ye@Sun.COM #define PEX_FAT_NERR_ESI_WR(val) nb_pci_putl(0, 0, 0, 0x15c, val) 13347532SSean.Ye@Sun.COM #define PEX_NF_FERR_ESI_WR(val) nb_pci_putl(0, 0, 0, 0x158, val) 13357532SSean.Ye@Sun.COM #define PEX_NF_NERR_ESI_WR(val) nb_pci_putl(0, 0, 0, 0x160, val) 13367532SSean.Ye@Sun.COM #define PEX_ERR_DOCMD_WR(pex, val) ((nb_chipset == INTEL_NB_5400) ? \ 13377532SSean.Ye@Sun.COM nb_pci_putw(0, pex, 0, 0x144, val) : nb_pci_putl(0, pex, 0, 0x144, val)) 13387532SSean.Ye@Sun.COM #define PEX_ERR_PIN_MASK_WR(pex, val) nb_pci_putw(0, pex, 0, 0x146, val) 13397532SSean.Ye@Sun.COM #define EMASK_UNCOR_PEX_WR(pex, val) nb_pci_putl(0, pex, 0, 0x148, val) 13407532SSean.Ye@Sun.COM #define EMASK_COR_PEX_WR(pex, val) nb_pci_putl(0, pex, 0, 0x14c, val) 13417532SSean.Ye@Sun.COM #define EMASK_RP_PEX_WR(pex, val) nb_pci_putl(0, pex, 0, 0x150, val) 13427532SSean.Ye@Sun.COM 13437532SSean.Ye@Sun.COM #define PEX_FAT_FERR_RD(pex, ip) nb_pci_getl(0, pex, 0, 0x154, ip) 13447532SSean.Ye@Sun.COM #define PEX_FAT_NERR_RD(pex, ip) nb_pci_getl(0, pex, 0, 0x15c, ip) 13457532SSean.Ye@Sun.COM #define PEX_NF_FERR_RD(pex, ip) nb_pci_getl(0, pex, 0, 0x158, ip) 13467532SSean.Ye@Sun.COM #define PEX_NF_NERR_RD(pex, ip) nb_pci_getl(0, pex, 0, 0x160, ip) 13477532SSean.Ye@Sun.COM #define UNCERRSEV_RD(pex) nb_pci_getl(0, pex, 0, 0x10c, 0) 13487532SSean.Ye@Sun.COM #define CORERRSTS_RD(pex) nb_pci_getl(0, pex, 0, 0x110, 0) 13497532SSean.Ye@Sun.COM #define RPERRSTS_RD(pex) nb_pci_getl(0, pex, 0, 0x130, 0) 13507532SSean.Ye@Sun.COM #define RPERRSID_RD(pex) nb_pci_getl(0, pex, 0, 0x134, 0) 13517532SSean.Ye@Sun.COM #define AERRCAPCTRL_RD(pex) nb_pci_getl(0, pex, 0, 0x118, 0) 13527532SSean.Ye@Sun.COM #define PEXDEVSTS_RD(pex) nb_pci_getw(0, pex, 0, 0x76, 0) 13537532SSean.Ye@Sun.COM #define PEXROOTCTL_RD(pex) nb_pci_getw(0, pex, 0, 0x88, 0) 13547532SSean.Ye@Sun.COM 13557532SSean.Ye@Sun.COM #define PEX_FAT_FERR_WR(pex, val) nb_pci_putl(0, pex, 0, 0x154, val) 13567532SSean.Ye@Sun.COM #define PEX_FAT_NERR_WR(pex, val) nb_pci_putl(0, pex, 0, 0x15c, val) 13577532SSean.Ye@Sun.COM #define PEX_NF_FERR_WR(pex, val) nb_pci_putl(0, pex, 0, 0x158, val) 13587532SSean.Ye@Sun.COM #define PEX_NF_NERR_WR(pex, val) nb_pci_putl(0, pex, 0, 0x160, val) 13597532SSean.Ye@Sun.COM #define CORERRSTS_WR(pex, val) nb_pci_putl(0, pex, 0, 0x110, val) 13607532SSean.Ye@Sun.COM #define UNCERRSEV_WR(pex, val) nb_pci_putl(0, pex, 0, 0x10c, val) 13617532SSean.Ye@Sun.COM #define RPERRSTS_WR(pex, val) nb_pci_putl(0, pex, 0, 0x130, val) 13627532SSean.Ye@Sun.COM #define PEXDEVSTS_WR(pex, val) nb_pci_putl(0, pex, 0, 0x76, val) 13637532SSean.Ye@Sun.COM #define PEXROOTCTL_WR(pex, val) nb_pci_putw(0, pex, 0, 0x88, val) 13647532SSean.Ye@Sun.COM 13657532SSean.Ye@Sun.COM #define PCISTS_RD(ip) nb_pci_getw(0, 8, 0, 0x6, ip) 13667532SSean.Ye@Sun.COM #define PCIDEVSTS_RD() nb_pci_getw(0, 8, 0, 0x76, 0) 13677532SSean.Ye@Sun.COM #define PCISTS_WR(val) nb_pci_putw(0, 8, 0, 0x6, val) 13687532SSean.Ye@Sun.COM #define PCIDEVSTS_WR(val) nb_pci_putw(0, 8, 0, 0x76, val) 13697532SSean.Ye@Sun.COM 13707532SSean.Ye@Sun.COM #define RANK_MASK (nb_chipset != INTEL_NB_7300 ? 7 : 0xf) 13717532SSean.Ye@Sun.COM #define CAS_MASK (nb_chipset == INTEL_NB_5000P || \ 13727532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 13737532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0xfff : 0x1fff) 13747532SSean.Ye@Sun.COM #define RAS_MASK (nb_chipset == INTEL_NB_5000P || \ 13757532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000X || nb_chipset == INTEL_NB_5000V || \ 13767532SSean.Ye@Sun.COM nb_chipset == INTEL_NB_5000Z ? 0x7fff : 0xffff) 13777532SSean.Ye@Sun.COM #define BANK_MASK 7 13787532SSean.Ye@Sun.COM 13797532SSean.Ye@Sun.COM #define DMIR_RANKS(dmir, rank0, rank1, rank2, rank3) \ 13807532SSean.Ye@Sun.COM if (nb_chipset == INTEL_NB_5000P || nb_chipset == INTEL_NB_5000X || \ 138110650SVuong.Nguyen@Sun.COM nb_chipset == INTEL_NB_5000V || nb_chipset == INTEL_NB_5000Z) { \ 138210650SVuong.Nguyen@Sun.COM rank0 = (dmir) & 0x7; \ 138310650SVuong.Nguyen@Sun.COM rank1 = ((dmir) >> 3) & 0x7; \ 138410650SVuong.Nguyen@Sun.COM rank2 = ((dmir) >> 6) & 0x7; \ 138510650SVuong.Nguyen@Sun.COM rank3 = ((dmir) >> 9) & 0x7; \ 138610650SVuong.Nguyen@Sun.COM } else if (nb_chipset == INTEL_NB_5100) { \ 138710650SVuong.Nguyen@Sun.COM rank0 = (dmir) & 0x7; \ 138810650SVuong.Nguyen@Sun.COM rank1 = ((dmir) >> 4) & 0x7; \ 138910650SVuong.Nguyen@Sun.COM rank2 = ((dmir) >> 8) & 0x7; \ 139010650SVuong.Nguyen@Sun.COM rank3 = ((dmir) >> 12) & 0x7; \ 13917532SSean.Ye@Sun.COM } else { \ 13927532SSean.Ye@Sun.COM rank0 = (dmir) & 0xf; \ 13937532SSean.Ye@Sun.COM rank1 = ((dmir) >> 4) & 0xf; \ 13947532SSean.Ye@Sun.COM rank2 = ((dmir) >> 8) & 0xf; \ 13957532SSean.Ye@Sun.COM rank3 = ((dmir) >> 12) & 0xf; \ 13967532SSean.Ye@Sun.COM } 13977532SSean.Ye@Sun.COM 13987532SSean.Ye@Sun.COM #define FERR_FAT_THR_RD(ip) nb_pci_getb(0, 16, 2, 0xf0, ip) 13997532SSean.Ye@Sun.COM #define FERR_NF_THR_RD(ip) nb_pci_getb(0, 16, 2, 0xf1, ip) 14007532SSean.Ye@Sun.COM #define NERR_FAT_THR_RD(ip) nb_pci_getb(0, 16, 2, 0xf2, ip) 14017532SSean.Ye@Sun.COM #define NERR_NF_THR_RD(ip) nb_pci_getb(0, 16, 2, 0xf3, ip) 14027532SSean.Ye@Sun.COM #define EMASK_THR_RD(ip) nb_pci_getw(0, 16, 2, 0xf6, ip) 14037532SSean.Ye@Sun.COM #define ERR0_THR_RD(ip) nb_pci_getw(0, 16, 2, 0xf8, ip) 14047532SSean.Ye@Sun.COM #define ERR1_THR_RD(ip) nb_pci_getw(0, 16, 2, 0xfa, ip) 14057532SSean.Ye@Sun.COM #define ERR2_THR_RD(ip) nb_pci_getw(0, 16, 2, 0xfc, ip) 14067532SSean.Ye@Sun.COM #define MCERR_THR_RD(ip) nb_pci_getw(0, 16, 2, 0xfe, ip) 14077532SSean.Ye@Sun.COM #define CTSTS_RD() nb_pci_getb(0, 16, 4, 0xee, 0) 14087532SSean.Ye@Sun.COM #define THRTSTS_RD() nb_pci_getw(0, 16, 3, 0x68, 0) 14097532SSean.Ye@Sun.COM 14107532SSean.Ye@Sun.COM #define FERR_FAT_THR_WR(val) nb_pci_putb(0, 16, 2, 0xf0, val) 14117532SSean.Ye@Sun.COM #define FERR_NF_THR_WR(val) nb_pci_putb(0, 16, 2, 0xf1, val) 14127532SSean.Ye@Sun.COM #define NERR_FAT_THR_WR(val) nb_pci_putb(0, 16, 2, 0xf2, val) 14137532SSean.Ye@Sun.COM #define NERR_NF_THR_WR(val) nb_pci_putb(0, 16, 2, 0xf3, val) 14147532SSean.Ye@Sun.COM #define EMASK_THR_WR(val) nb_pci_putw(0, 16, 2, 0xf6, val) 14157532SSean.Ye@Sun.COM #define ERR0_THR_WR(val) nb_pci_putw(0, 16, 2, 0xf8, val) 14167532SSean.Ye@Sun.COM #define ERR1_THR_WR(val) nb_pci_putw(0, 16, 2, 0xfa, val) 14177532SSean.Ye@Sun.COM #define ERR2_THR_WR(val) nb_pci_putw(0, 16, 2, 0xfc, val) 14187532SSean.Ye@Sun.COM #define MCERR_THR_WR(val) nb_pci_putw(0, 16, 2, 0xfe, val) 14197532SSean.Ye@Sun.COM #define CTSTS_WR(val) nb_pci_putb(0, 16, 4, 0xee, val) 14207532SSean.Ye@Sun.COM #define THRTSTS_WR(val) nb_pci_putw(0, 16, 3, 0x68, val) 14217532SSean.Ye@Sun.COM 14227532SSean.Ye@Sun.COM #define ERR_FAT_THR_F2 0x02 /* >tnid thermal event with intelligent */ 14237532SSean.Ye@Sun.COM /* throttling disabled */ 14247532SSean.Ye@Sun.COM #define ERR_FAT_THR_F1 0x01 /* catastrophic on-die thermal event */ 14257532SSean.Ye@Sun.COM 14267532SSean.Ye@Sun.COM #define ERR_NF_THR_F5 0x10 /* deadman timeout on cooling update */ 14277532SSean.Ye@Sun.COM #define ERR_NF_THR_F4 0x08 /* TSMAX Updated */ 14287532SSean.Ye@Sun.COM #define ERR_NF_THR_F3 0x04 /* On-die throttling event */ 14297532SSean.Ye@Sun.COM 14307532SSean.Ye@Sun.COM #define EMASK_THR_FATAL (ERR_FAT_THR_F2|ERR_FAT_THR_F1) 14317532SSean.Ye@Sun.COM #define EMASK_THR_NF (ERR_NF_THR_F5|ERR_NF_THR_F4|ERR_NF_THR_F3) 14327532SSean.Ye@Sun.COM 14337532SSean.Ye@Sun.COM #define EMASK_THR_F5 0x0010 /* deadman timeout on cooling update */ 14347532SSean.Ye@Sun.COM #define EMASK_THR_F4 0x0008 /* TSMAX Updated */ 14357532SSean.Ye@Sun.COM #define EMASK_THR_F3 0x0004 /* On-die throttling event */ 14367532SSean.Ye@Sun.COM #define EMASK_THR_F2 0x0002 /* >tnid thermal event with intelligent */ 14377532SSean.Ye@Sun.COM /* throttling disabled */ 14387532SSean.Ye@Sun.COM #define EMASK_THR_F1 0x0001 /* catastrophic on-die thermal event */ 14397532SSean.Ye@Sun.COM 144010049SVuong.Nguyen@Sun.COM /* dimm type */ 144110049SVuong.Nguyen@Sun.COM #define SPD_MEM_TYPE 2 144210049SVuong.Nguyen@Sun.COM #define SPD_DDR2 8 144310049SVuong.Nguyen@Sun.COM #define SPD_FBDIMM 9 144410049SVuong.Nguyen@Sun.COM 14457532SSean.Ye@Sun.COM #ifdef __cplusplus 14467532SSean.Ye@Sun.COM } 14477532SSean.Ye@Sun.COM #endif 14487532SSean.Ye@Sun.COM 14497532SSean.Ye@Sun.COM #endif /* _NB5000_H */ 1450