1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
|
/** @file
Conventions:
- Prefixes:
Definitions beginning with "MSR_" are MSRs
Definitions beginning with "R_" are registers
Definitions beginning with "B_" are bits within registers
Definitions beginning with "V_" are meaningful values of bits within the registers
Definitions beginning with "S_" are register sizes
Definitions beginning with "N_" are the bit position
@copyright
Copyright (c) 2004 - 2013 Intel Corporation. All rights reserved
This software and associated documentation (if any) is furnished
under a license and may only be used or copied in accordance
with the terms of the license. Except as permitted by such
license, no part of this software or documentation may be
reproduced, stored in a retrieval system, or transmitted in any
form or by any means without the express written consent of
Intel Corporation.
This file contains an 'Intel Peripheral Driver' and is
licensed for Intel CPUs and chipsets under the terms of your
license agreement with Intel or your vendor. This file may
be modified by the user, subject to additional terms of the
license agreement
**/
#ifndef _CPU_REGS_H_
#define _CPU_REGS_H_
#include "CommonIncludes.h"
//
// Local APIC defines
//
#define APIC_REGISTER_LOCAL_ID_OFFSET 0x00000020
#define APIC_REGISTER_APIC_VERSION_OFFSET 0x00000030
#define APIC_REGISTER_SPURIOUS_VECTOR_OFFSET 0x000000F0
#define APIC_REGISTER_ICR_LOW_OFFSET 0x00000300
#define APIC_REGISTER_ICR_HIGH_OFFSET 0x00000310
#define APIC_REGISTER_LINT0_VECTOR_OFFSET 0x00000350
#define APIC_REGISTER_LINT1_VECTOR_OFFSET 0x00000360
#define BROADCAST_MODE_SPECIFY_CPU 0x00
#define BROADCAST_MODE_ALL_INCLUDING_SELF 0x01
#define BROADCAST_MODE_ALL_EXCLUDING_SELF 0x02
#ifndef DELIVERY_MODE_REMOTE_READ
#define DELIVERY_MODE_FIXED 0x00
#define DELIVERY_MODE_LOWEST_PRIORITY 0x01
#define DELIVERY_MODE_SMI 0x02
#define DELIVERY_MODE_REMOTE_READ 0x03
#define DELIVERY_MODE_NMI 0x04
#define DELIVERY_MODE_INIT 0x05
#define DELIVERY_MODE_SIPI 0x06
#define DELIVERY_MODE_MAX 0x07
#define TRIGGER_MODE_EDGE 0x00
#define TRIGGER_MODE_LEVEL 0x01
#endif
#define CACHE_UNCACHEABLE 0
#define CACHE_WRITECOMBINING 1
#define CACHE_WRITETHROUGH 4
#define CACHE_WRITEPROTECTED 5
#define CACHE_WRITEBACK 6
#define CPUID_SIGNATURE 0x0
#define CPUID_VERSION_INFO 0x1
#define CPUID_FUNCTION_4 0x4
#define CPU_CACHE_TYPE_MASK 0x1F
#define CPU_CACHE_LEVEL_MASK 0x07
#define CPU_CACHE_ASSOCIATIVITY_MASK 0x03FF
#define CPU_CACHE_PARTITION_MASK 0x03FF
#define CPU_CACHE_LINE_SIZE_MASK 0x0FFF
#define B_CPUID_VERSION_INFO_ECX_MWAIT BIT3
#define B_CPUID_VERSION_INFO_ECX_VME BIT5
#define B_CPUID_VERSION_INFO_ECX_SME BIT6
#define B_CPUID_VERSION_INFO_ECX_EIST BIT7
#define B_CPUID_VERSION_INFO_ECX_TM2 BIT8
#define B_CPUID_VERSION_INFO_ECX_DCA BIT18
#define B_CPUID_VERSION_INFO_ECX_AES BIT25
#define B_CPUID_VERSION_INFO_ECX_XAPIC BIT21
#define B_CPUID_VERSION_INFO_EDX_XD BIT20
#define B_CPUID_VERSION_INFO_EDX_HT BIT28
#define B_CPUID_VERSION_INFO_EDX_TM1 BIT29
#define CPUID_CACHE_INFO 0x2
#define CPUID_SERIAL_NUMBER 0x3
#define CPUID_CACHE_PARAMS 0x4
//
// CPU ID Instruction defines
//
#define V_CPUID_CACHE_TYPE_MASK 0x1F
#define B_CPUID_CACHE_TYPE_DATA 0x1
#define B_CPUID_CACHE_TYPE_INSTRUCTION 0x2
#define B_CPUID_CACHE_TYPE_UNIFIED 0x3
#define V_CPUID_CACHE_LEVEL_MASK 0xE0
#define B_CPUID_CACHE_LEVEL_SHIFT 5
#define B_CPUID_CACHE_PARAMS_WAYS_SHIFT 22
#define B_CPUID_CACHE_PARAMS_PARTITIONS_SHIFT 12
#define CPUID_MONITOR_MWAIT_PARAMS 0x5
#define B_CPUID_MONITOR_MWAIT_ECX_EXTENSIONS BIT0
#define B_CPUID_MONITOR_MWAIT_EDX_CSTATE BIT0
#define V_CPUID_MONITOR_MWAIT_EDX_ENHANCED_CSTATE 0x2
#define CPUID_POWER_MANAGEMENT_PARAMS 0x6
#define B_CPUID_POWER_MANAGEMENT_EAX_TURBO BIT1
#define B_CPUID_POWER_MANAGEMENT_EAX_FINE_GRAINED_CLOCK_MODULATION BIT5
#define B_CPUID_POWER_MANAGEMENT_ECX_ENERGY_EFFICIENT_POLICY_SUPPORT BIT3
#define CPUID_REV7 0x7
#define CPUID_REV8 0x8
#define CPUID_DCA_PARAMS 0x9
#define CPUID_REVA 0xA
#define CPUID_CORE_TOPOLOGY 0xB
#define CPUID_EXTENDED_FUNCTION 0x80000000
#define CPUID_EXTENDED_CPU_SIG 0x80000001
#define CPUID_BRAND_STRING1 0x80000002
#define CPUID_BRAND_STRING2 0x80000003
#define CPUID_BRAND_STRING3 0x80000004
#define CPUID_L2_CACHE_FEATURE 0x80000006
#define CPUID_VIR_PHY_ADDRESS_SIZE 0x80000008
//
// MSR defines
//
#define MSR_IA32_PLATFORM_ID 0x00000017
#define MSR_IA32_APIC_BASE 0x0000001B
#define B_MSR_IA32_APIC_BASE_G_XAPIC BIT11
#define B_MSR_IA32_APIC_BASE_M_XAPIC BIT10
#define B_MSR_IA32_APIC_BASE_BSP BIT8
#define PIC_THREAD_CONTROL 0x0000002E
#define B_PIC_THREAD_CONTROL_TPR_DIS BIT10
#define MSR_CORE_THREAD_COUNT 0x00000035
#define N_CORE_COUNT_OFFSET 16
#define B_THREAD_COUNT_MASK 0xFFFF
#define MSR_SOCKET_ID_MSR 0x00000039
#define MSR_IA32_FEATURE_CONTROL 0x0000003A
#define B_MSR_IA32_FEATURE_CONTROL_LOCK BIT0
#define B_MSR_IA32_FEATURE_CONTROL_ELT BIT1
#define B_MSR_IA32_FEATURE_CONTROL_EVT BIT2
#define B_MSR_IA32_FEATURE_CONTROL_SLFE (BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | BIT13 | BIT14)
#define B_MSR_IA32_FEATURE_CONTROL_SGE BIT15
#define MSR_IA32_SMM_SAVE_CONTROL 0x0000003E
#define B_MSR_IA32_SMM_SAVE_CONTROL_SFPPE BIT0
#define MSR_IA32_BIOS_UPDT_TRIG 0x00000079
#define MSR_IA32_BIOS_SIGN_ID 0x0000008B
#define MSR_IA32_SMM_MONITOR_CONTROL 0x0000009B
#define MSR_IA32_PMC0_MSR 0x000000C1
#define MSR_IA32_PMC1_MSR 0x000000C2
#define MSR_IA32_PMC2_MSR 0x000000C3
#define MSR_IA32_PMC3_MSR 0x000000C4
#define MSR_IA32_PMC4_MSR 0x000000C5
#define MSR_IA32_PMC5_MSR 0x000000C6
#define MSR_IA32_PMC6_MSR 0x000000C7
#define MSR_IA32_PMC7_MSR 0x000000C8
#define MSR_PLATFORM_INFO 0x000000CE
#define N_PLATFORM_INFO_MIN_RATIO 40
#define B_PLATFORM_INFO_RATIO_MASK 0xFF
#define N_PLATFORM_INFO_MAX_RATIO 8
#define B_MSR_PLATFORM_INFO_PFAT_AVAIL BIT35
#define N_MSR_PLATFORM_INFO_CONFIG_TDP_NUM_LEVELS_OFFSET 33
#define V_CONFIG_TDP_NUM_LEVELS_MASK (BIT34 | BIT33)
#define B_PLATFORM_INFO_TDC_TDP_LIMIT BIT29
#define N_PLATFORM_INFO_RATIO_LIMIT 28
#define B_PLATFORM_INFO_RATIO_LIMIT BIT28
#define B_FIVR_RFI_TUNING_AVAIL BIT25
#define B_PLATFORM_INFO_SMM_SAVE_CONTROL BIT16
#define N_PLATFORM_INFO_PROG_TCC_ACTIVATION_OFFSET 30
#define B_PLATFORM_INFO_PROG_TCC_ACTIVATION_OFFSET BIT30
#define B_PLATFORM_INFO_TIMED_MWAIT_SUPPORTED BIT37
#define MSR_PMG_CST_CONFIG 0x000000E2
#define B_CST_CONTROL_LOCK BIT15
#define B_IO_MWAIT_REDIRECTION_ENABLE BIT10
#define B_TIMED_MWAIT_ENABLE BIT31
#define B_PACKAGE_C_STATE_LIMIT (BIT3 | BIT2 | BIT1 | BIT0)
#define V_CSTATE_LIMIT_C1 0x01
#define V_CSTATE_LIMIT_C3 0x02
#define V_CSTATE_LIMIT_C6 0x03
#define V_CSTATE_LIMIT_C7 0x04
#define V_CSTATE_LIMIT_C7S 0x05
#define V_CSTATE_LIMIT_C8 0x06
#define V_CSTATE_LIMIT_C9 0x07
#define V_CSTATE_LIMIT_C10 0x08
#define B_C3_AUTO_DEMOTION_ENABLE BIT25
#define B_C1_AUTO_DEMOTION_ENABLE BIT26
#define B_C3_AUTO_UNDEMOTION_ENABLE BIT27
#define B_C1_AUTO_UNDEMOTION_ENABLE BIT28
#define B_PKG_CSTATE_DEMOTION_ENABLE BIT29
#define B_PKG_CSTATE_UNDEMOTION_ENABLE BIT30
#define MSR_RFI_TUNNING 0x000000E3
#define V_FREQ_TUNNING_MASK 0xFFFF
#define MSR_PMG_IO_CAPTURE_BASE 0x000000E4
#define B_MSR_PMG_CST_RANGE (BIT18 | BIT17 | BIT16)
#define V_IO_CAPT_LVL2 (0x0 << 16) ///< C3
#define V_IO_CAPT_LVL3 (0x1 << 16) ///< C6
#define V_IO_CAPT_LVL4 (0x2 << 16) ///< C7
#define V_IO_CAPT_LVL5 (0x3 << 16) ///< C8
#define V_IO_CAPT_LVL6 (0x4 << 16) ///< C9
#define V_IO_CAPT_LVL7 (0x5 << 16) ///< C10
#define V_IO_CAPT_LVL2_BASE_ADDR_MASK 0xFFFF
#define IA32_MTRR_CAP 0x000000FE
#define B_IA32_MTRR_VARIABLE_SUPPORT 0xFF
#define B_IA32_MTRR_CAP_FIXED_SUPPORT BIT8
#define B_IA32_MTRR_CAP_SMRR_SUPPORT BIT11
#define B_IA32_MTRR_CAP_EMRR_SUPPORT BIT12
#define MSR_PLAT_FRMW_PROT_CTRL 0x00000110
#define B_MSR_PLAT_FRMW_PROT_CTRL_LK BIT0
#define B_MSR_PLAT_FRMW_PROT_CTRL_EN BIT1
#define B_MSR_PLAT_FRMW_PROT_CTRL_S1 BIT2
#define MSR_PLAT_FRMW_PROT_HASH_0 0x00000111
#define MSR_PLAT_FRMW_PROT_HASH_1 0x00000112
#define MSR_PLAT_FRMW_PROT_HASH_2 0x00000113
#define MSR_PLAT_FRMW_PROT_HASH_3 0x00000114
#define MSR_PLAT_FRMW_PROT_TRIG_PARAM 0x00000115
#define N_MSR_PLAT_FRMW_PROT_TRIG_PARAM_STATUS_OFFSET 0
#define V_MSR_PLAT_FRMW_PROT_TRIG_PARAM_STATUS_MASK 0x000000000000FFFF
#define N_MSR_PLAT_FRMW_PROT_TRIG_PARAM_DATA_OFFSET 16
#define V_MSR_PLAT_FRMW_PROT_TRIG_PARAM_DATA_MASK 0x000000000000FFFF
#define N_MSR_PLAT_FRMW_PROT_TRIG_PARAM_TERMINAL_OFFSET 32
#define V_MSR_PLAT_FRMW_PROT_TRIG_PARAM_TERMINAL_MASK 0x000000000000FFFF
#define B_MSR_PLAT_FRMW_PROT_TRIG_PARAM_SE BIT62
#define N_MSR_PLAT_FRMW_PROT_TRIG_PARAM_SE_OFFSET 62
#define MSR_PLAT_FRMW_PROT_TRIGGER 0x00000116
#define MSR_PLAT_FRMW_PROT_PASSWD 0x00000117
#define MSR_SPCL_CHIPSET_USAGE_ADDR 0x000001FE
#define MSR_IA32_FEATURE_CONFIG 0x0000013C
#define B_IA32_FEATURE_CONFIG_AES_DIS BIT1
#define B_IA32_FEATURE_CONFIG_LOCK BIT0
#define IA32_MCG_CAP 0x00000179
#define IA32_MCG_STATUS 0x0000017A
#define MSR_FLEX_RATIO 0x00000194
#define N_FLEX_RATIO 8
#define B_FLEX_RATIO (0xFF << 8)
#define B_FLEX_EN BIT16
#define B_MAX_EXTRA_VOLTAGE 0xFF
#define N_OVERCLOCKING_BINS 17
#define B_OVERCLOCKING_BINS (0x7 << 17)
#define B_OVERCLOCKING_LOCK BIT20
#define RATIO_FLEX_CLEAR_MASK 0xFFFFFFFFFFFF00FFULL
#define MSR_IA32_PERF_STS 0x00000198
#define N_IA32_PERF_STSP_STATE_TARGET 8
#define B_IA32_PERF_STSP_STATE_MASK 0xFF
#define MSR_IA32_PERF_CTRL 0x00000199
#define N_IA32_PERF_CTRLP_STATE_TARGET 8
#define B_IA32_PERF_CTRLP_STATE_TARGET (0x7F << 8)
#define B_IA32_PERF_CTRL_TURBO_DIS BIT32
#define MSR_IA32_CLOCK_MODULATION 0x0000019A
#define IA32_THERM_INTERRUPT 0x0000019B
#define B_IA32_THERM_INTERRUPT_VIE BIT4
#define MSR_IA32_THERM_STATUS 0x0000019C
#define MSR_IA32_MISC_ENABLE 0x000001A0
#define B_MSR_IA32_MISC_ENABLE_FSE BIT0
#define B_MSR_IA32_MISC_ENABLE_TME BIT3
#define N_MSR_IA32_MISC_ENABLE_EIST_OFFSET 16
#define B_MSR_IA32_MISC_ENABLE_EIST BIT16
#define B_MSR_IA32_MISC_ENABLE_MONITOR BIT18
#define B_MSR_IA32_MISC_ENABLE_CPUID_MAX BIT22
#define B_MSR_IA32_MISC_ENABLE_TPR_DIS BIT23
#define B_MSR_IA32_MISC_ENABLE_XD BIT34
#define B_MSR_IA32_MISC_DISABLE_TURBO BIT38
#define MSR_TEMPERATURE_TARGET 0x000001A2
#define N_MSR_TEMPERATURE_TARGET_TCC_OFFSET_LIMIT 24
#define N_MSR_TEMPERATURE_TARGET_TCC_ACTIVATION_TEMPERATURE_OFFSET (16)
#define B_MSR_TEMPERATURE_TARGET_TCC_ACTIVATION_TEMPERATURE_MASK (0xFF << 16)
#define N_MSR_TEMPERATURE_TARGET_FAN_TEMP_TARGET_OFFSET 8
#define B_MSR_TEMPERATURE_TARGET_FAN_TEMP_TARGET_OFFSET (0xFF << 8)
#define MISC_FEATURE_CONTROL 0x000001A4
#define B_MISC_FEATURE_CONTROL_MLC_STRP BIT0
#define B_MISC_FEATURE_CONTROL_MLC_SPAP BIT1
#define B_MISC_FEATURE_CONTROL_DCU_STRP BIT2
#define B_MISC_FEATURE_CONTROL_DCU_IPP BIT3
#define MSR_MISC_PWR_MGMT 0x000001AA
#define B_MSR_MISC_PWR_MGMT_EIST_HW BIT0
#define B_MSR_MISC_PWR_MGMT_LTMI BIT22
#define MSR_TURBO_POWER_CURRENT_LIMIT 0x000001AC
#define B_MSR_TURBO_POWER_CURRENT_LIMIT_TDC_EN BIT31
#define N_MSR_TURBO_POWER_CURRENT_LIMIT_TDC_LIMIT 16
#define B_MSR_TURBO_POWER_CURRENT_LIMIT_TDC_LIMIT (0x7F << 16)
#define B_MSR_TURBO_POWER_CURRENT_LIMIT_TDP_EN BIT15
#define N_MSR_TURBO_POWER_CURRENT_LIMIT_TDP_LIMIT 0
#define B_MSR_TURBO_POWER_CURRENT_LIMIT_TDP_LIMIT (0x7F << 0)
#define MSR_TURBO_RATIO_LIMIT 0x000001AD
#define N_MSR_TURBO_RATIO_LIMIT_1C 0
#define B_MSR_TURBO_RATIO_LIMIT_1C (0xFF << 0)
#define N_MSR_TURBO_RATIO_LIMIT_2C 8
#define B_MSR_TURBO_RATIO_LIMIT_2C (0xFF << 8)
#define N_MSR_TURBO_RATIO_LIMIT_3C 16
#define B_MSR_TURBO_RATIO_LIMIT_3C (0xFF << 16)
#define N_MSR_TURBO_RATIO_LIMIT_4C 24
#define B_MSR_TURBO_RATIO_LIMIT_4C (0xFF << 24)
#define MSR_IA32_ENERGY_PERFORMANCE_BIAS 0x1B0
#define B_ENERGY_POLICY_MASK 0xF
#define MSR_IA32_PLATFORM_DCA_CAP 0x000001F8
#define B_MSR_IA32_PLATFORM_DCA_CAP_TYPE0_EN BIT0
#define MSR_IA32_CPU_DCA_CAP 0x000001F9
#define B_MSR_IA32_CPU_DCA_CAP_TYPE0_SUP BIT0
#define MSR_IA32_DCA_0_CAP 0x000001FA
#define B_MSR_IA32_CPU_DCA_CAP_ENDID BIT11
#define N_MSR_IA32_CPU_DCA_CAP_DELAY 13
#define B_MSR_IA32_CPU_DCA_CAP_DELAY (BIT13 | BIT14 | BIT15 | BIT16)
#define B_MSR_IA32_CPU_DCA_CAP_SW_LOCK BIT24
#define B_MSR_IA32_CPU_DCA_CAP_SW_FLUSH BIT25
#define B_MSR_IA32_CPU_DCA_CAP_HW_LOCK BIT26
#define MSR_POWER_CTL 0x000001FC
#define B_MSR_POWER_CTL_BROCHOT BIT0
#define B_MSR_POWER_CTL_C1E BIT1
#define B_ENERGY_EFFICIENT_P_STATE_FEATURE_ENABLE BIT18
#define B_MSR_POWER_CTL_DISABLE_PHOT_OUT BIT21
#define B_MSR_POWER_CTL_PROC_HOT_RESPONSE BIT22
#define B_MSR_POWER_CTL_PROC_HOT_LOCK BIT23
#define B_MSR_POWER_CTL_DISABLE_VR_THERMAL_ALERT BIT24
#define B_MSR_POWER_CTL_CSTATE_PRE_WAKE_DISABLE BIT30
#define MSR_FERR_CAPABILITIES 0x000001F1
#define B_MSR_FERR_ENABLE BIT0
#define MSR_VR_CURRENT_CONFIG 0x00000601
#define B_CURRENT_LIMIT_LOCK BIT31
#define B_CURRENT_LIMIT_MASK 0x1FFF
#define MSR_VR_MISC_CONFIG 0x603
#define N_MSR_VR_MISC_CONFIG_MIN_VID_OFFSET 24
#define B_MSR_VR_MISC_CONFIG_MIN_VID_MASK 0xFF
#define V_MSR_VR_MISC_CONFIG_MIN_VID_DEFAULT 0
#define N_MSR_VR_MISC_CONFIG_IDLE_EXIT_RAMP_RATE_OFFSET 50
#define B_MSR_VR_MISC_CONFIG_IDLE_EXIT_RAMP_RATE BIT50
#define N_MSR_VR_MISC_CONFIG_IDLE_ENTRY_RAMP_RATE_OFFSET 51
#define B_MSR_VR_MISC_CONFIG_IDLE_ENTRY_RAMP_RATE BIT51
#define N_MSR_VR_MISC_CONFIG_IDLE_ENTRY_DECAY_ENABLE_OFFSET 52
#define B_MSR_VR_MISC_CONFIG_IDLE_ENTRY_DECAY_ENABLE BIT52
#define N_MSR_VR_MISC_CONFIG_SLOW_SLEW_RATE_CONFIG_OFFSET 53
#define B_MSR_VR_MISC_CONFIG_SLOW_SLEW_RATE_CONFIG_MASK (BIT54 | BIT53)
#define V_MSR_VR_MISC_CONFIG_SLOW_SLEW_RATE_CONFIG_DEFAULT 1
#define V_MSR_VR_MISC_CONFIG_SLOW_SLEW_RATE_CONFIG_FAST_2 0
#define V_MSR_VR_MISC_CONFIG_SLOW_SLEW_RATE_CONFIG_FAST_4 BIT53
#define V_MSR_VR_MISC_CONFIG_SLOW_SLEW_RATE_CONFIG_FAST_8 BIT54
#define V_MSR_VR_MISC_CONFIG_SLOW_SLEW_RATE_CONFIG_FAST_16 (BIT54 | BIT53)
#define MSR_VR_MISC_CONFIG2 0x636
#define N_MSR_VR_MISC_CONFIG2_FAST_RAMP_VOLTAGE_OFFSET 0
#define B_MSR_VR_MISC_CONFIG2_FAST_RAMP_VOLTAGE_MASK 0xFF
#define V_MSR_VR_MISC_CONFIG2_FAST_RAMP_VOLTAGE_DEFAULT 0x6F
#define N_MSR_VR_MISC_CONFIG2_MIN_C8_VOLTAGE_OFFSET 8
#define B_MSR_VR_MISC_CONFIG2_MIN_C8_VOLTAGE_MASK 0xFF
#define V_MSR_VR_MISC_CONFIG2_MIN_C8_VOLTAGE_DEFAULT 0
#define MSR_PACKAGE_POWER_SKU_UNIT 0x606
#define PACKAGE_POWER_UNIT_MASK 0xF
#define PACKAGE_TIME_UNIT_MASK 0xF0000
#define MSR_C_STATE_LATENCY_CONTROL_0 0x60A
#define MSR_C_STATE_LATENCY_CONTROL_1 0x60B
#define MSR_C_STATE_LATENCY_CONTROL_2 0x60C
#define MSR_C_STATE_LATENCY_CONTROL_3 0x633
#define MSR_C_STATE_LATENCY_CONTROL_4 0x634
#define MSR_C_STATE_LATENCY_CONTROL_5 0x635
#define B_PKG_IRTL_VALID BIT15
#define B_INTERRUPT_RESPONSE_TIME_LIMIT_MASK 0x3FF
#define B_TIME_UNIT_MASK (0x7 << 10)
#define N_TIME_UNIT_OFFSET 10
#define MSR_PACKAGE_POWER_LIMIT 0x610
#define MSR_PACKAGE_POWER_SKU 0x614
#define B_POWER_LIMIT_ENABLE BIT15
#define B_CRITICAL_POWER_CLAMP_ENABLE BIT16
#define B_POWER_LIMIT_LOCK BIT31
#define POWER_LIMIT_MASK (0x7FFF)
#define POWER_LIMIT_1_TIME_MASK (0xFE0000)
#define PACKAGE_TDP_POWER_MASK (0x7FFF)
#define PACKAGE_MIN_POWER_MASK (0x7FFF0000)
#define PACKAGE_MAX_POWER_MASK (0x7FFF)
#define MSR_PLATFORM_POWER_LIMIT 0x615
#define POWER_LIMIT_3_TIME_MASK (0xFE0000)
#define POWER_LIMIT_3_DUTY_CYCLE_MASK (0x7F000000)
#define MSR_DDR_RAPL_LIMIT 0x618
#define MSR_RING_RATIO_LIMIT 0x620
#define MSR_MAX_RING_RATIO_LIMIT_MASK 0x7F
#define MSR_CONFIG_TDP_NOMINAL 0x648
#define CONFIG_TDP_NOMINAL_RATIO_MASK 0xFF
#define MSR_CONFIG_TDP_LVL1 0x649
#define CONFIG_TDP_LVL1_RATIO_OFFSET 16
#define CONFIG_TDP_LVL1_RATIO_MASK (0xFF << 16)
#define CONFIG_TDP_LVL1_PKG_TDP_MASK (0x7FFF)
#define MSR_CONFIG_TDP_LVL2 0x64A
#define CONFIG_TDP_LVL2_RATIO_OFFSET 16
#define CONFIG_TDP_LVL2_RATIO_MASK (0xFF << 16)
#define CONFIG_TDP_LVL2_PKG_TDP_MASK (0x7FFF)
#define MSR_CONFIG_TDP_CONTROL 0x64B
#define CONFIG_TDP_CONTROL_LOCK (1 << 31)
#define CONFIG_TDP_CONTROL_LVL_MASK 0x3
#define CONFIG_TDP_NOMINAL 0
#define CONFIG_TDP_LEVEL1 1
#define CONFIG_TDP_LEVEL2 2
#define MSR_TURBO_ACTIVATION_RATIO 0x64C
#define MSR_TURBO_ACTIVATION_RATIO_LOCK (1 << 31)
#define MSR_TURBO_ACTIVATION_RATIO_MASK 0xFF
#define SMRR_PHYS_BASE 0x000001F2
#define SMRR_PHYS_MASK 0x000001F3
#define EMRR_PHYS_BASE 0x000001F4
#define EMRR_PHYS_MASK 0x000001F5
#define B_MSR_EMRR_PHYS_MASK_EN BIT11
#define B_MSR_EMRR_PHYS_MASK_LOCK BIT10
#define V_MAXIMUM_VARIABLE_MTRR_NUMBER 10
#define CACHE_VARIABLE_MTRR_BASE 0x00000200
#define V_FIXED_MTRR_NUMBER 11
#define IA32_MTRR_FIX64K_00000 0x00000250
#define IA32_MTRR_FIX16K_80000 0x00000258
#define IA32_MTRR_FIX16K_A0000 0x00000259
#define IA32_MTRR_FIX4K_C0000 0x00000268
#define IA32_MTRR_FIX4K_C8000 0x00000269
#define IA32_MTRR_FIX4K_D0000 0x0000026A
#define IA32_MTRR_FIX4K_D8000 0x0000026B
#define IA32_MTRR_FIX4K_E0000 0x0000026C
#define IA32_MTRR_FIX4K_E8000 0x0000026D
#define IA32_MTRR_FIX4K_F0000 0x0000026E
#define IA32_MTRR_FIX4K_F8000 0x0000026F
#define MSR_IA32_CR_PAT 0x00000277
#define CACHE_IA32_MTRR_DEF_TYPE 0x000002FF
#define B_CACHE_MTRR_VALID BIT11
#define B_CACHE_FIXED_MTRR_VALID BIT10
#define NO_EVICT_MODE 0x000002E0
#define B_NO_EVICT_MODE_SETUP BIT0
#define B_NO_EVICT_MODE_RUN BIT1
#define UNCORE_CR_MEMLOCK_COMMANDS 0x000002E2
#define B_LOCK_MEM_CFG BIT1
#define EFI_PCIEXBAR 0x00000300
#define B_PCIEXBAR_EN BIT0
#define B_PCIEXBAR_SIZE (BIT1 | BIT2 | BIT3)
#define N_PCIEXBAR_SIZE 1
#define IA32_MC0_CTL 0x00000400
#define IA32_MC0_STATUS 0x00000401
#define IA32_MC0_ADDR 0x00000402
#define IA32_MC0_MISC 0x00000403
#define IA32_MC8_CTL (IA32_MC0_CTL + (8 * 4))
#define IA32_MC5_STATUS (IA32_MC0_STATUS + (5 * 4))
#define IA32_MC6_STATUS (IA32_MC0_STATUS + (6 * 4))
#define IA32_MC7_STATUS (IA32_MC0_STATUS + (7 * 4))
#define IA32_MC8_STATUS (IA32_MC0_STATUS + (8 * 4))
#define MSR_IA32_VMX_BASIC 0x00000480
#define MSR_IA32_VMX_MISC 0x00000485
#define APIC_GLOBAL_ENABLE 0x00000800
#define EXT_XAPIC_LOGICAL_APIC_ID 0x00000802
#define EXT_XAPIC_VERSION 0x00000803
#define EXT_XAPIC_SVR 0x0000080F
#define EXT_XAPIC_ICR 0x00000830
#define MSR_EXT_XAPIC_LVT_THERM 0x00000833
#define EXT_XAPIC_LVT_LINT0 0x00000835
#define EXT_XAPIC_LVT_LINT1 0x00000836
#define MSR_IA32_DEBUG_INTERFACE 0x00000C80
#define B_DEBUG_INTERFACE_ENABLE BIT0
#define B_DEBUG_INTERFACE_LOCK BIT30
#define B_DEBUG_INTERFACE_DEBUG_STATUS BIT31
#define NUM_TENTHS_TO_PERCENTAGE 1000
#define FIVR_SSC_LOCK_BIT BIT31
#define MAX_FIVR_SSC_PERCENT 70
//
// MSRs for SMM State Save Register
//
#define MSR_SMM_MCA_CAP 0x17D
#define B_TARGETED_SMI BIT56
#define N_TARGETED_SMI 56
#define B_SMM_CPU_SVRSTR BIT57
#define N_SMM_CPU_SVRSTR 57
#define B_SMM_CODE_ACCESS_CHK BIT58
#define N_SMM_CODE_ACCESS_CHK 58
#define B_LONG_FLOW_INDICATION BIT59
#define N_LONG_FLOW_INDICATION 59
#define MSR_SMM_FEATURE_CONTROL 0x4E0
#define B_SMM_FEATURE_CONTROL_LOCK BIT0
#define B_SMM_CPU_SAVE_EN BIT1
#define B_SMM_CODE_CHK_EN BIT2
#define MSR_SMM_ENABLE 0x4E1
#define MSR_SMM_DELAYED 0x4E2
#define MSR_SMM_BLOCKED 0x4E3
#define MSR_CR0 0xC00
#define MSR_CR3 0xC01
#define MSR_EFLAGS 0xC02
#define MSR_RIP 0xC04
#define MSR_DR6 0xC05
#define MSR_DR7 0xC06
#define MSR_TR_LDTR 0xC07
#define MSR_GS_FS 0xC08
#define MSR_DS_SS 0xC09
#define MSR_CS_ES 0xC0A
#define MSR_IO_MISC_INFO 0xC0B
#define MSR_IO_MEM_ADDR 0xC0C
#define MSR_RDI 0xC0D
#define MSR_RSI 0xC0E
#define MSR_RBP 0xC0F
#define MSR_RSP 0xC10
#define MSR_RBX 0xC11
#define MSR_RDX 0xC12
#define MSR_RCX 0xC13
#define MSR_RAX 0xC14
#define MSR_R8 0xC15
#define MSR_R9 0xC16
#define MSR_R10 0xC17
#define MSR_R11 0xC18
#define MSR_R12 0xC19
#define MSR_R13 0xC1A
#define MSR_R14 0xC1B
#define MSR_R15 0xC1C
#define MSR_EVENT_CTL_HLT_IO 0xC1F
#define MSR_SMBASE 0xC20
#define MSR_SMM_REVID 0xC21
#define MSR_IEDBASE 0xC22
#define MSR_EPTP_ENABLE 0xC23
#define MSR_EPTP 0xC24
#define MSR_LDTR_BASE 0xC2C
#define MSR_IDTR_BASE 0xC2D
#define MSR_GDTR_BASE 0xC2E
#define MSR_CR4 0xC37
#define MSR_IO_RSI 0xC40
#define MSR_IO_RCX 0xC41
#define MSR_IO_RIP 0xC42
#define MSR_IO_RDI 0xC43
#define MSR_BC_PBEC 0x139
#define B_STOP_PBET BIT0
#define MSR_BOOT_GUARD_SACM_INFO 0x13A
#define B_NEM_INIT BIT0
#define V_TPM_PRESENT_MASK 0x06
#define V_TPM_PRESENT_NO_TPM 0
#define V_TPM_PRESENT_DTPM_12 1
#define V_TPM_PRESENT_DTPM_20 2
#define V_TPM_PRESENT_PTT 3
#define B_TPM_SUCCESS BIT3
#define B_MEASURED BIT5
#define B_VERIFIED BIT6
#define TXT_PUBLIC_BASE 0xFED30000
#define R_CPU_BOOT_GUARD_ERRORCODE 0x30
#define R_CPU_BOOT_GUARD_BOOTSTATUS 0xA0
#define R_CPU_BOOT_GUARD_ACM_STATUS 0x328
#define V_CPU_BOOT_GUARD_LOAD_ACM_SUCCESS 0x8000000000000000
#define B_BOOT_GUARD_ACM_ERRORCODE_MASK 0x00007FF0
//
// Processor Definitions
//
#define CPUID_FULL_STEPPING 0x0000000F
#define CPUID_FULL_FAMILY_MODEL 0x0FFF0FF0
#define CPUID_FULL_FAMILY_MODEL_STEPPING 0x0FFF0FFF
#define CPUID_FULL_FAMILY_MODEL_HASWELL 0x000306C0
#define CPUID_FULL_FAMILY_MODEL_HASWELL_ULT 0x00040650
#define CPUID_FULL_FAMILY_MODEL_CRYSTALWELL 0x00040660
#define CPUID_PROCESSOR_TOPOLOGY 0xB
typedef enum {
EnumCpuHsw = CPUID_FULL_FAMILY_MODEL_HASWELL,
EnumCpuHswUlt = CPUID_FULL_FAMILY_MODEL_HASWELL_ULT,
EnumCpuCrw = CPUID_FULL_FAMILY_MODEL_CRYSTALWELL,
EnumCpuMax = CPUID_FULL_FAMILY_MODEL
} CPU_FAMILY;
typedef enum {
///
/// Haswell Family Stepping
///
EnumHswA0 = 1,
EnumHswB0,
EnumHswC0,
EnumHswD0,
///
/// Haswell ULT Family Stepping
///
EnumHswUltB0 = 0,
EnumHswUltC0,
///
/// Crystalwell Family Stepping
///
EnumCrwB0 = 0,
EnumCrwC0,
EnumCrwD0,
///
/// Max Stepping
///
EnumCpuSteppingMax = CPUID_FULL_STEPPING
} CPU_STEPPING;
typedef enum {
EnumCpuUlt = 0,
EnumCpuTrad,
EnumCpuUnknown
} CPU_SKU;
#endif
|