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