blob: 8a73d9496618756cbe474286bde707c7027e51eb [file] [log] [blame]
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001/*
2 * This file is part of msrtool.
3 *
4 * Copyright (C) 2013 Olivier Langlois <olivier@olivierlanglois.net>
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.
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040014 */
15
16#include "msrtool.h"
17
18int intel_atom_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) &&
21 (0x1c == id->model));
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040022}
23
24const struct msrdef intel_atom_msrs[] = {
Patrick Georgi5c65d002020-01-29 13:45:45 +010025 {0x0, MSRTYPE_RDWR, MSR2(0, 0), "IA32_P5_MC_ADDR",
26 "Pentium Processor Machine-Check Exception Address", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040027 { BITS_EOT }
28 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010029 {0x1, MSRTYPE_RDWR, MSR2(0, 0), "IA32_P5_MC_TYPE",
30 "Pentium Processor Machine-Check Exception Type", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040031 { BITS_EOT }
32 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010033 {0x10, MSRTYPE_RDWR, MSR2(0, 0), "IA32_TIME_STEP_COUNTER", "TSC", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040034 { BITS_EOT }
35 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010036 {0x17, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PLATFORM_ID", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040037 { BITS_EOT }
38 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010039 {0x2a, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EBL_CR_POWERON", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040040 { BITS_EOT }
41 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010042 {0xcd, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_FSB_FREQ", "Scalable Bus Speed", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040043 { BITS_EOT }
44 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010045 {0xfe, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRRCAP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040046 { BITS_EOT }
47 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010048 {0x11e, MSRTYPE_RDWR, MSR2(0, 0), "MSR_BBL_CR_CTL3", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040049 { BITS_EOT }
50 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010051 {0x198, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_STATUS", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040052 { 63, 19, RESERVED },
53 { 44, 5, "Maximum Bus Ratio", "R/O", PRESENT_DEC, {
54 { BITVAL_EOT }
55 }},
56 { 39, 24, RESERVED },
57 { 15, 16, "Current Performance State Value", "R/O", PRESENT_HEX, {
58 { BITVAL_EOT }
59 }},
60 { BITS_EOT }
61 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010062 {0x19d, MSRTYPE_RDWR, MSR2(0, 0), "MSR_THERM2_CTL", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040063 { BITS_EOT }
64 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010065 {0x200, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE0", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040066 { BITS_EOT }
67 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010068 {0x201, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK0", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040069 { BITS_EOT }
70 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010071 {0x202, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE1", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040072 { BITS_EOT }
73 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010074 {0x203, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK1", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040075 { BITS_EOT }
76 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010077 {0x204, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE2", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040078 { BITS_EOT }
79 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010080 {0x205, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK2", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040081 { BITS_EOT }
82 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010083 {0x206, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE3", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040084 { BITS_EOT }
85 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010086 {0x207, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK3", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040087 { BITS_EOT }
88 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010089 {0x208, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE4", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040090 { BITS_EOT }
91 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010092 {0x209, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK4", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040093 { BITS_EOT }
94 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010095 {0x20a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE5", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040096 { BITS_EOT }
97 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +010098 {0x20b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK5", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -040099 { BITS_EOT }
100 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100101 {0x20c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE6", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400102 { BITS_EOT }
103 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100104 {0x20d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK6", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400105 { BITS_EOT }
106 }},
107#if 0
Patrick Georgi5c65d002020-01-29 13:45:45 +0100108 {0x20e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE7", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400109 { BITS_EOT }
110 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100111 {0x20f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK7", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400112 { BITS_EOT }
113 }},
114#endif
Patrick Georgi5c65d002020-01-29 13:45:45 +0100115 {0x250, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX64K_00000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400116 { BITS_EOT }
117 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100118 {0x258, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX16K_80000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400119 { BITS_EOT }
120 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100121 {0x259, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX16K_A0000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400122 { BITS_EOT }
123 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100124 {0x268, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_C0000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400125 { BITS_EOT }
126 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100127 {0x269, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_C8000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400128 { BITS_EOT }
129 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100130 {0x26a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_D0000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400131 { BITS_EOT }
132 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100133 {0x26b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_D8000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400134 { BITS_EOT }
135 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100136 {0x26c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_E0000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400137 { BITS_EOT }
138 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100139 {0x26d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_E8000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400140 { BITS_EOT }
141 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100142 {0x26e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_F0000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400143 { BITS_EOT }
144 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100145 {0x26f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_F8000", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400146 { BITS_EOT }
147 }},
148 /* if CPUID.01H: ECX[15] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100149 {0x345, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PERF_CAPABILITIES", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400150 /* Additional info available at Section 17.4.1 of
Patrick Georgifbbef022020-01-29 13:31:16 +0100151 * Intel 64 and IA-32 Architectures Software Developer's
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400152 * Manual, Volume 3.
153 */
154 { 63, 50, RESERVED },
155 { 13, 1, "Counter width", "R/O", PRESENT_BIN, {
156 { MSR1(0), "Nothing" },
157 { MSR1(1), "Full width of counter writable via IA32_A_PMCx" },
158 { BITVAL_EOT }
159 }},
160 { 12, 1, "SMM_FREEZE", "R/O", PRESENT_BIN, {
161 { MSR1(0), "Nothing" },
162 { MSR1(1), "Freeze while SMM is supported" },
163 { BITVAL_EOT }
164 }},
165 { 11, 4, "PEBS_REC_FORMAT", "R/O", PRESENT_HEX, {
166 { BITVAL_EOT }
167 }},
168 { 7, 1, "PEBSSaveArchRegs", "R/O", PRESENT_BIN, {
169 { BITVAL_EOT }
170 }},
171 { 6, 1, "PEBS Record Format", "R/O", PRESENT_BIN, {
172 { BITVAL_EOT }
173 }},
174 { 5, 6, "LBR Format", "R/O", PRESENT_HEX, {
175 { BITVAL_EOT }
176 }},
177 { BITS_EOT }
178 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100179 {0x400, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_CTL", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400180 { BITS_EOT }
181 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100182 {0x401, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_STATUS", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400183 { BITS_EOT }
184 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100185 {0x402, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_ADDR", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400186 { BITS_EOT }
187 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100188 {0x404, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_CTL", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400189 { BITS_EOT }
190 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100191 {0x405, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_STATUS", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400192 { BITS_EOT }
193 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100194 {0x408, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_CTL", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400195 { BITS_EOT }
196 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100197 {0x409, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_STATUS", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400198 { BITS_EOT }
199 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100200 {0x40a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_ADDR", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400201 { BITS_EOT }
202 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100203 {0x40c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_CTL", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400204 { BITS_EOT }
205 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100206 {0x40d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_STATUS", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400207 { BITS_EOT }
208 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100209 {0x40e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_ADDR", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400210 { BITS_EOT }
211 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100212 {0x410, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_CTL", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400213 { BITS_EOT }
214 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100215 {0x411, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_STATUS", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400216 { BITS_EOT }
217 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100218 {0x412, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_ADDR", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400219 { BITS_EOT }
220 }},
221
222/* ==========================================================================
223 * Per core MSRs
224 * ==========================================================================
225 */
226
Patrick Georgi5c65d002020-01-29 13:45:45 +0100227 {0x6, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MONITOR_FILTER_SIZE", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400228 { BITS_EOT }
229 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100230 {0x10, MSRTYPE_RDWR, MSR2(0, 0), "IA32_TIME_STEP_COUNTER", "TSC", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400231 { BITS_EOT }
232 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100233 {0x1b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_APIC_BASE", "APIC BASE", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400234 /* In Intel's manual there is MAXPHYWID,
235 * which determine index of highest bit of
236 * APIC Base itself, so marking it as
237 * 'RESERVED'.
238 */
239 { 63, 52, RESERVED },
240 { 11, 1, "APIC Global Enable", "R/W", PRESENT_BIN, {
241 { BITVAL_EOT }
242 }},
243 { 10, 1, "x2APIC mode", "R/W", PRESENT_BIN, {
244 { MSR1(0), "x2APIC mode is disabled" },
245 { MSR1(1), "x2APIC mode is enabled" },
246 { BITVAL_EOT }
247 }},
248 { 9, 1, RESERVED },
249 { 8, 1, "BSP Flag", "R/W", PRESENT_BIN, {
250 { BITVAL_EOT }
251 }},
252 { 7, 8, RESERVED },
253 { BITS_EOT }
254 }},
255 /* if CPUID.01H: ECX[bit 5 or bit 6] = 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100256 {0x3a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FEATURE_CONTROL",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400257 "Control features in Intel 64Processor", {
258 { 63, 48, RESERVED },
259 /* if CPUID.01H: ECX[6] = 1 */
260 { 15, 1, "SENTER Global Enable", "R/WL", PRESENT_BIN, {
261 { MSR1(0), "SENTER leaf functions are disabled" },
262 { MSR1(1), "SENTER leaf functions are enabled" },
263 { BITVAL_EOT }
264 }},
265 /* if CPUID.01H: ECX[6] = 1 */
266 { 14, 7, "SENTER Local Function Enables", "R/WL", PRESENT_BIN, {
267 { BITVAL_EOT }
268 }},
269 { 7, 5, RESERVED },
270 /* if CPUID.01H: ECX[5 or 6] = 1 */
271 { 2, 1, "VMX outside of SMX operation", "R/WL", PRESENT_BIN, {
272 /* This bit enables VMX for system executive
273 * that do not require SMX.
274 */
275 { MSR1(0), "VMX outside of SMX operation disabled" },
276 { MSR1(1), "VMX outside of SMX operation enabled" },
277 { BITVAL_EOT }
278 }},
279 { 1, 1, "VMX inside of SMX operation", "R/WL", PRESENT_BIN, {
280 /* This bit enables a system executive to use
Elyes HAOUAS75db59662018-08-23 18:16:26 +0200281 * VMX in conjunction with SMX to support Intel
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400282 * Trusted Execution Technology.
283 */
284 { MSR1(0), "VMX inside of SMX operation disabled" },
285 { MSR1(1), "VMX inside of SMX operation enabled" },
286 { BITVAL_EOT }
287 }},
288 /* if CPUID.01H: ECX[5 or 6] = 1 */
289 { 0, 1, "Lock bit", "R/WO", PRESENT_BIN, {
290 /* Once the Lock bit is set, the contents
291 * of this register cannot be modified.
292 * Therefore the lock bit must be set after
293 * configuring support for Intel Virtualization
294 * Technology and prior transferring control
295 * to an Option ROM or bootloader. Hence, once
296 * the lock bit is set, the entire IA32_FEATURE_CONTROL_MSR
297 * contents are preserved across RESET when
298 * PWRGOOD it not deasserted.
299 */
300 { MSR1(0), "IA32_FEATURE_CONTROL MSR can be modified" },
301 { MSR1(1), "IA32_FEATURE_CONTROL MSR cannot be modified" },
302 { BITVAL_EOT }
303 }},
304 { BITS_EOT }
305 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100306 {0x40, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_0_FROM_IP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400307 { BITS_EOT }
308 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100309 {0x41, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_1_FROM_IP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400310 { BITS_EOT }
311 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100312 {0x42, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_2_FROM_IP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400313 { BITS_EOT }
314 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100315 {0x43, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_3_FROM_IP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400316 { BITS_EOT }
317 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100318 {0x44, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_4_FROM_IP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400319 { BITS_EOT }
320 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100321 {0x45, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_5_FROM_IP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400322 { BITS_EOT }
323 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100324 {0x46, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_6_FROM_IP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400325 { BITS_EOT }
326 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100327 {0x47, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_7_FROM_IP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400328 { BITS_EOT }
329 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100330 {0x60, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_0_TO_LIP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400331 { BITS_EOT }
332 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100333 {0x61, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_1_TO_LIP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400334 { BITS_EOT }
335 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100336 {0x62, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_2_TO_LIP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400337 { BITS_EOT }
338 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100339 {0x63, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_3_TO_LIP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400340 { BITS_EOT }
341 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100342 {0x64, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_4_TO_LIP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400343 { BITS_EOT }
344 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100345 {0x65, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_5_TO_LIP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400346 { BITS_EOT }
347 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100348 {0x66, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_6_TO_LIP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400349 { BITS_EOT }
350 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100351 {0x67, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_7_TO_LIP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400352 { BITS_EOT }
353 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100354 {0x8b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_BIOS_SIGN_ID",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400355 "BIOS Update Signature ID (RO)", {
356 { BITS_EOT }
357 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100358 {0xc1, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PMC0",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400359 "Performance counter register", {
360 { BITS_EOT }
361 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100362 {0xc2, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PMC1",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400363 "Performance counter register", {
364 { BITS_EOT }
365 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100366 {0xe7, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MPERF", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400367 { BITS_EOT }
368 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100369 {0xe8, MSRTYPE_RDWR, MSR2(0, 0), "IA32_APERF", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400370 { BITS_EOT }
371 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100372 {0x174, MSRTYPE_RDWR, MSR2(0, 0), "IA32_SYSENTER_CS", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400373 { BITS_EOT }
374 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100375 {0x175, MSRTYPE_RDWR, MSR2(0, 0), "IA32_SYSENTER_ESP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400376 { BITS_EOT }
377 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100378 {0x176, MSRTYPE_RDWR, MSR2(0, 0), "IA32_SYSENTER_EIP", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400379 { BITS_EOT }
380 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100381 {0x17a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MCG_STATUS", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400382 { 63, 61, RESERVED },
383 { 2, 1, "MCIP", "R/W", PRESENT_BIN, {
384 /* When set, bit indicates that a machine check has been
385 * generated. If a second machine check is detected while
386 * this bit is still set, the processor enters a shutdown state.
387 * Software should write this bit to 0 after processing
388 * a machine check exception.
389 */
390 { MSR1(0), "Nothing" },
391 { MSR1(1), "Machine check has been generated" },
392 { BITVAL_EOT }
393 }},
394 { 1, 1, "EPIV", "R/W", PRESENT_BIN, {
395 /* When set, bit indicates that the instruction addressed
396 * by the instruction pointer pushed on the stack (when
397 * the machine check was generated) is directly associated
398 * with the error
399 */
400 { MSR1(0), "Nothing" },
401 { MSR1(1), "Instruction addressed directly associated with the error" },
402 { BITVAL_EOT }
403 }},
404 { 0, 1, "RIPV", "R/W", PRESENT_BIN, {
405 /* When set, bit indicates that the instruction addressed
406 * by the instruction pointer pushed on the stack (when
407 * the machine check was generated) can be used to restart
408 * the program. If cleared, the program cannot be reliably restarted
409 */
410 { MSR1(0), "Program cannot be reliably restarted" },
411 { MSR1(1), "Instruction addressed can be used to restart the program" },
412 { BITVAL_EOT }
413 }},
414 { BITS_EOT }
415 }},
416 /* if CPUID.0AH: EAX[15:8] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100417 {0x186, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERFEVTSEL0",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400418 "Performance Event Select Register 0", {
419 { 63, 32, RESERVED },
420 { 31, 8, "CMASK", "R/W", PRESENT_HEX, {
421 /* When CMASK is not zero, the corresponding performance
422 * counter 0 increments each cycle if the event count
423 * is greater than or equal to the CMASK.
424 */
425 { BITVAL_EOT }
426 }},
427 { 23, 1, "INV", "R/W", PRESENT_BIN, {
428 { MSR1(0), "CMASK using as is" },
429 { MSR1(1), "CMASK inerting" },
430 { BITVAL_EOT }
431 }},
432 { 22, 1, "EN", "R/W", PRESENT_BIN, {
433 { MSR1(0), "No commence counting" },
434 { MSR1(1), "Commence counting" },
435 { BITVAL_EOT }
436 }},
437 { 21, 1, "AnyThread", "R/W", PRESENT_BIN, {
438 { BITVAL_EOT }
439 }},
440 { 20, 1, "INT", "R/W", PRESENT_BIN, {
441 { MSR1(0), "Interrupt on counter overflow is disabled" },
442 { MSR1(1), "Interrupt on counter overflow is enabled" },
443 { BITVAL_EOT }
444 }},
445 { 19, 1, "PC", "R/W", PRESENT_BIN, {
446 { MSR1(0), "Disabled pin control" },
447 { MSR1(1), "Enabled pin control" },
448 { BITVAL_EOT }
449 }},
450 { 18, 1, "Edge", "R/W", PRESENT_BIN, {
451 { MSR1(0), "Disabled edge detection" },
452 { MSR1(1), "Enabled edge detection" },
453 { BITVAL_EOT }
454 }},
455 { 17, 1, "OS", "R/W", PRESENT_BIN, {
456 { MSR1(0), "Nothing" },
457 { MSR1(1), "Counts while in privilege level is ring 0" },
458 { BITVAL_EOT }
459 }},
460 { 16, 1, "USR", "R/W", PRESENT_BIN, {
461 { MSR1(0), "Nothing" },
462 { MSR1(1), "Counts while in privilege level is not ring 0" },
463 { BITVAL_EOT }
464 }},
465 { 15, 8, "UMask", "R/W", PRESENT_HEX, {
466 /* Qualifies the microarchitectural condition
467 * to detect on the selected event logic. */
468 { BITVAL_EOT }
469 }},
470 { 7, 8, "Event Select", "R/W", PRESENT_HEX, {
471 /* Selects a performance event logic unit. */
472 { BITVAL_EOT }
473 }},
474 { BITS_EOT }
475 }},
476 /* if CPUID.0AH: EAX[15:8] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100477 {0x187, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERFEVTSEL1",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400478 "Performance Event Select Register 1", {
479 { 63, 32, RESERVED },
480 { 31, 8, "CMASK", "R/W", PRESENT_HEX, {
481 /* When CMASK is not zero, the corresponding performance
482 * counter 1 increments each cycle if the event count
483 * is greater than or equal to the CMASK.
484 */
485 { BITVAL_EOT }
486 }},
487 { 23, 1, "INV", "R/W", PRESENT_BIN, {
488 { MSR1(0), "CMASK using as is" },
489 { MSR1(1), "CMASK inerting" },
490 { BITVAL_EOT }
491 }},
492 { 22, 1, "EN", "R/W", PRESENT_BIN, {
493 { MSR1(0), "No commence counting" },
494 { MSR1(1), "Commence counting" },
495 { BITVAL_EOT }
496 }},
497 { 21, 1, "AnyThread", "R/W", PRESENT_BIN, {
498 { BITVAL_EOT }
499 }},
500 { 20, 1, "INT", "R/W", PRESENT_BIN, {
501 { MSR1(0), "Interrupt on counter overflow is disabled" },
502 { MSR1(1), "Interrupt on counter overflow is enabled" },
503 { BITVAL_EOT }
504 }},
505 { 19, 1, "PC", "R/W", PRESENT_BIN, {
506 { MSR1(0), "Disabled pin control" },
507 { MSR1(1), "Enabled pin control" },
508 { BITVAL_EOT }
509 }},
510 { 18, 1, "Edge", "R/W", PRESENT_BIN, {
511 { MSR1(0), "Disabled edge detection" },
512 { MSR1(1), "Enabled edge detection" },
513 { BITVAL_EOT }
514 }},
515 { 17, 1, "OS", "R/W", PRESENT_BIN, {
516 { MSR1(0), "Nothing" },
517 { MSR1(1), "Counts while in privilege level is ring 0" },
518 { BITVAL_EOT }
519 }},
520 { 16, 1, "USR", "R/W", PRESENT_BIN, {
521 { MSR1(0), "Nothing" },
522 { MSR1(1), "Counts while in privilege level is not ring 0" },
523 { BITVAL_EOT }
524 }},
525 { 15, 8, "UMask", "R/W", PRESENT_HEX, {
526 /* Qualifies the microarchitectural condition
527 * to detect on the selected event logic. */
528 { BITVAL_EOT }
529 }},
530 { 7, 8, "Event Select", "R/W", PRESENT_HEX, {
531 /* Selects a performance event logic unit. */
532 { BITVAL_EOT }
533 }},
534 { BITS_EOT }
535 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100536 {0x199, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_CTL", "", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400537 { BITS_EOT }
538 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100539 {0x19a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_CLOCK_MODULATION",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400540 "Clock Modulation", {
541 { 63, 59, RESERVED },
542 { 4, 1, "On demand Clock Modulation", "R/W", PRESENT_BIN, {
543 { MSR1(0), "On demand Clock Modulation is disabled" },
544 { MSR1(1), "On demand Clock Modulation is enabled" },
545 { BITVAL_EOT }
546 }},
547 { 3, 3, "On demand Clock Modulation Duty Cycle", "R/W", PRESENT_HEX, {
548 { BITVAL_EOT }
549 }},
550 { 0, 1, RESERVED },
551 { BITS_EOT }
552 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100553 {0x19b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_THERM_INTERRUPT",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400554 "Thermal Interrupt Control", {
555 { BITS_EOT }
556 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100557 {0x19c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_THERM_STATUS",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400558 "Thermal Monitor Status", {
559 { BITS_EOT }
560 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100561 {0x1a0, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MISC_ENABLE",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400562 "Enable miscellaneous processor features", {
563 { 63, 25, RESERVED },
564 /* Note: [38] bit using for whole package,
565 * while some other bits can be Core or Thread
566 * specific.
567 */
568 { 38, 1, "Turbo Mode", "R/W", PRESENT_BIN, {
569 /* When set to a 0 on processors that support IDA,
570 * CPUID.06H: EAX[1] reports the processor's
571 * support of turbo mode is enabled.
572 */
573 { MSR1(0), "Turbo Mode enabled" },
574 /* When set 1 on processors that support Intel Turbo Boost
575 * technology, the turbo mode feature is disabled and
576 * the IDA_Enable feature flag will be clear (CPUID.06H: EAX[1]=0).
577 */
578 { MSR1(1), "Turbo Mode disabled" },
579 { BITVAL_EOT }
580 /* Note: the power-on default value is used by BIOS to detect
581 * hardware support of turbo mode. If power-on default value is 1,
582 * turbo mode is available in the processor. If power-on default
583 * value is 0, turbo mode not available.
584 */
585 }},
586 { 37, 3, RESERVED },
587 { 34, 1, "XD Bit Disable", "R/W", PRESENT_BIN, {
588 { BITVAL_EOT }
589 }},
590 { 33, 10, RESERVED },
591 { 23, 1, "xTPR Message Disable", "R/W", PRESENT_BIN, {
592 { BITVAL_EOT }
593 }},
594 { 22, 1, "Limit CPUID Maxval", "R/W", PRESENT_BIN, {
595 { BITVAL_EOT }
596 }},
597 { 21, 3, RESERVED },
598 { 18, 1, "Enable Monitor FSM", "R/W", PRESENT_BIN, {
599 { BITVAL_EOT }
600 }},
601 { 17, 1, "UNDOCUMENTED", "R/W", PRESENT_BIN, {
602 { BITVAL_EOT }
603 }},
604 /* Note: [16] bit using for whole package,
605 * while some other bits can be Core or Thread
606 * specific.
607 */
608 { 16, 1, "Enhanced Intel SpeedStep Technology Enable", "R/W",
609 PRESENT_BIN, {
610 { BITVAL_EOT }
611 }},
612 { 15, 3, RESERVED },
613 { 12, 1, "Precise Event Based Sampling Unavailable", "R/O",
614 PRESENT_BIN, {
615 { BITVAL_EOT }
616 }},
617 { 11, 1, "Branch Trace Storage Unavailable", "R/O", PRESENT_BIN, {
618 { BITVAL_EOT }
619 }},
620 { 10, 3, RESERVED },
621 { 7, 1, "Performance Monitoring Available", "R", PRESENT_BIN, {
622 { BITVAL_EOT }
623 }},
624 { 6, 3, RESERVED },
625 { 3, 1, "Automatic Thermal Control Circuit Enable", "R/W"
626 , PRESENT_BIN, {
627 { BITVAL_EOT }
628 }},
629 { 2, 2, RESERVED },
630 { 0, 1, "Fast-Strings Enable", "R/W", PRESENT_BIN, {
631 { BITVAL_EOT }
632 }},
633 { BITS_EOT }
634 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100635 {0x1c9, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_LASTBRANCH_TOS",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400636 "Last Branch Record Stack TOS", {
637 /* Contains an index (bits 0-3) that points to the MSR containing
638 * the most recent branch record. See also MSR_LASTBRANCH_0_FROM_IP (0x680).
639 */
640 { BITS_EOT }
641 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100642 {0x1d9, MSRTYPE_RDWR, MSR2(0, 0), "IA32_DEBUGCTL",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400643 "Debug/Trace/Profile Resource Control", {
644 /* (MSR_DEBUGCTTLA, MSR_DEBUGCTLB) */
645 { 63, 49, RESERVED },
646 /* Only if IA32_PERF_CAPABILITIES[12] = 1 */
647 { 14, 1, "FREEZE_WHILE_SMM", "R/O", PRESENT_BIN, {
648 { MSR1(0), "Nothing" },
649 { MSR1(1), "Freeze perfmon and trace messages while in SMM" },
650 { BITVAL_EOT }
651 }},
652 { 13, 1, "ENABLE_UNCORE_PMI", "R/O", PRESENT_BIN, {
653 { MSR1(0), "Nothing" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100654 { MSR1(1), "Logical processor can receive and generate PMI "
655 "on behalf of the uncore" },
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400656 { BITVAL_EOT }
657 }},
658 /* Only if CPUID.01H: ECX[15] = 1 and CPUID.0AH: EAX[7:0]>1 */
659 { 12, 1, "FREEZE_PERFMON_ON_PMI", "R/O", PRESENT_BIN, {
660 { MSR1(0), "Nothing" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100661 { MSR1(1), "Each ENABLE bit of the global counter control MSR "
662 "are frozen (address 0x3bf) on PMI request" },
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400663 { BITVAL_EOT }
664 }},
665 /* Only if CPUID.01H: ECX[15] = 1 and CPUID.0AH: EAX[7:0]>1 */
666 { 11, 1, "FREEZE_LBRS_ON_PMI", "R/O", PRESENT_BIN, {
667 { MSR1(0), "Nothing" },
668 { MSR1(1), "LBR stack is frozen on PMI request" },
669 { BITVAL_EOT }
670 }},
671 { 10, 1, "BTS_OFF_USR", "R/O", PRESENT_BIN, {
672 { MSR1(0), "Nothing" },
673 { MSR1(1), "BTS or BTM is skipped if CPL > 0" },
674 { BITVAL_EOT }
675 }},
676 { 9, 1, "BTS_OFF_OS", "R/O", PRESENT_BIN, {
677 { MSR1(0), "Nothing" },
678 { MSR1(1), "BTS or BTM is skipped if CPL = 0" },
679 { BITVAL_EOT }
680 }},
681 { 8, 1, "BTINT", "R/O", PRESENT_BIN, {
682 { MSR1(0), "BTMs are logged in a BTS buffer in circular fashion" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100683 { MSR1(1), "An interrupt is generated by the BTS facility "
684 "when the BTS buffer is full" },
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400685 { BITVAL_EOT }
686 }},
687 { 7, 1, "BTS", "R/O", PRESENT_BIN, {
Patrick Georgi5c65d002020-01-29 13:45:45 +0100688 { MSR1(0), "Logging of BTMs (branch trace messages) "
689 "in BTS buffer is disabled" },
690 { MSR1(1), "Logging of BTMs (branch trace messages) "
691 "in BTS buffer is enabled" },
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400692 { BITVAL_EOT }
693 }},
694 { 6, 1, "TR", "R/O", PRESENT_BIN, {
695 { MSR1(0), "Branch trace messages are disabled" },
696 { MSR1(1), "Branch trace messages are enabled" },
697 { BITVAL_EOT }
698 }},
699 { 5, 4, RESERVED },
700 { 1, 1, "BTF", "R/O", PRESENT_BIN, {
701 { MSR1(0), "Nothing" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100702 { MSR1(1), "Enabled treating EFLAGS.TF as single-step on "
703 "branches instead of single-step on instructions" },
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400704 { BITVAL_EOT }
705 }},
706 { 0, 1, "LBR", "R/O", PRESENT_BIN, {
707 { MSR1(0), "Nothing" },
Patrick Georgi5c65d002020-01-29 13:45:45 +0100708 { MSR1(1), "Enabled recording a running trace of the most "
709 "recent branches taken by the processor in the LBR stack" },
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400710 { BITVAL_EOT }
711 }},
712 { BITS_EOT }
713 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100714 {0x1dd, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_LER_FROM_LIP",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400715 "Last Exception Record From Linear IP", {
716 /* Contains a pointer to the last branch instruction
717 * that the processor executed prior to the last exception
718 * that was generated or the last interrupt that was handled.
719 */
720 { BITS_EOT }
721 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100722 {0x1de, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_LER_TO_LIP",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400723 "Last Exception Record To Linear IP", {
724 /* This area contains a pointer to the target of the
725 * last branch instruction that the processor executed
726 * prior to the last exception that was generated or
727 * the last interrupt that was handled
728 */
729 { BITS_EOT }
730 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +0100731 {0x277, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PAT", "IA32_PAT", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400732 { 63, 5, RESERVED },
733 { 58, 3, "PA7", "R/W", PRESENT_BIN, {
734 { BITVAL_EOT }
735 }},
736 { 55, 5, RESERVED },
737 { 40, 3, "PA6", "R/W", PRESENT_BIN, {
738 { BITVAL_EOT }
739 }},
740 { 47, 5, RESERVED },
741 { 42, 3, "PA5", "R/W", PRESENT_BIN, {
742 { BITVAL_EOT }
743 }},
744 { 39, 5, RESERVED },
745 { 34, 3, "PA4", "R/W", PRESENT_BIN, {
746 { BITVAL_EOT }
747 }},
748 { 31, 5, RESERVED },
749 { 26, 3, "PA3", "R/W", PRESENT_BIN, {
750 { BITVAL_EOT }
751 }},
752 { 23, 5, RESERVED },
753 { 18, 3, "PA2", "R/W", PRESENT_BIN, {
754 { BITVAL_EOT }
755 }},
756 { 15, 5, RESERVED },
757 { 10, 3, "PA1", "R/W", PRESENT_BIN, {
758 { BITVAL_EOT }
759 }},
760 { 7, 5, RESERVED },
761 { 2, 3, "PA0", "R/W", PRESENT_BIN, {
762 { BITVAL_EOT }
763 }},
764 { BITS_EOT }
765 }},
766 /* if CPUID.0AH: EDX[4:0] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100767 {0x309, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR0", "Fixed-Function "
768 "Performance Counter Register 0: Counts Instr_Retired.Any", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400769 /* Also known as MSR_PERF_FIXED_CTR0 */
770 { BITS_EOT }
771 }},
772 /* if CPUID.0AH: EDX[4:0] > 1 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100773 {0x30a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR1", "Fixed-Function "
774 "Performance Counter Register 1: Counts CPU_CLK_Unhalted.Core ", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400775 /* Also known as MSR_PERF_FIXED_CTR1 */
776 { BITS_EOT }
777 }},
778 /* if CPUID.0AH: EDX[4:0] > 2 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100779 {0x30b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR2", "Fixed-Function "
780 "Performance Counter Register 2: Counts CPU_CLK_Unhalted.Ref", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400781 /* Also known as MSR_PERF_FIXED_CTR2 */
782 { BITS_EOT }
783 }},
784 /* if CPUID.0AH: EAX[7:0] > 1*/
Patrick Georgi5c65d002020-01-29 13:45:45 +0100785 {0x38d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR_CTRL",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400786 "Fixed-Function-Counter Control Register", {
787 /* Also known as MSR_PERF_FIXED_CTR_CTRL.
788 * Counter increments while the results of ANDing respective enable bit
789 * in IA32_PERF_GLOBAL_CTRL with the corresponding OS or USR bits
790 * in this MSR is true. */
791 { 63, 52, RESERVED },
792 { 11, 1, "EN2_PMI", "R/W", PRESENT_BIN, {
793 { MSR1(0), "Nothing" },
794 { MSR1(1), "PMI when fixed counter 2 overflows is enabled" },
795 { BITVAL_EOT }
796 }},
797 /* if CPUID.0AH EAX[7:0] > 2 */
798 { 10, 1, "AnyThread 2", "R/W", PRESENT_BIN, {
Patrick Georgi5c65d002020-01-29 13:45:45 +0100799 { MSR1(0), "Counter only increments the associated event "
800 "conditions occurring in the logical processor "
801 "which programmed the MSR" },
802 { MSR1(1), "Counting the associated event conditions "
803 "occurring across all logical processors sharing "
804 "a processor core" },
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400805 { BITVAL_EOT }
806 }},
807 { 9, 1, "EN2_Usr", "R/W", PRESENT_BIN, {
808 { MSR1(0), "Nothing" },
809 { MSR1(1), "Fixed counter 2 is enabled to count while CPL > 0" },
810 { BITVAL_EOT }
811 }},
812 { 8, 1, "EN2_OS", "R/W", PRESENT_BIN, {
813 { MSR1(0), "Nothing" },
814 { MSR1(1), "Fixed counter 2 is enabled to count while CPL = 0" },
815 { BITVAL_EOT }
816 }},
817 { 7, 1, "EN1_PMI", "R/W", PRESENT_BIN, {
818 { MSR1(0), "Nothing" },
819 { MSR1(1), "PMI when fixed counter 1 overflows is enabled" },
820 { BITVAL_EOT }
821 }},
822 /* if CPUID.0AH: EAX[7:0] > 2 */
823 { 6, 1, "AnyThread 1", "R/W", PRESENT_BIN, {
Patrick Georgi5c65d002020-01-29 13:45:45 +0100824 { MSR1(0), "Counter only increments the associated event "
825 "conditions occurring in the logical processor "
826 "which programmed the MSR" },
827 { MSR1(1), "Counting the associated event conditions "
828 "occurring across all logical processors sharing "
829 "a processor core" },
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400830 { BITVAL_EOT }
831 }},
832 { 5, 1, "EN1_Usr", "R/W", PRESENT_BIN, {
833 { MSR1(0), "Nothing" },
834 { MSR1(1), "Fixed counter 1 is enabled to count while CPL > 0" },
835 { BITVAL_EOT }
836 }},
837 { 4, 1, "EN1_OS", "R/W", PRESENT_BIN, {
838 { MSR1(0), "Nothing" },
839 { MSR1(1), "Fixed counter 1 is enabled to count while CPL = 0" },
840 { BITVAL_EOT }
841 }},
842 { 3, 1, "EN0_PMI", "R/W", PRESENT_BIN, {
843 { MSR1(0), "Nothing" },
844 { MSR1(1), "PMI when fixed counter 0 overflows is enabled" },
845 { BITVAL_EOT }
846 }},
847 /* if CPUID.0AH: EAX[7:0] > 2 */
848 { 2, 1, "AnyThread 0", "R/W", PRESENT_BIN, {
Patrick Georgi5c65d002020-01-29 13:45:45 +0100849 { MSR1(0), "Counter only increments the associated event "
850 "conditions occurring in the logical processor "
851 "which programmed the MSR" },
852 { MSR1(1), "Counting the associated event conditions "
853 "occurring across all logical processors sharing "
854 "a processor core" },
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400855 { BITVAL_EOT }
856 }},
857 { 1, 1, "EN0_Usr", "R/W", PRESENT_BIN, {
858 { MSR1(0), "Nothing" },
859 { MSR1(1), "Fixed counter 0 is enabled to count while CPL > 0" },
860 { BITVAL_EOT }
861 }},
862 { 0, 1, "EN0_OS", "R/W", PRESENT_BIN, {
863 { MSR1(0), "Nothing" },
864 { MSR1(1), "Fixed counter 0 is enabled to count while CPL = 0" },
865 { BITVAL_EOT }
866 }},
867 { BITS_EOT }
868 }},
869 /* if CPUID.0AH: EAX[7:0] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100870 {0x38e, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PERF_GLOBAL_STATUS",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400871 "Global Performance Counter Status", {
872 /* Also known as MSR_PERF_GLOBAL_STATUS */
873 /* if CPUID.0AH: EAX[7:0] > 0 */
874 { 63, 1, "CondChg: Status bits of this register has changed",
875 "R/O", PRESENT_BIN, {
876 { BITVAL_EOT }
877 }},
878 /* if CPUID.0AH: EAX[7:0] > 0 */
879 { 62, 1, "OvfBuf: DS SAVE area Buffer overflow status",
880 "R/O", PRESENT_BIN, {
881 { BITVAL_EOT }
882 }},
883 /* if CPUID.0AH: EAX[7:0] > 2 */
884 { 61, 1, "Ovf_Uncore: Uncore counter overflow status",
885 "R/O", PRESENT_BIN, {
886 { BITVAL_EOT }
887 }},
888 { 60, 26, RESERVED },
889 /* if CPUID.0AH: EAX[7:0] > 1 */
890 { 34, 1, "Ovf_FixedCtr2: Overflow status of IA32_FIXED_CTR2",
891 "R/O", PRESENT_BIN, {
892 { BITVAL_EOT }
893 }},
894 /* if CPUID.0AH: EAX[7:0] > 1 */
895 { 33, 1, "Ovf_FixedCtr1: Overflow status of IA32_FIXED_CTR1",
896 "R/O", PRESENT_BIN, {
897 { BITVAL_EOT }
898 }},
899 /* if CPUID.0AH: EAX[7:0] > 1 */
900 { 32, 1, "Ovf_FixedCtr0: Overflow status of IA32_FIXED_CTR0",
901 "R/O", PRESENT_BIN, {
902 { BITVAL_EOT }
903 }},
904 { 31, 28, RESERVED },
905 /* presented only in 06_2EH Nehalem model */
906 { 3, 1, "Ovf_PMC3: Overflow status of IA32_PMC3", "R/O", PRESENT_BIN, {
907 { BITVAL_EOT }
908 }},
909 /* presented only in 06_2EH Nehalem model */
910 { 2, 1, "Ovf_PMC2: Overflow status of IA32_PMC2", "R/O", PRESENT_BIN, {
911 { BITVAL_EOT }
912 }},
913 /* if CPUID.0AH: EAX[7:0] > 0 */
914 { 1, 1, "Ovf_PMC1: Overflow status of IA32_PMC1", "R/O", PRESENT_BIN, {
915 { BITVAL_EOT }
916 }},
917 /* if CPUID.0AH: EAX[7:0] > 0 */
918 { 0, 1, "Ovf_PMC0: Overflow status of IA32_PMC0", "R/O", PRESENT_BIN, {
919 { BITVAL_EOT }
920 }},
921 { BITS_EOT }
922 }},
923 /* if CPUID.0AH: EAX[7:0] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100924 {0x38f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_GLOBAL_CTL",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400925 "Global Performance Counter Control", {
926 /* Counter increments while the result of ANDing respective
927 * enable bit in this MSR with corresponding OS or USR bits
928 * in general-purpose or fixed counter control MSR is true.
929 */
930 { 63, 29, RESERVED },
931 /* if CPUID.0AH: EAX[7:0] > 1 */
932 { 34, 1, "EN_FIXED_CTR2", "R/W", PRESENT_BIN, {
933 { BITVAL_EOT }
934 }},
935 /* if CPUID.0AH: EAX[7:0] > 1 */
936 { 33, 1, "EN_FIXED_CTR1", "R/W", PRESENT_BIN, {
937 { BITVAL_EOT }
938 }},
939 /* if CPUID.0AH: EAX[7:0] > 1 */
940 { 32, 1, "EN_FIXED_CTR0", "R/W", PRESENT_BIN, {
941 { BITVAL_EOT }
942 }},
943 { 31, 30, RESERVED },
944 /* if CPUID.0AH: EAX[7:0] > 0 */
945 { 1, 1, "EN_PMC1", "R/W", PRESENT_BIN, {
946 { BITVAL_EOT }
947 }},
948 /* if CPUID.0AH: EAX[7:0] > 0 */
949 { 0, 1, "EN_PMC0", "R/W", PRESENT_BIN, {
950 { BITVAL_EOT }
951 }},
952 { BITS_EOT }
953 }},
954 /* if CPUID.0AH: EAX[7:0] > 0 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100955 {0x390, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_GLOBAL_OVF_CTL",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400956 "Global Performance Counter Overflow Control", {
957 /* if CPUID.0AH: EAX[7:0] > 0 */
958 { 63, 1, "Clear CondChg bit", "R/W", PRESENT_BIN, {
959 { BITVAL_EOT }
960 }},
961 /* if CPUID.0AH: EAX[7:0] > 0 */
962 { 62, 1, "Clear OvfBuf bit", "R/W", PRESENT_BIN, {
963 { BITVAL_EOT }
964 }},
965 /* Presented only in 06_2EH Nehalem model */
966 { 61, 1, "Clear Ovf_Uncore bit", "R/W", PRESENT_BIN, {
967 { BITVAL_EOT }
968 }},
969 { 60, 26, RESERVED },
970 /* if CPUID.0AH: EAX[7:0] > 1 */
971 { 34, 1, "Clear Ovf_FIXED_CTR2 bit", "R/W", PRESENT_BIN, {
972 { BITVAL_EOT }
973 }},
974 /* if CPUID.0AH: EAX[7:0] > 1 */
975 { 33, 1, "Clear Ovf_FIXED_CTR1 bit", "R/W", PRESENT_BIN, {
976 { BITVAL_EOT }
977 }},
978 /* if CPUID.0AH: EAX[7:0] > 1 */
979 { 32, 1, "Clear Ovf_FIXED_CTR0 bit", "R/W", PRESENT_BIN, {
980 { BITVAL_EOT }
981 }},
982 { 31, 30, RESERVED },
983 /* if CPUID.0AH: EAX[7:0] > 0 */
984 { 1, 1, "Clear Ovf_PMC1 bit", "R/W", PRESENT_BIN, {
985 { BITVAL_EOT }
986 }},
987 /* if CPUID.0AH: EAX[7:0] > 0 */
988 { 0, 1, "Clear Ovf_PMC0 bit", "R/W", PRESENT_BIN, {
989 { BITVAL_EOT }
990 }},
991 { BITS_EOT }
992 }},
993 /* See Section 18.6.1.1 of Intel 64 and IA-32 Architectures
994 * Software Developer's Manual, Volume 3,
995 * "Precise Event Based Sampling (PEBS)".
996 */
Patrick Georgi5c65d002020-01-29 13:45:45 +0100997 {0x3f1, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PEBS_ENABLE", "PEBS Control", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -0400998 { 63, 28, RESERVED },
999 { 35, 1, "Load Latency on IA32_PMC3", "R/W", PRESENT_BIN, {
1000 { MSR1(0), "Disabled" },
1001 { MSR1(1), "Enabled" },
1002 { BITVAL_EOT }
1003 }},
1004 { 34, 1, "Load Latency on IA32_PMC2", "R/W", PRESENT_BIN, {
1005 { MSR1(0), "Disabled" },
1006 { MSR1(1), "Enabled" },
1007 { BITVAL_EOT }
1008 }},
1009 { 33, 1, "Load Latency on IA32_PMC1", "R/W", PRESENT_BIN, {
1010 { MSR1(0), "Disabled" },
1011 { MSR1(1), "Enabled" },
1012 { BITVAL_EOT }
1013 }},
1014 { 32, 1, "Load Latency on IA32_PMC0", "R/W", PRESENT_BIN, {
1015 { MSR1(0), "Disabled" },
1016 { MSR1(1), "Enabled" },
1017 { BITVAL_EOT }
1018 }},
1019 { 31, 28, RESERVED },
1020 { 3, 1, "PEBS on IA32_PMC3", "R/W", PRESENT_BIN, {
1021 { MSR1(0), "Disabled" },
1022 { MSR1(1), "Enabled" },
1023 { BITVAL_EOT }
1024 }},
1025 { 2, 1, "PEBS on IA32_PMC2", "R/W", PRESENT_BIN, {
1026 { MSR1(0), "Disabled" },
1027 { MSR1(1), "Enabled" },
1028 { BITVAL_EOT }
1029 }},
1030 { 1, 1, "PEBS on IA32_PMC1", "R/W", PRESENT_BIN, {
1031 { MSR1(0), "Disabled" },
1032 { MSR1(1), "Enabled" },
1033 { BITVAL_EOT }
1034 }},
1035 { 0, 1, "PEBS on IA32_PMC0", "R/W", PRESENT_BIN, {
1036 { MSR1(0), "Disabled" },
1037 { MSR1(1), "Enabled" },
1038 { BITVAL_EOT }
1039 }},
1040 { BITS_EOT }
1041 }},
1042#if 0
Patrick Georgi5c65d002020-01-29 13:45:45 +01001043 {0x480, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_BASIC",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001044 "Reporting Register of Basic VMX Capabilities", {
1045 /* Additional info available at
1046 * Appendix A.1, "Basic VMX Information" */
1047 { 63, 10, RESERVED },
1048 { 53, 4, "Memory type for VMREAD and VMWRITE", "R/O", PRESENT_HEX, {
1049 { BITVAL_EOT }
1050 }},
1051 { 49, 1, "Support of dual-treatment of system-management functions",
1052 "R/O", PRESENT_BIN, {
1053 { BITVAL_EOT }
1054 }},
1055 { 48, 1, "Enable full linear address access", "R/O", PRESENT_BIN, {
1056 { BITVAL_EOT }
1057 }},
1058 { 47, 3, RESERVED },
1059 { 44, 13, "VMXON region allocation size", "R/O", PRESENT_DEC, {
1060 { BITVAL_EOT }
1061 }},
1062 { 31, 32, "VMCS Revision Identifier", "R/O", PRESENT_HEX, {
1063 { BITVAL_EOT }
1064 }},
1065 { BITS_EOT }
1066 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001067 {0x481, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PINBASED_CTLS",
1068 "Capability Reporting Register of "
1069 "Pin-based VM-execution Controls", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001070 /* Additional info available at Appendix A.3,
1071 * "VM-Execution Controls" */
1072 { BITS_EOT }
1073 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001074 {0x482, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PROCBASED_CTLS",
1075 "Capability Reporting Register of "
1076 "Primary Processor-based VM-execution Controls", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001077 /* Additional info available at Appendix A.3,
1078 * "VM-Execution Controls" */
1079 { BITS_EOT }
1080 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001081 {0x483, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_EXIT_CTLS",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001082 "Capability Reporting Register of VM-exit Controls", {
1083 /* Additional info available at Appendix A.4,
1084 * "VM-Exit Controls" */
1085 { BITS_EOT }
1086 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001087 {0x484, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_ENTRY_CTLS",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001088 "Capability Reporting Register of VM-entry Controls", {
1089 /* Additional info available at Appendix A.5,
1090 * "VM-Entry Controls" */
1091 { BITS_EOT }
1092 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001093 {0x485, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_MISC",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001094 "Reporting Register of Miscellaneous VMX Capabilities", {
1095 /* Additional info available at Appendix A.6,
1096 * "Miscellaneous Data" */
1097 { BITS_EOT }
1098 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001099 {0x486, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR0_FIXED0",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001100 "Capability Reporting Register of CR0 Bits Fixed to 0", {
1101 /* Additional info available at Appendix A.7,
1102 * "VMX-Fixed Bits in CR0" */
1103 { BITS_EOT }
1104 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001105 {0x487, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR0_FIXED1",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001106 "Capability Reporting Register of CR0 Bits Fixed to 1", {
1107 /* Additional info available at Appendix A.7,
1108 * "VMX-Fixed Bits in CR0" */
1109 { BITS_EOT }
1110 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001111 {0x488, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR4_FIXED0",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001112 "Capability Reporting Register of CR4 Bits Fixed to 0", {
1113 /* Additional info available at Appendix A.8,
1114 * "VMX-Fixed Bits in CR4" */
1115 { BITS_EOT }
1116 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001117 {0x489, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR4_FIXED1",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001118 "Capability Reporting Register of CR4 Bits Fixed to 1", {
1119 /* Additional info available at Appendix A.8,
1120 * "VMX-Fixed Bits in CR4" */
1121 { BITS_EOT }
1122 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001123 {0x48a, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_VMCS_ENUM",
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001124 "Capability Reporting Register of VMCS Field Enumeration", {
1125 /* Additional info available at Appendix A.9,
1126 * "VMCS Enumeration" */
1127 { BITS_EOT }
1128 }},
Patrick Georgi5c65d002020-01-29 13:45:45 +01001129 {0x48b, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_PROCBASED_CTLS2",
1130 "Capability Reporting Register of Secondary "
1131 "Processor-based VM-execution Controls", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001132 /* Additional info available at Appendix A.3,
1133 * "VM-Execution Controls" */
1134 { BITS_EOT }
1135 }},
1136#endif
Patrick Georgi5c65d002020-01-29 13:45:45 +01001137 {0x600, MSRTYPE_RDWR, MSR2(0, 0), "IA32_DS_AREA", "DS Save Area", {
Olivier Langloisccc7d1f2013-06-03 01:30:25 -04001138 /* Additional info available at Section 18.10.4 of Intel 64
1139 * and IA-32 Architectures Software Developer's Manual,
1140 * "Debug Store (DS) Mechanism".
1141 */
1142 { 63, 32, RESERVED }, // reserved if not in IA-32e mode
1143 { 31, 32, "Linear address of DS buffer management area",
1144 "R/W", PRESENT_HEX, {
1145 { BITVAL_EOT }
1146 }},
1147 { BITS_EOT }
1148 }},
1149 { MSR_EOT }
1150};