blob: c5c30826f108683594e711dec3327e2022b642a2 [file] [log] [blame]
Anton Kochkov54c07a62012-07-04 07:35:45 +04001/*
2 * This file is part of msrtool.
3 *
4 * Copyright (C) 2012 Anton Kochkov <anton.kochkov@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
Anton Kochkov54c07a62012-07-04 07:35:45 +040014 */
15
16#include "msrtool.h"
17
Anton Kochkov59b36f12012-07-21 07:29:48 +040018int intel_nehalem_probe(const struct targetdef *target, const struct cpuid_t *id) {
Lubomir Rintel199a23c2017-01-22 22:19:24 +010019 return ((VENDOR_INTEL == id->vendor) &&
20 (0x6 == id->family) && (
Anton Kochkov54c07a62012-07-04 07:35:45 +040021 (0x1a == id->model) ||
22 (0x1e == id->model) ||
23 (0x1f == id->model) ||
Alexander Couzensc768f922015-01-27 13:30:52 +010024 (0x2e == id->model) ||
25 (0x25 == id->model) || /* westmere */
26 (0x2c == id->model) || /* westmere */
27 (0x2f == id->model) /* westmere */
Anton Kochkov54c07a62012-07-04 07:35:45 +040028 ));
29}
30
31const struct msrdef intel_nehalem_msrs[] = {
Patrick Georgi5c65d002020-01-29 13:45:45 +010032 {0x17, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PLATFORM_ID Register",
Anton Kochkov54c07a62012-07-04 07:35:45 +040033 "Model Specific Platform ID", {
34 { 63, 11, RESERVED },
35 { 52, 3, RESERVED },
36 { 49, 37, RESERVED },
37 { 12, 5, "Maximum Qualified Ratio:", "The maximum allowed bus ratio",
38 PRESENT_DEC, {
39 { BITVAL_EOT }
40 }},
41 { 7, 8, RESERVED },
42 { BITS_EOT }
43 }},
44 /* FIXME: This MSR not documented for Nehalem */
Patrick Georgi5c65d002020-01-29 13:45:45 +010045 {0xcd, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_FSB_FREQ", "Scalable Bus Speed", {
Patrick Georgifbbef022020-01-29 13:31:16 +010046 /* This field indicates the intended scalable bus clock speed */
Anton Kochkov54c07a62012-07-04 07:35:45 +040047 { BITS_EOT }
48 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010049 {0xce, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_PLATFORM_INFO", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +040050 { 63, 16, RESERVED },
51 { 47, 8, "Maximum Efficiency Ratio", "R/O", PRESENT_DEC, {
52 { BITVAL_EOT }
53 }},
54 { 39, 10, RESERVED },
55 { 29, 1, "Programmable TDC-TDP Limit for Turbo Mode", "R/O", PRESENT_DEC, {
56 { MSR1(0), "TDC and TDP Limits for Turbo Mode are not programmable" },
57 { MSR1(1), "TDC and TDP Limits for Turbo Mode are programmable" },
58 { BITVAL_EOT }
59 }},
60 { 28, 1, "Programmable Ratio Limit for Turbo Mode", "R/O", PRESENT_DEC, {
61 { MSR1(0), "Programmable Ratio Limit for Turbo Mode is disabled" },
62 { MSR1(1), "Programmable Ratio Limit for Turbo Mode is enabled" },
63 { BITVAL_EOT }
64 }},
65 { 27, 12, RESERVED },
66 { 15, 8, "Maximum Non-Turbo Ratio", "R/O", PRESENT_DEC, {
67 /* The is ratio of the frequency that invariant TSC runs at. The invariant
68 * TSC requency can be computed by multipying this ratio by 133.33 Mhz
69 */
70 { BITVAL_EOT }
71 }},
72 { 7, 8, RESERVED },
73 { BITS_EOT }
74 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010075 {0x11e, MSRTYPE_RDWR, MSR2(0, 0), "MSR_BBL_CR_CTL3", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +040076 { BITS_EOT }
77 }},
78 /* FIXME: There is already two 0x1ad MSRs for Nehalem in the
79 * Intel 64 and IA-32 Architectures Software Developer's Manual
80 * Volume 3C 34-91. But from decimal value of this register,
81 * we can conclude, that it was just typo, and this register
82 * have address 0x1ac.
83 */
Patrick Georgi5c65d002020-01-29 13:45:45 +010084 {0x1ac, MSRTYPE_RDWR, MSR2(0, 0), "MSR_TURBO_POWER_CURRENT_LIMIT", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +040085 { 63, 32, RESERVED },
86 { 31, 1, "TDC Limit Override Enable", "R/W", PRESENT_BIN, {
87 { MSR1(0), "TDC Limit Override is not active" },
88 { MSR1(1), "TDC Limit Override is active" },
89 { BITVAL_EOT }
90 }},
91 { 30, 15, "TDC Limit", "R/W", PRESENT_HEX, {
92 /* TDC Limit in 1/8 Amp granularity */
93 { BITVAL_EOT }
94 }},
95 { 15, 1, "TDP Limit Override Enable", "R/W", PRESENT_BIN, {
96 { MSR1(0), "TDP Limit Override is not active" },
97 { MSR1(1), "TDP Limit Override is active" },
98 { BITVAL_EOT }
99 }},
100 { 14, 15, "TDP Limit", "R/W", PRESENT_HEX, {
101 /* TDP Limit in 1/8 Watt granularity */
102 { BITVAL_EOT }
103 }},
104 { BITS_EOT }
105 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100106 {0x1ad, MSRTYPE_RDWR, MSR2(0, 0), "MSR_TURBO_RATIO_LIMIT",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400107 "Maximum Ratio Limit of Turbo Mode", {
108 // "RO" if MSR_PLATFORM_INFO.[28] = 0
109 // "RW" if MSR_PLATFORM_INFO.[23] = 1
110 { 63, 32, RESERVED },
111 { 31, 8, "Maximum Ratio Limit for 4C", "R/O", PRESENT_HEX, {
112 // Maximum Turbo Ratio Limit of 4 core active
113 { BITVAL_EOT }
114 }},
115 { 23, 8, "Maximum Ratio Limit for 3C", "R/O", PRESENT_HEX, {
116 // Maximum Turbo Ratio Limit of 3 core active
117 { BITVAL_EOT }
118 }},
119 { 15, 8, "Maximum Ratio Limit for 2C", "R/O", PRESENT_HEX, {
120 // Maximum Turbo Ratio Limit of 2 core active
121 { BITVAL_EOT }
122 }},
123 { 7, 8, "Maximum Ratio Limit for 1C", "R/O", PRESENT_HEX, {
124 // Maximum Turbo Ratio Limit of 1 core active
125 { BITVAL_EOT }
126 }},
127 { BITS_EOT }
128 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100129 {0x280, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_CTL2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400130 { 63, 33, RESERVED },
131 { 30, 1, "CMCI_EN", "R/W", PRESENT_BIN, {
132 { BITVAL_EOT }
133 }},
134 { 29, 15, RESERVED },
135 { 14, 15, "Corrected error count threshold", "R/W", PRESENT_HEX, {
136 { BITVAL_EOT }
137 }},
138 { BITS_EOT }
139 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100140 {0x281, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_CTL2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400141 { 63, 33, RESERVED },
142 { 30, 1, "CMCI_EN", "R/W", PRESENT_BIN, {
143 { BITVAL_EOT }
144 }},
145 { 29, 15, RESERVED },
146 { 14, 15, "Corrected error count threshold", "R/W", PRESENT_HEX, {
147 { BITVAL_EOT }
148 }},
149 { BITS_EOT }
150 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100151 {0x286, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC6_CTL2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400152 { 63, 33, RESERVED },
153 { 30, 1, "CMCI_EN", "R/W", PRESENT_BIN, {
154 { BITVAL_EOT }
155 }},
156 { 29, 15, RESERVED },
157 { 14, 15, "Corrected error count threshold", "R/W", PRESENT_HEX, {
158 { BITVAL_EOT }
159 }},
160 { BITS_EOT }
161 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100162 {0x287, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC7_CTL2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400163 { 63, 33, RESERVED },
164 { 30, 1, "CMCI_EN", "R/W", PRESENT_BIN, {
165 { BITVAL_EOT }
166 }},
167 { 29, 15, RESERVED },
168 { 14, 15, "Corrected error count threshold", "R/W", PRESENT_HEX, {
169 { BITVAL_EOT }
170 }},
171 { BITS_EOT }
172 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100173 {0x288, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC8_CTL2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400174 { 63, 33, RESERVED },
175 { 30, 1, "CMCI_EN", "R/W", PRESENT_BIN, {
176 { BITVAL_EOT }
177 }},
178 { 29, 15, RESERVED },
179 { 14, 15, "Corrected error count threshold", "R/W", PRESENT_HEX, {
180 { BITVAL_EOT }
181 }},
182 { BITS_EOT }
183 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100184 {0x3f8, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_PKG_C3_RESIDENCY", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400185 { 63, 64, "Package C3 Residency Counter", "R/O", PRESENT_DEC, {
186 /* Value since last reset that this package is in C3 states.
187 * Count at the same frequency as the TSC.
188 */
189 { BITVAL_EOT }
190 }},
191 { BITS_EOT }
192 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100193 {0x3f9, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_PKG_C6_RESIDENCY", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400194 { BITS_EOT }
195 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100196 {0x3fa, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_PKG_C7_RESIDENCY", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400197 { BITS_EOT }
198 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100199 {0x418, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC6_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400200 { BITS_EOT }
201 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100202 {0x419, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC6_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400203 { BITS_EOT }
204 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100205 {0x41a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC6_ADDR", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400206 { BITS_EOT }
207 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100208 {0x41b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC6_MISC", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400209 { BITS_EOT }
210 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100211 {0x41c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC7_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400212 { BITS_EOT }
213 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100214 {0x41d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC7_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400215 { BITS_EOT }
216 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100217 {0x41e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC7_ADDR", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400218 { BITS_EOT }
219 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100220 {0x41f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC7_MISC", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400221 { BITS_EOT }
222 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100223 {0x420, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC8_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400224 { BITS_EOT }
225 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100226 {0x421, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC8_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400227 { BITS_EOT }
228 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100229 {0x422, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC8_ADDR", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400230 { BITS_EOT }
231 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100232 {0x423, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC8_MISC", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400233 { BITS_EOT }
234 }},
235
236/* ==========================================================================
237 * Per core MSRs
238 * ==========================================================================
239 */
240
Patrick Georgi5c65d002020-01-29 13:45:45 +0100241 {0x0, MSRTYPE_RDWR, MSR2(0, 0), "IA32_P5_MC_ADDR",
242 "Pentium Processor Machine-Check Exception Address", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400243 { BITS_EOT }
244 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100245 {0x1, MSRTYPE_RDWR, MSR2(0, 0), "IA32_P5_MC_TYPE",
246 "Pentium Processor Machine-Check Exception Type", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400247 { BITS_EOT }
248 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100249 {0x6, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MONITOR_FILTER_SIZE", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400250 { BITS_EOT }
251 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100252 {0x10, MSRTYPE_RDWR, MSR2(0, 0), "IA32_TIME_STEP_COUNTER", "TSC", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400253 { BITS_EOT }
254 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100255 {0x1b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_APIC_BASE", "APIC BASE", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400256 /* In Intel's manual there is MAXPHYWID,
257 * which determine index of highest bit of
258 * APIC Base itself, so marking it as
259 * 'RESERVED'.
260 */
261 { 63, 52, RESERVED },
262 { 11, 1, "APIC Global Enable", "R/W", PRESENT_BIN, {
263 { BITVAL_EOT }
264 }},
265 { 10, 1, "x2APIC mode", "R/W", PRESENT_BIN, {
266 { MSR1(0), "x2APIC mode is disabled" },
267 { MSR1(1), "x2APIC mode is enabled" },
268 { BITVAL_EOT }
269 }},
270 { 9, 1, RESERVED },
271 { 8, 1, "BSP Flag", "R/W", PRESENT_BIN, {
272 { BITVAL_EOT }
273 }},
274 { 7, 8, RESERVED },
275 { BITS_EOT }
276 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100277 {0x34, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_SMI_COUNT", "SMI Counter register", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400278 { 63, 32, RESERVED },
279 { 31, 32, "SMI Count", "R/O", PRESENT_HEX, {
280 { BITVAL_EOT }
281 }},
282 { BITS_EOT }
283 }},
284 /* if CPUID.01H: ECX[bit 5 or bit 6] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100285 {0x3a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FEATURE_CONTROL",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400286 "Control features in Intel 64Processor", {
287 { 63, 48, RESERVED },
288 /* if CPUID.01H: ECX[6] = 1 */
289 { 15, 1, "SENTER Global Enable", "R/WL", PRESENT_BIN, {
290 { MSR1(0), "SENTER leaf functions are disabled" },
291 { MSR1(1), "SENTER leaf functions are enabled" },
292 { BITVAL_EOT }
293 }},
294 /* if CPUID.01H: ECX[6] = 1 */
295 { 14, 7, "SENTER Local Function Enables", "R/WL", PRESENT_BIN, {
296 { BITVAL_EOT }
297 }},
298 { 7, 5, RESERVED },
299 /* if CPUID.01H: ECX[5 or 6] = 1 */
300 { 2, 1, "VMX outside of SMX operation", "R/WL", PRESENT_BIN, {
301 /* This bit enables VMX for system executive
302 * that do not require SMX.
303 */
304 { MSR1(0), "VMX outside of SMX operation disabled" },
305 { MSR1(1), "VMX outside of SMX operation enabled" },
306 { BITVAL_EOT }
307 }},
308 { 1, 1, "VMX inside of SMX operation", "R/WL", PRESENT_BIN, {
309 /* This bit enables a system executive to use
Elyes HAOUAS75db59662018-08-23 18:16:26 +0200310 * VMX in conjunction with SMX to support Intel
Anton Kochkov54c07a62012-07-04 07:35:45 +0400311 * Trusted Execution Technology.
312 */
313 { MSR1(0), "VMX inside of SMX operation disabled" },
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400314 { MSR1(1), "VMX inside of SMX operation enabled" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400315 { BITVAL_EOT }
316 }},
317 /* if CPUID.01H: ECX[5 or 6] = 1 */
318 { 0, 1, "Lock bit", "R/WO", PRESENT_BIN, {
319 /* Once the Lock bit is set, the contents
320 * of this register cannot be modified.
321 * Therefore the lock bit must be set after
322 * configuring support for Intel Virtualization
323 * Technology and prior transferring control
324 * to an Option ROM or bootloader. Hence, once
325 * the lock bit is set, the entire IA32_FEATURE_CONTROL_MSR
326 * contents are preserved across RESET when
327 * PWRGOOD it not deasserted.
328 */
329 { MSR1(0), "IA32_FEATURE_CONTROL MSR can be modified" },
330 { MSR1(1), "IA32_FEATURE_CONTROL MSR cannot be modified" },
331 { BITVAL_EOT }
332 }},
333 { BITS_EOT }
334 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100335 {0x40, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_0_FROM_IP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400336 { BITS_EOT }
337 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100338 {0x41, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_1_FROM_IP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400339 { BITS_EOT }
340 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100341 {0x42, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_2_FROM_IP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400342 { BITS_EOT }
343 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100344 {0x43, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_3_FROM_IP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400345 { BITS_EOT }
346 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100347 {0x60, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_0_TO_LIP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400348 { BITS_EOT }
349 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100350 {0x61, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_1_TO_LIP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400351 { BITS_EOT }
352 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100353 {0x62, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_2_TO_LIP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400354 { BITS_EOT }
355 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100356 {0x63, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_3_TO_LIP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400357 { BITS_EOT }
358 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100359 {0x79, MSRTYPE_RDWR, MSR2(0, 0), "IA32_BIOS_UPDT_TRIG",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400360 "BIOS Update Trigger Register (W)", {
361 { BITS_EOT }
362 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100363 {0x8b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_BIOS_SIGN_ID",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400364 "BIOS Update Signature ID (RO)", {
365 { BITS_EOT }
366 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100367 {0xa0, MSRTYPE_RDWR, MSR2(0, 0), "MSR_SMRR_PHYS_BASE", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400368 { BITS_EOT }
369 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100370 {0xa1, MSRTYPE_RDWR, MSR2(0, 0), "MSR_SMRR_PHYS_MASK", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400371 { BITS_EOT }
372 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100373 {0xc1, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PMC0",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400374 "Performance counter register", {
375 { BITS_EOT }
376 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100377 {0xc2, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PMC1",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400378 "Performance counter register", {
379 { BITS_EOT }
380 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100381 {0xc3, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PMC2",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400382 "Performance counter register", {
383 { BITS_EOT }
384 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100385 {0xc4, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PMC3",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400386 "Performance counter register", {
387 { BITS_EOT }
388 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100389 {0xe2, MSRTYPE_RDWR, MSR2(0, 0), "MSR_PKG_CST_CONFIG_CONTROL",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400390 "C-State Configuration Control", {
391 { 63, 37, RESERVED },
392 { 26, 1, "C1 state auto demotion", "R/W", PRESENT_DEC, {
393 { MSR1(0), "Demotion of C3/C6/C7 requests to C1 is disabled" },
394 { MSR1(1), "Demotion of C3/C6/C7 requests to C1 is enabled" },
395 { BITVAL_EOT }
396 }},
397 { 25, 1, "C3 state auto demotion", "R/W", PRESENT_DEC, {
398 { MSR1(0), "Demotion of C6/C7 requests to C3 is disabled" },
399 { MSR1(1), "Demotion of C6/C7 requests to C3 is enabled" },
400 { BITVAL_EOT }
401 }},
402 { 24, 1, "Interrupt filtering enabled/disabled", "R/W", PRESENT_DEC, {
Patrick Georgi5c65d002020-01-29 13:45:45 +0100403 { MSR1(0), "All CPU cores in deep C-State will wake for an "
404 "event message" },
405 { MSR1(1), "CPU in deep C-State will wake only when the event "
406 "message is destined for that core" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400407 { BITVAL_EOT }
408 }},
409 { 23, 8, RESERVED },
410 { 15, 1, "CFG Lock", "R/WO", PRESENT_DEC, {
Patrick Georgi5c65d002020-01-29 13:45:45 +0100411 { MSR1(0), "[15:0] bits of MSR_PKG_CST_CONFIG_CONTROL(0xe2) "
412 "are writeable" },
413 { MSR1(1), "[15:0] bits of MSR_PKG_CST_CONFIG_CONTROL(0xe2) "
414 "are locked until reset" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400415 { BITVAL_EOT }
416 }},
417 { 14, 4, RESERVED },
418 { 10, 1, "I/O MWAIT Redirection", "R/W", PRESENT_DEC, {
419 { MSR1(0), "I/O MWAIT Redirection disabled" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100420 { MSR1(1), "CPU will map IO_read instructions sent to "
421 "IO register specified by MSR_PMG_IO_CAPTURE_BASE "
422 "to MWAIT instructions" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400423 { BITVAL_EOT }
424 }},
425 { 9, 7, RESERVED },
426 { 2, 3, "Package C-State limit", "R/W", PRESENT_BIN, {
427 /* Specifies the lowest processor specific C-state code name
428 * (consuming the least power) for the package. The default is set
429 * as factory-configured package C-state limit.
430 */
431 { MSR1(0), "C0 (no package C-state support)" },
432 { MSR1(1), "C1 (behavior is the same as C0)" },
433 { MSR1(2), "C3" },
434 { MSR1(3), "C6" },
435 { MSR1(4), "C7" },
436 { MSR1(5), "Reserved" },
437 { MSR1(6), "Reserved" },
438 { MSR1(7), "No package C-state limit" },
439 { BITVAL_EOT }
440 /* Note: this field cannot be used to limit
441 * package C-state to C3
442 */
443 }},
444 { BITS_EOT }
445 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100446 {0xe4, MSRTYPE_RDWR, MSR2(0, 0), "MSR_PMG_IO_CAPTURE_BASE",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400447 "Power Management IO Redirection in C-state", {
448 { 63, 45, RESERVED },
449 { 18, 3, "C-state Range", "R/W", PRESENT_BIN, {
450 /* Specifies the encoding value of the maximum C-State code name
451 * to be included when IO read to MWAIT redirection is enabled by
452 * MSR_PMG_CST_CONFIG_CONTROL[bit10].
453 */
454 { MSR1(0), "C3 is the max C-State to include" },
455 { MSR1(1), "C6 is the max C-State to include" },
456 { MSR1(2), "C7 is the max C-State to include" },
457 { BITVAL_EOT }
458 }},
459 { 15, 16, "LVL_2 Base Address", "R/W", PRESENT_HEX, {
460 /* Specifies the base address visible to software for IO redirection.
461 * If I/O MWAIT Redirection is enabled, reads to this address will be
462 * consumed by the power management logic and decoded to MWAIT
463 * instructions. When IO port address redirection is enabled,
464 * this is the I/O port address reported to the OS/software.
465 */
466 { BITVAL_EOT }
467 }},
468 { BITS_EOT }
469 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100470 {0xe7, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MPERF", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400471 { BITS_EOT }
472 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100473 {0xe8, MSRTYPE_RDWR, MSR2(0, 0), "IA32_APERF", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400474 { BITS_EOT }
475 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100476 {0xfe, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRRCAP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400477 { BITS_EOT }
478 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100479 {0x174, MSRTYPE_RDWR, MSR2(0, 0), "IA32_SYSENTER_CS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400480 { BITS_EOT }
481 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100482 {0x175, MSRTYPE_RDWR, MSR2(0, 0), "IA32_SYSENTER_ESP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400483 { BITS_EOT }
484 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100485 {0x176, MSRTYPE_RDWR, MSR2(0, 0), "IA32_SYSENTER_EIP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400486 { BITS_EOT }
487 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100488 {0x179, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MCG_CAP", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400489 { BITS_EOT }
490 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100491 {0x17a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MCG_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400492 { 63, 61, RESERVED },
493 { 2, 1, "MCIP", "R/W", PRESENT_BIN, {
494 /* When set, bit indicates that a machine check has been
495 * generated. If a second machine check is detected while
496 * this bit is still set, the processor enters a shutdown state.
497 * Software should write this bit to 0 after processing
498 * a machine check exception.
499 */
500 { MSR1(0), "Nothing" },
501 { MSR1(1), "Machine check has been generated" },
502 { BITVAL_EOT }
503 }},
504 { 1, 1, "EPIV", "R/W", PRESENT_BIN, {
505 /* When set, bit indicates that the instruction addressed
506 * by the instruction pointer pushed on the stack (when
507 * the machine check was generated) is directly associated
508 * with the error
509 */
510 { MSR1(0), "Nothing" },
511 { MSR1(1), "Instruction addressed directly associated with the error" },
512 { BITVAL_EOT }
513 }},
514 { 0, 1, "RIPV", "R/W", PRESENT_BIN, {
515 /* When set, bit indicates that the instruction addressed
516 * by the instruction pointer pushed on the stack (when
517 * the machine check was generated) can be used to restart
518 * the program. If cleared, the program cannot be reliably restarted
519 */
520 { MSR1(0), "Program cannot be reliably restarted" },
521 { MSR1(1), "Instruction addressed can be used to restart the program" },
522 { BITVAL_EOT }
523 }},
524 { BITS_EOT }
525 }},
526 /* if CPUID.0AH: EAX[15:8] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100527 {0x186, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERFEVTSEL0",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400528 "Performance Event Select Register 0", {
529 { 63, 32, RESERVED },
530 { 31, 8, "CMASK", "R/W", PRESENT_HEX, {
531 /* When CMASK is not zero, the corresponding performance
532 * counter 0 increments each cycle if the event count
533 * is greater than or equal to the CMASK.
534 */
535 { BITVAL_EOT }
536 }},
537 { 23, 1, "INV", "R/W", PRESENT_BIN, {
538 { MSR1(0), "CMASK using as is" },
539 { MSR1(1), "CMASK inerting" },
540 { BITVAL_EOT }
541 }},
542 { 22, 1, "EN", "R/W", PRESENT_BIN, {
543 { MSR1(0), "No commence counting" },
544 { MSR1(1), "Commence counting" },
545 { BITVAL_EOT }
546 }},
547 { 21, 1, "AnyThread", "R/W", PRESENT_BIN, {
548 { BITVAL_EOT }
549 }},
550 { 20, 1, "INT", "R/W", PRESENT_BIN, {
551 { MSR1(0), "Interrupt on counter overflow is disabled" },
552 { MSR1(1), "Interrupt on counter overflow is enabled" },
553 { BITVAL_EOT }
554 }},
555 { 19, 1, "PC", "R/W", PRESENT_BIN, {
556 { MSR1(0), "Disabled pin control" },
557 { MSR1(1), "Enabled pin control" },
558 { BITVAL_EOT }
559 }},
560 { 18, 1, "Edge", "R/W", PRESENT_BIN, {
561 { MSR1(0), "Disabled edge detection" },
562 { MSR1(1), "Enabled edge detection" },
563 { BITVAL_EOT }
564 }},
565 { 17, 1, "OS", "R/W", PRESENT_BIN, {
566 { MSR1(0), "Nothing" },
567 { MSR1(1), "Counts while in privilege level is ring 0" },
568 { BITVAL_EOT }
569 }},
570 { 16, 1, "USR", "R/W", PRESENT_BIN, {
571 { MSR1(0), "Nothing" },
572 { MSR1(1), "Counts while in privilege level is not ring 0" },
573 { BITVAL_EOT }
574 }},
575 { 15, 8, "UMask", "R/W", PRESENT_HEX, {
576 /* Qualifies the microarchitectural condition
577 * to detect on the selected event logic. */
578 { BITVAL_EOT }
579 }},
580 { 7, 8, "Event Select", "R/W", PRESENT_HEX, {
581 /* Selects a performance event logic unit. */
582 { BITVAL_EOT }
583 }},
584 { BITS_EOT }
585 }},
586 /* if CPUID.0AH: EAX[15:8] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100587 {0x187, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERFEVTSEL1",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400588 "Performance Event Select Register 1", {
589 { 63, 32, RESERVED },
590 { 31, 8, "CMASK", "R/W", PRESENT_HEX, {
591 /* When CMASK is not zero, the corresponding performance
592 * counter 1 increments each cycle if the event count
593 * is greater than or equal to the CMASK.
594 */
595 { BITVAL_EOT }
596 }},
597 { 23, 1, "INV", "R/W", PRESENT_BIN, {
598 { MSR1(0), "CMASK using as is" },
599 { MSR1(1), "CMASK inerting" },
600 { BITVAL_EOT }
601 }},
602 { 22, 1, "EN", "R/W", PRESENT_BIN, {
603 { MSR1(0), "No commence counting" },
604 { MSR1(1), "Commence counting" },
605 { BITVAL_EOT }
606 }},
607 { 21, 1, "AnyThread", "R/W", PRESENT_BIN, {
608 { BITVAL_EOT }
609 }},
610 { 20, 1, "INT", "R/W", PRESENT_BIN, {
611 { MSR1(0), "Interrupt on counter overflow is disabled" },
612 { MSR1(1), "Interrupt on counter overflow is enabled" },
613 { BITVAL_EOT }
614 }},
615 { 19, 1, "PC", "R/W", PRESENT_BIN, {
616 { MSR1(0), "Disabled pin control" },
617 { MSR1(1), "Enabled pin control" },
618 { BITVAL_EOT }
619 }},
620 { 18, 1, "Edge", "R/W", PRESENT_BIN, {
621 { MSR1(0), "Disabled edge detection" },
622 { MSR1(1), "Enabled edge detection" },
623 { BITVAL_EOT }
624 }},
625 { 17, 1, "OS", "R/W", PRESENT_BIN, {
626 { MSR1(0), "Nothing" },
627 { MSR1(1), "Counts while in privilege level is ring 0" },
628 { BITVAL_EOT }
629 }},
630 { 16, 1, "USR", "R/W", PRESENT_BIN, {
631 { MSR1(0), "Nothing" },
632 { MSR1(1), "Counts while in privilege level is not ring 0" },
633 { BITVAL_EOT }
634 }},
635 { 15, 8, "UMask", "R/W", PRESENT_HEX, {
636 /* Qualifies the microarchitectural condition
637 * to detect on the selected event logic. */
638 { BITVAL_EOT }
639 }},
640 { 7, 8, "Event Select", "R/W", PRESENT_HEX, {
641 /* Selects a performance event logic unit. */
642 { BITVAL_EOT }
643 }},
644 { BITS_EOT }
645 }},
646 /* if CPUID.0AH: EAX[15:8] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100647 {0x188, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERFEVTSEL2",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400648 "Performance Event Select Register 2", {
649 { 63, 32, RESERVED },
650 { 31, 8, "CMASK", "R/W", PRESENT_HEX, {
651 /* When CMASK is not zero, the corresponding performance
652 * counter 2 increments each cycle if the event count
653 * is greater than or equal to the CMASK.
654 */
655 { BITVAL_EOT }
656 }},
657 { 23, 1, "INV", "R/W", PRESENT_BIN, {
658 { MSR1(0), "CMASK using as is" },
659 { MSR1(1), "CMASK inerting" },
660 { BITVAL_EOT }
661 }},
662 { 22, 1, "EN", "R/W", PRESENT_BIN, {
663 { MSR1(0), "No commence counting" },
664 { MSR1(1), "Commence counting" },
665 { BITVAL_EOT }
666 }},
667 { 21, 1, "AnyThread", "R/W", PRESENT_BIN, {
668 { BITVAL_EOT }
669 }},
670 { 20, 1, "INT", "R/W", PRESENT_BIN, {
671 { MSR1(0), "Interrupt on counter overflow is disabled" },
672 { MSR1(1), "Interrupt on counter overflow is enabled" },
673 { BITVAL_EOT }
674 }},
675 { 19, 1, "PC", "R/W", PRESENT_BIN, {
676 { MSR1(0), "Disabled pin control" },
677 { MSR1(1), "Enabled pin control" },
678 { BITVAL_EOT }
679 }},
680 { 18, 1, "Edge", "R/W", PRESENT_BIN, {
681 { MSR1(0), "Disabled edge detection" },
682 { MSR1(1), "Enabled edge detection" },
683 { BITVAL_EOT }
684 }},
685 { 17, 1, "OS", "R/W", PRESENT_BIN, {
686 { MSR1(0), "Nothing" },
687 { MSR1(1), "Counts while in privilege level is ring 0" },
688 { BITVAL_EOT }
689 }},
690 { 16, 1, "USR", "R/W", PRESENT_BIN, {
691 { MSR1(0), "Nothing" },
692 { MSR1(1), "Counts while in privilege level is not ring 0" },
693 { BITVAL_EOT }
694 }},
695 { 15, 8, "UMask", "R/W", PRESENT_HEX, {
696 /* Qualifies the microarchitectural condition
697 * to detect on the selected event logic. */
698 { BITVAL_EOT }
699 }},
700 { 7, 8, "Event Select", "R/W", PRESENT_HEX, {
701 /* Selects a performance event logic unit. */
702 { BITVAL_EOT }
703 }},
704 { BITS_EOT }
705 }},
706 /* if CPUID.0AH: EAX[15:8] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100707 {0x189, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERFEVTSEL3",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400708 "Performance Event Select Register 3", {
709 { 63, 32, RESERVED },
710 { 31, 8, "CMASK", "R/W", PRESENT_HEX, {
711 /* When CMASK is not zero, the corresponding performance
712 * counter 3 increments each cycle if the event count
713 * is greater than or equal to the CMASK.
714 */
715 { BITVAL_EOT }
716 }},
717 { 23, 1, "INV", "R/W", PRESENT_BIN, {
718 { MSR1(0), "CMASK using as is" },
719 { MSR1(1), "CMASK inerting" },
720 { BITVAL_EOT }
721 }},
722 { 22, 1, "EN", "R/W", PRESENT_BIN, {
723 { MSR1(0), "No commence counting" },
724 { MSR1(1), "Commence counting" },
725 { BITVAL_EOT }
726 }},
727 { 21, 1, "AnyThread", "R/W", PRESENT_BIN, {
728 { BITVAL_EOT }
729 }},
730 { 20, 1, "INT", "R/W", PRESENT_BIN, {
731 { MSR1(0), "Interrupt on counter overflow is disabled" },
732 { MSR1(1), "Interrupt on counter overflow is enabled" },
733 { BITVAL_EOT }
734 }},
735 { 19, 1, "PC", "R/W", PRESENT_BIN, {
736 { MSR1(0), "Disabled pin control" },
737 { MSR1(1), "Enabled pin control" },
738 { BITVAL_EOT }
739 }},
740 { 18, 1, "Edge", "R/W", PRESENT_BIN, {
741 { MSR1(0), "Disabled edge detection" },
742 { MSR1(1), "Enabled edge detection" },
743 { BITVAL_EOT }
744 }},
745 { 17, 1, "OS", "R/W", PRESENT_BIN, {
746 { MSR1(0), "Nothing" },
747 { MSR1(1), "Counts while in privilege level is ring 0" },
748 { BITVAL_EOT }
749 }},
750 { 16, 1, "USR", "R/W", PRESENT_BIN, {
751 { MSR1(0), "Nothing" },
752 { MSR1(1), "Counts while in privilege level is not ring 0" },
753 { BITVAL_EOT }
754 }},
755 { 15, 8, "UMask", "R/W", PRESENT_HEX, {
756 /* Qualifies the microarchitectural condition
757 * to detect on the selected event logic. */
758 { BITVAL_EOT }
759 }},
760 { 7, 8, "Event Select", "R/W", PRESENT_HEX, {
761 /* Selects a performance event logic unit. */
762 { BITVAL_EOT }
763 }},
764 { BITS_EOT }
765 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100766 {0x198, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400767 { 63, 48, RESERVED },
768 { 15, 16, "Current Performance State Value", "R/O", PRESENT_HEX, {
769 { BITVAL_EOT }
770 }},
771 { BITS_EOT }
772 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100773 {0x199, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400774 { BITS_EOT }
775 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100776 {0x19a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_CLOCK_MODULATION",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400777 "Clock Modulation", {
778 { 63, 59, RESERVED },
779 { 4, 1, "On demand Clock Modulation", "R/W", PRESENT_BIN, {
780 { MSR1(0), "On demand Clock Modulation is disabled" },
781 { MSR1(1), "On demand Clock Modulation is enabled" },
782 { BITVAL_EOT }
783 }},
784 { 3, 3, "On demand Clock Modulation Duty Cycle", "R/W", PRESENT_HEX, {
785 { BITVAL_EOT }
786 }},
787 { 0, 1, RESERVED },
788 { BITS_EOT }
789 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100790 {0x19b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_THERM_INTERRUPT",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400791 "Thermal Interrupt Control", {
792 { BITS_EOT }
793 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100794 {0x19c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_THERM_STATUS",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400795 "Thermal Monitor Status", {
796 { BITS_EOT }
797 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100798 {0x19d, MSRTYPE_RDWR, MSR2(0, 0), "MSR_THERM2_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400799 { BITS_EOT }
800 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100801 {0x1a0, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MISC_ENABLE",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400802 "Enable miscellaneous processor features", {
803 { 63, 25, RESERVED },
804 /* Note: [38] bit using for whole package,
805 * while some other bits can be Core or Thread
806 * specific.
807 */
808 { 38, 1, "Turbo Mode", "R/W", PRESENT_BIN, {
809 /* When set to a 0 on processors that support IDA,
810 * CPUID.06H: EAX[1] reports the processor's
811 * support of turbo mode is enabled.
812 */
813 { MSR1(0), "Turbo Mode enabled" },
814 /* When set 1 on processors that support Intel Turbo Boost
815 * technology, the turbo mode feature is disabled and
816 * the IDA_Enable feature flag will be clear (CPUID.06H: EAX[1]=0).
817 */
818 { MSR1(1), "Turbo Mode disabled" },
819 { BITVAL_EOT }
820 /* Note: the power-on default value is used by BIOS to detect
821 * hardware support of turbo mode. If power-on default value is 1,
822 * turbo mode is available in the processor. If power-on default
823 * value is 0, turbo mode not available.
824 */
825 }},
826 { 37, 3, RESERVED },
827 { 34, 1, "XD Bit Disable", "R/W", PRESENT_BIN, {
828 { BITVAL_EOT }
829 }},
830 { 33, 10, RESERVED },
831 { 23, 1, "xTPR Message Disable", "R/W", PRESENT_BIN, {
832 { BITVAL_EOT }
833 }},
834 { 22, 1, "Limit CPUID Maxval", "R/W", PRESENT_BIN, {
835 { BITVAL_EOT }
836 }},
837 { 21, 3, RESERVED },
838 { 18, 1, "Enable Monitor FSM", "R/W", PRESENT_BIN, {
839 { BITVAL_EOT }
840 }},
841 { 17, 1, "UNDOCUMENTED", "R/W", PRESENT_BIN, {
842 { BITVAL_EOT }
843 }},
844 /* Note: [16] bit using for whole package,
845 * while some other bits can be Core or Thread
846 * specific.
847 */
848 { 16, 1, "Enhanced Intel SpeedStep Technology Enable", "R/W",
849 PRESENT_BIN, {
850 { BITVAL_EOT }
851 }},
852 { 15, 3, RESERVED },
853 { 12, 1, "Precise Event Based Sampling Unavailable", "R/O",
854 PRESENT_BIN, {
855 { BITVAL_EOT }
856 }},
857 { 11, 1, "Branch Trace Storage Unavailable", "R/O", PRESENT_BIN, {
858 { BITVAL_EOT }
859 }},
860 { 10, 3, RESERVED },
861 { 7, 1, "Performance Monitoring Available", "R", PRESENT_BIN, {
862 { BITVAL_EOT }
863 }},
864 { 6, 3, RESERVED },
865 { 3, 1, "Automatic Thermal Control Circuit Enable", "R/W"
866 , PRESENT_BIN, {
867 { BITVAL_EOT }
868 }},
869 { 2, 2, RESERVED },
870 { 0, 1, "Fast-Strings Enable", "R/W", PRESENT_BIN, {
871 { BITVAL_EOT }
872 }},
873 { BITS_EOT }
874 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100875 {0x1a2, MSRTYPE_RDWR, MSR2(0, 0), "MSR_TEMPERATURE_TARGET", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400876 { 63, 40, RESERVED },
877 { 23, 8, "Temperature Target", "R", PRESENT_DEC, {
878 /* The minimum temperature at which PROCHOT# will be
879 * asserted. The value in degree C.
880 */
881 { BITVAL_EOT }
882 }},
883 { 15, 16, RESERVED },
884 { BITS_EOT }
885 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100886 {0x1a6, MSRTYPE_RDWR, MSR2(0, 0), "MSR_OFFCORE_RSP_O",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400887 "Offcore Response Event Select Register", {
888 { BITS_EOT }
889 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100890 {0x1aa, MSRTYPE_RDWR, MSR2(0, 0), "MSR_MISC_PWR_MGMT", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +0400891 { 63, 62, RESERVED },
892 { 1, 1, "Energy/Performance Bias Enable", "R/W", PRESENT_BIN, {
893 /* This bit status is also reflected
894 * by CPUID.(EAX=06h):ECX[3]
895 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100896 { MSR1(0), "IA32_ENERGY_PERF_BIAS (0x1b0) is invisible "
897 "for Ring 0 software" },
898 { MSR1(1), "IA32_ENERGY_PERF_BIAS (0x1b0) accessible "
899 "by Ring 0 software" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400900 { BITVAL_EOT }
901 }},
902 { 0, 1, "EIST Hardware Coordination Disable", "R/W", PRESENT_BIN, {
Patrick Georgi5c65d002020-01-29 13:45:45 +0100903 { MSR1(0), "Hardware Coordination of EIST request "
904 "from processor cores is enabled" },
905 { MSR1(1), "Hardware Coordination of EIST request "
906 "from processor cores is disabled" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400907 { BITVAL_EOT }
908 }},
909 { BITS_EOT }
910 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100911 {0x1c8, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LBR_SELECT",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400912 "Last Branch Record Filtering Select Register", {
913 /* "Nehalem support filtering of LBR based on combination of CPL
914 * and branch type conditions. When LBR filtering is enabled,
915 * the LBR stack only captures the subset of branches
916 * that are specified by MSR_LBR_SELECT."
917 *
918 * -- Section 17.6.2 of Intel 64 and IA-32 Architectures Software
919 * Developer's Manual, Volume 3
920 */
921 { BITS_EOT }
922 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100923 {0x1c9, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_LASTBRANCH_TOS",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400924 "Last Branch Record Stack TOS", {
925 /* Contains an index (bits 0-3) that points to the MSR containing
926 * the most recent branch record. See also MSR_LASTBRANCH_0_FROM_IP (0x680).
927 */
928 { BITS_EOT }
929 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100930 {0x1d9, MSRTYPE_RDWR, MSR2(0, 0), "IA32_DEBUGCTL",
Anton Kochkov54c07a62012-07-04 07:35:45 +0400931 "Debug/Trace/Profile Resource Control", {
932 /* (MSR_DEBUGCTTLA, MSR_DEBUGCTLB) */
933 { 63, 49, RESERVED },
934 /* Only if IA32_PERF_CAPABILITIES[12] = 1 */
935 { 14, 1, "FREEZE_WHILE_SMM", "R/O", PRESENT_BIN, {
936 { MSR1(0), "Nothing" },
937 { MSR1(1), "Freeze perfmon and trace messages while in SMM" },
938 { BITVAL_EOT }
939 }},
940 { 13, 1, "ENABLE_UNCORE_PMI", "R/O", PRESENT_BIN, {
941 { MSR1(0), "Nothing" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100942 { MSR1(1), "Logical processor can receive and generate PMI "
943 "on behalf of the uncore" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400944 { BITVAL_EOT }
945 }},
946 /* Only if CPUID.01H: ECX[15] = 1 and CPUID.0AH: EAX[7:0]>1 */
947 { 12, 1, "FREEZE_PERFMON_ON_PMI", "R/O", PRESENT_BIN, {
948 { MSR1(0), "Nothing" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100949 { MSR1(1), "Each ENABLE bit of the global counter control MSR "
950 "are frozen (address 0x3bf) on PMI request" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400951 { BITVAL_EOT }
952 }},
953 /* Only if CPUID.01H: ECX[15] = 1 and CPUID.0AH: EAX[7:0]>1 */
954 { 11, 1, "FREEZE_LBRS_ON_PMI", "R/O", PRESENT_BIN, {
955 { MSR1(0), "Nothing" },
956 { MSR1(1), "LBR stack is frozen on PMI request" },
957 { BITVAL_EOT }
958 }},
959 { 10, 1, "BTS_OFF_USR", "R/O", PRESENT_BIN, {
960 { MSR1(0), "Nothing" },
961 { MSR1(1), "BTS or BTM is skipped if CPL > 0" },
962 { BITVAL_EOT }
963 }},
964 { 9, 1, "BTS_OFF_OS", "R/O", PRESENT_BIN, {
965 { MSR1(0), "Nothing" },
966 { MSR1(1), "BTS or BTM is skipped if CPL = 0" },
967 { BITVAL_EOT }
968 }},
969 { 8, 1, "BTINT", "R/O", PRESENT_BIN, {
970 { MSR1(0), "BTMs are logged in a BTS buffer in circular fashion" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100971 { MSR1(1), "An interrupt is generated by the BTS facility "
972 "when the BTS buffer is full" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400973 { BITVAL_EOT }
974 }},
975 { 7, 1, "BTS", "R/O", PRESENT_BIN, {
Patrick Georgi5c65d002020-01-29 13:45:45 +0100976 { MSR1(0), "Logging of BTMs (branch trace messages) "
977 "in BTS buffer is disabled" },
978 { MSR1(1), "Logging of BTMs (branch trace messages) "
979 "in BTS buffer is enabled" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400980 { BITVAL_EOT }
981 }},
982 { 6, 1, "TR", "R/O", PRESENT_BIN, {
983 { MSR1(0), "Branch trace messages are disabled" },
984 { MSR1(1), "Branch trace messages are enabled" },
985 { BITVAL_EOT }
986 }},
987 { 5, 4, RESERVED },
988 { 1, 1, "BTF", "R/O", PRESENT_BIN, {
989 { MSR1(0), "Nothing" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100990 { MSR1(1), "Enabled treating EFLAGS.TF as single-step on "
991 "branches instead of single-step on instructions" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400992 { BITVAL_EOT }
993 }},
994 { 0, 1, "LBR", "R/O", PRESENT_BIN, {
995 { MSR1(0), "Nothing" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100996 { MSR1(1), "Enabled recording a running trace of the most "
997 "recent branches taken by the processor in the LBR stack" },
Anton Kochkov54c07a62012-07-04 07:35:45 +0400998 { BITVAL_EOT }
999 }},
1000 { BITS_EOT }
1001 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001002 {0x1dd, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_LER_FROM_LIP",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001003 "Last Exception Record From Linear IP", {
1004 /* Contains a pointer to the last branch instruction
1005 * that the processor executed prior to the last exception
1006 * that was generated or the last interrupt that was handled.
1007 */
1008 { BITS_EOT }
1009 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001010 {0x1de, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_LER_TO_LIP",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001011 "Last Exception Record To Linear IP", {
1012 /* This area contains a pointer to the target of the
1013 * last branch instruction that the processor executed
1014 * prior to the last exception that was generated or
1015 * the last interrupt that was handled
1016 */
1017 { BITS_EOT }
1018 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001019 {0x1f2, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_SMRR_PHYS_BASE",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001020 "SMRR Base Address", {
1021 /* Base address of SMM memory range.
1022 * Writeable only in SMM, so marking it as read-only */
1023 { 63, 32, RESERVED },
1024 { 31, 20, "SMRR physical Base Address", "R/O", PRESENT_HEX, {
1025 { BITVAL_EOT }
1026 }},
1027 { 11, 4, RESERVED },
1028 { 7, 8, "Memory type of the range", "R/O", PRESENT_HEX, {
1029 { BITVAL_EOT }
1030 }},
1031 { BITS_EOT }
1032 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001033 {0x1f3, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_SMRR_PHYS_MASK",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001034 "SMRR Range Mask", {
1035 /* Range Mask of SMM memory range.
1036 * Writeable only in SMM, so marking it as read-only */
1037 { 63, 32, RESERVED },
1038 { 31, 20, "SMRR address range mask", "R/O", PRESENT_HEX, {
1039 { BITVAL_EOT }
1040 }},
1041 { 11, 1, "Is Valid SMRR range mask", "R/O", PRESENT_BIN, {
1042 { MSR1(0), "SMRR range mask is disabled" },
1043 { MSR1(1), "SMRR range mask is enabled" },
1044 { BITVAL_EOT }
1045 }},
1046 { 10, 11, RESERVED },
1047 { BITS_EOT }
1048 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001049 {0x1f8, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PLATFORM_DCA_CAP",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001050 "DCA Capability", {
1051 { BITS_EOT }
1052 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001053 {0x1f9, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_CPU_DCA_CAP",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001054 "Support og Prefetch-Hint type", {
1055 /* If set, CPU supports Prefetch-Hint type.
1056 * TODO: As it is undocumented, which bit (or bits)
1057 * are needed to "be set", we need collect some
1058 * outputs of msrtool to understand possible msr values.
1059 */
1060 { BITS_EOT }
1061 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001062 {0x1fa, MSRTYPE_RDWR, MSR2(0, 0), "IA32_DCA_0_CAP",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001063 "DCA type 0 Status and Control register", {
1064 /* This register defined as introduced only
1065 * in 06_2EH Nehalem model (latest), so be careful!
1066 */
1067 { 31, 5, RESERVED },
1068 { 26, 1, "HW_BLOCK", "R/O", PRESENT_BIN, {
1069 /* Hardware block of DCA */
1070 { MSR1(0), "DCA is not blocked by HW" },
1071 { MSR1(1), "DCA is blocked by HW (e.g. CR0.CD=1)" },
1072 { BITVAL_EOT }
1073 }},
1074 { 25, 1, RESERVED },
1075 { 24, 1, "SW_BLOCK", "R/W", PRESENT_BIN, {
1076 /* Software block of DCA */
1077 { MSR1(0), "DCA is not blocked by SW" },
1078 { MSR1(1), "DCA is blocked by SW" },
1079 { BITVAL_EOT }
1080 }},
1081 { 23, 7, RESERVED },
1082 { 16, 4, "DCA_RELAY", "R/W", PRESENT_HEX, {
1083 /* Writes will update the register
1084 * but have no HW side-effect */
1085 { BITVAL_EOT }
1086 }},
1087 { 12, 2, RESERVED },
1088 { 10, 4, "DCA_QUEUE_SIZE", "R/O", PRESENT_DEC, {
1089 { BITVAL_EOT }
1090 }},
1091 { 6, 4, "DCA_TYPE", "R/O", PRESENT_HEX, {
1092 { BITVAL_EOT }
1093 }},
1094 { 2, 2, "TRANSACTION", "R/O", PRESENT_HEX, {
1095 { BITVAL_EOT }
1096 }},
1097 { 0, 1, "DCA_ACTIVE", "R/O", PRESENT_BIN, {
1098 /* Set by HW when DCA is fuse-enabled and
1099 * no defeauteres are set */
1100 { MSR1(0), "DCA inactive" },
1101 { MSR1(1), "DCA inactive" },
1102 { BITVAL_EOT }
1103 }},
1104 { BITS_EOT }
1105 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001106 {0x1fc, MSRTYPE_RDWR, MSR2(0, 0), "MSR_POWER_CTL",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001107 "Power Control Register", {
1108 { 63, 62, RESERVED },
1109 /* Whole package bit */
1110 { 1, 1, "C1E Enable", "R/W", PRESENT_BIN, {
1111 { MSR1(0), "Nothing" },
Patrick Georgi5c65d002020-01-29 13:45:45 +01001112 { MSR1(1), "CPU switch to the Minimum Enhanced Intel "
1113 "SpeedStep Technology operating point when all "
1114 "execution cores enter MWAIT (C1)" },
Anton Kochkov54c07a62012-07-04 07:35:45 +04001115 { BITVAL_EOT }
1116 }},
1117 { 0, 1, RESERVED },
1118 { BITS_EOT }
1119 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001120 {0x200, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE0", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001121 { BITS_EOT }
1122 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001123 {0x201, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK0", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001124 { BITS_EOT }
1125 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001126 {0x202, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE1", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001127 { BITS_EOT }
1128 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001129 {0x203, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK1", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001130 { BITS_EOT }
1131 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001132 {0x204, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001133 { BITS_EOT }
1134 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001135 {0x205, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001136 { BITS_EOT }
1137 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001138 {0x206, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE3", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001139 { BITS_EOT }
1140 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001141 {0x207, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK3", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001142 { BITS_EOT }
1143 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001144 {0x208, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE4", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001145 { BITS_EOT }
1146 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001147 {0x209, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK4", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001148 { BITS_EOT }
1149 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001150 {0x20a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE5", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001151 { BITS_EOT }
1152 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001153 {0x20b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK5", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001154 { BITS_EOT }
1155 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001156 {0x20c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE6", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001157 { BITS_EOT }
1158 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001159 {0x20d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK6", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001160 { BITS_EOT }
1161 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001162 {0x20e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE7", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001163 { BITS_EOT }
1164 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001165 {0x20f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK7", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001166 { BITS_EOT }
1167 }},
1168 /* if IA32_MTRR_CAP[7:0] > 8 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001169 {0x210, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE8", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001170 { BITS_EOT }
1171 }},
1172 /* if IA32_MTRR_CAP[7:0] > 8 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001173 {0x211, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK8", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001174 { BITS_EOT }
1175 }},
1176 /* if IA32_MTRR_CAP[7:0] > 9 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001177 {0x212, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE9", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001178 { BITS_EOT }
1179 }},
1180 /* if IA32_MTRR_CAP[7:0] > 9 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001181 {0x213, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK9", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001182 { BITS_EOT }
1183 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001184 {0x250, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX64K_00000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001185 { BITS_EOT }
1186 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001187 {0x258, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX16K_80000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001188 { BITS_EOT }
1189 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001190 {0x259, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX16K_A0000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001191 { BITS_EOT }
1192 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001193 {0x268, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_C0000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001194 { BITS_EOT }
1195 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001196 {0x269, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_C8000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001197 { BITS_EOT }
1198 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001199 {0x26a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_D0000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001200 { BITS_EOT }
1201 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001202 {0x26b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_D8000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001203 { BITS_EOT }
1204 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001205 {0x26c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_E0000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001206 { BITS_EOT }
1207 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001208 {0x26d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_E8000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001209 { BITS_EOT }
1210 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001211 {0x26e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_F0000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001212 { BITS_EOT }
1213 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001214 {0x26f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_F8000", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001215 { BITS_EOT }
1216 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001217 {0x277, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PAT", "IA32_PAT", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001218 { 63, 5, RESERVED },
1219 { 58, 3, "PA7", "R/W", PRESENT_BIN, {
1220 { BITVAL_EOT }
1221 }},
1222 { 55, 5, RESERVED },
1223 { 40, 3, "PA6", "R/W", PRESENT_BIN, {
1224 { BITVAL_EOT }
1225 }},
1226 { 47, 5, RESERVED },
1227 { 42, 3, "PA5", "R/W", PRESENT_BIN, {
1228 { BITVAL_EOT }
1229 }},
1230 { 39, 5, RESERVED },
1231 { 34, 3, "PA4", "R/W", PRESENT_BIN, {
1232 { BITVAL_EOT }
1233 }},
1234 { 31, 5, RESERVED },
1235 { 26, 3, "PA3", "R/W", PRESENT_BIN, {
1236 { BITVAL_EOT }
1237 }},
1238 { 23, 5, RESERVED },
1239 { 18, 3, "PA2", "R/W", PRESENT_BIN, {
1240 { BITVAL_EOT }
1241 }},
1242 { 15, 5, RESERVED },
1243 { 10, 3, "PA1", "R/W", PRESENT_BIN, {
1244 { BITVAL_EOT }
1245 }},
1246 { 7, 5, RESERVED },
1247 { 2, 3, "PA0", "R/W", PRESENT_BIN, {
1248 { BITVAL_EOT }
1249 }},
1250 { BITS_EOT }
1251 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001252 {0x282, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_CTL2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001253 { 63, 33, RESERVED },
1254 { 30, 1, "CMCI_EN", "R/W", PRESENT_BIN, {
1255 { BITVAL_EOT }
1256 }},
1257 { 29, 15, RESERVED },
1258 { 14, 15, "Corrected error count threshold", "R/W", PRESENT_HEX, {
1259 { BITVAL_EOT }
1260 }},
1261 { BITS_EOT }
1262 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001263 {0x283, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_CTL2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001264 { 63, 33, RESERVED },
1265 { 30, 1, "CMCI_EN", "R/W", PRESENT_BIN, {
1266 { BITVAL_EOT }
1267 }},
1268 { 29, 15, RESERVED },
1269 { 14, 15, "Corrected error count threshold", "R/W", PRESENT_HEX, {
1270 { BITVAL_EOT }
1271 }},
1272 { BITS_EOT }
1273 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001274 {0x284, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_CTL2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001275 { 63, 33, RESERVED },
1276 { 30, 1, "CMCI_EN", "R/W", PRESENT_BIN, {
1277 { BITVAL_EOT }
1278 }},
1279 { 29, 15, RESERVED },
1280 { 14, 15, "Corrected error count threshold", "R/W", PRESENT_HEX, {
1281 { BITVAL_EOT }
1282 }},
1283 { BITS_EOT }
1284 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001285 {0x285, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC5_CTL2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001286 { 63, 33, RESERVED },
1287 { 30, 1, "CMCI_EN", "R/W", PRESENT_BIN, {
1288 { BITVAL_EOT }
1289 }},
1290 { 29, 15, RESERVED },
1291 { 14, 15, "Corrected error count threshold", "R/W", PRESENT_HEX, {
1292 { BITVAL_EOT }
1293 }},
1294 { BITS_EOT }
1295 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001296 {0x2ff, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_DEF_TYPE",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001297 "Default Memory Types", {
1298 { 63, 52, RESERVED },
1299 { 11, 1, "MTRR Enable", "R/W", PRESENT_BIN, {
1300 { BITVAL_EOT }
1301 }},
1302 { 10, 1, "Fixed Range MTRR Enable", "R/W", PRESENT_BIN, {
1303 { BITVAL_EOT }
1304 }},
1305 { 9, 7, RESERVED },
1306 { 2, 3, "Default Memory Type", "R/W", PRESENT_HEX, {
1307 { BITVAL_EOT }
1308 }},
1309 { BITS_EOT }
1310 }},
1311 /* if CPUID.0AH: EDX[4:0] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001312 {0x309, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR0", "Fixed-Function "
1313 "Performance Counter Register 0: Counts Instr_Retired.Any", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001314 /* Also known as MSR_PERF_FIXED_CTR0 */
1315 { BITS_EOT }
1316 }},
1317 /* if CPUID.0AH: EDX[4:0] > 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001318 {0x30a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR1", "Fixed-Function "
1319 "Performance Counter Register 1: Counts CPU_CLK_Unhalted.Core ", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001320 /* Also known as MSR_PERF_FIXED_CTR1 */
1321 { BITS_EOT }
1322 }},
1323 /* if CPUID.0AH: EDX[4:0] > 2 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001324 {0x30b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR2", "Fixed-Function "
1325 "Performance Counter Register 2: Counts CPU_CLK_Unhalted.Ref", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001326 /* Also known as MSR_PERF_FIXED_CTR2 */
1327 { BITS_EOT }
1328 }},
1329 /* if CPUID.01H: ECX[15] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001330 {0x345, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PERF_CAPABILITIES", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001331 /* Additional info available at Section 17.4.1 of
Patrick Georgifbbef022020-01-29 13:31:16 +01001332 * Intel 64 and IA-32 Architectures Software Developer's
Anton Kochkov54c07a62012-07-04 07:35:45 +04001333 * Manual, Volume 3.
1334 */
1335 { 63, 50, RESERVED },
1336 { 13, 1, "Counter width", "R/O", PRESENT_BIN, {
1337 { MSR1(0), "Nothing" },
1338 { MSR1(1), "Full width of counter writable via IA32_A_PMCx" },
1339 { BITVAL_EOT }
1340 }},
1341 { 12, 1, "SMM_FREEZE", "R/O", PRESENT_BIN, {
1342 { MSR1(0), "Nothing" },
1343 { MSR1(1), "Freeze while SMM is supported" },
1344 { BITVAL_EOT }
1345 }},
1346 { 11, 4, "PEBS_REC_FORMAT", "R/O", PRESENT_HEX, {
1347 { BITVAL_EOT }
1348 }},
1349 { 7, 1, "PEBSSaveArchRegs", "R/O", PRESENT_BIN, {
1350 { BITVAL_EOT }
1351 }},
1352 { 6, 1, "PEBS Record Format", "R/O", PRESENT_BIN, {
1353 { BITVAL_EOT }
1354 }},
1355 { 5, 6, "LBR Format", "R/O", PRESENT_HEX, {
1356 { BITVAL_EOT }
1357 }},
1358 { BITS_EOT }
1359 }},
1360 /* if CPUID.0AH: EAX[7:0] > 1*/
Patrick Georgi5c65d002020-01-29 13:45:45 +01001361 {0x38d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR_CTRL",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001362 "Fixed-Function-Counter Control Register", {
1363 /* Also known as MSR_PERF_FIXED_CTR_CTRL.
1364 * Counter increments while the results of ANDing respective enable bit
1365 * in IA32_PERF_GLOBAL_CTRL with the corresponding OS or USR bits
1366 * in this MSR is true. */
1367 { 63, 52, RESERVED },
1368 { 11, 1, "EN2_PMI", "R/W", PRESENT_BIN, {
1369 { MSR1(0), "Nothing" },
1370 { MSR1(1), "PMI when fixed counter 2 overflows is enabled" },
1371 { BITVAL_EOT }
1372 }},
1373 /* if CPUID.0AH EAX[7:0] > 2 */
1374 { 10, 1, "AnyThread 2", "R/W", PRESENT_BIN, {
Patrick Georgi5c65d002020-01-29 13:45:45 +01001375 { MSR1(0), "Counter only increments the associated event "
1376 "conditions occurring in the logical processor "
1377 "which programmed the MSR" },
1378 { MSR1(1), "Counting the associated event conditions "
1379 "occurring across all logical processors sharing "
1380 "a processor core" },
Anton Kochkov54c07a62012-07-04 07:35:45 +04001381 { BITVAL_EOT }
1382 }},
1383 { 9, 1, "EN2_Usr", "R/W", PRESENT_BIN, {
1384 { MSR1(0), "Nothing" },
1385 { MSR1(1), "Fixed counter 2 is enabled to count while CPL > 0" },
1386 { BITVAL_EOT }
1387 }},
1388 { 8, 1, "EN2_OS", "R/W", PRESENT_BIN, {
1389 { MSR1(0), "Nothing" },
1390 { MSR1(1), "Fixed counter 2 is enabled to count while CPL = 0" },
1391 { BITVAL_EOT }
1392 }},
1393 { 7, 1, "EN1_PMI", "R/W", PRESENT_BIN, {
1394 { MSR1(0), "Nothing" },
1395 { MSR1(1), "PMI when fixed counter 1 overflows is enabled" },
1396 { BITVAL_EOT }
1397 }},
1398 /* if CPUID.0AH: EAX[7:0] > 2 */
1399 { 6, 1, "AnyThread 1", "R/W", PRESENT_BIN, {
Patrick Georgi5c65d002020-01-29 13:45:45 +01001400 { MSR1(0), "Counter only increments the associated event "
1401 "conditions occurring in the logical processor "
1402 "which programmed the MSR" },
1403 { MSR1(1), "Counting the associated event conditions "
1404 "occurring across all logical processors sharing "
1405 "a processor core" },
Anton Kochkov54c07a62012-07-04 07:35:45 +04001406 { BITVAL_EOT }
1407 }},
1408 { 5, 1, "EN1_Usr", "R/W", PRESENT_BIN, {
1409 { MSR1(0), "Nothing" },
1410 { MSR1(1), "Fixed counter 1 is enabled to count while CPL > 0" },
1411 { BITVAL_EOT }
1412 }},
1413 { 4, 1, "EN1_OS", "R/W", PRESENT_BIN, {
1414 { MSR1(0), "Nothing" },
1415 { MSR1(1), "Fixed counter 1 is enabled to count while CPL = 0" },
1416 { BITVAL_EOT }
1417 }},
1418 { 3, 1, "EN0_PMI", "R/W", PRESENT_BIN, {
1419 { MSR1(0), "Nothing" },
1420 { MSR1(1), "PMI when fixed counter 0 overflows is enabled" },
1421 { BITVAL_EOT }
1422 }},
1423 /* if CPUID.0AH: EAX[7:0] > 2 */
1424 { 2, 1, "AnyThread 0", "R/W", PRESENT_BIN, {
Patrick Georgi5c65d002020-01-29 13:45:45 +01001425 { MSR1(0), "Counter only increments the associated event "
1426 "conditions occurring in the logical processor "
1427 "which programmed the MSR" },
1428 { MSR1(1), "Counting the associated event conditions "
1429 "occurring across all logical processors sharing "
1430 "a processor core" },
Anton Kochkov54c07a62012-07-04 07:35:45 +04001431 { BITVAL_EOT }
1432 }},
1433 { 1, 1, "EN0_Usr", "R/W", PRESENT_BIN, {
1434 { MSR1(0), "Nothing" },
1435 { MSR1(1), "Fixed counter 0 is enabled to count while CPL > 0" },
1436 { BITVAL_EOT }
1437 }},
1438 { 0, 1, "EN0_OS", "R/W", PRESENT_BIN, {
1439 { MSR1(0), "Nothing" },
1440 { MSR1(1), "Fixed counter 0 is enabled to count while CPL = 0" },
1441 { BITVAL_EOT }
1442 }},
1443 { BITS_EOT }
1444 }},
1445 /* if CPUID.0AH: EAX[7:0] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001446 {0x38e, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PERF_GLOBAL_STATUS",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001447 "Global Performance Counter Status", {
1448 /* Also known as MSR_PERF_GLOBAL_STATUS */
1449 /* if CPUID.0AH: EAX[7:0] > 0 */
1450 { 63, 1, "CondChg: Status bits of this register has changed",
1451 "R/O", PRESENT_BIN, {
1452 { BITVAL_EOT }
1453 }},
1454 /* if CPUID.0AH: EAX[7:0] > 0 */
1455 { 62, 1, "OvfBuf: DS SAVE area Buffer overflow status",
1456 "R/O", PRESENT_BIN, {
1457 { BITVAL_EOT }
1458 }},
1459 /* if CPUID.0AH: EAX[7:0] > 2 */
1460 { 61, 1, "Ovf_Uncore: Uncore counter overflow status",
1461 "R/O", PRESENT_BIN, {
1462 { BITVAL_EOT }
1463 }},
1464 { 60, 26, RESERVED },
1465 /* if CPUID.0AH: EAX[7:0] > 1 */
1466 { 34, 1, "Ovf_FixedCtr2: Overflow status of IA32_FIXED_CTR2",
1467 "R/O", PRESENT_BIN, {
1468 { BITVAL_EOT }
1469 }},
1470 /* if CPUID.0AH: EAX[7:0] > 1 */
1471 { 33, 1, "Ovf_FixedCtr1: Overflow status of IA32_FIXED_CTR1",
1472 "R/O", PRESENT_BIN, {
1473 { BITVAL_EOT }
1474 }},
1475 /* if CPUID.0AH: EAX[7:0] > 1 */
1476 { 32, 1, "Ovf_FixedCtr0: Overflow status of IA32_FIXED_CTR0",
1477 "R/O", PRESENT_BIN, {
1478 { BITVAL_EOT }
1479 }},
1480 { 31, 28, RESERVED },
1481 /* presented only in 06_2EH Nehalem model */
1482 { 3, 1, "Ovf_PMC3: Overflow status of IA32_PMC3", "R/O", PRESENT_BIN, {
1483 { BITVAL_EOT }
1484 }},
1485 /* presented only in 06_2EH Nehalem model */
1486 { 2, 1, "Ovf_PMC2: Overflow status of IA32_PMC2", "R/O", PRESENT_BIN, {
1487 { BITVAL_EOT }
1488 }},
1489 /* if CPUID.0AH: EAX[7:0] > 0 */
1490 { 1, 1, "Ovf_PMC1: Overflow status of IA32_PMC1", "R/O", PRESENT_BIN, {
1491 { BITVAL_EOT }
1492 }},
1493 /* if CPUID.0AH: EAX[7:0] > 0 */
1494 { 0, 1, "Ovf_PMC0: Overflow status of IA32_PMC0", "R/O", PRESENT_BIN, {
1495 { BITVAL_EOT }
1496 }},
1497 { BITS_EOT }
1498 }},
1499 /* if CPUID.0AH: EAX[7:0] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001500 {0x38f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_GLOBAL_CTL",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001501 "Global Performance Counter Control", {
1502 /* Counter increments while the result of ANDing respective
1503 * enable bit in this MSR with corresponding OS or USR bits
1504 * in general-purpose or fixed counter control MSR is true.
1505 */
1506 { 63, 29, RESERVED },
1507 /* if CPUID.0AH: EAX[7:0] > 1 */
1508 { 34, 1, "EN_FIXED_CTR2", "R/W", PRESENT_BIN, {
1509 { BITVAL_EOT }
1510 }},
1511 /* if CPUID.0AH: EAX[7:0] > 1 */
1512 { 33, 1, "EN_FIXED_CTR1", "R/W", PRESENT_BIN, {
1513 { BITVAL_EOT }
1514 }},
1515 /* if CPUID.0AH: EAX[7:0] > 1 */
1516 { 32, 1, "EN_FIXED_CTR0", "R/W", PRESENT_BIN, {
1517 { BITVAL_EOT }
1518 }},
1519 { 31, 30, RESERVED },
1520 /* if CPUID.0AH: EAX[7:0] > 0 */
1521 { 1, 1, "EN_PMC1", "R/W", PRESENT_BIN, {
1522 { BITVAL_EOT }
1523 }},
1524 /* if CPUID.0AH: EAX[7:0] > 0 */
1525 { 0, 1, "EN_PMC0", "R/W", PRESENT_BIN, {
1526 { BITVAL_EOT }
1527 }},
1528 { BITS_EOT }
1529 }},
1530 /* if CPUID.0AH: EAX[7:0] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001531 {0x390, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_GLOBAL_OVF_CTL",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001532 "Global Performance Counter Overflow Control", {
1533 /* if CPUID.0AH: EAX[7:0] > 0 */
1534 { 63, 1, "Clear CondChg bit", "R/W", PRESENT_BIN, {
1535 { BITVAL_EOT }
1536 }},
1537 /* if CPUID.0AH: EAX[7:0] > 0 */
1538 { 62, 1, "Clear OvfBuf bit", "R/W", PRESENT_BIN, {
1539 { BITVAL_EOT }
1540 }},
1541 /* Presented only in 06_2EH Nehalem model */
1542 { 61, 1, "Clear Ovf_Uncore bit", "R/W", PRESENT_BIN, {
1543 { BITVAL_EOT }
1544 }},
1545 { 60, 26, RESERVED },
1546 /* if CPUID.0AH: EAX[7:0] > 1 */
1547 { 34, 1, "Clear Ovf_FIXED_CTR2 bit", "R/W", PRESENT_BIN, {
1548 { BITVAL_EOT }
1549 }},
1550 /* if CPUID.0AH: EAX[7:0] > 1 */
1551 { 33, 1, "Clear Ovf_FIXED_CTR1 bit", "R/W", PRESENT_BIN, {
1552 { BITVAL_EOT }
1553 }},
1554 /* if CPUID.0AH: EAX[7:0] > 1 */
1555 { 32, 1, "Clear Ovf_FIXED_CTR0 bit", "R/W", PRESENT_BIN, {
1556 { BITVAL_EOT }
1557 }},
1558 { 31, 30, RESERVED },
1559 /* if CPUID.0AH: EAX[7:0] > 0 */
1560 { 1, 1, "Clear Ovf_PMC1 bit", "R/W", PRESENT_BIN, {
1561 { BITVAL_EOT }
1562 }},
1563 /* if CPUID.0AH: EAX[7:0] > 0 */
1564 { 0, 1, "Clear Ovf_PMC0 bit", "R/W", PRESENT_BIN, {
1565 { BITVAL_EOT }
1566 }},
1567 { BITS_EOT }
1568 }},
1569 /* See Section 18.6.1.1 of Intel 64 and IA-32 Architectures
1570 * Software Developer's Manual, Volume 3,
1571 * "Precise Event Based Sampling (PEBS)".
1572 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001573 {0x3f1, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PEBS_ENABLE", "PEBS Control", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001574 { 63, 28, RESERVED },
1575 { 35, 1, "Load Latency on IA32_PMC3", "R/W", PRESENT_BIN, {
1576 { MSR1(0), "Disabled" },
1577 { MSR1(1), "Enabled" },
1578 { BITVAL_EOT }
1579 }},
1580 { 34, 1, "Load Latency on IA32_PMC2", "R/W", PRESENT_BIN, {
1581 { MSR1(0), "Disabled" },
1582 { MSR1(1), "Enabled" },
1583 { BITVAL_EOT }
1584 }},
1585 { 33, 1, "Load Latency on IA32_PMC1", "R/W", PRESENT_BIN, {
1586 { MSR1(0), "Disabled" },
1587 { MSR1(1), "Enabled" },
1588 { BITVAL_EOT }
1589 }},
1590 { 32, 1, "Load Latency on IA32_PMC0", "R/W", PRESENT_BIN, {
1591 { MSR1(0), "Disabled" },
1592 { MSR1(1), "Enabled" },
1593 { BITVAL_EOT }
1594 }},
1595 { 31, 28, RESERVED },
1596 { 3, 1, "PEBS on IA32_PMC3", "R/W", PRESENT_BIN, {
1597 { MSR1(0), "Disabled" },
1598 { MSR1(1), "Enabled" },
1599 { BITVAL_EOT }
1600 }},
1601 { 2, 1, "PEBS on IA32_PMC2", "R/W", PRESENT_BIN, {
1602 { MSR1(0), "Disabled" },
1603 { MSR1(1), "Enabled" },
1604 { BITVAL_EOT }
1605 }},
1606 { 1, 1, "PEBS on IA32_PMC1", "R/W", PRESENT_BIN, {
1607 { MSR1(0), "Disabled" },
1608 { MSR1(1), "Enabled" },
1609 { BITVAL_EOT }
1610 }},
1611 { 0, 1, "PEBS on IA32_PMC0", "R/W", PRESENT_BIN, {
1612 { MSR1(0), "Disabled" },
1613 { MSR1(1), "Enabled" },
1614 { BITVAL_EOT }
1615 }},
1616 { BITS_EOT }
1617 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001618 {0x3f6, MSRTYPE_RDWR, MSR2(0, 0), "MSR_PEBS_LD_LAT", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001619 /* See Section 18.6.1.2 of Intel's manual
1620 * for additional information.
1621 */
1622 { 63, 28, RESERVED },
1623 { 35, 20, RESERVED },
Patrick Georgi5c65d002020-01-29 13:45:45 +01001624 { 15, 16, "Minimum threshold latency value of tagged "
1625 "load operation that will be counted", "R/W", PRESENT_DEC, {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001626 { BITVAL_EOT }
1627 }},
1628 { BITS_EOT }
1629 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001630 {0x400, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001631 { BITS_EOT }
1632 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001633 {0x401, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001634 { BITS_EOT }
1635 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001636 {0x402, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_ADDR", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001637 { BITS_EOT }
1638 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001639 {0x403, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_MISC", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001640 { BITS_EOT }
1641 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001642 {0x404, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001643 { BITS_EOT }
1644 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001645 {0x405, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001646 { BITS_EOT }
1647 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001648 {0x406, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_ADDR", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001649 { BITS_EOT }
1650 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001651 {0x407, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_MISC", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001652 { BITS_EOT }
1653 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001654 {0x408, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001655 { BITS_EOT }
1656 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001657 {0x409, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001658 { BITS_EOT }
1659 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001660 {0x40a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_ADDR", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001661 { BITS_EOT }
1662 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001663 {0x40b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_MISC", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001664 { BITS_EOT }
1665 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001666 {0x40c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001667 { BITS_EOT }
1668 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001669 {0x40d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001670 { BITS_EOT }
1671 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001672 {0x40e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_ADDR", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001673 { BITS_EOT }
1674 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001675 {0x40f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_MISC", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001676 { BITS_EOT }
1677 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001678 {0x410, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001679 { BITS_EOT }
1680 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001681 {0x411, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001682 { BITS_EOT }
1683 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001684 {0x412, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_ADDR", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001685 { BITS_EOT }
1686 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001687 {0x413, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_MISC", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001688 { BITS_EOT }
1689 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001690 {0x414, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC5_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001691 { BITS_EOT }
1692 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001693 {0x415, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC5_STATUS", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001694 { BITS_EOT }
1695 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001696 {0x416, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC5_ADDR", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001697 { BITS_EOT }
1698 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001699 {0x417, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC5_MISC", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001700 { BITS_EOT }
1701 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001702 {0x480, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_BASIC",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001703 "Reporting Register of Basic VMX Capabilities", {
1704 /* Additional info available at
1705 * Appendix A.1, "Basic VMX Information" */
1706 { 63, 10, RESERVED },
1707 { 53, 4, "Memory type for VMREAD and VMWRITE", "R/O", PRESENT_HEX, {
1708 { BITVAL_EOT }
1709 }},
1710 { 49, 1, "Support of dual-treatment of system-management functions",
1711 "R/O", PRESENT_BIN, {
1712 { BITVAL_EOT }
1713 }},
1714 { 48, 1, "Enable full linear address access", "R/O", PRESENT_BIN, {
1715 { BITVAL_EOT }
1716 }},
1717 { 47, 3, RESERVED },
1718 { 44, 13, "VMXON region allocation size", "R/O", PRESENT_DEC, {
1719 { BITVAL_EOT }
1720 }},
1721 { 31, 32, "VMCS Revision Identifier", "R/O", PRESENT_HEX, {
1722 { BITVAL_EOT }
1723 }},
1724 { BITS_EOT }
1725 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001726 {0x481, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PINBASED_CTLS",
1727 "Capability Reporting Register of "
1728 "Pin-based VM-execution Controls", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001729 /* Additional info available at Appendix A.3,
1730 * "VM-Execution Controls" */
1731 { BITS_EOT }
1732 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001733 {0x482, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PROCBASED_CTLS",
1734 "Capability Reporting Register of "
1735 "Primary Processor-based VM-execution Controls", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001736 /* Additional info available at Appendix A.3,
1737 * "VM-Execution Controls" */
1738 { BITS_EOT }
1739 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001740 {0x483, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_EXIT_CTLS",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001741 "Capability Reporting Register of VM-exit Controls", {
1742 /* Additional info available at Appendix A.4,
1743 * "VM-Exit Controls" */
1744 { BITS_EOT }
1745 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001746 {0x484, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_ENTRY_CTLS",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001747 "Capability Reporting Register of VM-entry Controls", {
1748 /* Additional info available at Appendix A.5,
1749 * "VM-Entry Controls" */
1750 { BITS_EOT }
1751 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001752 {0x485, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_MISC",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001753 "Reporting Register of Miscellaneous VMX Capabilities", {
1754 /* Additional info available at Appendix A.6,
1755 * "Miscellaneous Data" */
1756 { BITS_EOT }
1757 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001758 {0x486, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR0_FIXED0",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001759 "Capability Reporting Register of CR0 Bits Fixed to 0", {
1760 /* Additional info available at Appendix A.7,
1761 * "VMX-Fixed Bits in CR0" */
1762 { BITS_EOT }
1763 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001764 {0x487, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR0_FIXED1",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001765 "Capability Reporting Register of CR0 Bits Fixed to 1", {
1766 /* Additional info available at Appendix A.7,
1767 * "VMX-Fixed Bits in CR0" */
1768 { BITS_EOT }
1769 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001770 {0x488, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR4_FIXED0",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001771 "Capability Reporting Register of CR4 Bits Fixed to 0", {
1772 /* Additional info available at Appendix A.8,
1773 * "VMX-Fixed Bits in CR4" */
1774 { BITS_EOT }
1775 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001776 {0x489, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR4_FIXED1",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001777 "Capability Reporting Register of CR4 Bits Fixed to 1", {
1778 /* Additional info available at Appendix A.8,
1779 * "VMX-Fixed Bits in CR4" */
1780 { BITS_EOT }
1781 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001782 {0x48a, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_VMCS_ENUM",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001783 "Capability Reporting Register of VMCS Field Enumeration", {
1784 /* Additional info available at Appendix A.9,
1785 * "VMCS Enumeration" */
1786 { BITS_EOT }
1787 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001788 {0x48b, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_PROCBASED_CTLS2",
1789 "Capability Reporting Register of Secondary "
1790 "Processor-based VM-execution Controls", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001791 /* Additional info available at Appendix A.3,
1792 * "VM-Execution Controls" */
1793 { BITS_EOT }
1794 }},
1795 /* Undocumented PECI control register */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001796 {0x5a0, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PECI_CTL",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001797 "PECI Control Register", {
1798 { BITS_EOT }
1799 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001800 {0x600, MSRTYPE_RDWR, MSR2(0, 0), "IA32_DS_AREA", "DS Save Area", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001801 /* Additional info available at Section 18.10.4 of Intel 64
1802 * and IA-32 Architectures Software Developer's Manual,
1803 * "Debug Store (DS) Mechanism".
1804 */
1805 { 63, 32, RESERVED }, // reserved if not in IA-32e mode
1806 { 31, 32, "Linear address of DS buffer management area",
1807 "R/W", PRESENT_HEX, {
1808 { BITVAL_EOT }
1809 }},
1810 { BITS_EOT }
1811 }},
1812
1813 /* 16 registers - first
1814 * registers in sixteen pairs
1815 * of last branch record registers
1816 * on the last branch record stack
1817 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001818 {0x680, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_0_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001819 { BITS_EOT }
1820 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001821 {0x681, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_1_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001822 { BITS_EOT }
1823 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001824 {0x682, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_2_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001825 { BITS_EOT }
1826 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001827 {0x683, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_3_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001828 { BITS_EOT }
1829 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001830 {0x684, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_4_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001831 { BITS_EOT }
1832 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001833 {0x685, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_5_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001834 { BITS_EOT }
1835 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001836 {0x686, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_6_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001837 { BITS_EOT }
1838 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001839 {0x687, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_7_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001840 { BITS_EOT }
1841 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001842 {0x688, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_8_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001843 { BITS_EOT }
1844 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001845 {0x689, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_9_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001846 { BITS_EOT }
1847 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001848 {0x68a, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_10_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001849 { BITS_EOT }
1850 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001851 {0x68b, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_11_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001852 { BITS_EOT }
1853 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001854 {0x68c, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_12_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001855 { BITS_EOT }
1856 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001857 {0x68d, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_13_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001858 { BITS_EOT }
1859 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001860 {0x68e, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_14_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001861 { BITS_EOT }
1862 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001863 {0x68f, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_15_FROM_IP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001864 { BITS_EOT }
1865 }},
1866
1867 /* 16 registers - second
1868 * registers in sixteen pairs
1869 * of last branch record registers
1870 * on the last branch record stack
1871 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01001872 {0x6c0, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_0_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001873 { BITS_EOT }
1874 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001875 {0x6c1, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_1_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001876 { BITS_EOT }
1877 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001878 {0x6c2, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_2_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001879 { BITS_EOT }
1880 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001881 {0x6c3, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_3_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001882 { BITS_EOT }
1883 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001884 {0x6c4, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_4_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001885 { BITS_EOT }
1886 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001887 {0x6c5, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_5_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001888 { BITS_EOT }
1889 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001890 {0x6c6, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_6_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001891 { BITS_EOT }
1892 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001893 {0x6c7, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_7_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001894 { BITS_EOT }
1895 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001896 {0x6c8, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_8_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001897 { BITS_EOT }
1898 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001899 {0x6c9, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_9_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001900 { BITS_EOT }
1901 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001902 {0x6ca, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_10_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001903 { BITS_EOT }
1904 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001905 {0x6cb, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_11_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001906 { BITS_EOT }
1907 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001908 {0x6cc, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_12_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001909 { BITS_EOT }
1910 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001911 {0x6cd, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_13_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001912 { BITS_EOT }
1913 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001914 {0x6ce, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_14_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001915 { BITS_EOT }
1916 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001917 {0x6cf, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_15_TO_LIP", "R/W", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04001918 { BITS_EOT }
1919 }},
1920
1921 /* x2APIC registers - see Intel 64 Architecture x2APIC Specification */
1922
Patrick Georgi5c65d002020-01-29 13:45:45 +01001923 {0x802, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_APICID",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001924 "x2APIC ID register", {
1925 { BITS_EOT }
1926 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001927 {0x803, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_VERSION",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001928 /* Same version between extended and legacy modes.
1929 * Bit 24 is available only to an x2APIC unit. */
1930 "x2APIC Version register", {
1931 { 31, 7, RESERVED },
1932 { 24, 1, "Directed EOI Support", "R/W", PRESENT_BIN, {
1933 { BITVAL_EOT }
1934 }},
1935 { 23, 8, "Max LVT Entry", "R/W", PRESENT_HEX, {
1936 { BITVAL_EOT }
1937 }},
1938 { 15, 8, RESERVED },
1939 { 7, 8, "Vector", "R/W", PRESENT_HEX, {
1940 { BITVAL_EOT }
1941 }},
1942 { BITS_EOT }
1943 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001944 {0x808, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_TPR",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001945 "x2APIC Task Priority register", {
1946 { 31, 24, RESERVED },
1947 { 7, 8, "TPR", "R/W", PRESENT_HEX, {
1948 { BITVAL_EOT }
1949 }},
1950 { BITS_EOT }
1951 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001952 {0x80a, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_PPR",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001953 "x2APIC Processor Priority register", {
1954 { BITS_EOT }
1955 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001956 {0x80b, MSRTYPE_WRONLY, MSR2(0, 0), "IA32_X2APIC_EOI",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001957 /* 0 is the only valid value to write. GP fault
1958 * on non-zero write. */
1959 "x2APIC EOI register", {
1960 { BITS_EOT }
1961 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001962 {0x80d, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_LDR",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001963 /* Read Only in x2APIC mode, Read-Write in xAPIC mode. */
1964 "x2APIC Logical Destination register", {
1965 { BITS_EOT }
1966 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001967 {0x80f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_SIVR",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001968 "x2APIC Spurious Interrupt Vector register", {
1969 { 31, 19, RESERVED },
1970 { 12, 1, "EOI Broadcast Disable", "R/W", PRESENT_BIN, {
1971 { BITVAL_EOT }
1972 }},
1973 { 11, 3, RESERVED },
1974 { 8, 1, "APIC Software Enable/Disable", "R/W", PRESENT_BIN, {
1975 { MSR1(0), "APIC Disabled" },
1976 { MSR1(1), "APIC Enabled" },
1977 { BITVAL_EOT }
1978 }},
1979 { 7, 8, "Spurious Vector", "R/W", PRESENT_HEX, {
1980 { BITVAL_EOT }
1981 }},
1982 { BITS_EOT }
1983 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001984 {0x810, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_ISR_0",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001985 "x2APIC In-Service register bits [31:0]", {
1986 { BITS_EOT }
1987 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001988 {0x811, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_ISR_1",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001989 "x2APIC In-Service register bits [63:32]", {
1990 { BITS_EOT }
1991 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001992 {0x812, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_ISR_2",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001993 "x2APIC In-Service register bits [95:64]", {
1994 { BITS_EOT }
1995 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001996 {0x813, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_ISR_3",
Anton Kochkov54c07a62012-07-04 07:35:45 +04001997 "x2APIC In-Service register bits [127:96]", {
1998 { BITS_EOT }
1999 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002000 {0x814, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_ISR_4",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002001 "x2APIC In-Service register bits [159:128]", {
2002 { BITS_EOT }
2003 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002004 {0x815, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_ISR_5",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002005 "x2APIC In-Service register bits [191:160]", {
2006 { BITS_EOT }
2007 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002008 {0x816, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_ISR_6",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002009 "x2APIC In-Service register bits [223:192]", {
2010 { BITS_EOT }
2011 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002012 {0x817, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_ISR_7",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002013 "x2APIC In-Service register bits [255:224]", {
2014 { BITS_EOT }
2015 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002016 {0x818, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_TMR0",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002017 "x2APIC Trigger Mode register bits [31:0]", {
2018 { BITS_EOT }
2019 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002020 {0x819, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_TMR1",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002021 "x2APIC Trigger Mode register bits [63:32]", {
2022 { BITS_EOT }
2023 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002024 {0x81a, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_TMR2",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002025 "x2APIC Trigger Mode register bits [95:64]", {
2026 { BITS_EOT }
2027 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002028 {0x81b, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_TMR3",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002029 "x2APIC Trigger Mode register bits [127:96]", {
2030 { BITS_EOT }
2031 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002032 {0x81c, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_TMR4",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002033 "x2APIC Trigger Mode register bits [159:128]", {
2034 { BITS_EOT }
2035 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002036 {0x81d, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_TMR5",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002037 "x2APIC Trigger Mode register bits [191:160]", {
2038 { BITS_EOT }
2039 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002040 {0x81e, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_TMR6",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002041 "x2APIC Trigger Mode register bits [223:192]", {
2042 { BITS_EOT }
2043 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002044 {0x81f, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_TMR7",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002045 "x2APIC Trigger Mode register bits [255:224]", {
2046 { BITS_EOT }
2047 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002048 {0x820, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_IRR0",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002049 "x2APIC Interrupt Request register bits [31:0]", {
2050 { BITS_EOT }
2051 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002052 {0x821, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_IRR1",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002053 "x2APIC Trigger Mode register bits [63:32]", {
2054 { BITS_EOT }
2055 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002056 {0x822, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_IRR2",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002057 "x2APIC Trigger Mode register bits [95:64]", {
2058 { BITS_EOT }
2059 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002060 {0x823, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_IRR3",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002061 "x2APIC Trigger Mode register bits [127:96]", {
2062 { BITS_EOT }
2063 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002064 {0x824, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_IRR4",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002065 "x2APIC Trigger Mode register bits [159:128]", {
2066 { BITS_EOT }
2067 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002068 {0x825, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_IRR5",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002069 "x2APIC Trigger Mode register bits [191:160]", {
2070 { BITS_EOT }
2071 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002072 {0x826, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_IRR6",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002073 "x2APIC Trigger Mode register bits [223:192]", {
2074 { BITS_EOT }
2075 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002076 {0x827, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_IRR7",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002077 "x2APIC Trigger Mode register bits [255:224]", {
2078 { BITS_EOT }
2079 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002080 {0x828, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_ESR",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002081 /* GP fault on non-zero writes. */
2082 "x2APIC Error Status register", {
2083 { 31, 24, RESERVED },
2084 { 7, 1, "Illegal Register Address", "R/O", PRESENT_BIN, {
2085 { BITVAL_EOT }
2086 }},
2087 { 6, 1, "Received Illegal Vector", "R/O", PRESENT_BIN, {
2088 { BITVAL_EOT }
2089 }},
2090 { 5, 1, "Send Illegal Vector", "R/O", PRESENT_BIN, {
2091 { BITVAL_EOT }
2092 }},
2093 { 4, 1, "Redirectible IPI", "R/O", PRESENT_BIN, {
2094 { BITVAL_EOT }
2095 }},
2096 { 3, 4, RESERVED },
2097 { BITS_EOT }
2098 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002099 {0x82f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_LVT_CMCI",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002100 "x2APIC LVT Corrected Machine Check Interrupt register", {
2101 { BITS_EOT }
2102 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002103 {0x830, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_ICR",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002104 "x2APIC Interrupt Command register", {
2105 { 63, 32, "Destination field", "R/W", PRESENT_HEX, {
2106 { BITVAL_EOT }
2107 }},
2108 { 31, 12, RESERVED },
2109 { 19, 2, "Destination Shorthand", "R/W", PRESENT_BIN, {
2110 { MSR1(0), "No Shorthand" },
2111 { MSR1(1), "Self" },
2112 { MSR1(2), "All including Self" },
2113 { MSR1(3), "All excluding Self" },
2114 { BITVAL_EOT }
2115 }},
2116 { 17, 2, RESERVED },
2117 { 15, 1, "Trigger Mode", "R/W", PRESENT_BIN, {
2118 { MSR1(0), "Edge" },
2119 { MSR1(1), "Level" },
2120 { BITVAL_EOT }
2121 }},
2122 { 14, 1, "Level", "R/W", PRESENT_BIN, {
2123 { MSR1(0), "De-assert" },
2124 { MSR1(1), "Assert" },
2125 { BITVAL_EOT }
2126 }},
2127 { 13, 2, RESERVED },
2128 { 11, 1, "Destination Mode", "R/W", PRESENT_BIN, {
2129 { MSR1(0), "Physical" },
2130 { MSR1(1), "Logical" },
2131 { BITVAL_EOT }
2132 }},
2133 { 10, 3, "Delivery Mode", "R/W", PRESENT_BIN, {
2134 { MSR1(0), "Fixed" },
2135 { MSR1(1), "Reserved" },
2136 { MSR1(2), "SMI" },
2137 { MSR1(3), "Reserved" },
2138 { MSR1(4), "NMI" },
2139 { MSR1(5), "INIT" },
2140 { MSR1(6), "Start Up" },
2141 { MSR1(7), "Reserved" },
2142 { BITVAL_EOT }
2143 }},
2144 { 7, 8, "Vector", "R/W", PRESENT_HEX, {
2145 { BITVAL_EOT }
2146 }},
2147 { BITS_EOT }
2148 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002149 {0x832, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_LVT_TIMER",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002150 "x2APIC LVT Timer Interrupt register", {
2151 { BITS_EOT }
2152 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002153 {0x833, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_LVT_THERMAL",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002154 "x2APIC LVT Thermal Sensor Interrupt register", {
2155 { BITS_EOT }
2156 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002157 {0x834, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_LVT_PMI",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002158 "x2APIC LVT Performance Monitor register", {
2159 { BITS_EOT }
2160 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002161 {0x835, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_LVT_LINT0",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002162 "x2APIC LVT LINT0 register", {
2163 { BITS_EOT }
2164 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002165 {0x836, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_LVT_LINT1",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002166 "x2APIC LVT LINT1 register", {
2167 { BITS_EOT }
2168 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002169 {0x837, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_LVT_ERROR",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002170 "x2APIC LVT Error register", {
2171 { BITS_EOT }
2172 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002173 {0x838, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_INIT_COUNT",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002174 "x2APIC Initial Count register", {
2175 { BITS_EOT }
2176 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002177 {0x839, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_X2APIC_CUR_COUNT",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002178 "x2APIC Current Count register", {
2179 { BITS_EOT }
2180 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002181 {0x83e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_X2APIC_DIV_CONF",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002182 "x2APIC Divide Configuration register", {
2183 { BITS_EOT }
2184 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002185 {0x83f, MSRTYPE_WRONLY, MSR2(0, 0), "IA32_X2APIC_SELF_IPI",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002186 "x2APIC Self IPI register", {
2187 /* Only in x2APIC mode. */
2188 { 31, 24, RESERVED },
2189 { 7, 8, "Vector", "R/W", PRESENT_HEX, {
2190 { BITVAL_EOT }
2191 }},
2192 { BITS_EOT }
2193 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002194 {0x107cc, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL0", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04002195 { BITS_EOT }
2196 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002197 {0x107cd, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL1", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04002198 { BITS_EOT }
2199 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002200 {0x107ce, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL2", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04002201 { BITS_EOT }
2202 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002203 {0x107cf, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL3", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04002204 { BITS_EOT }
2205 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002206 {0x107d0, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL4", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04002207 { BITS_EOT }
2208 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002209 {0x107d1, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL5", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04002210 { BITS_EOT }
2211 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002212 {0x107d2, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL6", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04002213 { BITS_EOT }
2214 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002215 {0x107d3, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL7", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04002216 { BITS_EOT }
2217 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01002218 {0x107d8, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_GL_CTL", "", {
Anton Kochkov54c07a62012-07-04 07:35:45 +04002219 { BITS_EOT }
2220 }},
2221 /* if CPUID.80000001H: EDX[29] = 1 or CPUID.80000001H: EDX[27] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01002222 {0xc0000080, MSRTYPE_RDWR, MSR2(0, 0), "IA32_EFER",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002223 "Extended Feature Enables", {
2224 { 63, 52, RESERVED },
2225 { 11, 1, "Execute Disable Bit", "R/O", PRESENT_BIN, {
2226 { MSR1(0), "NX bit disabled" },
2227 { MSR1(1), "NX bit enabled" },
2228 { BITVAL_EOT }
2229 }},
2230 { 10, 1, "IA-32e Mode", "R/O", PRESENT_BIN, {
2231 { MSR1(0), "IA-32e Mode Inactive" },
2232 { MSR1(1), "IA-32e Mode Active" },
2233 { BITVAL_EOT }
2234 }},
2235 { 9, 1, RESERVED },
2236 { 8, 1, "IA-32e Mode Control", "R/W", PRESENT_BIN, {
2237 /* Enable IA-32e Mode operation */
2238 { BITVAL_EOT }
2239 }},
2240 { 7, 7, RESERVED },
2241 { 0, 1, "SYSCALL Control", "R/W", PRESENT_BIN, {
2242 /* Enable SYSCALL/SYSRET instructions
2243 * in 64-bit mode. */
2244 { BITVAL_EOT }
2245 }},
2246 { BITS_EOT }
2247 }},
2248 /* if CPUID.80000001H: EDX[29] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01002249 {0xc0000081, MSRTYPE_RDWR, MSR2(0, 0), "IA32_STAR",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002250 "System Call Target Address", {
2251 { BITS_EOT }
2252 }},
2253 /* if CPUID.80000001H: EDX[29] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01002254 {0xc0000082, MSRTYPE_RDWR, MSR2(0, 0), "IA32_LSTAR",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002255 "IA32e Mode System Call Target Address", {
2256 { BITS_EOT }
2257 }},
2258 /* if CPUID.80000001H: EDX[29] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01002259 {0xc0000084, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FMASK",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002260 "System Call Flag Mask", {
2261 { BITS_EOT }
2262 }},
2263 /* if CPUID.80000001H: EDX[29] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01002264 {0xc0000100, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FS_BASE",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002265 "Map of BASE Address of FS", {
2266 { BITS_EOT }
2267 }},
2268 /* if CPUID.80000001H: EDX[29] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01002269 {0xc0000101, MSRTYPE_RDWR, MSR2(0, 0), "IA32_GS_BASE",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002270 "Map of BASE Address of GS", {
2271 { BITS_EOT }
2272 }},
2273 /* if CPUID.80000001H: EDX[29] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01002274 {0xc0000102, MSRTYPE_RDWR, MSR2(0, 0), "IA32_KERNEL_GS_BASE",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002275 "Swap Target of BASE Address of GS", {
2276 { BITS_EOT }
2277 }},
2278 /* if CPUID.80000001H: EDX[27] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +01002279 {0xc0000103, MSRTYPE_RDWR, MSR2(0, 0), "IA32_TSC_AUX",
Anton Kochkov54c07a62012-07-04 07:35:45 +04002280 "AUXILIARY TSC Signature", {
2281 { BITS_EOT }
2282 }},
2283 { MSR_EOT }
2284};