1 /** @file 2 MSR Definitions for Intel processors based on the Skylake microarchitecture. 3 4 Provides defines for Machine Specific Registers(MSR) indexes. Data structures 5 are provided for MSRs that contain one or more bit fields. If the MSR value 6 returned is a single 32-bit or 64-bit value, then a data structure is not 7 provided for that MSR. 8 9 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> 10 This program and the accompanying materials 11 are licensed and made available under the terms and conditions of the BSD License 12 which accompanies this distribution. The full text of the license may be found at 13 http://opensource.org/licenses/bsd-license.php 14 15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 16 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 17 18 @par Specification Reference: 19 Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3, 20 September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.15. 21 22 **/ 23 24 #ifndef __SKYLAKE_MSR_H__ 25 #define __SKYLAKE_MSR_H__ 26 27 #include <Register/ArchitecturalMsr.h> 28 29 /** 30 Package. Maximum Ratio Limit of Turbo Mode RO if MSR_PLATFORM_INFO.[28] = 0, 31 RW if MSR_PLATFORM_INFO.[28] = 1. 32 33 @param ECX MSR_SKYLAKE_TURBO_RATIO_LIMIT (0x000001AD) 34 @param EAX Lower 32-bits of MSR value. 35 Described by the type MSR_SKYLAKE_TURBO_RATIO_LIMIT_REGISTER. 36 @param EDX Upper 32-bits of MSR value. 37 Described by the type MSR_SKYLAKE_TURBO_RATIO_LIMIT_REGISTER. 38 39 <b>Example usage</b> 40 @code 41 MSR_SKYLAKE_TURBO_RATIO_LIMIT_REGISTER Msr; 42 43 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_TURBO_RATIO_LIMIT); 44 @endcode 45 @note MSR_SKYLAKE_TURBO_RATIO_LIMIT is defined as MSR_TURBO_RATIO_LIMIT in SDM. 46 **/ 47 #define MSR_SKYLAKE_TURBO_RATIO_LIMIT 0x000001AD 48 49 /** 50 MSR information returned for MSR index #MSR_SKYLAKE_TURBO_RATIO_LIMIT 51 **/ 52 typedef union { 53 /// 54 /// Individual bit fields 55 /// 56 struct { 57 /// 58 /// [Bits 7:0] Package. Maximum Ratio Limit for 1C Maximum turbo ratio 59 /// limit of 1 core active. 60 /// 61 UINT32 Maximum1C:8; 62 /// 63 /// [Bits 15:8] Package. Maximum Ratio Limit for 2C Maximum turbo ratio 64 /// limit of 2 core active. 65 /// 66 UINT32 Maximum2C:8; 67 /// 68 /// [Bits 23:16] Package. Maximum Ratio Limit for 3C Maximum turbo ratio 69 /// limit of 3 core active. 70 /// 71 UINT32 Maximum3C:8; 72 /// 73 /// [Bits 31:24] Package. Maximum Ratio Limit for 4C Maximum turbo ratio 74 /// limit of 4 core active. 75 /// 76 UINT32 Maximum4C:8; 77 UINT32 Reserved:32; 78 } Bits; 79 /// 80 /// All bit fields as a 32-bit value 81 /// 82 UINT32 Uint32; 83 /// 84 /// All bit fields as a 64-bit value 85 /// 86 UINT64 Uint64; 87 } MSR_SKYLAKE_TURBO_RATIO_LIMIT_REGISTER; 88 89 90 /** 91 Thread. Last Branch Record Stack TOS (R/W) Contains an index (bits 0-4) 92 that points to the MSR containing the most recent branch record. 93 94 @param ECX MSR_SKYLAKE_LASTBRANCH_TOS (0x000001C9) 95 @param EAX Lower 32-bits of MSR value. 96 @param EDX Upper 32-bits of MSR value. 97 98 <b>Example usage</b> 99 @code 100 UINT64 Msr; 101 102 Msr = AsmReadMsr64 (MSR_SKYLAKE_LASTBRANCH_TOS); 103 AsmWriteMsr64 (MSR_SKYLAKE_LASTBRANCH_TOS, Msr); 104 @endcode 105 @note MSR_SKYLAKE_LASTBRANCH_TOS is defined as MSR_LASTBRANCH_TOS in SDM. 106 **/ 107 #define MSR_SKYLAKE_LASTBRANCH_TOS 0x000001C9 108 109 110 /** 111 Package. Lower 64 Bit OwnerEpoch Component of SGX Key (RO). Low 64 bits of 112 an 128-bit external entropy value for key derivation of an enclave. 113 114 @param ECX MSR_SKYLAKE_SGXOWNER0 (0x00000300) 115 @param EAX Lower 32-bits of MSR value. 116 @param EDX Upper 32-bits of MSR value. 117 118 <b>Example usage</b> 119 @code 120 UINT64 Msr; 121 122 Msr = AsmReadMsr64 (MSR_SKYLAKE_SGXOWNER0); 123 @endcode 124 @note MSR_SKYLAKE_SGXOWNER0 is defined as MSR_SGXOWNER0 in SDM. 125 **/ 126 #define MSR_SKYLAKE_SGXOWNER0 0x00000300 127 128 129 /** 130 Package. Upper 64 Bit OwnerEpoch Component of SGX Key (RO). Upper 64 bits of 131 an 128-bit external entropy value for key derivation of an enclave. 132 133 @param ECX MSR_SKYLAKE_SGXOWNER1 (0x00000301) 134 @param EAX Lower 32-bits of MSR value. 135 @param EDX Upper 32-bits of MSR value. 136 137 <b>Example usage</b> 138 @code 139 UINT64 Msr; 140 141 Msr = AsmReadMsr64 (MSR_SKYLAKE_SGXOWNER1); 142 @endcode 143 @note MSR_SKYLAKE_SGXOWNER1 is defined as MSR_SGXOWNER1 in SDM. 144 **/ 145 #define MSR_SKYLAKE_SGXOWNER1 0x00000301 146 147 148 /** 149 See Table 35-2. See Section 18.2.4, "Architectural Performance Monitoring 150 Version 4.". 151 152 @param ECX MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS (0x0000038E) 153 @param EAX Lower 32-bits of MSR value. 154 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER. 155 @param EDX Upper 32-bits of MSR value. 156 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER. 157 158 <b>Example usage</b> 159 @code 160 MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER Msr; 161 162 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS); 163 AsmWriteMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS, Msr.Uint64); 164 @endcode 165 @note MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS is defined as IA32_PERF_GLOBAL_STATUS in SDM. 166 **/ 167 #define MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS 0x0000038E 168 169 /** 170 MSR information returned for MSR index #MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS 171 **/ 172 typedef union { 173 /// 174 /// Individual bit fields 175 /// 176 struct { 177 /// 178 /// [Bit 0] Thread. Ovf_PMC0. 179 /// 180 UINT32 Ovf_PMC0:1; 181 /// 182 /// [Bit 1] Thread. Ovf_PMC1. 183 /// 184 UINT32 Ovf_PMC1:1; 185 /// 186 /// [Bit 2] Thread. Ovf_PMC2. 187 /// 188 UINT32 Ovf_PMC2:1; 189 /// 190 /// [Bit 3] Thread. Ovf_PMC3. 191 /// 192 UINT32 Ovf_PMC3:1; 193 /// 194 /// [Bit 4] Thread. Ovf_PMC4 (if CPUID.0AH:EAX[15:8] > 4). 195 /// 196 UINT32 Ovf_PMC4:1; 197 /// 198 /// [Bit 5] Thread. Ovf_PMC5 (if CPUID.0AH:EAX[15:8] > 5). 199 /// 200 UINT32 Ovf_PMC5:1; 201 /// 202 /// [Bit 6] Thread. Ovf_PMC6 (if CPUID.0AH:EAX[15:8] > 6). 203 /// 204 UINT32 Ovf_PMC6:1; 205 /// 206 /// [Bit 7] Thread. Ovf_PMC7 (if CPUID.0AH:EAX[15:8] > 7). 207 /// 208 UINT32 Ovf_PMC7:1; 209 UINT32 Reserved1:24; 210 /// 211 /// [Bit 32] Thread. Ovf_FixedCtr0. 212 /// 213 UINT32 Ovf_FixedCtr0:1; 214 /// 215 /// [Bit 33] Thread. Ovf_FixedCtr1. 216 /// 217 UINT32 Ovf_FixedCtr1:1; 218 /// 219 /// [Bit 34] Thread. Ovf_FixedCtr2. 220 /// 221 UINT32 Ovf_FixedCtr2:1; 222 UINT32 Reserved2:20; 223 /// 224 /// [Bit 55] Thread. Trace_ToPA_PMI. 225 /// 226 UINT32 Trace_ToPA_PMI:1; 227 UINT32 Reserved3:2; 228 /// 229 /// [Bit 58] Thread. LBR_Frz. 230 /// 231 UINT32 LBR_Frz:1; 232 /// 233 /// [Bit 59] Thread. CTR_Frz. 234 /// 235 UINT32 CTR_Frz:1; 236 /// 237 /// [Bit 60] Thread. ASCI. 238 /// 239 UINT32 ASCI:1; 240 /// 241 /// [Bit 61] Thread. Ovf_Uncore. 242 /// 243 UINT32 Ovf_Uncore:1; 244 /// 245 /// [Bit 62] Thread. Ovf_BufDSSAVE. 246 /// 247 UINT32 Ovf_BufDSSAVE:1; 248 /// 249 /// [Bit 63] Thread. CondChgd. 250 /// 251 UINT32 CondChgd:1; 252 } Bits; 253 /// 254 /// All bit fields as a 64-bit value 255 /// 256 UINT64 Uint64; 257 } MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER; 258 259 260 /** 261 See Table 35-2. See Section 18.2.4, "Architectural Performance Monitoring 262 Version 4.". 263 264 @param ECX MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET (0x00000390) 265 @param EAX Lower 32-bits of MSR value. 266 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER. 267 @param EDX Upper 32-bits of MSR value. 268 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER. 269 270 <b>Example usage</b> 271 @code 272 MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER Msr; 273 274 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET); 275 AsmWriteMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET, Msr.Uint64); 276 @endcode 277 @note MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET is defined as IA32_PERF_GLOBAL_STATUS_RESET in SDM. 278 **/ 279 #define MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET 0x00000390 280 281 /** 282 MSR information returned for MSR index 283 #MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET 284 **/ 285 typedef union { 286 /// 287 /// Individual bit fields 288 /// 289 struct { 290 /// 291 /// [Bit 0] Thread. Set 1 to clear Ovf_PMC0. 292 /// 293 UINT32 Ovf_PMC0:1; 294 /// 295 /// [Bit 1] Thread. Set 1 to clear Ovf_PMC1. 296 /// 297 UINT32 Ovf_PMC1:1; 298 /// 299 /// [Bit 2] Thread. Set 1 to clear Ovf_PMC2. 300 /// 301 UINT32 Ovf_PMC2:1; 302 /// 303 /// [Bit 3] Thread. Set 1 to clear Ovf_PMC3. 304 /// 305 UINT32 Ovf_PMC3:1; 306 /// 307 /// [Bit 4] Thread. Set 1 to clear Ovf_PMC4 (if CPUID.0AH:EAX[15:8] > 4). 308 /// 309 UINT32 Ovf_PMC4:1; 310 /// 311 /// [Bit 5] Thread. Set 1 to clear Ovf_PMC5 (if CPUID.0AH:EAX[15:8] > 5). 312 /// 313 UINT32 Ovf_PMC5:1; 314 /// 315 /// [Bit 6] Thread. Set 1 to clear Ovf_PMC6 (if CPUID.0AH:EAX[15:8] > 6). 316 /// 317 UINT32 Ovf_PMC6:1; 318 /// 319 /// [Bit 7] Thread. Set 1 to clear Ovf_PMC7 (if CPUID.0AH:EAX[15:8] > 7). 320 /// 321 UINT32 Ovf_PMC7:1; 322 UINT32 Reserved1:24; 323 /// 324 /// [Bit 32] Thread. Set 1 to clear Ovf_FixedCtr0. 325 /// 326 UINT32 Ovf_FixedCtr0:1; 327 /// 328 /// [Bit 33] Thread. Set 1 to clear Ovf_FixedCtr1. 329 /// 330 UINT32 Ovf_FixedCtr1:1; 331 /// 332 /// [Bit 34] Thread. Set 1 to clear Ovf_FixedCtr2. 333 /// 334 UINT32 Ovf_FixedCtr2:1; 335 UINT32 Reserved2:20; 336 /// 337 /// [Bit 55] Thread. Set 1 to clear Trace_ToPA_PMI. 338 /// 339 UINT32 Trace_ToPA_PMI:1; 340 UINT32 Reserved3:2; 341 /// 342 /// [Bit 58] Thread. Set 1 to clear LBR_Frz. 343 /// 344 UINT32 LBR_Frz:1; 345 /// 346 /// [Bit 59] Thread. Set 1 to clear CTR_Frz. 347 /// 348 UINT32 CTR_Frz:1; 349 /// 350 /// [Bit 60] Thread. Set 1 to clear ASCI. 351 /// 352 UINT32 ASCI:1; 353 /// 354 /// [Bit 61] Thread. Set 1 to clear Ovf_Uncore. 355 /// 356 UINT32 Ovf_Uncore:1; 357 /// 358 /// [Bit 62] Thread. Set 1 to clear Ovf_BufDSSAVE. 359 /// 360 UINT32 Ovf_BufDSSAVE:1; 361 /// 362 /// [Bit 63] Thread. Set 1 to clear CondChgd. 363 /// 364 UINT32 CondChgd:1; 365 } Bits; 366 /// 367 /// All bit fields as a 64-bit value 368 /// 369 UINT64 Uint64; 370 } MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER; 371 372 373 /** 374 See Table 35-2. See Section 18.2.4, "Architectural Performance Monitoring 375 Version 4.". 376 377 @param ECX MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET (0x00000391) 378 @param EAX Lower 32-bits of MSR value. 379 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET_REGISTER. 380 @param EDX Upper 32-bits of MSR value. 381 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET_REGISTER. 382 383 <b>Example usage</b> 384 @code 385 MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET_REGISTER Msr; 386 387 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET); 388 AsmWriteMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET, Msr.Uint64); 389 @endcode 390 @note MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET is defined as IA32_PERF_GLOBAL_STATUS_SET in SDM. 391 **/ 392 #define MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET 0x00000391 393 394 /** 395 MSR information returned for MSR index 396 #MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET 397 **/ 398 typedef union { 399 /// 400 /// Individual bit fields 401 /// 402 struct { 403 /// 404 /// [Bit 0] Thread. Set 1 to cause Ovf_PMC0 = 1. 405 /// 406 UINT32 Ovf_PMC0:1; 407 /// 408 /// [Bit 1] Thread. Set 1 to cause Ovf_PMC1 = 1. 409 /// 410 UINT32 Ovf_PMC1:1; 411 /// 412 /// [Bit 2] Thread. Set 1 to cause Ovf_PMC2 = 1. 413 /// 414 UINT32 Ovf_PMC2:1; 415 /// 416 /// [Bit 3] Thread. Set 1 to cause Ovf_PMC3 = 1. 417 /// 418 UINT32 Ovf_PMC3:1; 419 /// 420 /// [Bit 4] Thread. Set 1 to cause Ovf_PMC4=1 (if CPUID.0AH:EAX[15:8] > 4). 421 /// 422 UINT32 Ovf_PMC4:1; 423 /// 424 /// [Bit 5] Thread. Set 1 to cause Ovf_PMC5=1 (if CPUID.0AH:EAX[15:8] > 5). 425 /// 426 UINT32 Ovf_PMC5:1; 427 /// 428 /// [Bit 6] Thread. Set 1 to cause Ovf_PMC6=1 (if CPUID.0AH:EAX[15:8] > 6). 429 /// 430 UINT32 Ovf_PMC6:1; 431 /// 432 /// [Bit 7] Thread. Set 1 to cause Ovf_PMC7=1 (if CPUID.0AH:EAX[15:8] > 7). 433 /// 434 UINT32 Ovf_PMC7:1; 435 UINT32 Reserved1:24; 436 /// 437 /// [Bit 32] Thread. Set 1 to cause Ovf_FixedCtr0 = 1. 438 /// 439 UINT32 Ovf_FixedCtr0:1; 440 /// 441 /// [Bit 33] Thread. Set 1 to cause Ovf_FixedCtr1 = 1. 442 /// 443 UINT32 Ovf_FixedCtr1:1; 444 /// 445 /// [Bit 34] Thread. Set 1 to cause Ovf_FixedCtr2 = 1. 446 /// 447 UINT32 Ovf_FixedCtr2:1; 448 UINT32 Reserved2:20; 449 /// 450 /// [Bit 55] Thread. Set 1 to cause Trace_ToPA_PMI = 1. 451 /// 452 UINT32 Trace_ToPA_PMI:1; 453 UINT32 Reserved3:2; 454 /// 455 /// [Bit 58] Thread. Set 1 to cause LBR_Frz = 1. 456 /// 457 UINT32 LBR_Frz:1; 458 /// 459 /// [Bit 59] Thread. Set 1 to cause CTR_Frz = 1. 460 /// 461 UINT32 CTR_Frz:1; 462 /// 463 /// [Bit 60] Thread. Set 1 to cause ASCI = 1. 464 /// 465 UINT32 ASCI:1; 466 /// 467 /// [Bit 61] Thread. Set 1 to cause Ovf_Uncore. 468 /// 469 UINT32 Ovf_Uncore:1; 470 /// 471 /// [Bit 62] Thread. Set 1 to cause Ovf_BufDSSAVE. 472 /// 473 UINT32 Ovf_BufDSSAVE:1; 474 UINT32 Reserved4:1; 475 } Bits; 476 /// 477 /// All bit fields as a 64-bit value 478 /// 479 UINT64 Uint64; 480 } MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET_REGISTER; 481 482 483 /** 484 Thread. FrontEnd Precise Event Condition Select (R/W). 485 486 @param ECX MSR_SKYLAKE_PEBS_FRONTEND (0x000003F7) 487 @param EAX Lower 32-bits of MSR value. 488 Described by the type MSR_SKYLAKE_PEBS_FRONTEND_REGISTER. 489 @param EDX Upper 32-bits of MSR value. 490 Described by the type MSR_SKYLAKE_PEBS_FRONTEND_REGISTER. 491 492 <b>Example usage</b> 493 @code 494 MSR_SKYLAKE_PEBS_FRONTEND_REGISTER Msr; 495 496 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PEBS_FRONTEND); 497 AsmWriteMsr64 (MSR_SKYLAKE_PEBS_FRONTEND, Msr.Uint64); 498 @endcode 499 @note MSR_SKYLAKE_PEBS_FRONTEND is defined as MSR_PEBS_FRONTEND in SDM. 500 **/ 501 #define MSR_SKYLAKE_PEBS_FRONTEND 0x000003F7 502 503 /** 504 MSR information returned for MSR index #MSR_SKYLAKE_PEBS_FRONTEND 505 **/ 506 typedef union { 507 /// 508 /// Individual bit fields 509 /// 510 struct { 511 /// 512 /// [Bits 2:0] Event Code Select. 513 /// 514 UINT32 EventCodeSelect:3; 515 UINT32 Reserved1:1; 516 /// 517 /// [Bit 4] Event Code Select High. 518 /// 519 UINT32 EventCodeSelectHigh:1; 520 UINT32 Reserved2:3; 521 /// 522 /// [Bits 19:8] IDQ_Bubble_Length Specifier. 523 /// 524 UINT32 IDQ_Bubble_Length:12; 525 /// 526 /// [Bits 22:20] IDQ_Bubble_Width Specifier. 527 /// 528 UINT32 IDQ_Bubble_Width:3; 529 UINT32 Reserved3:9; 530 UINT32 Reserved4:32; 531 } Bits; 532 /// 533 /// All bit fields as a 32-bit value 534 /// 535 UINT32 Uint32; 536 /// 537 /// All bit fields as a 64-bit value 538 /// 539 UINT64 Uint64; 540 } MSR_SKYLAKE_PEBS_FRONTEND_REGISTER; 541 542 543 /** 544 Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL 545 Domains.". 546 547 @param ECX MSR_SKYLAKE_PP0_ENERGY_STATUS (0x00000639) 548 @param EAX Lower 32-bits of MSR value. 549 @param EDX Upper 32-bits of MSR value. 550 551 <b>Example usage</b> 552 @code 553 UINT64 Msr; 554 555 Msr = AsmReadMsr64 (MSR_SKYLAKE_PP0_ENERGY_STATUS); 556 @endcode 557 @note MSR_SKYLAKE_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM. 558 **/ 559 #define MSR_SKYLAKE_PP0_ENERGY_STATUS 0x00000639 560 561 562 /** 563 Platform*. Platform Energy Counter. (R/O). This MSR is valid only if both 564 platform vendor hardware implementation and BIOS enablement support it. This 565 MSR will read 0 if not valid. 566 567 @param ECX MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER (0x0000064D) 568 @param EAX Lower 32-bits of MSR value. 569 Described by the type MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER_REGISTER. 570 @param EDX Upper 32-bits of MSR value. 571 Described by the type MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER_REGISTER. 572 573 <b>Example usage</b> 574 @code 575 MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER_REGISTER Msr; 576 577 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER); 578 @endcode 579 @note MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER is defined as MSR_PLATFORM_ENERGY_COUNTER in SDM. 580 **/ 581 #define MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER 0x0000064D 582 583 /** 584 MSR information returned for MSR index #MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER 585 **/ 586 typedef union { 587 /// 588 /// Individual bit fields 589 /// 590 struct { 591 /// 592 /// [Bits 31:0] Total energy consumed by all devices in the platform that 593 /// receive power from integrated power delivery mechanism, Included 594 /// platform devices are processor cores, SOC, memory, add-on or 595 /// peripheral devices that get powered directly from the platform power 596 /// delivery means. The energy units are specified in the 597 /// MSR_RAPL_POWER_UNIT.Enery_Status_Unit. 598 /// 599 UINT32 TotalEnergy:32; 600 UINT32 Reserved:32; 601 } Bits; 602 /// 603 /// All bit fields as a 32-bit value 604 /// 605 UINT32 Uint32; 606 /// 607 /// All bit fields as a 64-bit value 608 /// 609 UINT64 Uint64; 610 } MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER_REGISTER; 611 612 613 /** 614 Thread. Productive Performance Count. (R/O). Hardware's view of workload 615 scalability. See Section 14.4.5.1. 616 617 @param ECX MSR_SKYLAKE_PPERF (0x0000064E) 618 @param EAX Lower 32-bits of MSR value. 619 @param EDX Upper 32-bits of MSR value. 620 621 <b>Example usage</b> 622 @code 623 UINT64 Msr; 624 625 Msr = AsmReadMsr64 (MSR_SKYLAKE_PPERF); 626 @endcode 627 @note MSR_SKYLAKE_PPERF is defined as MSR_PPERF in SDM. 628 **/ 629 #define MSR_SKYLAKE_PPERF 0x0000064E 630 631 632 /** 633 Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency 634 refers to processor core frequency). 635 636 @param ECX MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS (0x0000064F) 637 @param EAX Lower 32-bits of MSR value. 638 Described by the type MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER. 639 @param EDX Upper 32-bits of MSR value. 640 Described by the type MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER. 641 642 <b>Example usage</b> 643 @code 644 MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER Msr; 645 646 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS); 647 AsmWriteMsr64 (MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS, Msr.Uint64); 648 @endcode 649 @note MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS is defined as MSR_CORE_PERF_LIMIT_REASONS in SDM. 650 **/ 651 #define MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS 0x0000064F 652 653 /** 654 MSR information returned for MSR index #MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS 655 **/ 656 typedef union { 657 /// 658 /// Individual bit fields 659 /// 660 struct { 661 /// 662 /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced below the 663 /// operating system request due to assertion of external PROCHOT. 664 /// 665 UINT32 PROCHOT_Status:1; 666 /// 667 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced below the 668 /// operating system request due to a thermal event. 669 /// 670 UINT32 ThermalStatus:1; 671 UINT32 Reserved1:2; 672 /// 673 /// [Bit 4] Residency State Regulation Status (R0) When set, frequency is 674 /// reduced below the operating system request due to residency state 675 /// regulation limit. 676 /// 677 UINT32 ResidencyStateRegulationStatus:1; 678 /// 679 /// [Bit 5] Running Average Thermal Limit Status (R0) When set, frequency 680 /// is reduced below the operating system request due to Running Average 681 /// Thermal Limit (RATL). 682 /// 683 UINT32 RunningAverageThermalLimitStatus:1; 684 /// 685 /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced 686 /// below the operating system request due to a thermal alert from a 687 /// processor Voltage Regulator (VR). 688 /// 689 UINT32 VRThermAlertStatus:1; 690 /// 691 /// [Bit 7] VR Therm Design Current Status (R0) When set, frequency is 692 /// reduced below the operating system request due to VR thermal design 693 /// current limit. 694 /// 695 UINT32 VRThermDesignCurrentStatus:1; 696 /// 697 /// [Bit 8] Other Status (R0) When set, frequency is reduced below the 698 /// operating system request due to electrical or other constraints. 699 /// 700 UINT32 OtherStatus:1; 701 UINT32 Reserved2:1; 702 /// 703 /// [Bit 10] Package/Platform-Level Power Limiting PL1 Status (R0) When 704 /// set, frequency is reduced below the operating system request due to 705 /// package/platform-level power limiting PL1. 706 /// 707 UINT32 PL1Status:1; 708 /// 709 /// [Bit 11] Package/Platform-Level PL2 Power Limiting Status (R0) When 710 /// set, frequency is reduced below the operating system request due to 711 /// package/platform-level power limiting PL2/PL3. 712 /// 713 UINT32 PL2Status:1; 714 /// 715 /// [Bit 12] Max Turbo Limit Status (R0) When set, frequency is reduced 716 /// below the operating system request due to multi-core turbo limits. 717 /// 718 UINT32 MaxTurboLimitStatus:1; 719 /// 720 /// [Bit 13] Turbo Transition Attenuation Status (R0) When set, frequency 721 /// is reduced below the operating system request due to Turbo transition 722 /// attenuation. This prevents performance degradation due to frequent 723 /// operating ratio changes. 724 /// 725 UINT32 TurboTransitionAttenuationStatus:1; 726 UINT32 Reserved3:2; 727 /// 728 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit 729 /// has asserted since the log bit was last cleared. This log bit will 730 /// remain set until cleared by software writing 0. 731 /// 732 UINT32 PROCHOT_Log:1; 733 /// 734 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit 735 /// has asserted since the log bit was last cleared. This log bit will 736 /// remain set until cleared by software writing 0. 737 /// 738 UINT32 ThermalLog:1; 739 UINT32 Reserved4:2; 740 /// 741 /// [Bit 20] Residency State Regulation Log When set, indicates that the 742 /// Residency State Regulation Status bit has asserted since the log bit 743 /// was last cleared. This log bit will remain set until cleared by 744 /// software writing 0. 745 /// 746 UINT32 ResidencyStateRegulationLog:1; 747 /// 748 /// [Bit 21] Running Average Thermal Limit Log When set, indicates that 749 /// the RATL Status bit has asserted since the log bit was last cleared. 750 /// This log bit will remain set until cleared by software writing 0. 751 /// 752 UINT32 RunningAverageThermalLimitLog:1; 753 /// 754 /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm 755 /// Alert Status bit has asserted since the log bit was last cleared. This 756 /// log bit will remain set until cleared by software writing 0. 757 /// 758 UINT32 VRThermAlertLog:1; 759 /// 760 /// [Bit 23] VR Thermal Design Current Log When set, indicates that the 761 /// VR TDC Status bit has asserted since the log bit was last cleared. 762 /// This log bit will remain set until cleared by software writing 0. 763 /// 764 UINT32 VRThermalDesignCurrentLog:1; 765 /// 766 /// [Bit 24] Other Log When set, indicates that the Other Status bit has 767 /// asserted since the log bit was last cleared. This log bit will remain 768 /// set until cleared by software writing 0. 769 /// 770 UINT32 OtherLog:1; 771 UINT32 Reserved5:1; 772 /// 773 /// [Bit 26] Package/Platform-Level PL1 Power Limiting Log When set, 774 /// indicates that the Package or Platform Level PL1 Power Limiting Status 775 /// bit has asserted since the log bit was last cleared. This log bit will 776 /// remain set until cleared by software writing 0. 777 /// 778 UINT32 PL1Log:1; 779 /// 780 /// [Bit 27] Package/Platform-Level PL2 Power Limiting Log When set, 781 /// indicates that the Package or Platform Level PL2/PL3 Power Limiting 782 /// Status bit has asserted since the log bit was last cleared. This log 783 /// bit will remain set until cleared by software writing 0. 784 /// 785 UINT32 PL2Log:1; 786 /// 787 /// [Bit 28] Max Turbo Limit Log When set, indicates that the Max Turbo 788 /// Limit Status bit has asserted since the log bit was last cleared. This 789 /// log bit will remain set until cleared by software writing 0. 790 /// 791 UINT32 MaxTurboLimitLog:1; 792 /// 793 /// [Bit 29] Turbo Transition Attenuation Log When set, indicates that the 794 /// Turbo Transition Attenuation Status bit has asserted since the log bit 795 /// was last cleared. This log bit will remain set until cleared by 796 /// software writing 0. 797 /// 798 UINT32 TurboTransitionAttenuationLog:1; 799 UINT32 Reserved6:2; 800 UINT32 Reserved7:32; 801 } Bits; 802 /// 803 /// All bit fields as a 32-bit value 804 /// 805 UINT32 Uint32; 806 /// 807 /// All bit fields as a 64-bit value 808 /// 809 UINT64 Uint64; 810 } MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER; 811 812 813 /** 814 Package. HDC Configuration (R/W).. 815 816 @param ECX MSR_SKYLAKE_PKG_HDC_CONFIG (0x00000652) 817 @param EAX Lower 32-bits of MSR value. 818 Described by the type MSR_SKYLAKE_PKG_HDC_CONFIG_REGISTER. 819 @param EDX Upper 32-bits of MSR value. 820 Described by the type MSR_SKYLAKE_PKG_HDC_CONFIG_REGISTER. 821 822 <b>Example usage</b> 823 @code 824 MSR_SKYLAKE_PKG_HDC_CONFIG_REGISTER Msr; 825 826 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PKG_HDC_CONFIG); 827 AsmWriteMsr64 (MSR_SKYLAKE_PKG_HDC_CONFIG, Msr.Uint64); 828 @endcode 829 @note MSR_SKYLAKE_PKG_HDC_CONFIG is defined as MSR_PKG_HDC_CONFIG in SDM. 830 **/ 831 #define MSR_SKYLAKE_PKG_HDC_CONFIG 0x00000652 832 833 /** 834 MSR information returned for MSR index #MSR_SKYLAKE_PKG_HDC_CONFIG 835 **/ 836 typedef union { 837 /// 838 /// Individual bit fields 839 /// 840 struct { 841 /// 842 /// [Bits 2:0] PKG_Cx_Monitor. Configures Package Cx state threshold for 843 /// MSR_PKG_HDC_DEEP_RESIDENCY. 844 /// 845 UINT32 PKG_Cx_Monitor:3; 846 UINT32 Reserved1:29; 847 UINT32 Reserved2:32; 848 } Bits; 849 /// 850 /// All bit fields as a 32-bit value 851 /// 852 UINT32 Uint32; 853 /// 854 /// All bit fields as a 64-bit value 855 /// 856 UINT64 Uint64; 857 } MSR_SKYLAKE_PKG_HDC_CONFIG_REGISTER; 858 859 860 /** 861 Core. Core HDC Idle Residency. (R/O). Core_Cx_Duty_Cycle_Cnt. 862 863 @param ECX MSR_SKYLAKE_CORE_HDC_RESIDENCY (0x00000653) 864 @param EAX Lower 32-bits of MSR value. 865 @param EDX Upper 32-bits of MSR value. 866 867 <b>Example usage</b> 868 @code 869 UINT64 Msr; 870 871 Msr = AsmReadMsr64 (MSR_SKYLAKE_CORE_HDC_RESIDENCY); 872 @endcode 873 @note MSR_SKYLAKE_CORE_HDC_RESIDENCY is defined as MSR_CORE_HDC_RESIDENCY in SDM. 874 **/ 875 #define MSR_SKYLAKE_CORE_HDC_RESIDENCY 0x00000653 876 877 878 /** 879 Package. Accumulate the cycles the package was in C2 state and at least one 880 logical processor was in forced idle. (R/O). Pkg_C2_Duty_Cycle_Cnt. 881 882 @param ECX MSR_SKYLAKE_PKG_HDC_SHALLOW_RESIDENCY (0x00000655) 883 @param EAX Lower 32-bits of MSR value. 884 @param EDX Upper 32-bits of MSR value. 885 886 <b>Example usage</b> 887 @code 888 UINT64 Msr; 889 890 Msr = AsmReadMsr64 (MSR_SKYLAKE_PKG_HDC_SHALLOW_RESIDENCY); 891 @endcode 892 @note MSR_SKYLAKE_PKG_HDC_SHALLOW_RESIDENCY is defined as MSR_PKG_HDC_SHALLOW_RESIDENCY in SDM. 893 **/ 894 #define MSR_SKYLAKE_PKG_HDC_SHALLOW_RESIDENCY 0x00000655 895 896 897 /** 898 Package. Package Cx HDC Idle Residency. (R/O). Pkg_Cx_Duty_Cycle_Cnt. 899 900 @param ECX MSR_SKYLAKE_PKG_HDC_DEEP_RESIDENCY (0x00000656) 901 @param EAX Lower 32-bits of MSR value. 902 @param EDX Upper 32-bits of MSR value. 903 904 <b>Example usage</b> 905 @code 906 UINT64 Msr; 907 908 Msr = AsmReadMsr64 (MSR_SKYLAKE_PKG_HDC_DEEP_RESIDENCY); 909 @endcode 910 @note MSR_SKYLAKE_PKG_HDC_DEEP_RESIDENCY is defined as MSR_PKG_HDC_DEEP_RESIDENCY in SDM. 911 **/ 912 #define MSR_SKYLAKE_PKG_HDC_DEEP_RESIDENCY 0x00000656 913 914 915 /** 916 Package. Core-count Weighted C0 Residency. (R/O). Increment at the same rate 917 as the TSC. The increment each cycle is weighted by the number of processor 918 cores in the package that reside in C0. If N cores are simultaneously in C0, 919 then each cycle the counter increments by N. 920 921 @param ECX MSR_SKYLAKE_WEIGHTED_CORE_C0 (0x00000658) 922 @param EAX Lower 32-bits of MSR value. 923 @param EDX Upper 32-bits of MSR value. 924 925 <b>Example usage</b> 926 @code 927 UINT64 Msr; 928 929 Msr = AsmReadMsr64 (MSR_SKYLAKE_WEIGHTED_CORE_C0); 930 @endcode 931 @note MSR_SKYLAKE_WEIGHTED_CORE_C0 is defined as MSR_WEIGHTED_CORE_C0 in SDM. 932 **/ 933 #define MSR_SKYLAKE_WEIGHTED_CORE_C0 0x00000658 934 935 936 /** 937 Package. Any Core C0 Residency. (R/O). Increment at the same rate as the 938 TSC. The increment each cycle is one if any processor core in the package is 939 in C0. 940 941 @param ECX MSR_SKYLAKE_ANY_CORE_C0 (0x00000659) 942 @param EAX Lower 32-bits of MSR value. 943 @param EDX Upper 32-bits of MSR value. 944 945 <b>Example usage</b> 946 @code 947 UINT64 Msr; 948 949 Msr = AsmReadMsr64 (MSR_SKYLAKE_ANY_CORE_C0); 950 @endcode 951 @note MSR_SKYLAKE_ANY_CORE_C0 is defined as MSR_ANY_CORE_C0 in SDM. 952 **/ 953 #define MSR_SKYLAKE_ANY_CORE_C0 0x00000659 954 955 956 /** 957 Package. Any Graphics Engine C0 Residency. (R/O). Increment at the same rate 958 as the TSC. The increment each cycle is one if any processor graphic 959 device's compute engines are in C0. 960 961 @param ECX MSR_SKYLAKE_ANY_GFXE_C0 (0x0000065A) 962 @param EAX Lower 32-bits of MSR value. 963 @param EDX Upper 32-bits of MSR value. 964 965 <b>Example usage</b> 966 @code 967 UINT64 Msr; 968 969 Msr = AsmReadMsr64 (MSR_SKYLAKE_ANY_GFXE_C0); 970 @endcode 971 @note MSR_SKYLAKE_ANY_GFXE_C0 is defined as MSR_ANY_GFXE_C0 in SDM. 972 **/ 973 #define MSR_SKYLAKE_ANY_GFXE_C0 0x0000065A 974 975 976 /** 977 Package. Core and Graphics Engine Overlapped C0 Residency. (R/O). Increment 978 at the same rate as the TSC. The increment each cycle is one if at least one 979 compute engine of the processor graphics is in C0 and at least one processor 980 core in the package is also in C0. 981 982 @param ECX MSR_SKYLAKE_CORE_GFXE_OVERLAP_C0 (0x0000065B) 983 @param EAX Lower 32-bits of MSR value. 984 @param EDX Upper 32-bits of MSR value. 985 986 <b>Example usage</b> 987 @code 988 UINT64 Msr; 989 990 Msr = AsmReadMsr64 (MSR_SKYLAKE_CORE_GFXE_OVERLAP_C0); 991 @endcode 992 @note MSR_SKYLAKE_CORE_GFXE_OVERLAP_C0 is defined as MSR_CORE_GFXE_OVERLAP_C0 in SDM. 993 **/ 994 #define MSR_SKYLAKE_CORE_GFXE_OVERLAP_C0 0x0000065B 995 996 997 /** 998 Platform*. Platform Power Limit Control (R/W-L) Allows platform BIOS to 999 limit power consumption of the platform devices to the specified values. The 1000 Long Duration power consumption is specified via Platform_Power_Limit_1 and 1001 Platform_Power_Limit_1_Time. The Short Duration power consumption limit is 1002 specified via the Platform_Power_Limit_2 with duration chosen by the 1003 processor. The processor implements an exponential-weighted algorithm in the 1004 placement of the time windows. 1005 1006 @param ECX MSR_SKYLAKE_PLATFORM_POWER_LIMIT (0x0000065C) 1007 @param EAX Lower 32-bits of MSR value. 1008 Described by the type MSR_SKYLAKE_PLATFORM_POWER_LIMIT_REGISTER. 1009 @param EDX Upper 32-bits of MSR value. 1010 Described by the type MSR_SKYLAKE_PLATFORM_POWER_LIMIT_REGISTER. 1011 1012 <b>Example usage</b> 1013 @code 1014 MSR_SKYLAKE_PLATFORM_POWER_LIMIT_REGISTER Msr; 1015 1016 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PLATFORM_POWER_LIMIT); 1017 AsmWriteMsr64 (MSR_SKYLAKE_PLATFORM_POWER_LIMIT, Msr.Uint64); 1018 @endcode 1019 @note MSR_SKYLAKE_PLATFORM_POWER_LIMIT is defined as MSR_PLATFORM_POWER_LIMIT in SDM. 1020 **/ 1021 #define MSR_SKYLAKE_PLATFORM_POWER_LIMIT 0x0000065C 1022 1023 /** 1024 MSR information returned for MSR index #MSR_SKYLAKE_PLATFORM_POWER_LIMIT 1025 **/ 1026 typedef union { 1027 /// 1028 /// Individual bit fields 1029 /// 1030 struct { 1031 /// 1032 /// [Bits 14:0] Platform Power Limit #1. Average Power limit value which 1033 /// the platform must not exceed over a time window as specified by 1034 /// Power_Limit_1_TIME field. The default value is the Thermal Design 1035 /// Power (TDP) and varies with product skus. The unit is specified in 1036 /// MSR_RAPLPOWER_UNIT. 1037 /// 1038 UINT32 PlatformPowerLimit1:15; 1039 /// 1040 /// [Bit 15] Enable Platform Power Limit #1. When set, enables the 1041 /// processor to apply control policy such that the platform power does 1042 /// not exceed Platform Power limit #1 over the time window specified by 1043 /// Power Limit #1 Time Window. 1044 /// 1045 UINT32 EnablePlatformPowerLimit1:1; 1046 /// 1047 /// [Bit 16] Platform Clamping Limitation #1. When set, allows the 1048 /// processor to go below the OS requested P states in order to maintain 1049 /// the power below specified Platform Power Limit #1 value. This bit is 1050 /// writeable only when CPUID (EAX=6):EAX[4] is set. 1051 /// 1052 UINT32 PlatformClampingLimitation1:1; 1053 /// 1054 /// [Bits 23:17] Time Window for Platform Power Limit #1. Specifies the 1055 /// duration of the time window over which Platform Power Limit 1 value 1056 /// should be maintained for sustained long duration. This field is made 1057 /// up of two numbers from the following equation: Time Window = (float) 1058 /// ((1+(X/4))*(2^Y)), where: X. = POWER_LIMIT_1_TIME[23:22] Y. = 1059 /// POWER_LIMIT_1_TIME[21:17]. The maximum allowed value in this field is 1060 /// defined in MSR_PKG_POWER_INFO[PKG_MAX_WIN]. The default value is 0DH, 1061 /// The unit is specified in MSR_RAPLPOWER_UNIT[Time Unit]. 1062 /// 1063 UINT32 Time:7; 1064 UINT32 Reserved1:8; 1065 /// 1066 /// [Bits 46:32] Platform Power Limit #2. Average Power limit value which 1067 /// the platform must not exceed over the Short Duration time window 1068 /// chosen by the processor. The recommended default value is 1.25 times 1069 /// the Long Duration Power Limit (i.e. Platform Power Limit # 1). 1070 /// 1071 UINT32 PlatformPowerLimit2:15; 1072 /// 1073 /// [Bit 47] Enable Platform Power Limit #2. When set, enables the 1074 /// processor to apply control policy such that the platform power does 1075 /// not exceed Platform Power limit #2 over the Short Duration time window. 1076 /// 1077 UINT32 EnablePlatformPowerLimit2:1; 1078 /// 1079 /// [Bit 48] Platform Clamping Limitation #2. When set, allows the 1080 /// processor to go below the OS requested P states in order to maintain 1081 /// the power below specified Platform Power Limit #2 value. 1082 /// 1083 UINT32 PlatformClampingLimitation2:1; 1084 UINT32 Reserved2:14; 1085 /// 1086 /// [Bit 63] Lock. Setting this bit will lock all other bits of this MSR 1087 /// until system RESET. 1088 /// 1089 UINT32 Lock:1; 1090 } Bits; 1091 /// 1092 /// All bit fields as a 64-bit value 1093 /// 1094 UINT64 Uint64; 1095 } MSR_SKYLAKE_PLATFORM_POWER_LIMIT_REGISTER; 1096 1097 1098 /** 1099 Thread. Last Branch Record n From IP (R/W) One of 32 triplets of last 1100 branch record registers on the last branch record stack. This part of the 1101 stack contains pointers to the source instruction. See also: - Last Branch 1102 Record Stack TOS at 1C9H - Section 17.10. 1103 1104 @param ECX MSR_SKYLAKE_LASTBRANCH_n_FROM_IP 1105 @param EAX Lower 32-bits of MSR value. 1106 @param EDX Upper 32-bits of MSR value. 1107 1108 <b>Example usage</b> 1109 @code 1110 UINT64 Msr; 1111 1112 Msr = AsmReadMsr64 (MSR_SKYLAKE_LASTBRANCH_16_FROM_IP); 1113 AsmWriteMsr64 (MSR_SKYLAKE_LASTBRANCH_16_FROM_IP, Msr); 1114 @endcode 1115 @note MSR_SKYLAKE_LASTBRANCH_16_FROM_IP is defined as MSR_LASTBRANCH_16_FROM_IP in SDM. 1116 MSR_SKYLAKE_LASTBRANCH_17_FROM_IP is defined as MSR_LASTBRANCH_17_FROM_IP in SDM. 1117 MSR_SKYLAKE_LASTBRANCH_18_FROM_IP is defined as MSR_LASTBRANCH_18_FROM_IP in SDM. 1118 MSR_SKYLAKE_LASTBRANCH_19_FROM_IP is defined as MSR_LASTBRANCH_19_FROM_IP in SDM. 1119 MSR_SKYLAKE_LASTBRANCH_20_FROM_IP is defined as MSR_LASTBRANCH_20_FROM_IP in SDM. 1120 MSR_SKYLAKE_LASTBRANCH_21_FROM_IP is defined as MSR_LASTBRANCH_21_FROM_IP in SDM. 1121 MSR_SKYLAKE_LASTBRANCH_22_FROM_IP is defined as MSR_LASTBRANCH_22_FROM_IP in SDM. 1122 MSR_SKYLAKE_LASTBRANCH_23_FROM_IP is defined as MSR_LASTBRANCH_23_FROM_IP in SDM. 1123 MSR_SKYLAKE_LASTBRANCH_24_FROM_IP is defined as MSR_LASTBRANCH_24_FROM_IP in SDM. 1124 MSR_SKYLAKE_LASTBRANCH_25_FROM_IP is defined as MSR_LASTBRANCH_25_FROM_IP in SDM. 1125 MSR_SKYLAKE_LASTBRANCH_26_FROM_IP is defined as MSR_LASTBRANCH_26_FROM_IP in SDM. 1126 MSR_SKYLAKE_LASTBRANCH_27_FROM_IP is defined as MSR_LASTBRANCH_27_FROM_IP in SDM. 1127 MSR_SKYLAKE_LASTBRANCH_28_FROM_IP is defined as MSR_LASTBRANCH_28_FROM_IP in SDM. 1128 MSR_SKYLAKE_LASTBRANCH_29_FROM_IP is defined as MSR_LASTBRANCH_29_FROM_IP in SDM. 1129 MSR_SKYLAKE_LASTBRANCH_30_FROM_IP is defined as MSR_LASTBRANCH_30_FROM_IP in SDM. 1130 MSR_SKYLAKE_LASTBRANCH_31_FROM_IP is defined as MSR_LASTBRANCH_31_FROM_IP in SDM. 1131 @{ 1132 **/ 1133 #define MSR_SKYLAKE_LASTBRANCH_16_FROM_IP 0x00000690 1134 #define MSR_SKYLAKE_LASTBRANCH_17_FROM_IP 0x00000691 1135 #define MSR_SKYLAKE_LASTBRANCH_18_FROM_IP 0x00000692 1136 #define MSR_SKYLAKE_LASTBRANCH_19_FROM_IP 0x00000693 1137 #define MSR_SKYLAKE_LASTBRANCH_20_FROM_IP 0x00000694 1138 #define MSR_SKYLAKE_LASTBRANCH_21_FROM_IP 0x00000695 1139 #define MSR_SKYLAKE_LASTBRANCH_22_FROM_IP 0x00000696 1140 #define MSR_SKYLAKE_LASTBRANCH_23_FROM_IP 0x00000697 1141 #define MSR_SKYLAKE_LASTBRANCH_24_FROM_IP 0x00000698 1142 #define MSR_SKYLAKE_LASTBRANCH_25_FROM_IP 0x00000699 1143 #define MSR_SKYLAKE_LASTBRANCH_26_FROM_IP 0x0000069A 1144 #define MSR_SKYLAKE_LASTBRANCH_27_FROM_IP 0x0000069B 1145 #define MSR_SKYLAKE_LASTBRANCH_28_FROM_IP 0x0000069C 1146 #define MSR_SKYLAKE_LASTBRANCH_29_FROM_IP 0x0000069D 1147 #define MSR_SKYLAKE_LASTBRANCH_30_FROM_IP 0x0000069E 1148 #define MSR_SKYLAKE_LASTBRANCH_31_FROM_IP 0x0000069F 1149 /// @} 1150 1151 1152 /** 1153 Package. Indicator of Frequency Clipping in the Processor Graphics (R/W) 1154 (frequency refers to processor graphics frequency). 1155 1156 @param ECX MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS (0x000006B0) 1157 @param EAX Lower 32-bits of MSR value. 1158 Described by the type MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER. 1159 @param EDX Upper 32-bits of MSR value. 1160 Described by the type MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER. 1161 1162 <b>Example usage</b> 1163 @code 1164 MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER Msr; 1165 1166 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS); 1167 AsmWriteMsr64 (MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS, Msr.Uint64); 1168 @endcode 1169 @note MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS is defined as MSR_GRAPHICS_PERF_LIMIT_REASONS in SDM. 1170 **/ 1171 #define MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS 0x000006B0 1172 1173 /** 1174 MSR information returned for MSR index 1175 #MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS 1176 **/ 1177 typedef union { 1178 /// 1179 /// Individual bit fields 1180 /// 1181 struct { 1182 /// 1183 /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced due to 1184 /// assertion of external PROCHOT. 1185 /// 1186 UINT32 PROCHOT_Status:1; 1187 /// 1188 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced due to a 1189 /// thermal event. 1190 /// 1191 UINT32 ThermalStatus:1; 1192 UINT32 Reserved1:3; 1193 /// 1194 /// [Bit 5] Running Average Thermal Limit Status (R0) When set, frequency 1195 /// is reduced due to running average thermal limit. 1196 /// 1197 UINT32 RunningAverageThermalLimitStatus:1; 1198 /// 1199 /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced due 1200 /// to a thermal alert from a processor Voltage Regulator. 1201 /// 1202 UINT32 VRThermAlertStatus:1; 1203 /// 1204 /// [Bit 7] VR Thermal Design Current Status (R0) When set, frequency is 1205 /// reduced due to VR TDC limit. 1206 /// 1207 UINT32 VRThermalDesignCurrentStatus:1; 1208 /// 1209 /// [Bit 8] Other Status (R0) When set, frequency is reduced due to 1210 /// electrical or other constraints. 1211 /// 1212 UINT32 OtherStatus:1; 1213 UINT32 Reserved2:1; 1214 /// 1215 /// [Bit 10] Package/Platform-Level Power Limiting PL1 Status (R0) When 1216 /// set, frequency is reduced due to package/platform-level power limiting 1217 /// PL1. 1218 /// 1219 UINT32 PL1Status:1; 1220 /// 1221 /// [Bit 11] Package/Platform-Level PL2 Power Limiting Status (R0) When 1222 /// set, frequency is reduced due to package/platform-level power limiting 1223 /// PL2/PL3. 1224 /// 1225 UINT32 PL2Status:1; 1226 /// 1227 /// [Bit 12] Inefficient Operation Status (R0) When set, processor 1228 /// graphics frequency is operating below target frequency. 1229 /// 1230 UINT32 InefficientOperationStatus:1; 1231 UINT32 Reserved3:3; 1232 /// 1233 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit 1234 /// has asserted since the log bit was last cleared. This log bit will 1235 /// remain set until cleared by software writing 0. 1236 /// 1237 UINT32 PROCHOT_Log:1; 1238 /// 1239 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit 1240 /// has asserted since the log bit was last cleared. This log bit will 1241 /// remain set until cleared by software writing 0. 1242 /// 1243 UINT32 ThermalLog:1; 1244 UINT32 Reserved4:3; 1245 /// 1246 /// [Bit 21] Running Average Thermal Limit Log When set, indicates that 1247 /// the RATL Status bit has asserted since the log bit was last cleared. 1248 /// This log bit will remain set until cleared by software writing 0. 1249 /// 1250 UINT32 RunningAverageThermalLimitLog:1; 1251 /// 1252 /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm 1253 /// Alert Status bit has asserted since the log bit was last cleared. This 1254 /// log bit will remain set until cleared by software writing 0. 1255 /// 1256 UINT32 VRThermAlertLog:1; 1257 /// 1258 /// [Bit 23] VR Thermal Design Current Log When set, indicates that the 1259 /// VR Therm Alert Status bit has asserted since the log bit was last 1260 /// cleared. This log bit will remain set until cleared by software 1261 /// writing 0. 1262 /// 1263 UINT32 VRThermalDesignCurrentLog:1; 1264 /// 1265 /// [Bit 24] Other Log When set, indicates that the OTHER Status bit has 1266 /// asserted since the log bit was last cleared. This log bit will remain 1267 /// set until cleared by software writing 0. 1268 /// 1269 UINT32 OtherLog:1; 1270 UINT32 Reserved5:1; 1271 /// 1272 /// [Bit 26] Package/Platform-Level PL1 Power Limiting Log When set, 1273 /// indicates that the Package/Platform Level PL1 Power Limiting Status 1274 /// bit has asserted since the log bit was last cleared. This log bit will 1275 /// remain set until cleared by software writing 0. 1276 /// 1277 UINT32 PL1Log:1; 1278 /// 1279 /// [Bit 27] Package/Platform-Level PL2 Power Limiting Log When set, 1280 /// indicates that the Package/Platform Level PL2 Power Limiting Status 1281 /// bit has asserted since the log bit was last cleared. This log bit will 1282 /// remain set until cleared by software writing 0. 1283 /// 1284 UINT32 PL2Log:1; 1285 /// 1286 /// [Bit 28] Inefficient Operation Log When set, indicates that the 1287 /// Inefficient Operation Status bit has asserted since the log bit was 1288 /// last cleared. This log bit will remain set until cleared by software 1289 /// writing 0. 1290 /// 1291 UINT32 InefficientOperationLog:1; 1292 UINT32 Reserved6:3; 1293 UINT32 Reserved7:32; 1294 } Bits; 1295 /// 1296 /// All bit fields as a 32-bit value 1297 /// 1298 UINT32 Uint32; 1299 /// 1300 /// All bit fields as a 64-bit value 1301 /// 1302 UINT64 Uint64; 1303 } MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER; 1304 1305 1306 /** 1307 Package. Indicator of Frequency Clipping in the Ring Interconnect (R/W) 1308 (frequency refers to ring interconnect in the uncore). 1309 1310 @param ECX MSR_SKYLAKE_RING_PERF_LIMIT_REASONS (0x000006B1) 1311 @param EAX Lower 32-bits of MSR value. 1312 Described by the type MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER. 1313 @param EDX Upper 32-bits of MSR value. 1314 Described by the type MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER. 1315 1316 <b>Example usage</b> 1317 @code 1318 MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER Msr; 1319 1320 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_RING_PERF_LIMIT_REASONS); 1321 AsmWriteMsr64 (MSR_SKYLAKE_RING_PERF_LIMIT_REASONS, Msr.Uint64); 1322 @endcode 1323 @note MSR_SKYLAKE_RING_PERF_LIMIT_REASONS is defined as MSR_RING_PERF_LIMIT_REASONS in SDM. 1324 **/ 1325 #define MSR_SKYLAKE_RING_PERF_LIMIT_REASONS 0x000006B1 1326 1327 /** 1328 MSR information returned for MSR index #MSR_SKYLAKE_RING_PERF_LIMIT_REASONS 1329 **/ 1330 typedef union { 1331 /// 1332 /// Individual bit fields 1333 /// 1334 struct { 1335 /// 1336 /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced due to 1337 /// assertion of external PROCHOT. 1338 /// 1339 UINT32 PROCHOT_Status:1; 1340 /// 1341 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced due to a 1342 /// thermal event. 1343 /// 1344 UINT32 ThermalStatus:1; 1345 UINT32 Reserved1:3; 1346 /// 1347 /// [Bit 5] Running Average Thermal Limit Status (R0) When set, frequency 1348 /// is reduced due to running average thermal limit. 1349 /// 1350 UINT32 RunningAverageThermalLimitStatus:1; 1351 /// 1352 /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced due 1353 /// to a thermal alert from a processor Voltage Regulator. 1354 /// 1355 UINT32 VRThermAlertStatus:1; 1356 /// 1357 /// [Bit 7] VR Thermal Design Current Status (R0) When set, frequency is 1358 /// reduced due to VR TDC limit. 1359 /// 1360 UINT32 VRThermalDesignCurrentStatus:1; 1361 /// 1362 /// [Bit 8] Other Status (R0) When set, frequency is reduced due to 1363 /// electrical or other constraints. 1364 /// 1365 UINT32 OtherStatus:1; 1366 UINT32 Reserved2:1; 1367 /// 1368 /// [Bit 10] Package/Platform-Level Power Limiting PL1 Status (R0) When 1369 /// set, frequency is reduced due to package/Platform-level power limiting 1370 /// PL1. 1371 /// 1372 UINT32 PL1Status:1; 1373 /// 1374 /// [Bit 11] Package/Platform-Level PL2 Power Limiting Status (R0) When 1375 /// set, frequency is reduced due to package/Platform-level power limiting 1376 /// PL2/PL3. 1377 /// 1378 UINT32 PL2Status:1; 1379 UINT32 Reserved3:4; 1380 /// 1381 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit 1382 /// has asserted since the log bit was last cleared. This log bit will 1383 /// remain set until cleared by software writing 0. 1384 /// 1385 UINT32 PROCHOT_Log:1; 1386 /// 1387 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit 1388 /// has asserted since the log bit was last cleared. This log bit will 1389 /// remain set until cleared by software writing 0. 1390 /// 1391 UINT32 ThermalLog:1; 1392 UINT32 Reserved4:3; 1393 /// 1394 /// [Bit 21] Running Average Thermal Limit Log When set, indicates that 1395 /// the RATL Status bit has asserted since the log bit was last cleared. 1396 /// This log bit will remain set until cleared by software writing 0. 1397 /// 1398 UINT32 RunningAverageThermalLimitLog:1; 1399 /// 1400 /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm 1401 /// Alert Status bit has asserted since the log bit was last cleared. This 1402 /// log bit will remain set until cleared by software writing 0. 1403 /// 1404 UINT32 VRThermAlertLog:1; 1405 /// 1406 /// [Bit 23] VR Thermal Design Current Log When set, indicates that the 1407 /// VR Therm Alert Status bit has asserted since the log bit was last 1408 /// cleared. This log bit will remain set until cleared by software 1409 /// writing 0. 1410 /// 1411 UINT32 VRThermalDesignCurrentLog:1; 1412 /// 1413 /// [Bit 24] Other Log When set, indicates that the OTHER Status bit has 1414 /// asserted since the log bit was last cleared. This log bit will remain 1415 /// set until cleared by software writing 0. 1416 /// 1417 UINT32 OtherLog:1; 1418 UINT32 Reserved5:1; 1419 /// 1420 /// [Bit 26] Package/Platform-Level PL1 Power Limiting Log When set, 1421 /// indicates that the Package/Platform Level PL1 Power Limiting Status 1422 /// bit has asserted since the log bit was last cleared. This log bit will 1423 /// remain set until cleared by software writing 0. 1424 /// 1425 UINT32 PL1Log:1; 1426 /// 1427 /// [Bit 27] Package/Platform-Level PL2 Power Limiting Log When set, 1428 /// indicates that the Package/Platform Level PL2 Power Limiting Status 1429 /// bit has asserted since the log bit was last cleared. This log bit will 1430 /// remain set until cleared by software writing 0. 1431 /// 1432 UINT32 PL2Log:1; 1433 UINT32 Reserved6:4; 1434 UINT32 Reserved7:32; 1435 } Bits; 1436 /// 1437 /// All bit fields as a 32-bit value 1438 /// 1439 UINT32 Uint32; 1440 /// 1441 /// All bit fields as a 64-bit value 1442 /// 1443 UINT64 Uint64; 1444 } MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER; 1445 1446 1447 /** 1448 Thread. Last Branch Record n To IP (R/W) One of 32 triplets of last branch 1449 record registers on the last branch record stack. This part of the stack 1450 contains pointers to the destination instruction. See also: - Last Branch 1451 Record Stack TOS at 1C9H - Section 17.10. 1452 1453 @param ECX MSR_SKYLAKE_LASTBRANCH_n_TO_IP 1454 @param EAX Lower 32-bits of MSR value. 1455 @param EDX Upper 32-bits of MSR value. 1456 1457 <b>Example usage</b> 1458 @code 1459 UINT64 Msr; 1460 1461 Msr = AsmReadMsr64 (MSR_SKYLAKE_LASTBRANCH_16_TO_IP); 1462 AsmWriteMsr64 (MSR_SKYLAKE_LASTBRANCH_16_TO_IP, Msr); 1463 @endcode 1464 @note MSR_SKYLAKE_LASTBRANCH_16_TO_IP is defined as MSR_LASTBRANCH_16_TO_IP in SDM. 1465 MSR_SKYLAKE_LASTBRANCH_17_TO_IP is defined as MSR_LASTBRANCH_17_TO_IP in SDM. 1466 MSR_SKYLAKE_LASTBRANCH_18_TO_IP is defined as MSR_LASTBRANCH_18_TO_IP in SDM. 1467 MSR_SKYLAKE_LASTBRANCH_19_TO_IP is defined as MSR_LASTBRANCH_19_TO_IP in SDM. 1468 MSR_SKYLAKE_LASTBRANCH_20_TO_IP is defined as MSR_LASTBRANCH_20_TO_IP in SDM. 1469 MSR_SKYLAKE_LASTBRANCH_21_TO_IP is defined as MSR_LASTBRANCH_21_TO_IP in SDM. 1470 MSR_SKYLAKE_LASTBRANCH_22_TO_IP is defined as MSR_LASTBRANCH_22_TO_IP in SDM. 1471 MSR_SKYLAKE_LASTBRANCH_23_TO_IP is defined as MSR_LASTBRANCH_23_TO_IP in SDM. 1472 MSR_SKYLAKE_LASTBRANCH_24_TO_IP is defined as MSR_LASTBRANCH_24_TO_IP in SDM. 1473 MSR_SKYLAKE_LASTBRANCH_25_TO_IP is defined as MSR_LASTBRANCH_25_TO_IP in SDM. 1474 MSR_SKYLAKE_LASTBRANCH_26_TO_IP is defined as MSR_LASTBRANCH_26_TO_IP in SDM. 1475 MSR_SKYLAKE_LASTBRANCH_27_TO_IP is defined as MSR_LASTBRANCH_27_TO_IP in SDM. 1476 MSR_SKYLAKE_LASTBRANCH_28_TO_IP is defined as MSR_LASTBRANCH_28_TO_IP in SDM. 1477 MSR_SKYLAKE_LASTBRANCH_29_TO_IP is defined as MSR_LASTBRANCH_29_TO_IP in SDM. 1478 MSR_SKYLAKE_LASTBRANCH_30_TO_IP is defined as MSR_LASTBRANCH_30_TO_IP in SDM. 1479 MSR_SKYLAKE_LASTBRANCH_31_TO_IP is defined as MSR_LASTBRANCH_31_TO_IP in SDM. 1480 @{ 1481 **/ 1482 #define MSR_SKYLAKE_LASTBRANCH_16_TO_IP 0x000006D0 1483 #define MSR_SKYLAKE_LASTBRANCH_17_TO_IP 0x000006D1 1484 #define MSR_SKYLAKE_LASTBRANCH_18_TO_IP 0x000006D2 1485 #define MSR_SKYLAKE_LASTBRANCH_19_TO_IP 0x000006D3 1486 #define MSR_SKYLAKE_LASTBRANCH_20_TO_IP 0x000006D4 1487 #define MSR_SKYLAKE_LASTBRANCH_21_TO_IP 0x000006D5 1488 #define MSR_SKYLAKE_LASTBRANCH_22_TO_IP 0x000006D6 1489 #define MSR_SKYLAKE_LASTBRANCH_23_TO_IP 0x000006D7 1490 #define MSR_SKYLAKE_LASTBRANCH_24_TO_IP 0x000006D8 1491 #define MSR_SKYLAKE_LASTBRANCH_25_TO_IP 0x000006D9 1492 #define MSR_SKYLAKE_LASTBRANCH_26_TO_IP 0x000006DA 1493 #define MSR_SKYLAKE_LASTBRANCH_27_TO_IP 0x000006DB 1494 #define MSR_SKYLAKE_LASTBRANCH_28_TO_IP 0x000006DC 1495 #define MSR_SKYLAKE_LASTBRANCH_29_TO_IP 0x000006DD 1496 #define MSR_SKYLAKE_LASTBRANCH_30_TO_IP 0x000006DE 1497 #define MSR_SKYLAKE_LASTBRANCH_31_TO_IP 0x000006DF 1498 /// @} 1499 1500 1501 /** 1502 Thread. Last Branch Record n Additional Information (R/W) One of 32 triplet 1503 of last branch record registers on the last branch record stack. This part 1504 of the stack contains flag, TSX-related and elapsed cycle information. See 1505 also: - Last Branch Record Stack TOS at 1C9H - Section 17.7.1, "LBR 1506 Stack.". 1507 1508 @param ECX MSR_SKYLAKE_LBR_INFO_n 1509 @param EAX Lower 32-bits of MSR value. 1510 @param EDX Upper 32-bits of MSR value. 1511 1512 <b>Example usage</b> 1513 @code 1514 UINT64 Msr; 1515 1516 Msr = AsmReadMsr64 (MSR_SKYLAKE_LBR_INFO_0); 1517 AsmWriteMsr64 (MSR_SKYLAKE_LBR_INFO_0, Msr); 1518 @endcode 1519 @note MSR_SKYLAKE_LBR_INFO_0 is defined as MSR_LBR_INFO_0 in SDM. 1520 MSR_SKYLAKE_LBR_INFO_1 is defined as MSR_LBR_INFO_1 in SDM. 1521 MSR_SKYLAKE_LBR_INFO_2 is defined as MSR_LBR_INFO_2 in SDM. 1522 MSR_SKYLAKE_LBR_INFO_3 is defined as MSR_LBR_INFO_3 in SDM. 1523 MSR_SKYLAKE_LBR_INFO_4 is defined as MSR_LBR_INFO_4 in SDM. 1524 MSR_SKYLAKE_LBR_INFO_5 is defined as MSR_LBR_INFO_5 in SDM. 1525 MSR_SKYLAKE_LBR_INFO_6 is defined as MSR_LBR_INFO_6 in SDM. 1526 MSR_SKYLAKE_LBR_INFO_7 is defined as MSR_LBR_INFO_7 in SDM. 1527 MSR_SKYLAKE_LBR_INFO_8 is defined as MSR_LBR_INFO_8 in SDM. 1528 MSR_SKYLAKE_LBR_INFO_9 is defined as MSR_LBR_INFO_9 in SDM. 1529 MSR_SKYLAKE_LBR_INFO_10 is defined as MSR_LBR_INFO_10 in SDM. 1530 MSR_SKYLAKE_LBR_INFO_11 is defined as MSR_LBR_INFO_11 in SDM. 1531 MSR_SKYLAKE_LBR_INFO_12 is defined as MSR_LBR_INFO_12 in SDM. 1532 MSR_SKYLAKE_LBR_INFO_13 is defined as MSR_LBR_INFO_13 in SDM. 1533 MSR_SKYLAKE_LBR_INFO_14 is defined as MSR_LBR_INFO_14 in SDM. 1534 MSR_SKYLAKE_LBR_INFO_15 is defined as MSR_LBR_INFO_15 in SDM. 1535 MSR_SKYLAKE_LBR_INFO_16 is defined as MSR_LBR_INFO_16 in SDM. 1536 MSR_SKYLAKE_LBR_INFO_17 is defined as MSR_LBR_INFO_17 in SDM. 1537 MSR_SKYLAKE_LBR_INFO_18 is defined as MSR_LBR_INFO_18 in SDM. 1538 MSR_SKYLAKE_LBR_INFO_19 is defined as MSR_LBR_INFO_19 in SDM. 1539 MSR_SKYLAKE_LBR_INFO_20 is defined as MSR_LBR_INFO_20 in SDM. 1540 MSR_SKYLAKE_LBR_INFO_21 is defined as MSR_LBR_INFO_21 in SDM. 1541 MSR_SKYLAKE_LBR_INFO_22 is defined as MSR_LBR_INFO_22 in SDM. 1542 MSR_SKYLAKE_LBR_INFO_23 is defined as MSR_LBR_INFO_23 in SDM. 1543 MSR_SKYLAKE_LBR_INFO_24 is defined as MSR_LBR_INFO_24 in SDM. 1544 MSR_SKYLAKE_LBR_INFO_25 is defined as MSR_LBR_INFO_25 in SDM. 1545 MSR_SKYLAKE_LBR_INFO_26 is defined as MSR_LBR_INFO_26 in SDM. 1546 MSR_SKYLAKE_LBR_INFO_27 is defined as MSR_LBR_INFO_27 in SDM. 1547 MSR_SKYLAKE_LBR_INFO_28 is defined as MSR_LBR_INFO_28 in SDM. 1548 MSR_SKYLAKE_LBR_INFO_29 is defined as MSR_LBR_INFO_29 in SDM. 1549 MSR_SKYLAKE_LBR_INFO_30 is defined as MSR_LBR_INFO_30 in SDM. 1550 MSR_SKYLAKE_LBR_INFO_31 is defined as MSR_LBR_INFO_31 in SDM. 1551 @{ 1552 **/ 1553 #define MSR_SKYLAKE_LBR_INFO_0 0x00000DC0 1554 #define MSR_SKYLAKE_LBR_INFO_1 0x00000DC1 1555 #define MSR_SKYLAKE_LBR_INFO_2 0x00000DC2 1556 #define MSR_SKYLAKE_LBR_INFO_3 0x00000DC3 1557 #define MSR_SKYLAKE_LBR_INFO_4 0x00000DC4 1558 #define MSR_SKYLAKE_LBR_INFO_5 0x00000DC5 1559 #define MSR_SKYLAKE_LBR_INFO_6 0x00000DC6 1560 #define MSR_SKYLAKE_LBR_INFO_7 0x00000DC7 1561 #define MSR_SKYLAKE_LBR_INFO_8 0x00000DC8 1562 #define MSR_SKYLAKE_LBR_INFO_9 0x00000DC9 1563 #define MSR_SKYLAKE_LBR_INFO_10 0x00000DCA 1564 #define MSR_SKYLAKE_LBR_INFO_11 0x00000DCB 1565 #define MSR_SKYLAKE_LBR_INFO_12 0x00000DCC 1566 #define MSR_SKYLAKE_LBR_INFO_13 0x00000DCD 1567 #define MSR_SKYLAKE_LBR_INFO_14 0x00000DCE 1568 #define MSR_SKYLAKE_LBR_INFO_15 0x00000DCF 1569 #define MSR_SKYLAKE_LBR_INFO_16 0x00000DD0 1570 #define MSR_SKYLAKE_LBR_INFO_17 0x00000DD1 1571 #define MSR_SKYLAKE_LBR_INFO_18 0x00000DD2 1572 #define MSR_SKYLAKE_LBR_INFO_19 0x00000DD3 1573 #define MSR_SKYLAKE_LBR_INFO_20 0x00000DD4 1574 #define MSR_SKYLAKE_LBR_INFO_21 0x00000DD5 1575 #define MSR_SKYLAKE_LBR_INFO_22 0x00000DD6 1576 #define MSR_SKYLAKE_LBR_INFO_23 0x00000DD7 1577 #define MSR_SKYLAKE_LBR_INFO_24 0x00000DD8 1578 #define MSR_SKYLAKE_LBR_INFO_25 0x00000DD9 1579 #define MSR_SKYLAKE_LBR_INFO_26 0x00000DDA 1580 #define MSR_SKYLAKE_LBR_INFO_27 0x00000DDB 1581 #define MSR_SKYLAKE_LBR_INFO_28 0x00000DDC 1582 #define MSR_SKYLAKE_LBR_INFO_29 0x00000DDD 1583 #define MSR_SKYLAKE_LBR_INFO_30 0x00000DDE 1584 #define MSR_SKYLAKE_LBR_INFO_31 0x00000DDF 1585 /// @} 1586 1587 1588 /** 1589 Package. Uncore fixed counter control (R/W). 1590 1591 @param ECX MSR_SKYLAKE_UNC_PERF_FIXED_CTRL (0x00000394) 1592 @param EAX Lower 32-bits of MSR value. 1593 Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER. 1594 @param EDX Upper 32-bits of MSR value. 1595 Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER. 1596 1597 <b>Example usage</b> 1598 @code 1599 MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER Msr; 1600 1601 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTRL); 1602 AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTRL, Msr.Uint64); 1603 @endcode 1604 @note MSR_SKYLAKE_UNC_PERF_FIXED_CTRL is defined as MSR_UNC_PERF_FIXED_CTRL in SDM. 1605 **/ 1606 #define MSR_SKYLAKE_UNC_PERF_FIXED_CTRL 0x00000394 1607 1608 /** 1609 MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_FIXED_CTRL 1610 **/ 1611 typedef union { 1612 /// 1613 /// Individual bit fields 1614 /// 1615 struct { 1616 UINT32 Reserved1:20; 1617 /// 1618 /// [Bit 20] Enable overflow propagation. 1619 /// 1620 UINT32 EnableOverflow:1; 1621 UINT32 Reserved2:1; 1622 /// 1623 /// [Bit 22] Enable counting. 1624 /// 1625 UINT32 EnableCounting:1; 1626 UINT32 Reserved3:9; 1627 UINT32 Reserved4:32; 1628 } Bits; 1629 /// 1630 /// All bit fields as a 32-bit value 1631 /// 1632 UINT32 Uint32; 1633 /// 1634 /// All bit fields as a 64-bit value 1635 /// 1636 UINT64 Uint64; 1637 } MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER; 1638 1639 1640 /** 1641 Package. Uncore fixed counter. 1642 1643 @param ECX MSR_SKYLAKE_UNC_PERF_FIXED_CTR (0x00000395) 1644 @param EAX Lower 32-bits of MSR value. 1645 Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER. 1646 @param EDX Upper 32-bits of MSR value. 1647 Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER. 1648 1649 <b>Example usage</b> 1650 @code 1651 MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER Msr; 1652 1653 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTR); 1654 AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTR, Msr.Uint64); 1655 @endcode 1656 @note MSR_SKYLAKE_UNC_PERF_FIXED_CTR is defined as MSR_UNC_PERF_FIXED_CTR in SDM. 1657 **/ 1658 #define MSR_SKYLAKE_UNC_PERF_FIXED_CTR 0x00000395 1659 1660 /** 1661 MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_FIXED_CTR 1662 **/ 1663 typedef union { 1664 /// 1665 /// Individual bit fields 1666 /// 1667 struct { 1668 /// 1669 /// [Bits 31:0] Current count. 1670 /// 1671 UINT32 CurrentCount:32; 1672 /// 1673 /// [Bits 43:32] Current count. 1674 /// 1675 UINT32 CurrentCountHi:12; 1676 UINT32 Reserved:20; 1677 } Bits; 1678 /// 1679 /// All bit fields as a 64-bit value 1680 /// 1681 UINT64 Uint64; 1682 } MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER; 1683 1684 1685 /** 1686 Package. Uncore C-Box configuration information (R/O). 1687 1688 @param ECX MSR_SKYLAKE_UNC_CBO_CONFIG (0x00000396) 1689 @param EAX Lower 32-bits of MSR value. 1690 Described by the type MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER. 1691 @param EDX Upper 32-bits of MSR value. 1692 Described by the type MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER. 1693 1694 <b>Example usage</b> 1695 @code 1696 MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER Msr; 1697 1698 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_CONFIG); 1699 @endcode 1700 @note MSR_SKYLAKE_UNC_CBO_CONFIG is defined as MSR_UNC_CBO_CONFIG in SDM. 1701 **/ 1702 #define MSR_SKYLAKE_UNC_CBO_CONFIG 0x00000396 1703 1704 /** 1705 MSR information returned for MSR index #MSR_SKYLAKE_UNC_CBO_CONFIG 1706 **/ 1707 typedef union { 1708 /// 1709 /// Individual bit fields 1710 /// 1711 struct { 1712 /// 1713 /// [Bits 3:0] Specifies the number of C-Box units with programmable 1714 /// counters (including processor cores and processor graphics),. 1715 /// 1716 UINT32 CBox:4; 1717 UINT32 Reserved1:28; 1718 UINT32 Reserved2:32; 1719 } Bits; 1720 /// 1721 /// All bit fields as a 32-bit value 1722 /// 1723 UINT32 Uint32; 1724 /// 1725 /// All bit fields as a 64-bit value 1726 /// 1727 UINT64 Uint64; 1728 } MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER; 1729 1730 1731 /** 1732 Package. Uncore Arb unit, performance counter 0. 1733 1734 @param ECX MSR_SKYLAKE_UNC_ARB_PERFCTR0 (0x000003B0) 1735 @param EAX Lower 32-bits of MSR value. 1736 @param EDX Upper 32-bits of MSR value. 1737 1738 <b>Example usage</b> 1739 @code 1740 UINT64 Msr; 1741 1742 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR0); 1743 AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR0, Msr); 1744 @endcode 1745 @note MSR_SKYLAKE_UNC_ARB_PERFCTR0 is defined as MSR_UNC_ARB_PERFCTR0 in SDM. 1746 **/ 1747 #define MSR_SKYLAKE_UNC_ARB_PERFCTR0 0x000003B0 1748 1749 1750 /** 1751 Package. Uncore Arb unit, performance counter 1. 1752 1753 @param ECX MSR_SKYLAKE_UNC_ARB_PERFCTR1 (0x000003B1) 1754 @param EAX Lower 32-bits of MSR value. 1755 @param EDX Upper 32-bits of MSR value. 1756 1757 <b>Example usage</b> 1758 @code 1759 UINT64 Msr; 1760 1761 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR1); 1762 AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR1, Msr); 1763 @endcode 1764 @note MSR_SKYLAKE_UNC_ARB_PERFCTR1 is defined as MSR_UNC_ARB_PERFCTR1 in SDM. 1765 **/ 1766 #define MSR_SKYLAKE_UNC_ARB_PERFCTR1 0x000003B1 1767 1768 1769 /** 1770 Package. Uncore Arb unit, counter 0 event select MSR. 1771 1772 @param ECX MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0 (0x000003B2) 1773 @param EAX Lower 32-bits of MSR value. 1774 @param EDX Upper 32-bits of MSR value. 1775 1776 <b>Example usage</b> 1777 @code 1778 UINT64 Msr; 1779 1780 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0); 1781 AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0, Msr); 1782 @endcode 1783 @note MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0 is defined as MSR_UNC_ARB_PERFEVTSEL0 in SDM. 1784 **/ 1785 #define MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0 0x000003B2 1786 1787 1788 /** 1789 Package. Uncore Arb unit, counter 1 event select MSR. 1790 1791 @param ECX MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 (0x000003B3) 1792 @param EAX Lower 32-bits of MSR value. 1793 @param EDX Upper 32-bits of MSR value. 1794 1795 <b>Example usage</b> 1796 @code 1797 UINT64 Msr; 1798 1799 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1); 1800 AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1, Msr); 1801 @endcode 1802 @note MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 is defined as MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 in SDM. 1803 **/ 1804 #define MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 0x000003B3 1805 1806 1807 /** 1808 Package. Uncore C-Box 0, counter 0 event select MSR. 1809 1810 @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0 (0x00000700) 1811 @param EAX Lower 32-bits of MSR value. 1812 @param EDX Upper 32-bits of MSR value. 1813 1814 <b>Example usage</b> 1815 @code 1816 UINT64 Msr; 1817 1818 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0); 1819 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0, Msr); 1820 @endcode 1821 @note MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0 is defined as MSR_UNC_CBO_0_PERFEVTSEL0 in SDM. 1822 **/ 1823 #define MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0 0x00000700 1824 1825 1826 /** 1827 Package. Uncore C-Box 0, counter 1 event select MSR. 1828 1829 @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1 (0x00000701) 1830 @param EAX Lower 32-bits of MSR value. 1831 @param EDX Upper 32-bits of MSR value. 1832 1833 <b>Example usage</b> 1834 @code 1835 UINT64 Msr; 1836 1837 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1); 1838 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1, Msr); 1839 @endcode 1840 @note MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1 is defined as MSR_UNC_CBO_0_PERFEVTSEL1 in SDM. 1841 **/ 1842 #define MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1 0x00000701 1843 1844 1845 /** 1846 Package. Uncore C-Box 0, performance counter 0. 1847 1848 @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFCTR0 (0x00000706) 1849 @param EAX Lower 32-bits of MSR value. 1850 @param EDX Upper 32-bits of MSR value. 1851 1852 <b>Example usage</b> 1853 @code 1854 UINT64 Msr; 1855 1856 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR0); 1857 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR0, Msr); 1858 @endcode 1859 @note MSR_SKYLAKE_UNC_CBO_0_PERFCTR0 is defined as MSR_UNC_CBO_0_PERFCTR0 in SDM. 1860 **/ 1861 #define MSR_SKYLAKE_UNC_CBO_0_PERFCTR0 0x00000706 1862 1863 1864 /** 1865 Package. Uncore C-Box 0, performance counter 1. 1866 1867 @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFCTR1 (0x00000707) 1868 @param EAX Lower 32-bits of MSR value. 1869 @param EDX Upper 32-bits of MSR value. 1870 1871 <b>Example usage</b> 1872 @code 1873 UINT64 Msr; 1874 1875 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR1); 1876 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR1, Msr); 1877 @endcode 1878 @note MSR_SKYLAKE_UNC_CBO_0_PERFCTR1 is defined as MSR_UNC_CBO_0_PERFCTR1 in SDM. 1879 **/ 1880 #define MSR_SKYLAKE_UNC_CBO_0_PERFCTR1 0x00000707 1881 1882 1883 /** 1884 Package. Uncore C-Box 1, counter 0 event select MSR. 1885 1886 @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0 (0x00000710) 1887 @param EAX Lower 32-bits of MSR value. 1888 @param EDX Upper 32-bits of MSR value. 1889 1890 <b>Example usage</b> 1891 @code 1892 UINT64 Msr; 1893 1894 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0); 1895 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0, Msr); 1896 @endcode 1897 @note MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0 is defined as MSR_UNC_CBO_1_PERFEVTSEL0 in SDM. 1898 **/ 1899 #define MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0 0x00000710 1900 1901 1902 /** 1903 Package. Uncore C-Box 1, counter 1 event select MSR. 1904 1905 @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1 (0x00000711) 1906 @param EAX Lower 32-bits of MSR value. 1907 @param EDX Upper 32-bits of MSR value. 1908 1909 <b>Example usage</b> 1910 @code 1911 UINT64 Msr; 1912 1913 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1); 1914 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1, Msr); 1915 @endcode 1916 @note MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1 is defined as MSR_UNC_CBO_1_PERFEVTSEL1 in SDM. 1917 **/ 1918 #define MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1 0x00000711 1919 1920 1921 /** 1922 Package. Uncore C-Box 1, performance counter 0. 1923 1924 @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFCTR0 (0x00000716) 1925 @param EAX Lower 32-bits of MSR value. 1926 @param EDX Upper 32-bits of MSR value. 1927 1928 <b>Example usage</b> 1929 @code 1930 UINT64 Msr; 1931 1932 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR0); 1933 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR0, Msr); 1934 @endcode 1935 @note MSR_SKYLAKE_UNC_CBO_1_PERFCTR0 is defined as MSR_UNC_CBO_1_PERFCTR0 in SDM. 1936 **/ 1937 #define MSR_SKYLAKE_UNC_CBO_1_PERFCTR0 0x00000716 1938 1939 1940 /** 1941 Package. Uncore C-Box 1, performance counter 1. 1942 1943 @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFCTR1 (0x00000717) 1944 @param EAX Lower 32-bits of MSR value. 1945 @param EDX Upper 32-bits of MSR value. 1946 1947 <b>Example usage</b> 1948 @code 1949 UINT64 Msr; 1950 1951 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR1); 1952 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR1, Msr); 1953 @endcode 1954 @note MSR_SKYLAKE_UNC_CBO_1_PERFCTR1 is defined as MSR_UNC_CBO_1_PERFCTR1 in SDM. 1955 **/ 1956 #define MSR_SKYLAKE_UNC_CBO_1_PERFCTR1 0x00000717 1957 1958 1959 /** 1960 Package. Uncore C-Box 2, counter 0 event select MSR. 1961 1962 @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0 (0x00000720) 1963 @param EAX Lower 32-bits of MSR value. 1964 @param EDX Upper 32-bits of MSR value. 1965 1966 <b>Example usage</b> 1967 @code 1968 UINT64 Msr; 1969 1970 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0); 1971 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0, Msr); 1972 @endcode 1973 @note MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0 is defined as MSR_UNC_CBO_2_PERFEVTSEL0 in SDM. 1974 **/ 1975 #define MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0 0x00000720 1976 1977 1978 /** 1979 Package. Uncore C-Box 2, counter 1 event select MSR. 1980 1981 @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1 (0x00000721) 1982 @param EAX Lower 32-bits of MSR value. 1983 @param EDX Upper 32-bits of MSR value. 1984 1985 <b>Example usage</b> 1986 @code 1987 UINT64 Msr; 1988 1989 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1); 1990 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1, Msr); 1991 @endcode 1992 @note MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1 is defined as MSR_UNC_CBO_2_PERFEVTSEL1 in SDM. 1993 **/ 1994 #define MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1 0x00000721 1995 1996 1997 /** 1998 Package. Uncore C-Box 2, performance counter 0. 1999 2000 @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFCTR0 (0x00000726) 2001 @param EAX Lower 32-bits of MSR value. 2002 @param EDX Upper 32-bits of MSR value. 2003 2004 <b>Example usage</b> 2005 @code 2006 UINT64 Msr; 2007 2008 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR0); 2009 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR0, Msr); 2010 @endcode 2011 @note MSR_SKYLAKE_UNC_CBO_2_PERFCTR0 is defined as MSR_UNC_CBO_2_PERFCTR0 in SDM. 2012 **/ 2013 #define MSR_SKYLAKE_UNC_CBO_2_PERFCTR0 0x00000726 2014 2015 2016 /** 2017 Package. Uncore C-Box 2, performance counter 1. 2018 2019 @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFCTR1 (0x00000727) 2020 @param EAX Lower 32-bits of MSR value. 2021 @param EDX Upper 32-bits of MSR value. 2022 2023 <b>Example usage</b> 2024 @code 2025 UINT64 Msr; 2026 2027 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR1); 2028 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR1, Msr); 2029 @endcode 2030 @note MSR_SKYLAKE_UNC_CBO_2_PERFCTR1 is defined as MSR_UNC_CBO_2_PERFCTR1 in SDM. 2031 **/ 2032 #define MSR_SKYLAKE_UNC_CBO_2_PERFCTR1 0x00000727 2033 2034 2035 /** 2036 Package. Uncore C-Box 3, counter 0 event select MSR. 2037 2038 @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0 (0x00000730) 2039 @param EAX Lower 32-bits of MSR value. 2040 @param EDX Upper 32-bits of MSR value. 2041 2042 <b>Example usage</b> 2043 @code 2044 UINT64 Msr; 2045 2046 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0); 2047 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0, Msr); 2048 @endcode 2049 @note MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0 is defined as MSR_UNC_CBO_3_PERFEVTSEL0 in SDM. 2050 **/ 2051 #define MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0 0x00000730 2052 2053 2054 /** 2055 Package. Uncore C-Box 3, counter 1 event select MSR. 2056 2057 @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1 (0x00000731) 2058 @param EAX Lower 32-bits of MSR value. 2059 @param EDX Upper 32-bits of MSR value. 2060 2061 <b>Example usage</b> 2062 @code 2063 UINT64 Msr; 2064 2065 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1); 2066 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1, Msr); 2067 @endcode 2068 @note MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1 is defined as MSR_UNC_CBO_3_PERFEVTSEL1 in SDM. 2069 **/ 2070 #define MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1 0x00000731 2071 2072 2073 /** 2074 Package. Uncore C-Box 3, performance counter 0. 2075 2076 @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFCTR0 (0x00000736) 2077 @param EAX Lower 32-bits of MSR value. 2078 @param EDX Upper 32-bits of MSR value. 2079 2080 <b>Example usage</b> 2081 @code 2082 UINT64 Msr; 2083 2084 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR0); 2085 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR0, Msr); 2086 @endcode 2087 @note MSR_SKYLAKE_UNC_CBO_3_PERFCTR0 is defined as MSR_UNC_CBO_3_PERFCTR0 in SDM. 2088 **/ 2089 #define MSR_SKYLAKE_UNC_CBO_3_PERFCTR0 0x00000736 2090 2091 2092 /** 2093 Package. Uncore C-Box 3, performance counter 1. 2094 2095 @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFCTR1 (0x00000737) 2096 @param EAX Lower 32-bits of MSR value. 2097 @param EDX Upper 32-bits of MSR value. 2098 2099 <b>Example usage</b> 2100 @code 2101 UINT64 Msr; 2102 2103 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR1); 2104 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR1, Msr); 2105 @endcode 2106 @note MSR_SKYLAKE_UNC_CBO_3_PERFCTR1 is defined as MSR_UNC_CBO_3_PERFCTR1 in SDM. 2107 **/ 2108 #define MSR_SKYLAKE_UNC_CBO_3_PERFCTR1 0x00000737 2109 2110 2111 /** 2112 Package. Uncore PMU global control. 2113 2114 @param ECX MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL (0x00000E01) 2115 @param EAX Lower 32-bits of MSR value. 2116 Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER. 2117 @param EDX Upper 32-bits of MSR value. 2118 Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER. 2119 2120 <b>Example usage</b> 2121 @code 2122 MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER Msr; 2123 2124 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL); 2125 AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL, Msr.Uint64); 2126 @endcode 2127 @note MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL is defined as MSR_UNC_PERF_GLOBAL_CTRL in SDM. 2128 **/ 2129 #define MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL 0x00000E01 2130 2131 /** 2132 MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL 2133 **/ 2134 typedef union { 2135 /// 2136 /// Individual bit fields 2137 /// 2138 struct { 2139 /// 2140 /// [Bit 0] Slice 0 select. 2141 /// 2142 UINT32 PMI_Sel_Slice0:1; 2143 /// 2144 /// [Bit 1] Slice 1 select. 2145 /// 2146 UINT32 PMI_Sel_Slice1:1; 2147 /// 2148 /// [Bit 2] Slice 2 select. 2149 /// 2150 UINT32 PMI_Sel_Slice2:1; 2151 /// 2152 /// [Bit 3] Slice 3 select. 2153 /// 2154 UINT32 PMI_Sel_Slice3:1; 2155 /// 2156 /// [Bit 4] Slice 4select. 2157 /// 2158 UINT32 PMI_Sel_Slice4:1; 2159 UINT32 Reserved1:14; 2160 UINT32 Reserved2:10; 2161 /// 2162 /// [Bit 29] Enable all uncore counters. 2163 /// 2164 UINT32 EN:1; 2165 /// 2166 /// [Bit 30] Enable wake on PMI. 2167 /// 2168 UINT32 WakePMI:1; 2169 /// 2170 /// [Bit 31] Enable Freezing counter when overflow. 2171 /// 2172 UINT32 FREEZE:1; 2173 UINT32 Reserved3:32; 2174 } Bits; 2175 /// 2176 /// All bit fields as a 32-bit value 2177 /// 2178 UINT32 Uint32; 2179 /// 2180 /// All bit fields as a 64-bit value 2181 /// 2182 UINT64 Uint64; 2183 } MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER; 2184 2185 2186 /** 2187 Package. Uncore PMU main status. 2188 2189 @param ECX MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS (0x00000E02) 2190 @param EAX Lower 32-bits of MSR value. 2191 Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER. 2192 @param EDX Upper 32-bits of MSR value. 2193 Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER. 2194 2195 <b>Example usage</b> 2196 @code 2197 MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER Msr; 2198 2199 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS); 2200 AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS, Msr.Uint64); 2201 @endcode 2202 @note MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS is defined as MSR_UNC_PERF_GLOBAL_STATUS in SDM. 2203 **/ 2204 #define MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS 0x00000E02 2205 2206 /** 2207 MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS 2208 **/ 2209 typedef union { 2210 /// 2211 /// Individual bit fields 2212 /// 2213 struct { 2214 /// 2215 /// [Bit 0] Fixed counter overflowed. 2216 /// 2217 UINT32 Fixed:1; 2218 /// 2219 /// [Bit 1] An ARB counter overflowed. 2220 /// 2221 UINT32 ARB:1; 2222 UINT32 Reserved1:1; 2223 /// 2224 /// [Bit 3] A CBox counter overflowed (on any slice). 2225 /// 2226 UINT32 CBox:1; 2227 UINT32 Reserved2:28; 2228 UINT32 Reserved3:32; 2229 } Bits; 2230 /// 2231 /// All bit fields as a 32-bit value 2232 /// 2233 UINT32 Uint32; 2234 /// 2235 /// All bit fields as a 64-bit value 2236 /// 2237 UINT64 Uint64; 2238 } MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER; 2239 2240 #endif 2241