/ util / msrtool / intel_core2_later.c
intel_core2_later.c
   1  /* SPDX-License-Identifier: GPL-2.0-only */
   2  
   3  #include "msrtool.h"
   4  
   5  int intel_core2_later_probe(const struct targetdef *target, const struct cpuid_t *id) {
   6  	return ((VENDOR_INTEL == id->vendor) &&
   7  		(0x6 == id->family) &&
   8  		(0x17 == id->model));
   9  }
  10  
  11  const struct msrdef intel_core2_later_msrs[] = {
  12  	{0x17, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PLATFORM_ID Register",
  13  			"Model Specific Platform ID", {
  14  	/* The OS can use this MSR to determine "slot" information for the
  15  	 * processor and the proper microcode update to load. */
  16  		{ 63, 11, RESERVED },
  17  		{ 52, 3, "Platform ID", "R/O", PRESENT_BIN, {
  18  			{ MSR1(0), "Processor Flag 0" },
  19  			{ MSR1(1), "Processor Flag 1" },
  20  			{ MSR1(2), "Processor Flag 2" },
  21  			{ MSR1(3), "Processor Flag 3" },
  22  			{ MSR1(4), "Processor Flag 4" },
  23  			{ MSR1(5), "Processor Flag 5" },
  24  			{ MSR1(6), "Processor Flag 6" },
  25  			{ MSR1(7), "Processor Flag 7" },
  26  			{ BITVAL_EOT }
  27  		}},
  28  		{ 49, 37, RESERVED },
  29  		{ 12, 5, "Maximum Qualified Ratio:", "The maximum allowed bus ratio",
  30  				PRESENT_DEC, {
  31  			{ BITVAL_EOT }
  32  		}},
  33  		{ 7, 8, RESERVED },
  34  		{ BITS_EOT }
  35  	}},
  36  	{ 0x2a, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EBL_CR_POWERON Register",
  37  			"Processor Hard Power-On Configuration", {
  38  		{ 63, 41, RESERVED },
  39  		{ 26, 5, "Integer Bus Frequency Ratio:", "R/O", PRESENT_DEC, {
  40  			{ BITVAL_EOT }
  41  		}},
  42  		{ 21, 2, "Symmetric Arbitration ID:", "R/O", PRESENT_BIN, {
  43  			{ BITVAL_EOT }
  44  		}},
  45  		{ 19, 1, RESERVED },
  46  		{ 18, 1, "N/2:", "Non-integer bus ratio", PRESENT_DEC, {
  47  			{ MSR1(0), "Integer ratio" },
  48  			{ MSR1(1), "Non-integer ratio" },
  49  			{ BITVAL_EOT }
  50  		}},
  51  		{ 17, 2, "APIC Cluster ID:", "R/O", PRESENT_HEX, {
  52  			{ BITVAL_EOT }
  53  		}},
  54  		{ 15, 1, RESERVED },
  55  		{ 14, 1, "1 Mbyte Power on Reset Vector", "R/O", PRESENT_DEC, {
  56  			{ MSR1(0), "4 GBytes Power on Reset Vector" },
  57  			{ MSR1(1), "1 Mbyte Power on Reset Vector" },
  58  			{ BITVAL_EOT }
  59  		}},
  60  		{ 13, 1, RESERVED },
  61  		{ 12, 1, "BINIT# Observation", "R/O", PRESENT_DEC, {
  62  			{ MSR1(0), "BINIT# Observation disabled" },
  63  			{ MSR1(1), "BINIT# Observation enabled" },
  64  			{ BITVAL_EOT }
  65  		}},
  66  		{ 11, 1, "TXT", "Intel TXT Capable Chipset", PRESENT_DEC, {
  67  			{ MSR1(0), "Intel TXT Capable Chipset not present" },
  68  			{ MSR1(1), "Intel TXT Capable Chipset present" },
  69  			{ BITVAL_EOT }
  70  		}},
  71  		{ 10, 1, "MCERR# Observation:", "R/O", PRESENT_DEC, {
  72  			{ MSR1(0), "MCERR# Observation disabled" },
  73  			{ MSR1(1), "MCERR# Observation enabled" },
  74  			{ BITVAL_EOT }
  75  		}},
  76  		{ 9, 1, "Execute BIST", "R/O", PRESENT_DEC, {
  77  			{ MSR1(0), "Execute BIST disabled" },
  78  			{ MSR1(1), "Execute BIST enabled" },
  79  			{ BITVAL_EOT }
  80  		}},
  81  		{ 8, 1, "Output Tri-state", "R/O", PRESENT_DEC, {
  82  			{ MSR1(0), "Output Tri-state disabled" },
  83  			{ MSR1(1), "Output Tri-state enabled" },
  84  			{ BITVAL_EOT }
  85  		}},
  86  		{ 7, 1, "BINIT# Driver Enable", "R/W", PRESENT_DEC, {
  87  			{ MSR1(0), "BINIT# Driver disabled" },
  88  			{ MSR1(1), "BINIT# Driver enabled" },
  89  			{ BITVAL_EOT }
  90  		}},
  91  		{ 6, 2, RESERVED },
  92  		{ 4, 1, "Address parity enable", "R/W", PRESENT_DEC, {
  93  			{ MSR1(0), "Address parity disabled" },
  94  			{ MSR1(1), "Address parity enabled" },
  95  			{ BITVAL_EOT }
  96  		}},
  97  		{ 3, 1, "MCERR# Driver Enable", "R/W", PRESENT_DEC, {
  98  			{ MSR1(0), "MCERR# Driver disabled" },
  99  			{ MSR1(1), "MCERR# Driver enabled" },
 100  			{ BITVAL_EOT }
 101  		}},
 102  		{ 2, 1, "Response error checking enable", "R/W", PRESENT_DEC, {
 103  			{ MSR1(0), "Response Error Checking disabled" },
 104  			{ MSR1(1), "Response Error Checking enabled" },
 105  			{ BITVAL_EOT }
 106  		}},
 107  		{ 1, 1, "Data error checking enable", "R/W", PRESENT_DEC, {
 108  			{ MSR1(0), "Data error checking disabled" },
 109  			{ MSR1(1), "Data error checking enabled" },
 110  			{ BITVAL_EOT }
 111  		}},
 112  		{ 0, 1, RESERVED },
 113  		{ BITS_EOT }
 114  	}},
 115  	{0xcd, MSRTYPE_RDONLY, MSR2(0, 0), "MSR_FSB_FREQ", "Scalable Bus Speed", {
 116  	/* This field indicates the intended scalable bus clock speed */
 117  		{ 63, 61, RESERVED },
 118  		{ 2, 3, "Speed", "R/O", PRESENT_BIN, {
 119  			{ MSR1(0), "267 MHz (FSB 1067)" },
 120  			{ MSR1(1), "133 MHz (FSB 533)" },
 121  			{ MSR1(2), "200 MHz (FSB 800)" },
 122  			{ MSR1(3), "167 MHz (FSB 667)" },
 123  			{ MSR1(4), "333 MHz (FSB 1333)" },
 124  			{ MSR1(5), "100 MHz (FSB 400)" },
 125  			{ MSR1(6), "400 MHz (FSB 1600)" },
 126  			{ BITVAL_EOT }
 127  		}},
 128  		{ BITS_EOT }
 129  	}},
 130  	{0x11e, MSRTYPE_RDWR, MSR2(0, 0), "MSR_BBL_CR_CTL3", "", {
 131  		{ 63, 40, RESERVED },
 132  		{ 23, 1, "L2 Present", "R/O", PRESENT_BIN, {
 133  			{ MSR1(0), "L2 Present" },
 134  			{ MSR1(1), "L2 Not Present" },
 135  			{ BITVAL_EOT }
 136  		}},
 137  		{ 22, 14, RESERVED },
 138  		{ 8, 1, "L2 Enabled", "R/W", PRESENT_BIN, {
 139  		/* Until this bit is set the processor will not respond
 140  		 * to the WBINVD instruction or the assertion
 141  		 * of the FLUSH# input. */
 142  			{ MSR1(0), "L2 is disabled" },
 143  			{ MSR1(1), "L2 cache has been initialized" },
 144  			{ BITVAL_EOT }
 145  		}},
 146  		{ 7, 7, RESERVED},
 147  		{ 0, 1, "L2 Hardware Enabled", "R/O", PRESENT_BIN, {
 148  			{ MSR1(0), "L2 is hardware-disabled" },
 149  			{ MSR1(1), "L2 is hardware-enabled" },
 150  			{ BITVAL_EOT }
 151  		}},
 152  		{ BITS_EOT }
 153  	}},
 154  	{0x198, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_STATUS", "", {
 155  		{ BITS_EOT }
 156  	}},
 157  
 158  	// Per core msrs
 159  
 160  	{0x0, MSRTYPE_RDWR, MSR2(0, 0), "IA32_P5_MC_ADDR",
 161  		"Pentium Processor Machine-Check Exception Address", {
 162  		{ BITS_EOT }
 163  	}},
 164  	{0x1, MSRTYPE_RDWR, MSR2(0, 0), "IA32_P5_MC_TYPE",
 165  		"Pentium Processor Machine-Check Exception Type", {
 166  		{ BITS_EOT }
 167  	}},
 168  	{0x6, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MONITOR_FILTER_SIZE", "", {
 169  		{ BITS_EOT }
 170  	}},
 171  	{0x10, MSRTYPE_RDWR, MSR2(0, 0), "IA32_TIME_STEP_COUNTER", "TSC", {
 172  		{ BITS_EOT }
 173  	}},
 174  	{0x1b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_APIC_BASE", "APIC BASE", {
 175  		/* In Intel's manual there is MAXPHYWID,
 176  		 * which determine index of highest bit of
 177  		 * APIC Base itself, so marking it as
 178  		 * 'RESERVED'.
 179  		 */
 180  		{ 63, 52, RESERVED },
 181  		{ 11, 1, "APIC Global Enable", "R/W", PRESENT_BIN, {
 182  			{ BITVAL_EOT }
 183  		}},
 184  		{ 10, 1, RESERVED },
 185  		{ 9, 1, RESERVED },
 186  		{ 8, 1, "BSP Flag", "R/W", PRESENT_BIN, {
 187  			{ BITVAL_EOT }
 188  		}},
 189  		{ 7, 8, RESERVED },
 190  		{ BITS_EOT }
 191  	}},
 192  	{0x3a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FEATURE_CONTROL",
 193  			"Control features in Intel 64Processor", {
 194  		{ 63, 48, RESERVED },
 195  		/* if CPUID.01H: ECX[6] = 1 */
 196  		{ 15, 1, "SENTER Global Enable", "R/WL", PRESENT_BIN, {
 197  			{ MSR1(0), "SENTER leaf functions are disabled" },
 198  			{ MSR1(1), "SENTER leaf functions are enabled" },
 199  			{ BITVAL_EOT }
 200  		}},
 201  		/* if CPUID.01H: ECX[6] = 1 */
 202  		{ 14, 7, "SENTER Local Function Enables", "R/WL", PRESENT_BIN, {
 203  			{ BITVAL_EOT }
 204  		}},
 205  		{ 7, 4, RESERVED },
 206  		{ 3, 1, "SMRR Enable", "R/WL", PRESENT_BIN, {
 207  			{ MSR1(0), "SMRR_PHYS_BASE and SMRR_PHYS_MASK are invisible in SMM" },
 208  			{ MSR1(1), "SMRR_PHYS_BASE and SMRR_PHYS_MASK accessible from SMM" },
 209  			{ BITVAL_EOT }
 210  		}},
 211  		/* if CPUID.01H: ECX[5 or 6] = 1 */
 212  		{ 2, 1, "VMX outside of SMX operation", "R/WL", PRESENT_BIN, {
 213  			/* This bit enables VMX for system executive
 214  			* that do not require SMX.
 215  			*/
 216  			{ MSR1(0), "VMX outside of SMX operation disabled" },
 217  			{ MSR1(1), "VMX outside of SMX operation enabled" },
 218  			{ BITVAL_EOT }
 219  		}},
 220  		{ 1, 1, "VMX inside of SMX operation", "R/WL", PRESENT_BIN, {
 221  			/* This bit enables a system executive to use
 222  			 * VMX in conjunction with SMX to support Intel
 223  			 * Trusted Execution Technology.
 224  			 */
 225  			{ MSR1(0), "VMX inside of SMX operation disabled" },
 226  			{ MSR1(1), "VMX outside of SMX operation enabled" },
 227  			{ BITVAL_EOT }
 228  		}},
 229  		/* if CPUID.01H: ECX[5 or 6] = 1 */
 230  		{ 0, 1, "Lock bit", "R/WO", PRESENT_BIN, {
 231  			/* Once the Lock bit is set, the contents
 232  			 * of this register cannot be modified.
 233  			 * Therefore the lock bit must be set after
 234  			 * configuring support for Intel Virtualization
 235  			 * Technology and prior transferring control
 236  			 * to an Option ROM or bootloader. Hence, once
 237  			 * the lock bit is set, the entire IA32_FEATURE_CONTROL_MSR
 238  			 * contents are preserved across RESET when
 239  			 * PWRGOOD it not deasserted.
 240  			 */
 241  			{ MSR1(0), "IA32_FEATURE_CONTROL MSR can be modified" },
 242  			{ MSR1(1), "IA32_FEATURE_CONTROL MSR cannot be modified" },
 243  			{ BITVAL_EOT }
 244  		}},
 245  		{ BITS_EOT }
 246  	}},
 247  	{0x40, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_0_FROM_IP", "", {
 248  		{ BITS_EOT }
 249  	}},
 250  	{0x41, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_1_FROM_IP", "", {
 251  		{ BITS_EOT }
 252  	}},
 253  	{0x42, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_2_FROM_IP", "", {
 254  		{ BITS_EOT }
 255  	}},
 256  	{0x43, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_3_FROM_IP", "", {
 257  		{ BITS_EOT }
 258  	}},
 259  	{0x60, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_0_TO_LIP", "", {
 260  		{ BITS_EOT }
 261  	}},
 262  	{0x61, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_1_TO_LIP", "", {
 263  		{ BITS_EOT }
 264  	}},
 265  	{0x62, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_2_TO_LIP", "", {
 266  		{ BITS_EOT }
 267  	}},
 268  	{0x63, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_3_TO_LIP", "", {
 269  		{ BITS_EOT }
 270  	}},
 271  	{0x79, MSRTYPE_RDWR, MSR2(0, 0), "IA32_BIOS_UPDT_TRIG",
 272  			"BIOS Update Trigger Register (W)", {
 273  		{ BITS_EOT }
 274  	}},
 275  	{0x8b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_BIOS_SIGN_ID",
 276  			"BIOS Update Signature ID (RO)", {
 277  		{ BITS_EOT }
 278  	}},
 279  	{0xa0, MSRTYPE_RDWR, MSR2(0, 0), "MSR_SMRR_PHYS_BASE", "", {
 280  		{ BITS_EOT }
 281  	}},
 282  	{0xa1, MSRTYPE_RDWR, MSR2(0, 0), "MSR_SMRR_PHYS_MASK", "", {
 283  		{ BITS_EOT }
 284  	}},
 285  	{0xc1, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PMC0", "", {
 286  		{ BITS_EOT }
 287  	}},
 288  	{0xc2, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PMC1", "", {
 289  		{ BITS_EOT }
 290  	}},
 291  	{0xe7, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MPERF", "", {
 292  		{ BITS_EOT }
 293  	}},
 294  	{0xe8, MSRTYPE_RDWR, MSR2(0, 0), "IA32_APERF", "", {
 295  		{ BITS_EOT }
 296  	}},
 297  	{0xfe, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRRCAP", "", {
 298  		{ 63, 52, RESERVED },
 299  		{ 11, 1, "SMRR Capability Using MSR 0xa0 and 0xa1", "R/O", PRESENT_BIN, {
 300  			{ BITVAL_EOT }
 301  		}},
 302  		{ 10, 11, RESERVED },
 303  		{ BITS_EOT }
 304  	}},
 305  	{0x174, MSRTYPE_RDWR, MSR2(0, 0), "IA32_SYSENTER_CS", "", {
 306  		{ BITS_EOT }
 307  	}},
 308  	{0x175, MSRTYPE_RDWR, MSR2(0, 0), "IA32_SYSENTER_ESP", "", {
 309  		{ BITS_EOT }
 310  	}},
 311  	{0x176, MSRTYPE_RDWR, MSR2(0, 0), "IA32_SYSENTER_EIP", "", {
 312  		{ BITS_EOT }
 313  	}},
 314  	{0x179, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MCG_CAP", "", {
 315  		{ BITS_EOT }
 316  	}},
 317  	{0x17a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MCG_STATUS", "", {
 318  		{ 63, 61, RESERVED },
 319  		{ 2, 1, "MCIP", "R/W", PRESENT_BIN, {
 320  			/* When set, bit indicates that a machine check has been
 321  			 * generated. If a second machine check is detected while
 322  			 * this bit is still set, the processor enters a shutdown state.
 323  			 * Software should write this bit to 0 after processing
 324  			 * a machine check exception.
 325  			 */
 326  			{ MSR1(0), "Nothing" },
 327  			{ MSR1(1), "Machine check has been generated" },
 328  			{ BITVAL_EOT }
 329  		}},
 330  		{ 1, 1, "EPIV", "R/W", PRESENT_BIN, {
 331  			/* When set, bit indicates that the instruction addressed
 332  			 * by the instruction pointer pushed on the stack (when
 333  			 * the machine check was generated) is directly associated
 334  			 * with the error
 335  			 */
 336  			{ MSR1(0), "Nothing" },
 337  			{ MSR1(1), "Instruction addressed directly associated with the error" },
 338  			{ BITVAL_EOT }
 339  		}},
 340  		{ 0, 1, "RIPV", "R/W", PRESENT_BIN, {
 341  			/* When set, bit indicates that the instruction addressed
 342  			 * by the instruction pointer pushed on the stack (when
 343  			 * the machine check was generated) can be used to restart
 344  			 * the program. If cleared, the program cannot be reliably restarted
 345  			 */
 346  			{ MSR1(0), "Program cannot be reliably restarted" },
 347  			{ MSR1(1), "Instruction addressed can be used to restart the program" },
 348  			{ BITVAL_EOT }
 349  		}},
 350  		{ BITS_EOT }
 351  	}},
 352  	/* if CPUID.0AH: EAX[15:8] > 0 */
 353  	{0x186, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERFEVTSEL0",
 354  			"Performance Event Select Register 0", {
 355  		{ 63, 32, RESERVED },
 356  		{ 31, 8, "CMASK", "R/W", PRESENT_HEX, {
 357  			/* When CMASK is not zero, the corresponding performance
 358  			 * counter 0 increments each cycle if the event count
 359  			 * is greater than or equal to the CMASK.
 360  			 */
 361  			{ BITVAL_EOT }
 362  		}},
 363  		{ 23, 1, "INV", "R/W", PRESENT_BIN, {
 364  			{ MSR1(0), "CMASK using as is" },
 365  			{ MSR1(1), "CMASK inerting" },
 366  			{ BITVAL_EOT }
 367  		}},
 368  		{ 22, 1, "EN", "R/W", PRESENT_BIN, {
 369  			{ MSR1(0), "No commence counting" },
 370  			{ MSR1(1), "Commence counting" },
 371  			{ BITVAL_EOT }
 372  		}},
 373  		{ 21, 1, "AnyThread", "R/W", PRESENT_BIN, {
 374  			{ BITVAL_EOT }
 375  		}},
 376  		{ 20, 1, "INT", "R/W", PRESENT_BIN, {
 377  			{ MSR1(0), "Interrupt on counter overflow is disabled" },
 378  			{ MSR1(1), "Interrupt on counter overflow is enabled" },
 379  			{ BITVAL_EOT }
 380  		}},
 381  		{ 19, 1, "PC", "R/W", PRESENT_BIN, {
 382  			{ MSR1(0), "Disabled pin control" },
 383  			{ MSR1(1), "Enabled pin control" },
 384  			{ BITVAL_EOT }
 385  		}},
 386  		{ 18, 1, "Edge", "R/W", PRESENT_BIN, {
 387  			{ MSR1(0), "Disabled edge detection" },
 388  			{ MSR1(1), "Enabled edge detection" },
 389  			{ BITVAL_EOT }
 390  		}},
 391  		{ 17, 1, "OS", "R/W", PRESENT_BIN, {
 392  			{ MSR1(0), "Nothing" },
 393  			{ MSR1(1), "Counts while in privilege level is ring 0" },
 394  			{ BITVAL_EOT }
 395  		}},
 396  		{ 16, 1, "USR", "R/W", PRESENT_BIN, {
 397  			{ MSR1(0), "Nothing" },
 398  			{ MSR1(1), "Counts while in privilege level is not ring 0" },
 399  			{ BITVAL_EOT }
 400  		}},
 401  		{ 15, 8, "UMask", "R/W", PRESENT_HEX, {
 402  			/* Qualifies the microarchitectural condition
 403  			 * to detect on the selected event logic. */
 404  			{ BITVAL_EOT }
 405  		}},
 406  		{ 7, 8, "Event Select", "R/W", PRESENT_HEX, {
 407  			/* Selects a performance event logic unit. */
 408  			{ BITVAL_EOT }
 409  		}},
 410  		{ BITS_EOT }
 411  	}},
 412  	/* if CPUID.0AH: EAX[15:8] > 0 */
 413  	{0x187, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERFEVTSEL1",
 414  			"Performance Event Select Register 1", {
 415  		{ 63, 32, RESERVED },
 416  		{ 31, 8, "CMASK", "R/W", PRESENT_HEX, {
 417  			/* When CMASK is not zero, the corresponding performance
 418  			 * counter 1 increments each cycle if the event count
 419  			 * is greater than or equal to the CMASK.
 420  			 */
 421  			{ BITVAL_EOT }
 422  		}},
 423  		{ 23, 1, "INV", "R/W", PRESENT_BIN, {
 424  			{ MSR1(0), "CMASK using as is" },
 425  			{ MSR1(1), "CMASK inerting" },
 426  			{ BITVAL_EOT }
 427  		}},
 428  		{ 22, 1, "EN", "R/W", PRESENT_BIN, {
 429  			{ MSR1(0), "No commence counting" },
 430  			{ MSR1(1), "Commence counting" },
 431  			{ BITVAL_EOT }
 432  		}},
 433  		{ 21, 1, "AnyThread", "R/W", PRESENT_BIN, {
 434  			{ BITVAL_EOT }
 435  		}},
 436  		{ 20, 1, "INT", "R/W", PRESENT_BIN, {
 437  			{ MSR1(0), "Interrupt on counter overflow is disabled" },
 438  			{ MSR1(1), "Interrupt on counter overflow is enabled" },
 439  			{ BITVAL_EOT }
 440  		}},
 441  		{ 19, 1, "PC", "R/W", PRESENT_BIN, {
 442  			{ MSR1(0), "Disabled pin control" },
 443  			{ MSR1(1), "Enabled pin control" },
 444  			{ BITVAL_EOT }
 445  		}},
 446  		{ 18, 1, "Edge", "R/W", PRESENT_BIN, {
 447  			{ MSR1(0), "Disabled edge detection" },
 448  			{ MSR1(1), "Enabled edge detection" },
 449  			{ BITVAL_EOT }
 450  		}},
 451  		{ 17, 1, "OS", "R/W", PRESENT_BIN, {
 452  			{ MSR1(0), "Nothing" },
 453  			{ MSR1(1), "Counts while in privilege level is ring 0" },
 454  			{ BITVAL_EOT }
 455  		}},
 456  		{ 16, 1, "USR", "R/W", PRESENT_BIN, {
 457  			{ MSR1(0), "Nothing" },
 458  			{ MSR1(1), "Counts while in privilege level is not ring 0" },
 459  			{ BITVAL_EOT }
 460  		}},
 461  		{ 15, 8, "UMask", "R/W", PRESENT_HEX, {
 462  			/* Qualifies the microarchitectural condition
 463  			 * to detect on the selected event logic. */
 464  			{ BITVAL_EOT }
 465  		}},
 466  		{ 7, 8, "Event Select", "R/W", PRESENT_HEX, {
 467  			/* Selects a performance event logic unit. */
 468  			{ BITVAL_EOT }
 469  		}},
 470  		{ BITS_EOT }
 471  	}},
 472  	{0x198, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_STATUS", "", {
 473  		{ BITS_EOT }
 474  	}},
 475  	{0x199, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_CTL", "", {
 476  		{ BITS_EOT }
 477  	}},
 478  	{0x19a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_CLOCK_MODULATION",
 479  			"Clock Modulation", {
 480  		{ 63, 59, RESERVED },
 481  		{ 4, 1, "On demand Clock Modulation", "R/W", PRESENT_BIN, {
 482  			{ MSR1(0), "On demand Clock Modulation is disabled" },
 483  			{ MSR1(1), "On demand Clock Modulation is enabled" },
 484  			{ BITVAL_EOT }
 485  		}},
 486  		{ 3, 3, "On demand Clock Modulation Duty Cycle", "R/W", PRESENT_HEX, {
 487  			{ BITVAL_EOT }
 488  		}},
 489  		{ 0, 1, RESERVED },
 490  		{ BITS_EOT }
 491  	}},
 492  	{0x19b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_THERM_INTERRUPT",
 493  			"Thermal Interrupt Control", {
 494  		{ BITS_EOT }
 495  	}},
 496  	{0x19c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_THERM_STATUS",
 497  			"Thermal Monitor Status", {
 498  		{ BITS_EOT }
 499  	}},
 500  	{0x19d, MSRTYPE_RDWR, MSR2(0, 0), "MSR_THERM2_CTL", "", {
 501  		{ BITS_EOT }
 502  	}},
 503  	{0x1a0, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MISC_ENABLE",
 504  			"Enable miscellaneous processor features", {
 505  		{ 63, 24, RESERVED },
 506  		{ 39, 1, "IP Prefetcher Disable", "R/W", PRESENT_BIN, {
 507  			{ MSR1(0), "IP Prefetcher enabled" },
 508  			{ MSR1(1), "IP Prefetcher disabled" },
 509  			{ BITVAL_EOT }
 510  		}},
 511  		/* Note: [38] bit using for whole package,
 512  		 * while some other bits can be Core or Thread
 513  		 * specific.
 514  		 */
 515  		{ 38, 1, "IDA Disable", "R/W", PRESENT_BIN, {
 516  			/* When set to a 0 on processors that support IDA,
 517  			 * CPUID.06H: EAX[1] reports the processor's
 518  			 * support of turbo mode is enabled.
 519  			 */
 520  			{ MSR1(0), "IDA enabled" },
 521  			/* When set 1 on processors that support Intel Turbo Boost
 522  			 * technology, the turbo mode feature is disabled and
 523  			 * the IDA_Enable feature flag will be clear (CPUID.06H: EAX[1]=0).
 524  			 */
 525  			{ MSR1(1), "IDA disabled" },
 526  			{ BITVAL_EOT }
 527  			/* Note: the power-on default value is used by BIOS to detect
 528  			 * hardware support of turbo mode. If power-on default value is 1,
 529  			 * turbo mode is available in the processor. If power-on default
 530  			 * value is 0, turbo mode not available.
 531  			 */
 532  		}},
 533  		{ 37, 1, "DCU Prefetcher Disable", "R/W", PRESENT_BIN, {
 534  			{ MSR1(0), "DCU L1 data cache prefetcher is enabled" },
 535  			{ MSR1(1), "DCU L1 data cache prefetcher is disabled" },
 536  			{ BITVAL_EOT }
 537  		}},
 538  		{ 36, 2, RESERVED },
 539  		{ 34, 1, "XD Bit Disable", "R/W", PRESENT_BIN, {
 540  			{ BITVAL_EOT }
 541  		}},
 542  		{ 33, 10, RESERVED },
 543  		{ 23, 1, "xTPR Message Disable", "R/W", PRESENT_BIN, {
 544  			{ BITVAL_EOT }
 545  		}},
 546  		{ 22, 1, "Limit CPUID Maxval", "R/W", PRESENT_BIN, {
 547  			{ BITVAL_EOT }
 548  		}},
 549  		{ 21, 1, RESERVED },
 550  		{ 20, 1, "Enhanced Intel SpeedStep Select Lock", "R/W",
 551  				PRESENT_BIN, {
 552  			{ MSR1(0), "Enhanced Intel SpeedStep Select "
 553  				"and Enable bits are writeable" },
 554  			{ MSR1(1), "Enhanced Intel SpeedStep Select "
 555  				"and Enable bits are locked and R/O" },
 556  			{ BITVAL_EOT }
 557  		}},
 558  		{ 19, 1, "Adjacent Cache Line Prefetch Disable", "R/W",
 559  				PRESENT_BIN, {
 560  			{ MSR1(0), "Fetching cache lines that comprise a cache "
 561  				"line pair (128 bytes)" },
 562  			{ MSR1(1), "Fetching cache line that contains data "
 563  				"currently required by the processor" },
 564  			{ BITVAL_EOT }
 565  		}},
 566  		{ 18, 1, "Enable Monitor FSM", "R/W", PRESENT_BIN, {
 567  			{ BITVAL_EOT }
 568  		}},
 569  		{ 17, 1, "UNDOCUMENTED", "R/W", PRESENT_BIN, {
 570  			{ BITVAL_EOT }
 571  		}},
 572  		/* Note: [16] bit using for whole package,
 573  		 * while some other bits can be Core or Thread
 574  		 * specific.
 575  		 */
 576  		{ 16, 1, "Enhanced Intel SpeedStep Technology Enable", "R/W",
 577  				PRESENT_BIN, {
 578  			{ BITVAL_EOT }
 579  		}},
 580  		{ 15, 2, RESERVED },
 581  		{ 13, 1, "TM2 Enable", "R/W", PRESENT_BIN, {
 582  			{ BITVAL_EOT }
 583  		}},
 584  		{ 12, 1, "Precise Event Based Sampling Unavailable", "R/O",
 585  				PRESENT_BIN, {
 586  			{ BITVAL_EOT }
 587  		}},
 588  		{ 11, 1, "Branch Trace Storage Unavailable", "R/O", PRESENT_BIN, {
 589  			{ BITVAL_EOT }
 590  		}},
 591  		{ 10, 1, "FERR# Multiplexing Enable", "R/W", PRESENT_BIN, {
 592  			{ MSR1(0), "FERR# signaling compatible behaviour" },
 593  			{ MSR1(1), "FERR# asserted by the processor to indicate "
 594  				"a pending break event within the processor" },
 595  			{ BITVAL_EOT }
 596  		}},
 597  		{ 9, 1, "Hardware Prefetcher Disable", "R/W", PRESENT_BIN, {
 598  			{ MSR1(0), "Hardware prefetcher is enabled" },
 599  			{ MSR1(1), "Hardware prefetcher is disabled" },
 600  			{ BITVAL_EOT }
 601  		}},
 602  		{ 8, 1, RESERVED },
 603  		{ 7, 1, "Performance Monitoring Available", "R", PRESENT_BIN, {
 604  			{ BITVAL_EOT }
 605  		}},
 606  		{ 6, 3, RESERVED },
 607  		{ 3, 1, "Automatic Thermal Control Circuit Enable", "R/W"
 608  				, PRESENT_BIN, {
 609  			{ BITVAL_EOT }
 610  		}},
 611  		{ 2, 2, RESERVED },
 612  		{ 0, 1, "Fast-Strings Enable", "R/W", PRESENT_BIN, {
 613  			{ BITVAL_EOT }
 614  		}},
 615  		{ BITS_EOT }
 616  	}},
 617  	{0x1c9, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LASTBRANCH_TOS", "", {
 618  		{ BITS_EOT }
 619  	}},
 620  	{0x1d9, MSRTYPE_RDWR, MSR2(0, 0), "IA32_DEBUGCTL", "", {
 621  		{ BITS_EOT }
 622  	}},
 623  	{0x1dd, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LER_FROM_LIP", "", {
 624  		{ BITS_EOT }
 625  	}},
 626  	{0x1de, MSRTYPE_RDWR, MSR2(0, 0), "MSR_LER_TO_LIP", "", {
 627  		{ BITS_EOT }
 628  	}},
 629  	{0x200, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE0", "", {
 630  		{ BITS_EOT }
 631  	}},
 632  	{0x201, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK0", "", {
 633  		{ BITS_EOT }
 634  	}},
 635  	{0x202, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE1", "", {
 636  		{ BITS_EOT }
 637  	}},
 638  	{0x203, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK1", "", {
 639  		{ BITS_EOT }
 640  	}},
 641  	{0x204, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE2", "", {
 642  		{ BITS_EOT }
 643  	}},
 644  	{0x205, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK2", "", {
 645  		{ BITS_EOT }
 646  	}},
 647  	{0x206, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE3", "", {
 648  		{ BITS_EOT }
 649  	}},
 650  	{0x207, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK3", "", {
 651  		{ BITS_EOT }
 652  	}},
 653  	{0x208, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE4", "", {
 654  		{ BITS_EOT }
 655  	}},
 656  	{0x209, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK4", "", {
 657  		{ BITS_EOT }
 658  	}},
 659  	{0x20a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE5", "", {
 660  		{ BITS_EOT }
 661  	}},
 662  	{0x20b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK5", "", {
 663  		{ BITS_EOT }
 664  	}},
 665  	{0x20c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE6", "", {
 666  		{ BITS_EOT }
 667  	}},
 668  	{0x20d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK6", "", {
 669  		{ BITS_EOT }
 670  	}},
 671  	{0x20e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_BASE7", "", {
 672  		{ BITS_EOT }
 673  	}},
 674  	{0x20f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_PHYS_MASK7", "", {
 675  		{ BITS_EOT }
 676  	}},
 677  	{0x250, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX64K_00000", "", {
 678  		{ BITS_EOT }
 679  	}},
 680  	{0x258, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX16K_80000", "", {
 681  		{ BITS_EOT }
 682  	}},
 683  	{0x259, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX16K_A0000", "", {
 684  		{ BITS_EOT }
 685  	}},
 686  	{0x268, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_C0000", "", {
 687  		{ BITS_EOT }
 688  	}},
 689  	{0x269, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_C8000", "", {
 690  		{ BITS_EOT }
 691  	}},
 692  	{0x26a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_D0000", "", {
 693  		{ BITS_EOT }
 694  	}},
 695  	{0x26b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_D8000", "", {
 696  		{ BITS_EOT }
 697  	}},
 698  	{0x26c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_E0000", "", {
 699  		{ BITS_EOT }
 700  	}},
 701  	{0x26d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_E8000", "", {
 702  		{ BITS_EOT }
 703  	}},
 704  	{0x26e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_F0000", "", {
 705  		{ BITS_EOT }
 706  	}},
 707  	{0x26f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_FIX4K_F8000", "", {
 708  		{ BITS_EOT }
 709  	}},
 710  	{0x277, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PAT", "IA32_PAT", {
 711  		{ 63, 5, RESERVED },
 712  		{ 58, 3, "PA7", "R/W", PRESENT_BIN, {
 713  			{ BITVAL_EOT }
 714  		}},
 715  		{ 55, 5, RESERVED },
 716  		{ 40, 3, "PA6", "R/W", PRESENT_BIN, {
 717  			{ BITVAL_EOT }
 718  		}},
 719  		{ 47, 5, RESERVED },
 720  		{ 42, 3, "PA5", "R/W", PRESENT_BIN, {
 721  			{ BITVAL_EOT }
 722  		}},
 723  		{ 39, 5, RESERVED },
 724  		{ 34, 3, "PA4", "R/W", PRESENT_BIN, {
 725  			{ BITVAL_EOT }
 726  		}},
 727  		{ 31, 5, RESERVED },
 728  		{ 26, 3, "PA3", "R/W", PRESENT_BIN, {
 729  			{ BITVAL_EOT }
 730  		}},
 731  		{ 23, 5, RESERVED },
 732  		{ 18, 3, "PA2", "R/W", PRESENT_BIN, {
 733  			{ BITVAL_EOT }
 734  		}},
 735  		{ 15, 5, RESERVED },
 736  		{ 10, 3, "PA1", "R/W", PRESENT_BIN, {
 737  			{ BITVAL_EOT }
 738  		}},
 739  		{ 7, 5, RESERVED },
 740  		{ 2, 3, "PA0", "R/W", PRESENT_BIN, {
 741  			{ BITVAL_EOT }
 742  		}},
 743  		{ BITS_EOT }
 744  	}},
 745  	{0x2ff, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MTRR_DEF_TYPE",
 746  			"Default Memory Types", {
 747  		{ 63, 52, RESERVED },
 748  		{ 11, 1, "MTRR Enable", "R/W", PRESENT_BIN, {
 749  			{ BITVAL_EOT }
 750  		}},
 751  		{ 10, 1, "Fixed Range MTRR Enable", "R/W", PRESENT_BIN, {
 752  			{ BITVAL_EOT }
 753  		}},
 754  		{ 9, 7, RESERVED },
 755  		{ 2, 3, "Default Memory Type", "R/W", PRESENT_HEX, {
 756  			{ BITVAL_EOT }
 757  		}},
 758  		{ BITS_EOT }
 759  	}},
 760  	/* if CPUID.0AH: EDX[4:0] > 0 */
 761  	{0x309, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR0", "Fixed-Function "
 762  			"Performance Counter Register 0: Counts Instr_Retired.Any", {
 763  		/* Also known as MSR_PERF_FIXED_CTR0 */
 764  		{ BITS_EOT }
 765  	}},
 766  	/* if CPUID.0AH: EDX[4:0] > 1 */
 767  	{0x30a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR1", "Fixed-Function "
 768  			"Performance Counter Register 1: Counts CPU_CLK_Unhalted.Core ", {
 769  		/* Also known as MSR_PERF_FIXED_CTR1 */
 770  		{ BITS_EOT }
 771  	}},
 772  	/* if CPUID.0AH: EDX[4:0] > 2 */
 773  	{0x30b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR2", "Fixed-Function "
 774  			"Performance Counter Register 2: Counts CPU_CLK_Unhalted.Ref", {
 775  		/* Also known as MSR_PERF_FIXED_CTR2 */
 776  		{ BITS_EOT }
 777  	}},
 778  	{0x345, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PERF_CAPABILITIES", "", {
 779  	/* Additional info available at Section 17.4.1 of
 780  	 * Intel 64 and IA-32 Architectures Software Developer's
 781  	 * Manual, Volume 3.
 782  	 */
 783  		{ 63, 56, RESERVED },
 784  		{ 7, 1, "PEBSSaveArchRegs", "R/O", PRESENT_BIN, {
 785  			{ BITVAL_EOT }
 786  		}},
 787  		{ 6, 1, "PEBS Record Format", "R/O", PRESENT_BIN, {
 788  			{ BITVAL_EOT }
 789  		}},
 790  		{ 5, 6, "LBR Format", "R/O", PRESENT_HEX, {
 791  			{ BITVAL_EOT }
 792  		}},
 793  		{ BITS_EOT }
 794  	}},
 795  	/* if CPUID.0AH: EAX[7:0] > 1*/
 796  	{0x38d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FIXED_CTR_CTRL",
 797  		"Fixed-Function-Counter Control Register", {
 798  	/* Also known as MSR_PERF_FIXED_CTR_CTRL.
 799  	 * Counter increments while the results of ANDing respective enable bit
 800  	 * in IA32_PERF_GLOBAL_CTRL with the corresponding OS or USR bits
 801  	 * in this MSR is true. */
 802  		{ 63, 52, RESERVED },
 803  		{ 11, 1, "EN2_PMI", "R/W", PRESENT_BIN, {
 804  			{ MSR1(0), "Nothing" },
 805  			{ MSR1(1), "PMI when fixed counter 2 overflows is enabled" },
 806  			{ BITVAL_EOT }
 807  		}},
 808  		/* if CPUID.0AH EAX[7:0] > 2 */
 809  		{ 10, 1, "AnyThread 2", "R/W", PRESENT_BIN, {
 810  			{ MSR1(0), "Counter only increments the associated event "
 811  				"conditions occurring in the logical processor "
 812  				"which programmed the MSR" },
 813  			{ MSR1(1), "Counting the associated event conditions "
 814  				"occurring across all logical processors sharing "
 815  				"a processor core" },
 816  			{ BITVAL_EOT }
 817  		}},
 818  		{ 9, 1, "EN2_Usr", "R/W", PRESENT_BIN, {
 819  			{ MSR1(0), "Nothing" },
 820  			{ MSR1(1), "Fixed counter 2 is enabled to count while CPL > 0" },
 821  			{ BITVAL_EOT }
 822  		}},
 823  		{ 8, 1, "EN2_OS", "R/W", PRESENT_BIN, {
 824  			{ MSR1(0), "Nothing" },
 825  			{ MSR1(1), "Fixed counter 2 is enabled to count while CPL = 0" },
 826  			{ BITVAL_EOT }
 827  		}},
 828  		{ 7, 1, "EN1_PMI", "R/W", PRESENT_BIN, {
 829  			{ MSR1(0), "Nothing" },
 830  			{ MSR1(1), "PMI when fixed counter 1 overflows is enabled" },
 831  			{ BITVAL_EOT }
 832  		}},
 833  		/* if CPUID.0AH: EAX[7:0] > 2 */
 834  		{ 6, 1, "AnyThread 1", "R/W", PRESENT_BIN, {
 835  			{ MSR1(0), "Counter only increments the associated event "
 836  				"conditions occurring in the logical processor "
 837  				"which programmed the MSR" },
 838  			{ MSR1(1), "Counting the associated event conditions "
 839  				"occurring across all logical processors sharing "
 840  				"a processor core" },
 841  			{ BITVAL_EOT }
 842  		}},
 843  		{ 5, 1, "EN1_Usr", "R/W", PRESENT_BIN, {
 844  			{ MSR1(0), "Nothing" },
 845  			{ MSR1(1), "Fixed counter 1 is enabled to count while CPL > 0" },
 846  			{ BITVAL_EOT }
 847  		}},
 848  		{ 4, 1, "EN1_OS", "R/W", PRESENT_BIN, {
 849  			{ MSR1(0), "Nothing" },
 850  			{ MSR1(1), "Fixed counter 1 is enabled to count while CPL = 0" },
 851  			{ BITVAL_EOT }
 852  		}},
 853  		{ 3, 1, "EN0_PMI", "R/W", PRESENT_BIN, {
 854  			{ MSR1(0), "Nothing" },
 855  			{ MSR1(1), "PMI when fixed counter 0 overflows is enabled" },
 856  			{ BITVAL_EOT }
 857  		}},
 858  		/* if CPUID.0AH: EAX[7:0] > 2 */
 859  		{ 2, 1, "AnyThread 0", "R/W", PRESENT_BIN, {
 860  			{ MSR1(0), "Counter only increments the associated event "
 861  				"conditions occurring in the logical processor "
 862  				"which programmed the MSR" },
 863  			{ MSR1(1), "Counting the associated event conditions "
 864  				"occurring across all logical processors sharing "
 865  				"a processor core" },
 866  			{ BITVAL_EOT }
 867  		}},
 868  		{ 1, 1, "EN0_Usr", "R/W", PRESENT_BIN, {
 869  			{ MSR1(0), "Nothing" },
 870  			{ MSR1(1), "Fixed counter 0 is enabled to count while CPL > 0" },
 871  			{ BITVAL_EOT }
 872  		}},
 873  		{ 0, 1, "EN0_OS", "R/W", PRESENT_BIN, {
 874  			{ MSR1(0), "Nothing" },
 875  			{ MSR1(1), "Fixed counter 0 is enabled to count while CPL = 0" },
 876  			{ BITVAL_EOT }
 877  		}},
 878  		{ BITS_EOT }
 879  	}},
 880  	/* if CPUID.0AH: EAX[7:0] > 0 */
 881  	{0x38e, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PERF_GLOBAL_STATUS",
 882  			"Global Performance Counter Status", {
 883  	/* Also known as MSR_PERF_GLOBAL_STATUS */
 884  		/* if CPUID.0AH: EAX[7:0] > 0 */
 885  		{ 63, 1, "CondChg: Status bits of this register has changed",
 886  				"R/O", PRESENT_BIN, {
 887  			{ BITVAL_EOT }
 888  		}},
 889  		/* if CPUID.0AH: EAX[7:0] > 0 */
 890  		{ 62, 1, "OvfBuf: DS SAVE area Buffer overflow status",
 891  				"R/O", PRESENT_BIN, {
 892  			{ BITVAL_EOT }
 893  		}},
 894  		/* if CPUID.0AH: EAX[7:0] > 2 */
 895  		{ 61, 1, "Ovf_Uncore: Uncore counter overflow status",
 896  				"R/O", PRESENT_BIN, {
 897  			{ BITVAL_EOT }
 898  		}},
 899  		{ 60, 26, RESERVED },
 900  		/* if CPUID.0AH: EAX[7:0] > 1 */
 901  		{ 34, 1, "Ovf_FixedCtr2: Overflow status of IA32_FIXED_CTR2",
 902  				"R/O", PRESENT_BIN, {
 903  			{ BITVAL_EOT }
 904  		}},
 905  		/* if CPUID.0AH: EAX[7:0] > 1 */
 906  		{ 33, 1, "Ovf_FixedCtr1: Overflow status of IA32_FIXED_CTR1",
 907  				"R/O", PRESENT_BIN, {
 908  			{ BITVAL_EOT }
 909  		}},
 910  		/* if CPUID.0AH: EAX[7:0] > 1 */
 911  		{ 32, 1, "Ovf_FixedCtr0: Overflow status of IA32_FIXED_CTR0",
 912  				"R/O", PRESENT_BIN, {
 913  			{ BITVAL_EOT }
 914  		}},
 915  		{ 31, 28, RESERVED },
 916  		/* presented only in 06_2EH Nehalem model */
 917  		{ 3, 1, "Ovf_PMC3: Overflow status of IA32_PMC3", "R/O", PRESENT_BIN, {
 918  			{ BITVAL_EOT }
 919  		}},
 920  		/* presented only in 06_2EH Nehalem model */
 921  		{ 2, 1, "Ovf_PMC2: Overflow status of IA32_PMC2", "R/O", PRESENT_BIN, {
 922  			{ BITVAL_EOT }
 923  		}},
 924  		/* if CPUID.0AH: EAX[7:0] > 0 */
 925  		{ 1, 1, "Ovf_PMC1: Overflow status of IA32_PMC1", "R/O", PRESENT_BIN, {
 926  			{ BITVAL_EOT }
 927  		}},
 928  		/* if CPUID.0AH: EAX[7:0] > 0 */
 929  		{ 0, 1, "Ovf_PMC0: Overflow status of IA32_PMC0", "R/O", PRESENT_BIN, {
 930  			{ BITVAL_EOT }
 931  		}},
 932  		{ BITS_EOT }
 933  	}},
 934  	/* if CPUID.0AH: EAX[7:0] > 0 */
 935  	{0x38f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_GLOBAL_CTL",
 936  		"Global Performance Counter Control", {
 937  	/* Counter increments while the result of ANDing respective
 938  	 * enable bit in this MSR with corresponding OS or USR bits
 939  	 * in general-purpose or fixed counter control MSR is true.
 940  	 */
 941  		{ 63, 29, RESERVED },
 942  		/* if CPUID.0AH: EAX[7:0] > 1 */
 943  		{ 34, 1, "EN_FIXED_CTR2", "R/W", PRESENT_BIN, {
 944  			{ BITVAL_EOT }
 945  		}},
 946  		/* if CPUID.0AH: EAX[7:0] > 1 */
 947  		{ 33, 1, "EN_FIXED_CTR1", "R/W", PRESENT_BIN, {
 948  			{ BITVAL_EOT }
 949  		}},
 950  		/* if CPUID.0AH: EAX[7:0] > 1 */
 951  		{ 32, 1, "EN_FIXED_CTR0", "R/W", PRESENT_BIN, {
 952  			{ BITVAL_EOT }
 953  		}},
 954  		{ 31, 30, RESERVED },
 955  		/* if CPUID.0AH: EAX[7:0] > 0 */
 956  		{ 1, 1, "EN_PMC1", "R/W", PRESENT_BIN, {
 957  			{ BITVAL_EOT }
 958  		}},
 959  		/* if CPUID.0AH: EAX[7:0] > 0 */
 960  		{ 0, 1, "EN_PMC0", "R/W", PRESENT_BIN, {
 961  			{ BITVAL_EOT }
 962  		}},
 963  		{ BITS_EOT }
 964  	}},
 965  	/* if CPUID.0AH: EAX[7:0] > 0 */
 966  	{0x390, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PERF_GLOBAL_OVF_CTL",
 967  			"Global Performance Counter Overflow Control", {
 968  		/* if CPUID.0AH: EAX[7:0] > 0 */
 969  		{ 63, 1, "Clear CondChg bit", "R/W", PRESENT_BIN, {
 970  			{ BITVAL_EOT }
 971  		}},
 972  		/* if CPUID.0AH: EAX[7:0] > 0 */
 973  		{ 62, 1, "Clear OvfBuf bit", "R/W", PRESENT_BIN, {
 974  			{ BITVAL_EOT }
 975  		}},
 976  		/* Presented only in 06_2EH Nehalem model */
 977  		{ 61, 1, "Clear Ovf_Uncore bit", "R/W", PRESENT_BIN, {
 978  			{ BITVAL_EOT }
 979  		}},
 980  		{ 60, 26, RESERVED },
 981  		/* if CPUID.0AH: EAX[7:0] > 1 */
 982  		{ 34, 1, "Clear Ovf_FIXED_CTR2 bit", "R/W", PRESENT_BIN, {
 983  			{ BITVAL_EOT }
 984  		}},
 985  		/* if CPUID.0AH: EAX[7:0] > 1 */
 986  		{ 33, 1, "Clear Ovf_FIXED_CTR1 bit", "R/W", PRESENT_BIN, {
 987  			{ BITVAL_EOT }
 988  		}},
 989  		/* if CPUID.0AH: EAX[7:0] > 1 */
 990  		{ 32, 1, "Clear Ovf_FIXED_CTR0 bit", "R/W", PRESENT_BIN, {
 991  			{ BITVAL_EOT }
 992  		}},
 993  		{ 31, 30, RESERVED },
 994  		/* if CPUID.0AH: EAX[7:0] > 0 */
 995  		{ 1, 1, "Clear Ovf_PMC1 bit", "R/W", PRESENT_BIN, {
 996  			{ BITVAL_EOT }
 997  		}},
 998  		/* if CPUID.0AH: EAX[7:0] > 0 */
 999  		{ 0, 1, "Clear Ovf_PMC0 bit", "R/W", PRESENT_BIN, {
1000  			{ BITVAL_EOT }
1001  		}},
1002  		{ BITS_EOT }
1003  	}},
1004  	/* See Section 18.6.1.1 of Intel 64 and IA-32 Architectures
1005  	 * Software Developer's Manual, Volume 3,
1006  	 * "Precise Event Based Sampling (PEBS)".
1007  	 */
1008  	{0x3f1, MSRTYPE_RDWR, MSR2(0, 0), "IA32_PEBS_ENABLE", "PEBS Control", {
1009  		{ 63, 28, RESERVED },
1010  		{ 35, 1, "Load Latency on IA32_PMC3", "R/W", PRESENT_BIN, {
1011  			{ MSR1(0), "Disabled" },
1012  			{ MSR1(1), "Enabled" },
1013  			{ BITVAL_EOT }
1014  		}},
1015  		{ 34, 1, "Load Latency on IA32_PMC2", "R/W", PRESENT_BIN, {
1016  			{ MSR1(0), "Disabled" },
1017  			{ MSR1(1), "Enabled" },
1018  			{ BITVAL_EOT }
1019  		}},
1020  		{ 33, 1, "Load Latency on IA32_PMC1", "R/W", PRESENT_BIN, {
1021  			{ MSR1(0), "Disabled" },
1022  			{ MSR1(1), "Enabled" },
1023  			{ BITVAL_EOT }
1024  		}},
1025  		{ 32, 1, "Load Latency on IA32_PMC0", "R/W", PRESENT_BIN, {
1026  			{ MSR1(0), "Disabled" },
1027  			{ MSR1(1), "Enabled" },
1028  			{ BITVAL_EOT }
1029  		}},
1030  		{ 31, 28, RESERVED },
1031  		{ 3, 1, "PEBS on IA32_PMC3", "R/W", PRESENT_BIN, {
1032  			{ MSR1(0), "Disabled" },
1033  			{ MSR1(1), "Enabled" },
1034  			{ BITVAL_EOT }
1035  		}},
1036  		{ 2, 1, "PEBS on IA32_PMC2", "R/W", PRESENT_BIN, {
1037  			{ MSR1(0), "Disabled" },
1038  			{ MSR1(1), "Enabled" },
1039  			{ BITVAL_EOT }
1040  		}},
1041  		{ 1, 1, "PEBS on IA32_PMC1", "R/W", PRESENT_BIN, {
1042  			{ MSR1(0), "Disabled" },
1043  			{ MSR1(1), "Enabled" },
1044  			{ BITVAL_EOT }
1045  		}},
1046  		{ 0, 1, "PEBS on IA32_PMC0", "R/W", PRESENT_BIN, {
1047  			{ MSR1(0), "Disabled" },
1048  			{ MSR1(1), "Enabled" },
1049  			{ BITVAL_EOT }
1050  		}},
1051  		{ BITS_EOT }
1052  	}},
1053  	{0x400, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_CTL", "", {
1054  		{ BITS_EOT }
1055  	}},
1056  	{0x401, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_STATUS", "", {
1057  		{ BITS_EOT }
1058  	}},
1059  	{0x402, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_ADDR", "", {
1060  		{ BITS_EOT }
1061  	}},
1062  	{0x403, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC0_MISC", "", {
1063  		{ BITS_EOT }
1064  	}},
1065  	{0x404, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_CTL", "", {
1066  		{ BITS_EOT }
1067  	}},
1068  	{0x405, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_STATUS", "", {
1069  		{ BITS_EOT }
1070  	}},
1071  	{0x406, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_ADDR", "", {
1072  		{ BITS_EOT }
1073  	}},
1074  	{0x407, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC1_MISC", "", {
1075  		{ BITS_EOT }
1076  	}},
1077  	{0x408, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_CTL", "", {
1078  		{ BITS_EOT }
1079  	}},
1080  	{0x409, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_STATUS", "", {
1081  		{ BITS_EOT }
1082  	}},
1083  	{0x40a, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_ADDR", "", {
1084  		{ BITS_EOT }
1085  	}},
1086  	{0x40b, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC2_MISC", "", {
1087  		{ BITS_EOT }
1088  	}},
1089  	{0x40c, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_CTL", "", {
1090  		{ BITS_EOT }
1091  	}},
1092  	{0x40d, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_STATUS", "", {
1093  		{ BITS_EOT }
1094  	}},
1095  	{0x40e, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_ADDR", "", {
1096  		{ BITS_EOT }
1097  	}},
1098  	{0x40f, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC3_MISC", "", {
1099  		{ BITS_EOT }
1100  	}},
1101  	{0x410, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_CTL", "", {
1102  		{ BITS_EOT }
1103  	}},
1104  	{0x411, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_STATUS", "", {
1105  		{ BITS_EOT }
1106  	}},
1107  	{0x412, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_ADDR", "", {
1108  		{ BITS_EOT }
1109  	}},
1110  	{0x413, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC4_MISC", "", {
1111  		{ BITS_EOT }
1112  	}},
1113  	{0x414, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC5_CTL", "", {
1114  		{ BITS_EOT }
1115  	}},
1116  	{0x415, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC5_STATUS", "", {
1117  		{ BITS_EOT }
1118  	}},
1119  	{0x416, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC5_ADDR", "", {
1120  		{ BITS_EOT }
1121  	}},
1122  	{0x417, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC5_MISC", "", {
1123  		{ BITS_EOT }
1124  	}},
1125  	{0x418, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC6_CTL", "", {
1126  		{ BITS_EOT }
1127  	}},
1128  	{0x419, MSRTYPE_RDWR, MSR2(0, 0), "IA32_MC6_STATUS", "", {
1129  		{ BITS_EOT }
1130  	}},
1131  	{0x480, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_BASIC",
1132  			"Reporting Register of Basic VMX Capabilities", {
1133  		/* Additional info available at
1134  		 * Appendix A.1, "Basic VMX Information" */
1135  		{ 63, 10, RESERVED },
1136  		{ 53, 4, "Memory type for VMREAD and VMWRITE", "R/O", PRESENT_HEX, {
1137  			{ BITVAL_EOT }
1138  		}},
1139  		{ 49, 1, "Support of dual-treatment of system-management functions",
1140  				"R/O", PRESENT_BIN, {
1141  			{ BITVAL_EOT }
1142  		}},
1143  		{ 48, 1, "Enable full linear address access", "R/O", PRESENT_BIN, {
1144  			{ BITVAL_EOT }
1145  		}},
1146  		{ 47, 3, RESERVED },
1147  		{ 44, 13, "VMXON region allocation size", "R/O", PRESENT_DEC, {
1148  			{ BITVAL_EOT }
1149  		}},
1150  		{ 31, 32, "VMCS Revision Identifier", "R/O", PRESENT_HEX, {
1151  			{ BITVAL_EOT }
1152  		}},
1153  		{ BITS_EOT }
1154  	}},
1155  	{0x481, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PINBASED_CTLS",
1156  			"Capability Reporting Register of "
1157  			"Pin-based VM-execution Controls", {
1158  		/* Additional info available at Appendix A.3,
1159  		 * "VM-Execution Controls" */
1160  		{ BITS_EOT }
1161  	}},
1162  	{0x482, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_PROCBASED_CTLS",
1163  			"Capability Reporting Register of "
1164  			"Primary Processor-based VM-execution Controls", {
1165  		/* Additional info available at Appendix A.3,
1166  		 * "VM-Execution Controls" */
1167  		{ BITS_EOT }
1168  	}},
1169  	{0x483, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_EXIT_CTLS",
1170  			"Capability Reporting Register of VM-exit Controls", {
1171  		/* Additional info available at Appendix A.4,
1172  		 * "VM-Exit Controls" */
1173  		{ BITS_EOT }
1174  	}},
1175  	{0x484, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_ENTRY_CTLS",
1176  			"Capability Reporting Register of VM-entry Controls", {
1177  		/* Additional info available at Appendix A.5,
1178  		 * "VM-Entry Controls" */
1179  		{ BITS_EOT }
1180  	}},
1181  	{0x485, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_MISC",
1182  			"Reporting Register of Miscellaneous VMX Capabilities", {
1183  		/* Additional info available at Appendix A.6,
1184  		 * "Miscellaneous Data" */
1185  		{ BITS_EOT }
1186  	}},
1187  	{0x486, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR0_FIXED0",
1188  			"Capability Reporting Register of CR0 Bits Fixed to 0", {
1189  		/* Additional info available at Appendix A.7,
1190  		 * "VMX-Fixed Bits in CR0" */
1191  		{ BITS_EOT }
1192  	}},
1193  	{0x487, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR0_FIXED1",
1194  			"Capability Reporting Register of CR0 Bits Fixed to 1", {
1195  		/* Additional info available at Appendix A.7,
1196  		 * "VMX-Fixed Bits in CR0" */
1197  		{ BITS_EOT }
1198  	}},
1199  	{0x488, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR4_FIXED0",
1200  			"Capability Reporting Register of CR4 Bits Fixed to 0", {
1201  		/* Additional info available at Appendix A.8,
1202  		 * "VMX-Fixed Bits in CR4" */
1203  		{ BITS_EOT }
1204  	}},
1205  	{0x489, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_CR4_FIXED1",
1206  			"Capability Reporting Register of CR4 Bits Fixed to 1", {
1207  		/* Additional info available at Appendix A.8,
1208  		 * "VMX-Fixed Bits in CR4" */
1209  		{ BITS_EOT }
1210  	}},
1211  	{0x48a, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_VMCS_ENUM",
1212  			"Capability Reporting Register of VMCS Field Enumeration", {
1213  		/* Additional info available at Appendix A.9,
1214  		 * "VMCS Enumeration" */
1215  		{ BITS_EOT }
1216  	}},
1217  	{0x48b, MSRTYPE_RDONLY, MSR2(0, 0), "IA32_VMX_PROCBASED_CTLS2",
1218  			"Capability Reporting Register of Secondary "
1219  			"Processor-based VM-execution Controls", {
1220  		/* Additional info available at Appendix A.3,
1221  		 * "VM-Execution Controls" */
1222  		{ BITS_EOT }
1223  	}},
1224  	{0x600, MSRTYPE_RDWR, MSR2(0, 0), "IA32_DS_AREA", "DS Save Area", {
1225  		/* Additional info available at Section 18.10.4 of Intel 64
1226  		 * and IA-32 Architectures Software Developer's Manual,
1227  		 * "Debug Store (DS) Mechanism".
1228  		 */
1229  		{ 63, 32, RESERVED }, // reserved if not in IA-32e mode
1230  		{ 31, 32, "Linear address of DS buffer management area",
1231  				"R/W", PRESENT_HEX, {
1232  			{ BITVAL_EOT }
1233  		}},
1234  		{ BITS_EOT }
1235  	}},
1236  	{0x107cc, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL0", "", {
1237  		{ BITS_EOT }
1238  	}},
1239  	{0x107cd, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL1", "", {
1240  		{ BITS_EOT }
1241  	}},
1242  	{0x107ce, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL2", "", {
1243  		{ BITS_EOT }
1244  	}},
1245  	{0x107cf, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL3", "", {
1246  		{ BITS_EOT }
1247  	}},
1248  	{0x107d0, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL4", "", {
1249  		{ BITS_EOT }
1250  	}},
1251  	{0x107d1, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL5", "", {
1252  		{ BITS_EOT }
1253  	}},
1254  	{0x107d2, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL6", "", {
1255  		{ BITS_EOT }
1256  	}},
1257  	{0x107d3, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_CTR_CTL7", "", {
1258  		{ BITS_EOT }
1259  	}},
1260  	{0x107d8, MSRTYPE_RDWR, MSR2(0, 0), "MSR_EMON_L3_GL_CTL", "", {
1261  		{ BITS_EOT }
1262  	}},
1263  	{0xc0000080, MSRTYPE_RDWR, MSR2(0, 0), "IA32_EFER", "", {
1264  		{ BITS_EOT }
1265  	}},
1266  	{0xc0000081, MSRTYPE_RDWR, MSR2(0, 0), "IA32_STAR", "", {
1267  		{ BITS_EOT }
1268  	}},
1269  	{0xc0000082, MSRTYPE_RDWR, MSR2(0, 0), "IA32_LSTAR", "", {
1270  		{ BITS_EOT }
1271  	}},
1272  	{0xc0000084, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FMASK", "", {
1273  		{ BITS_EOT }
1274  	}},
1275  	{0xc0000100, MSRTYPE_RDWR, MSR2(0, 0), "IA32_FS_BASE", "", {
1276  		{ BITS_EOT }
1277  	}},
1278  	{0xc0000101, MSRTYPE_RDWR, MSR2(0, 0), "IA32_GS_BASE", "", {
1279  		{ BITS_EOT }
1280  	}},
1281  	{0xc0000102, MSRTYPE_RDWR, MSR2(0, 0), "IA32_KERNEL_GS_BASE", "", {
1282  		{ BITS_EOT }
1283  	}},
1284  	{ MSR_EOT }
1285  };