1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #ifndef _MC_INTEL_H 28 #define _MC_INTEL_H 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 #define FM_EREPORT_CPU_INTEL "intel" 35 36 #define MCINTEL_NVLIST_VERSTR "mcintel-nvlist-version" 37 #define MCINTEL_NVLIST_VERS0 0 38 39 #define MCINTEL_NVLIST_VERS MCINTEL_NVLIST_VERS0 40 41 #define MCINTEL_NVLIST_MEM "memory-controller" 42 #define MCINTEL_NVLIST_NMEM "memory-controllers" 43 #define MCINTEL_NVLIST_MC "memory-channels" 44 #define MCINTEL_NVLIST_DIMMS "memory-dimms" 45 #define MCINTEL_NVLIST_DIMMSZ "memory-dimm-size" 46 #define MCINTEL_NVLIST_NRANKS "dimm-max-ranks" 47 #define MCINTEL_NVLIST_RANKS "dimm-ranks" 48 #define MCINTEL_NVLIST_1ST_RANK "dimm-start-rank" 49 #define MCINTEL_NVLIST_ROWS "dimm-rows" 50 #define MCINTEL_NVLIST_COL "dimm-column" 51 #define MCINTEL_NVLIST_BANK "dimm-banks" 52 #define MCINTEL_NVLIST_WIDTH "dimm-width" 53 #define MCINTEL_NVLIST_MID "dimm-manufacture-id" 54 #define MCINTEL_NVLIST_MLOC "dimm-manufacture-location" 55 #define MCINTEL_NVLIST_MWEEK "dimm-manufacture-week" 56 #define MCINTEL_NVLIST_MYEAR "dimm-manufacture-year" 57 #define MCINTEL_NVLIST_SERIALNO "dimm-serial-number" 58 #define MCINTEL_NVLIST_PARTNO "dimm-part-number" 59 #define MCINTEL_NVLIST_REV "dimm-part-rev" 60 61 #define FM_EREPORT_PAYLOAD_NAME_FERR_GLOBAL "ferr_global" 62 #define FM_EREPORT_PAYLOAD_NAME_NERR_GLOBAL "nerr_global" 63 #define FM_EREPORT_PAYLOAD_NAME_FSB "fsb" 64 #define FM_EREPORT_PAYLOAD_NAME_FERR_FAT_FSB "ferr_fat_fsb" 65 #define FM_EREPORT_PAYLOAD_NAME_NERR_FAT_FSB "nerr_fat_fsb" 66 #define FM_EREPORT_PAYLOAD_NAME_FERR_NF_FSB "ferr_nf_fsb" 67 #define FM_EREPORT_PAYLOAD_NAME_NERR_NF_FSB "nerr_nf_fsb" 68 #define FM_EREPORT_PAYLOAD_NAME_NRECFSB "nrecfsb" 69 #define FM_EREPORT_PAYLOAD_NAME_NRECFSB_ADDR "nrecfsb_addr" 70 #define FM_EREPORT_PAYLOAD_NAME_RECFSB "recfsb" 71 #define FM_EREPORT_PAYLOAD_NAME_PEX "pex" 72 #define FM_EREPORT_PAYLOAD_NAME_PEX_FAT_FERR "pex_fat_ferr" 73 #define FM_EREPORT_PAYLOAD_NAME_PEX_FAT_NERR "pex_fat_nerr" 74 #define FM_EREPORT_PAYLOAD_NAME_PEX_NF_CORR_FERR "pex_nf_corr_ferr" 75 #define FM_EREPORT_PAYLOAD_NAME_PEX_NF_CORR_NERR "pex_nf_corr_nerr" 76 #define FM_EREPORT_PAYLOAD_NAME_UNCERRSEV "uncerrsev" 77 #define FM_EREPORT_PAYLOAD_NAME_RPERRSTS "rperrsts" 78 #define FM_EREPORT_PAYLOAD_NAME_RPERRSID "rperrsid" 79 #define FM_EREPORT_PAYLOAD_NAME_UNCERRSTS "uncerrsts" 80 #define FM_EREPORT_PAYLOAD_NAME_AERRCAPCTRL "aerrcapctrl" 81 #define FM_EREPORT_PAYLOAD_NAME_CORERRSTS "corerrsts" 82 #define FM_EREPORT_PAYLOAD_NAME_PEXDEVSTS "pexdevsts" 83 #define FM_EREPORT_PAYLOAD_NAME_FERR_FAT_INT "ferr_fat_int" 84 #define FM_EREPORT_PAYLOAD_NAME_FERR_NF_INT "ferr_nf_int" 85 #define FM_EREPORT_PAYLOAD_NAME_NERR_FAT_INT "nerr_fat_int" 86 #define FM_EREPORT_PAYLOAD_NAME_NERR_NF_INT "nerr_nf_int" 87 #define FM_EREPORT_PAYLOAD_NAME_NRECINT "nrecint" 88 #define FM_EREPORT_PAYLOAD_NAME_RECINT "recint" 89 #define FM_EREPORT_PAYLOAD_NAME_NRECSF "nrecsf" 90 #define FM_EREPORT_PAYLOAD_NAME_RECSF "recsf" 91 #define FM_EREPORT_PAYLOAD_NAME_RANK "rank" 92 #define FM_EREPORT_PAYLOAD_NAME_BANK "bank" 93 #define FM_EREPORT_PAYLOAD_NAME_CAS "cas" 94 #define FM_EREPORT_PAYLOAD_NAME_RAS "ras" 95 #define FM_EREPORT_PAYLOAD_NAME_FERR_FAT_FBD "ferr_fat_fbd" 96 #define FM_EREPORT_PAYLOAD_NAME_NERR_FAT_FBD "nerr_fat_fbd" 97 #define FM_EREPORT_PAYLOAD_NAME_VALIDLOG "validlog" 98 #define FM_EREPORT_PAYLOAD_NAME_NRECMEMA "nrecmema" 99 #define FM_EREPORT_PAYLOAD_NAME_NRECMEMB "nrecmemb" 100 #define FM_EREPORT_PAYLOAD_NAME_NRECFGLOG "nrecfglog" 101 #define FM_EREPORT_PAYLOAD_NAME_NRECFBDA "nrecfbda" 102 #define FM_EREPORT_PAYLOAD_NAME_NRECFBDB "nrecfbdb" 103 #define FM_EREPORT_PAYLOAD_NAME_NRECFBDC "nrecfbdc" 104 #define FM_EREPORT_PAYLOAD_NAME_NRECFBDD "nrecfbdd" 105 #define FM_EREPORT_PAYLOAD_NAME_NRECFBDE "nrecfbde" 106 #define FM_EREPORT_PAYLOAD_NAME_NRECFBDF "nrecfbdf" 107 #define FM_EREPORT_PAYLOAD_NAME_SPCPC "spcpc" 108 #define FM_EREPORT_PAYLOAD_NAME_SPCPS "spcps" 109 #define FM_EREPORT_PAYLOAD_NAME_UERRCNT "uerrcnt" 110 #define FM_EREPORT_PAYLOAD_NAME_UERRCNT_LAST "uerrcnt_last" 111 #define FM_EREPORT_PAYLOAD_NAME_BADRAM "badram" 112 #define FM_EREPORT_PAYLOAD_NAME_BADRAMA "badrama" 113 #define FM_EREPORT_PAYLOAD_NAME_BADRAMB "badramb" 114 #define FM_EREPORT_PAYLOAD_NAME_BADCNT "badcnt" 115 #define FM_EREPORT_PAYLOAD_NAME_MC "mc" 116 #define FM_EREPORT_PAYLOAD_NAME_MCA "mca" 117 #define FM_EREPORT_PAYLOAD_NAME_TOLM "tolm" 118 #define FM_EREPORT_PAYLOAD_NAME_MIR "mir" 119 #define FM_EREPORT_PAYLOAD_NAME_MTR "mtr" 120 #define FM_EREPORT_PAYLOAD_NAME_DMIR "dmir" 121 #define FM_EREPORT_PAYLOAD_NAME_FERR_NF_FBD "ferr_nf_fbd" 122 #define FM_EREPORT_PAYLOAD_NAME_NERR_NF_FBD "nerr_nf_fbd" 123 #define FM_EREPORT_PAYLOAD_NAME_FERR_NF_MEM "ferr_nf_mem" 124 #define FM_EREPORT_PAYLOAD_NAME_NERR_NF_MEM "nerr_nf_mem" 125 #define FM_EREPORT_PAYLOAD_NAME_RECMEMA "recmema" 126 #define FM_EREPORT_PAYLOAD_NAME_RECMEMB "recmemb" 127 #define FM_EREPORT_PAYLOAD_NAME_REDMEMA "redmema" 128 #define FM_EREPORT_PAYLOAD_NAME_REDMEMB "redmemb" 129 #define FM_EREPORT_PAYLOAD_NAME_RECFGLOG "recfglog" 130 #define FM_EREPORT_PAYLOAD_NAME_RECFBDA "recfbda" 131 #define FM_EREPORT_PAYLOAD_NAME_RECFBDB "recfbdb" 132 #define FM_EREPORT_PAYLOAD_NAME_RECFBDC "recfbdc" 133 #define FM_EREPORT_PAYLOAD_NAME_RECFBDD "recfbdd" 134 #define FM_EREPORT_PAYLOAD_NAME_RECFBDE "recfbde" 135 #define FM_EREPORT_PAYLOAD_NAME_RECFBDF "recfbdf" 136 #define FM_EREPORT_PAYLOAD_NAME_CERRCNT "cerrcnt" 137 #define FM_EREPORT_PAYLOAD_NAME_CERRCNT_LAST "cerrcnt_last" 138 #define FM_EREPORT_PAYLOAD_NAME_CERRCNT_EXT "cerrcnt_ext" 139 #define FM_EREPORT_PAYLOAD_NAME_CERRCNT_EXT_LAST "cerrcnt_ext_last" 140 #define FM_EREPORT_PAYLOAD_NAME_CERRCNTA "cerrcnta" 141 #define FM_EREPORT_PAYLOAD_NAME_CERRCNTB "cerrcntb" 142 #define FM_EREPORT_PAYLOAD_NAME_CERRCNTC "cerrcntc" 143 #define FM_EREPORT_PAYLOAD_NAME_CERRCNTD "cerrcntd" 144 #define FM_EREPORT_PAYLOAD_NAME_CERRCNTA_LAST "cerrcnta_last" 145 #define FM_EREPORT_PAYLOAD_NAME_CERRCNTB_LAST "cerrcntb_last" 146 #define FM_EREPORT_PAYLOAD_NAME_CERRCNTC_LAST "cerrcntc_last" 147 #define FM_EREPORT_PAYLOAD_NAME_CERRCNTD_LAST "cerrcntd_last" 148 #define FM_EREPORT_PAYLOAD_NAME_PCISTS "pcists" 149 #define FM_EREPORT_PAYLOAD_NAME_PEXDEVSTS "pexdevsts" 150 #define FM_EREPORT_PAYLOAD_NAME_ERROR_NO "intel-error-list" 151 152 #define FM_EREPORT_PAYLOAD_NAME_CTSTS "ctsts" 153 #define FM_EREPORT_PAYLOAD_NAME_THRTSTS "thrtsts" 154 #define FM_EREPORT_PAYLOAD_NAME_FERR_FAT_THR "ferr_fat_thr" 155 #define FM_EREPORT_PAYLOAD_NAME_NERR_FAT_THR "nerr_fat_thr" 156 #define FM_EREPORT_PAYLOAD_NAME_FERR_NF_THR "ferr_nf_thr" 157 #define FM_EREPORT_PAYLOAD_NAME_NERR_NF_THR "nerr_nf_thr" 158 159 #define FM_EREPORT_PAYLOAD_NAME_ADDR "addr" 160 #define FM_EREPORT_PAYLOAD_NAME_BANK_NUM "bank-number" 161 #define FM_EREPORT_PAYLOAD_NAME_BANK_MISC "bank-misc" 162 #define FM_EREPORT_PAYLOAD_NAME_BANK_STAT "bank-status" 163 #define FM_EREPORT_PAYLOAD_NAME_BANK_OFFSET "bank-offset" 164 #define FM_EREPORT_PAYLOAD_NAME_MC_TYPE "mc-type" 165 #define FM_EREPORT_PAYLOAD_CPUID "cpuid" 166 167 #define FM_EREPORT_PAYLOAD_BQR "Bus-queue-request" 168 #define FM_EREPORT_PAYLOAD_BQET "Bus-queue-error-type" 169 #define FM_EREPORT_PAYLOAD_FRC "FRC-error" 170 #define FM_EREPORT_PAYLOAD_BERR "BERR" 171 #define FM_EREPORT_PAYLOAD_INT_BINT "Internal-BINT" 172 #define FM_EREPORT_PAYLOAD_EXT_BINT "External-BINT" 173 #define FM_EREPORT_PAYLOAD_BUS_BINT "Bus-BINT" 174 #define FM_EREPORT_PAYLOAD_TO_BINT "Timeout-BINT" 175 #define FM_EREPORT_PAYLOAD_HARD "Hard-error" 176 #define FM_EREPORT_PAYLOAD_IERR "IERR" 177 #define FM_EREPORT_PAYLOAD_AERR "AERR" 178 #define FM_EREPORT_PAYLOAD_UERR "UERR" 179 #define FM_EREPORT_PAYLOAD_CECC "CECC" 180 #define FM_EREPORT_PAYLOAD_UECC "UECC" 181 #define FM_EREPORT_PAYLOAD_ECC_SYND "ECC-syndrome" 182 183 #define FM_EREPORT_PAYLOAD_FSB_PARITY "fsb-address-parity" 184 #define FM_EREPORT_PAYLOAD_RESP_HF "response-hard-fail" 185 #define FM_EREPORT_PAYLOAD_RESP_PARITY "response-parity" 186 #define FM_EREPORT_PAYLOAD_DATA_PARITY "bus-data-parity" 187 #define FM_EREPORT_PAYLOAD_INV_PIC "invalid-pic-request" 188 #define FM_EREPORT_PAYLOAD_PAD_SM "pad-state-machine" 189 #define FM_EREPORT_PAYLOAD_PAD_SG "pad-strobe-glitch" 190 191 #define FM_EREPORT_PAYLOAD_TAG "tag-error" 192 #define FM_EREPORT_PAYLOAD_TAG_CLEAN "clean" 193 #define FM_EREPORT_PAYLOAD_TAG_HIT "hit" 194 #define FM_EREPORT_PAYLOAD_TAG_MISS "miss" 195 #define FM_EREPORT_PAYLOAD_DATA "data-error" 196 #define FM_EREPORT_PAYLOAD_DATA_SINGLE "single-bit" 197 #define FM_EREPORT_PAYLOAD_DATA_DBL_CLEAN "double-bit-clean" 198 #define FM_EREPORT_PAYLOAD_DATA_DBL_MOD "double-bit-modified" 199 #define FM_EREPORT_PAYLOAD_L3 "l3-cache" 200 #define FM_EREPORT_PAYLOAD_INV_PIC "invalid-pic-request" 201 #define FM_EREPORT_PAYLOAD_CACHE_NERRORS "cache-error-count" 202 203 #define FM_EREPORT_PAYLOAD_NAME_RESOURCE "resource" 204 #define FM_EREPORT_PAYLOAD_MEM_ECC_COUNTER_THIS "mem_cor_ecc_counter" 205 #define FM_EREPORT_PAYLOAD_MEM_ECC_COUNTER_LAST "mem_cor_ecc_counter_last" 206 207 #define INTEL_NB_5000P 0x25d88086 208 #define INTEL_NB_5000V 0x25d48086 209 #define INTEL_NB_5000X 0x25c08086 210 #define INTEL_NB_5000Z 0x25d08086 211 #define INTEL_NB_5100 0x65c08086 212 #define INTEL_NB_5400 0x40008086 213 #define INTEL_NB_5400A 0x40018086 214 #define INTEL_NB_5400B 0x40038086 215 #define INTEL_NB_7300 0x36008086 216 217 #define INTEL_NHM 0x2c408086 218 #define INTEL_QP_IO 0x34008086 219 #define INTEL_QP_36D 0x34068086 220 #define INTEL_QP_24D 0x34038086 221 #define INTEL_QP_WP 0x34058086 222 #define INTEL_QP_U1 0x34018086 223 #define INTEL_QP_U2 0x34028086 224 #define INTEL_QP_U3 0x34048086 225 #define INTEL_QP_U4 0x34078086 226 #define INTEL_QP_JF 0x37208086 227 #define INTEL_QP_JF0 0x37008086 228 #define INTEL_QP_JF1 0x37018086 229 #define INTEL_QP_JF2 0x37028086 230 #define INTEL_QP_JF3 0x37038086 231 #define INTEL_QP_JF4 0x37048086 232 #define INTEL_QP_JF5 0x37058086 233 #define INTEL_QP_JF6 0x37068086 234 #define INTEL_QP_JF7 0x37078086 235 #define INTEL_QP_JF8 0x37088086 236 #define INTEL_QP_JF9 0x37098086 237 #define INTEL_QP_JFa 0x370a8086 238 #define INTEL_QP_JFb 0x370b8086 239 #define INTEL_QP_JFc 0x370c8086 240 #define INTEL_QP_JFd 0x370d8086 241 #define INTEL_QP_JFe 0x370e8086 242 #define INTEL_QP_JFf 0x370f8086 243 244 /* Intel QuickPath Bus Interconnect Errors */ 245 246 #define MSR_MC_STATUS_QP_HEADER_PARITY (1 << 16) 247 #define MSR_MC_STATUS_QP_DATA_PARITY (1 << 17) 248 #define MSR_MC_STATUS_QP_RETRIES_EXCEEDED (1 << 18) 249 #define MSR_MC_STATUS_QP_POISON (1 << 19) 250 251 #define MSR_MC_STATUS_QP_UNSUPPORTED_MSG (1 << 22) 252 #define MSR_MC_STATUS_QP_UNSUPPORTED_CREDIT (1 << 23) 253 #define MSR_MC_STATUS_QP_FLIT_BUF_OVER (1 << 24) 254 #define MSR_MC_STATUS_QP_FAILED_RESPONSE (1 << 25) 255 #define MSR_MC_STATUS_QP_CLOCK_JITTER (1 << 26) 256 257 #define MSR_MC_MISC_QP_CLASS 0x000000ff 258 #define MSR_MC_MISC_QP_RTID 0x00003f00 259 #define MSR_MC_MISC_QP_RHNID 0x00070000 260 #define MSR_MC_MISC_QP_IIB 0x01000000 261 262 /* Intel QuickPath Memory Errors */ 263 264 #define MCAX86_COMPOUND_BUS_MEMORY 0x0080 265 #define MCAX86_COMPOUND_BUS_MEMORY_MASK 0xff80 266 #define MCAX86_COMPOUND_BUS_MEMORY_TRANSACTION 0x0070 267 #define MCAX86_COMPOUND_BUS_MEMORY_READ 0x0010 268 #define MCAX86_COMPOUND_BUS_MEMORY_WRITE 0x0020 269 #define MCAX86_COMPOUND_BUS_MEMORY_CMD 0x0030 270 #define MCAX86_COMPOUND_BUS_MEMORY_CHANNEL 0x000f 271 272 #define MSR_MC_STATUS_MEM_ECC_READ (1 << 16) 273 #define MSR_MC_STATUS_MEM_ECC_SCRUB (1 << 17) 274 #define MSR_MC_STATUS_MEM_PARITY (1 << 18) 275 #define MSR_MC_STATUS_MEM_REDUNDANT_MEM (1 << 19) 276 #define MSR_MC_STATUS_MEM_SPARE_MEM (1 << 20) 277 #define MSR_MC_STATUS_MEM_ILLEGAL_ADDR (1 << 21) 278 #define MSR_MC_STATUS_MEM_BAD_ID (1 << 22) 279 #define MSR_MC_STATUS_MEM_ADDR_PARITY (1 << 23) 280 #define MSR_MC_STATUS_MEM_BYTE_PARITY (1 << 24) 281 282 #define MSR_MC_MISC_MEM_RTID 0x00000000000000ffULL 283 #define MSR_MC_MISC_MEM_DIMM 0x0000000000030000ULL 284 #define MSR_MC_MISC_MEM_DIMM_SHIFT 16 285 #define MSR_MC_MISC_MEM_CHANNEL 0x00000000000c0000ULL 286 #define MSR_MC_MISC_MEM_CHANNEL_SHIFT 18 287 #define MSR_MC_MISC_MEM_SYNDROME 0xffffffff00000000ULL 288 #define MSR_MC_MISC_MEM_SYNDROME_SHIFT 32 289 290 #define OFFSET_ROW_BANK_COL 0x8000000000000000ULL 291 #define OFFSET_RANK_SHIFT 52 292 #define OFFSET_RAS_SHIFT 32 293 #define OFFSET_BANK_SHIFT 24 294 #define TCODE_OFFSET(rank, bank, ras, cas) (OFFSET_ROW_BANK_COL | \ 295 ((uint64_t)(rank) << OFFSET_RANK_SHIFT) | \ 296 ((uint64_t)(ras) << OFFSET_RAS_SHIFT) | \ 297 ((uint64_t)(bank) << OFFSET_BANK_SHIFT) | (cas)) 298 299 #define MAX_CAS_MASK 0xFFFFFF 300 #define MAX_BANK_MASK 0xFF 301 #define MAX_RAS_MASK 0xFFFFF 302 #define MAX_RANK_MASK 0x7FF 303 #define TCODE_OFFSET_RANK(tcode) \ 304 (((tcode) >> OFFSET_RANK_SHIFT) & MAX_RANK_MASK) 305 #define TCODE_OFFSET_RAS(tcode) (((tcode) >> OFFSET_RAS_SHIFT) & MAX_RAS_MASK) 306 #define TCODE_OFFSET_BANK(tcode) \ 307 (((tcode) >> OFFSET_BANK_SHIFT) & MAX_BANK_MASK) 308 #define TCODE_OFFSET_CAS(tcode) ((tcode) & MAX_CAS_MASK) 309 310 #ifdef __cplusplus 311 } 312 #endif 313 314 #endif /* _MC_INTEL_H */ 315