summaryrefslogtreecommitdiff
path: root/UefiCpuPkg/UefiCpuPkg.dec
blob: 571b59b36f0adf3928e250b8c852a91c7d4e098a (plain)
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
## @file  UefiCpuPkg.dec
# This Package provides UEFI compatible CPU modules and libraries.
#
# Copyright (c) 2007 - 2023, Intel Corporation. All rights reserved.<BR>
# Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  DEC_SPECIFICATION              = 0x00010005
  PACKAGE_NAME                   = UefiCpuPkg
  PACKAGE_UNI_FILE               = UefiCpuPkg.uni
  PACKAGE_GUID                   = 2171df9b-0d39-45aa-ac37-2de190010d23
  PACKAGE_VERSION                = 0.90

[Includes]
  Include

[LibraryClasses]
  ##  @libraryclass  Defines some routines that are used to register/manage/program
  ##                 CPU features.
  ##
  RegisterCpuFeaturesLib|Include/Library/RegisterCpuFeaturesLib.h

[LibraryClasses.IA32, LibraryClasses.X64]
  ##  @libraryclass  Provides functions to manage MTRR settings on IA32 and X64 CPUs.
  ##
  MtrrLib|Include/Library/MtrrLib.h

  ##  @libraryclass  Provides functions to manage the Local APIC on IA32 and X64 CPUs.
  ##
  LocalApicLib|Include/Library/LocalApicLib.h

  ##  @libraryclass  Provides platform specific initialization functions in the SEC phase.
  ##
  PlatformSecLib|Include/Library/PlatformSecLib.h

  ##  @libraryclass  Public include file for the SMM CPU Platform Hook Library.
  ##
  SmmCpuPlatformHookLib|Include/Library/SmmCpuPlatformHookLib.h

  ##  @libraryclass  Provides the CPU specific programming for PiSmmCpuDxeSmm module.
  ##
  SmmCpuFeaturesLib|Include/Library/SmmCpuFeaturesLib.h

  ##  @libraryclass  Provides functions to support MP services on CpuMpPei and CpuDxe module.
  ##
  MpInitLib|Include/Library/MpInitLib.h

  ##  @libraryclass  Provides function to support CcExit processing.
  CcExitLib|Include/Library/CcExitLib.h

  ##  @libraryclass  Provides function to get CPU cache information.
  CpuCacheInfoLib|Include/Library/CpuCacheInfoLib.h

  ##  @libraryclass  Provides function for loading microcode.
  MicrocodeLib|Include/Library/MicrocodeLib.h

  ##  @libraryclass  Provides function for manipulating x86 paging structures.
  CpuPageTableLib|Include/Library/CpuPageTableLib.h

  ## @libraryclass   Provides functions for manipulating smram savestate registers.
  MmSaveStateLib|Include/Library/MmSaveStateLib.h

  ## @libraryclass   Provides functions for SMM CPU Sync Operation.
  SmmCpuSyncLib|Include/Library/SmmCpuSyncLib.h

[LibraryClasses.RISCV64]
  ##  @libraryclass  Provides functions to manage MMU features on RISCV64 CPUs.
  ##
  RiscVMmuLib|Include/Library/BaseRiscVMmuLib.h

[Guids]
  gUefiCpuPkgTokenSpaceGuid      = { 0xac05bf33, 0x995a, 0x4ed4, { 0xaa, 0xb8, 0xef, 0x7a, 0xe8, 0xf, 0x5c, 0xb0 }}
  gMsegSmramGuid                 = { 0x5802bce4, 0xeeee, 0x4e33, { 0xa1, 0x30, 0xeb, 0xad, 0x27, 0xf0, 0xe4, 0x39 }}

  ## Include/Guid/CpuFeaturesSetDone.h
  gEdkiiCpuFeaturesSetDoneGuid   = { 0xa82485ce, 0xad6b, 0x4101, { 0x99, 0xd3, 0xe1, 0x35, 0x8c, 0x9e, 0x7e, 0x37 }}

  ## Include/Guid/CpuFeaturesInitDone.h
  gEdkiiCpuFeaturesInitDoneGuid  = { 0xc77c3a41, 0x61ab, 0x4143, { 0x98, 0x3e, 0x33, 0x39, 0x28, 0x6, 0x28, 0xe5 }}

  ## Include/Guid/MicrocodePatchHob.h
  gEdkiiMicrocodePatchHobGuid    = { 0xd178f11d, 0x8716, 0x418e, { 0xa1, 0x31, 0x96, 0x7d, 0x2a, 0xc4, 0x28, 0x43 }}

  ## Include/Guid/SmmBaseHob.h
  gSmmBaseHobGuid      = { 0xc2217ba7, 0x03bb, 0x4f63, {0xa6, 0x47, 0x7c, 0x25, 0xc5, 0xfc, 0x9d, 0x73 }}

  ## Include/Guid/MpInformation2.h
  gMpInformation2HobGuid         = { 0x417a7f64, 0xf4e9, 0x4b32, {0x84, 0x6a, 0x5c, 0xc4, 0xd8, 0x62, 0x18, 0x79 }}

[Protocols]
  ## Include/Protocol/SmmCpuService.h
  gEfiSmmCpuServiceProtocolGuid   = { 0x1d202cab, 0xc8ab, 0x4d5c, { 0x94, 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 }}
  gEdkiiSmmCpuRendezvousProtocolGuid = { 0xaa00d50b, 0x4911, 0x428f, { 0xb9, 0x1a, 0xa5, 0x9d, 0xdb, 0x13, 0xe2, 0x4c }}

  ## Include/Protocol/SmMonitorInit.h
  gEfiSmMonitorInitProtocolGuid  = { 0x228f344d, 0xb3de, 0x43bb, { 0xa4, 0xd7, 0xea, 0x20, 0xb, 0x1b, 0x14, 0x82 }}

[Protocols.RISCV64]
  #
  # Protocols defined for RISC-V systems
  #
  ## Include/Protocol/RiscVBootProtocol.h
  gRiscVEfiBootProtocolGuid  = { 0xccd15fec, 0x6f73, 0x4eec, { 0x83, 0x95, 0x3e, 0x69, 0xe4, 0xb9, 0x40, 0xbf }}

#
# [Error.gUefiCpuPkgTokenSpaceGuid]
#   0x80000001 | Invalid value provided.
#

[Ppis]
  gEdkiiPeiMpServices2PpiGuid =    { 0x5cb9cb3d, 0x31a4, 0x480c, { 0x94, 0x98, 0x29, 0xd2, 0x69, 0xba, 0xcf, 0xba}}

  ## Include/Ppi/ShadowMicrocode.h
  gEdkiiPeiShadowMicrocodePpiGuid = { 0x430f6965, 0x9a69, 0x41c5, { 0x93, 0xed, 0x8b, 0xf0, 0x64, 0x35, 0xc1, 0xc6 }}

  ## Include/Ppi/RepublishSecPpi.h
  gRepublishSecPpiPpiGuid   = { 0x27a71b1e, 0x73ee, 0x43d6, { 0xac, 0xe3, 0x52, 0x1a, 0x2d, 0xc5, 0xd0, 0x92 }}

[PcdsFeatureFlag]
  ## Indicates if SMM Profile will be enabled.
  #  If enabled, instruction executions in and data accesses to memory outside of SMRAM will be logged.
  #  In X64 build, it could not be enabled when PcdCpuSmmRestrictedMemoryAccess is TRUE.
  #  In IA32 build, the page table memory is not marked as read-only when it is enabled.
  #  This PCD is only for validation purpose. It should be set to false in production.<BR><BR>
  #   TRUE  - SMM Profile will be enabled.<BR>
  #   FALSE - SMM Profile will be disabled.<BR>
  # @Prompt Enable SMM Profile.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileEnable|FALSE|BOOLEAN|0x32132109

  ## Indicates if the SMM profile log buffer is a ring buffer.
  #  If disabled, no additional log can be done when the buffer is full.<BR><BR>
  #   TRUE  - the SMM profile log buffer is a ring buffer.<BR>
  #   FALSE - the SMM profile log buffer is a normal buffer.<BR>
  # @Prompt The SMM profile log buffer is a ring buffer.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileRingBuffer|FALSE|BOOLEAN|0x3213210a

  ## Indicates if SMM Startup AP in a blocking fashion.
  #   TRUE  - SMM Startup AP in a blocking fashion.<BR>
  #   FALSE - SMM Startup AP in a non-blocking fashion.<BR>
  # @Prompt SMM Startup AP in a blocking fashion.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmBlockStartupThisAp|FALSE|BOOLEAN|0x32132108

  ## Indicates if SMM Stack Guard will be enabled.
  #  If enabled, stack overflow in SMM can be caught, preventing chaotic consequences.<BR><BR>
  #   TRUE  - SMM Stack Guard will be enabled.<BR>
  #   FALSE - SMM Stack Guard will be disabled.<BR>
  # @Prompt Enable SMM Stack Guard.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackGuard|TRUE|BOOLEAN|0x1000001C

  ## Indicates if BSP election in SMM will be enabled.
  #  If enabled, a BSP will be dynamically elected among all processors in each SMI.
  #  Otherwise, processor 0 is always as BSP in each SMI.<BR><BR>
  #   TRUE  - BSP election in SMM will be enabled.<BR>
  #   FALSE - BSP election in SMM will be disabled.<BR>
  # @Prompt Enable BSP election in SMM.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmEnableBspElection|TRUE|BOOLEAN|0x32132106

  ## Indicates if CPU SMM hot-plug will be enabled.<BR><BR>
  #   TRUE  - SMM CPU hot-plug will be enabled.<BR>
  #   FALSE - SMM CPU hot-plug will be disabled.<BR>
  # @Prompt SMM CPU hot-plug.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugSupport|FALSE|BOOLEAN|0x3213210C

  ## Indicates if SMM Debug will be enabled.
  #  If enabled, hardware breakpoints in SMRAM can be set outside of SMM mode and take effect in SMM.<BR><BR>
  #   TRUE  - SMM Debug will be enabled.<BR>
  #   FALSE - SMM Debug will be disabled.<BR>
  # @Prompt Enable SMM Debug.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug|FALSE|BOOLEAN|0x1000001B

  ## Indicates if lock SMM Feature Control MSR.<BR><BR>
  #   TRUE  - SMM Feature Control MSR will be locked.<BR>
  #   FALSE - SMM Feature Control MSR will not be locked.<BR>
  # @Prompt Lock SMM Feature Control MSR.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock|TRUE|BOOLEAN|0x3213210B

  ## Indicates if SMRR will be enabled.<BR><BR>
  #   TRUE  - SMRR will be enabled.<BR>
  #   FALSE - SMRR will not be enabled.<BR>
  # @Prompt Enable SMRR.
  gUefiCpuPkgTokenSpaceGuid.PcdSmrrEnable|TRUE|BOOLEAN|0x3213210D

  ## Indicates if SmmFeatureControl will be enabled.<BR><BR>
  #   TRUE  - SmmFeatureControl will be enabled.<BR>
  #   FALSE - SmmFeatureControl will not be enabled.<BR>
  # @Prompt Support SmmFeatureControl.
  gUefiCpuPkgTokenSpaceGuid.PcdSmmFeatureControlEnable|TRUE|BOOLEAN|0x32132110

  ## Indicates if SMM perf logging in APs will be enabled.<BR><BR>
  #   TRUE  - SMM perf logging in APs will be enabled.<BR>
  #   FALSE - SMM perf logging in APs will not be enabled.<BR>
  # @Prompt Enable SMM perf logging in APs.
  gUefiCpuPkgTokenSpaceGuid.PcdSmmApPerfLogEnable|TRUE|BOOLEAN|0x32132114

[PcdsFixedAtBuild]
  ## List of exception vectors which need switching stack.
  #  This PCD will only take into effect if PcdCpuStackGuard is enabled.
  #  By default exception #DD(8), #PF(14) are supported.
  # @Prompt Specify exception vectors which need switching stack.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuStackSwitchExceptionList|{0x08, 0x0E}|VOID*|0x30002000

  ## Size of good stack for an exception.
  #  This PCD will only take into effect if PcdCpuStackGuard is enabled.
  # @Prompt Specify size of good stack of exception which need switching stack.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuKnownGoodStackSize|2048|UINT32|0x30002001

  ## Count of pre allocated SMM MP tokens per chunk.
  # @Prompt Specify the count of pre allocated SMM MP tokens per chunk.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmMpTokenCountPerChunk|64|UINT32|0x30002002

  ## Area of memory where the SEV-ES work area block lives.
  # @Prompt Configure the SEV-ES work area base
  gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaBase|0x0|UINT32|0x30002005

  ## Size of teh area of memory where the SEV-ES work area block lives.
  # @Prompt Configure the SEV-ES work area base
  gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaSize|0x0|UINT32|0x30002006

  ## Determining APs' first-time wakeup by SIPI or INIT-SIPI-SIPI.
  # Following a power-up or RESET of an MP system, The APs complete a
  # minimal self-configuration, then wait for a startup signal (a SIPI
  # message) from the BSP processor.
  #
  #   TRUE  - Broadcast SIPI.
  #   FALSE - Broadcast INIT-SIPI-SIPI.
  #
  # @Prompt BSP Broadcast Method for the first-time wakeup of APs
  gUefiCpuPkgTokenSpaceGuid.PcdFirstTimeWakeUpAPsBySipi|TRUE|BOOLEAN|0x30002007

[PcdsFixedAtBuild, PcdsPatchableInModule]
  ## This value is the CPU Local APIC base address, which aligns the address on a 4-KByte boundary.
  # @Prompt Configure base address of CPU Local APIC
  # @Expression  0x80000001 | (gUefiCpuPkgTokenSpaceGuid.PcdCpuLocalApicBaseAddress & 0xfff) == 0
  gUefiCpuPkgTokenSpaceGuid.PcdCpuLocalApicBaseAddress|0xfee00000|UINT32|0x00000001

  ## Specifies delay value in microseconds after sending out an INIT IPI.
  # @Prompt Configure delay value after send an INIT IPI
  gUefiCpuPkgTokenSpaceGuid.PcdCpuInitIpiDelayInMicroSeconds|10000|UINT32|0x30000002

  ## This value specifies the Application Processor (AP) stack size, used for Mp Service, which must
  ## aligns the address on a 4-KByte boundary.
  # @Prompt Configure stack size for Application Processor (AP)
  gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize|0x8000|UINT32|0x00000003

  ## Specifies stack size in the temporary RAM. 0 means half of TemporaryRamSize.
  # @Prompt Stack size in the temporary RAM.
  gUefiCpuPkgTokenSpaceGuid.PcdPeiTemporaryRamStackSize|0|UINT32|0x10001003

  ## Specifies buffer size in bytes to save SMM profile data. The value should be a multiple of 4KB.
  # @Prompt SMM profile data buffer size.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileSize|0x200000|UINT32|0x32132107

  ## Specifies stack size in bytes for each processor in SMM.
  # @Prompt Processor stack size in SMM.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackSize|0x2000|UINT32|0x32132105

  ## Specifies shadow stack size in bytes for each processor in SMM.
  # @Prompt Processor shadow stack size in SMM.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmShadowStackSize|0x2000|UINT32|0x3213210E

  ## Indicates if SMM Code Access Check is enabled.
  #  If enabled, the SMM handler cannot execute the code outside SMM regions.
  #  This PCD is suggested to TRUE in production image.<BR><BR>
  #   TRUE  - SMM Code Access Check will be enabled.<BR>
  #   FALSE - SMM Code Access Check will be disabled.<BR>
  # @Prompt SMM Code Access Check.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmCodeAccessCheckEnable|TRUE|BOOLEAN|0x60000013

  ## Specifies the number of variable MTRRs reserved for OS use. The default number of
  #  MTRRs reserved for OS use is 2.
  # @Prompt Number of reserved variable MTRRs.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuNumberOfReservedVariableMtrrs|0x2|UINT32|0x00000015

  ## Specifies buffer size in bytes for STM exception stack. The value should be a multiple of 4KB.
  # @Prompt STM exception stack size.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStmExceptionStackSize|0x1000|UINT32|0x32132111

  ## Specifies buffer size in bytes of MSEG. The value should be a multiple of 4KB.
  # @Prompt MSEG size.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuMsegSize|0x200000|UINT32|0x32132112

  ## Specifies the supported CPU features bit in array.
  # @Prompt Supported CPU features.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuFeaturesSupport|{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}|VOID*|0x00000016

  ## Specifies if CPU features will be initialized after SMM relocation.
  # @Prompt If CPU features will be initialized after SMM relocation.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuFeaturesInitAfterSmmRelocation|FALSE|BOOLEAN|0x0000001C

  ## Specifies if CPU features will be initialized during S3 resume.
  # @Prompt If CPU features will be initialized during S3 resume.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuFeaturesInitOnS3Resume|FALSE|BOOLEAN|0x0000001D

  ## Specifies CPUID Leaf 0x15 Time Stamp Counter and Nominal Core Crystal Clock Frequency.
  # TSC Frequency = ECX (core crystal clock frequency) * EBX/EAX.
  #   Intel Xeon Processor Scalable Family with CPUID signature 06_55H = 25000000 (25MHz)
  #   6th and 7th generation Intel Core processors and Intel Xeon W Processor Family = 24000000 (24MHz)
  #   Intel Atom processors based on Goldmont Microarchitecture with CPUID signature 06_5CH = 19200000 (19.2MHz)
  # @Prompt This PCD is the nominal frequency of the core crystal clock in Hz as is CPUID Leaf 0x15:ECX
  gUefiCpuPkgTokenSpaceGuid.PcdCpuCoreCrystalClockFrequency|24000000|UINT64|0x32132113

  ## Specifies the periodic interval value in microseconds for the status check
  #  of APs for StartupAllAPs() and StartupThisAP() executed in non-blocking
  #  mode in DXE phase.
  # @Prompt Periodic interval value in microseconds for AP status check in DXE.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuApStatusCheckIntervalInMicroSeconds|100000|UINT32|0x0000001E

[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
  ## Specifies max supported number of Logical Processors.
  # @Prompt Configure max supported number of Logical Processors
  gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber|64|UINT32|0x00000002
  ## Specifies timeout value in microseconds for the BSP to detect all APs for the first time.
  # @Prompt Timeout for the BSP to detect all APs for the first time.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuApInitTimeOutInMicroSeconds|50000|UINT32|0x00000004
  ## Specifies the number of Logical Processors that are available in the
  #  preboot environment after platform reset, including BSP and APs. Possible
  #  values:<BR><BR>
  #  zero (default) - PcdCpuBootLogicalProcessorNumber is ignored, and
  #                   PcdCpuApInitTimeOutInMicroSeconds limits the initial AP
  #                   detection by the BSP.<BR>
  #  nonzero        - PcdCpuApInitTimeOutInMicroSeconds is ignored. The initial
  #                   AP detection finishes only when the detected CPU count
  #                   (BSP plus APs) reaches the value of
  #                   PcdCpuBootLogicalProcessorNumber, regardless of how long
  #                   that takes.<BR>
  # @Prompt Number of Logical Processors available after platform reset.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuBootLogicalProcessorNumber|0|UINT32|0x00000008
  ## Specifies the base address of the first microcode Patch in the microcode Region.
  # @Prompt Microcode Region base address.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchAddress|0x0|UINT64|0x00000005
  ## Specifies the size of the microcode Region.
  # @Prompt Microcode Region size.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize|0x0|UINT64|0x00000006
  ## Specifies the AP wait loop state during POST phase.
  #  The value is defined as below.<BR><BR>
  #  1: Place AP in the Hlt-Loop state.<BR>
  #  2: Place AP in the Mwait-Loop state.<BR>
  #  3: Place AP in the Run-Loop state.<BR>
  # @Prompt The AP wait loop state.
  # @ValidRange  0x80000001 | 1 - 3
  gUefiCpuPkgTokenSpaceGuid.PcdCpuApLoopMode|1|UINT8|0x60008006
  ## Specifies the AP target C-state for Mwait during POST phase.
  #  The default value 0 means C1 state.
  #  The value is defined as below.<BR><BR>
  # @Prompt The specified AP target C-state for Mwait.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuApTargetCstate|0|UINT8|0x00000007

  ## Specifies timeout value in microseconds for the BSP in SMM to wait for all APs to come into SMM.
  # @Prompt AP synchronization timeout value in SMM.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout|1000000|UINT64|0x32132104

  ## Indicates the CPU synchronization method used when processing an SMI.
  #   0x00  - Traditional CPU synchronization method.<BR>
  #   0x01  - Relaxed CPU synchronization method.<BR>
  # @Prompt SMM CPU Synchronization Method.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode|0x00|UINT8|0x60000014

  ## Specifies the On-demand clock modulation duty cycle when ACPI feature is enabled.
  # @Prompt The encoded values for target duty cycle modulation.
  # @ValidRange  0x80000001 | 0 - 15
  gUefiCpuPkgTokenSpaceGuid.PcdCpuClockModulationDutyCycle|0x0|UINT8|0x0000001A

  ## Indicates if the current boot is a power-on reset.<BR><BR>
  #   TRUE  - Current boot is a power-on reset.<BR>
  #   FALSE - Current boot is not a power-on reset.<BR>
  # @Prompt Current boot is a power-on reset.
  gUefiCpuPkgTokenSpaceGuid.PcdIsPowerOnReset|FALSE|BOOLEAN|0x0000001B

  ## This PCD indicates whether CPU processor trace is enabled on BSP only when CPU processor trace is enabled.<BR><BR>
  #  This PCD is ignored if CPU processor trace is disabled.<BR><BR>
  #  TRUE  - CPU processor trace is enabled on BSP only.<BR>
  #  FASLE - CPU processor trace is enabled on all CPU.<BR>
  # @Prompt Enable CPU processor trace only on BSP.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuProcTraceBspOnly|FALSE|BOOLEAN|0x60000019

  ## This PCD indicates if enable performance collecting when CPU processor trace is enabled.<BR><BR>
  #  CYC/TSC timing packets will be generated to collect performance data if this PCD is TRUE.
  #  This PCD is ignored if CPU processor trace is disabled.<BR><BR>
  #  TRUE  - Performance collecting will be enabled in processor trace.<BR>
  #  FASLE - Performance collecting will be disabled in processor trace.<BR>
  # @Prompt Enable performance collecting when processor trace is enabled.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuProcTracePerformanceCollecting|FALSE|BOOLEAN|0x60000020

[PcdsFixedAtBuild.X64, PcdsPatchableInModule.X64, PcdsDynamic.X64, PcdsDynamicEx.X64]
  ## Indicate access to non-SMRAM memory is restricted to reserved, runtime and ACPI NVS type after SmmReadyToLock.
  #  MMIO access is always allowed regardless of the value of this PCD.
  #  Loose of such restriction is only required by RAS components in X64 platforms.
  #  The PCD value is considered as constantly TRUE in IA32 platforms.
  #  When the PCD value is TRUE, page table is initialized to cover all memory spaces
  #  and the memory occupied by page table is protected by page table itself as read-only.
  #  In X64 build, it cannot be enabled at the same time with SMM profile feature (PcdCpuSmmProfileEnable).
  #  In X64 build, it could not be enabled also at the same time with heap guard feature for SMM
  #  (PcdHeapGuardPropertyMask in MdeModulePkg).
  #  In IA32 build, page table memory is not marked as read-only when either SMM profile feature (PcdCpuSmmProfileEnable)
  #  or heap guard feature for SMM (PcdHeapGuardPropertyMask in MdeModulePkg) is enabled.
  #   TRUE  - Access to non-SMRAM memory is restricted to reserved, runtime and ACPI NVS type after SmmReadyToLock.<BR>
  #   FALSE - Access to any type of non-SMRAM memory after SmmReadyToLock is allowed.<BR>
  # @Prompt Access to non-SMRAM memory is restricted to reserved, runtime and ACPI NVS type after SmmReadyToLock.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmRestrictedMemoryAccess|TRUE|BOOLEAN|0x3213210F

[PcdsFixedAtBuild.RISCV64]
  ## Indicate the maximum SATP mode allowed.
  #  0 - Bare mode.
  #  8 - 39bit mode.
  #  9 - 48bit mode.
  #  10 - 57bit mode.
  gUefiCpuPkgTokenSpaceGuid.PcdCpuRiscVMmuMaxSatpMode|10|UINT32|0x60000021

[PcdsDynamic, PcdsDynamicEx]
  ## Contains the pointer to a CPU S3 data buffer of structure ACPI_CPU_DATA.
  # @Prompt The pointer to a CPU S3 data buffer.
  # @ValidList   0x80000001 | 0
  gUefiCpuPkgTokenSpaceGuid.PcdCpuS3DataAddress|0x0|UINT64|0x60000010

  ## Contains the pointer to a CPU Hot Plug Data structure if CPU hot-plug is supported.
  # @Prompt The pointer to CPU Hot Plug Data.
  # @ValidList   0x80000001 | 0
  gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugDataAddress|0x0|UINT64|0x60000011

  ## Indicates processor feature capabilities, each bit corresponding to a specific feature.
  # @Prompt Processor feature capabilities.
  # @ValidList   0x80000001 | 0
  gUefiCpuPkgTokenSpaceGuid.PcdCpuFeaturesCapability|{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}|VOID*|0x00000018

  ## As input, specifies user's desired settings for enabling/disabling processor features.
  ## As output, specifies actual settings for processor features, each bit corresponding to a specific feature.
  # @Prompt As input, specifies user's desired processor feature settings. As output, specifies actual processor feature settings.
  # @ValidList   0x80000001 | 0
  gUefiCpuPkgTokenSpaceGuid.PcdCpuFeaturesSetting|{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}|VOID*|0x00000019

  ## Contains the size of memory required when CPU processor trace is enabled.<BR><BR>
  #  Processor trace is enabled through set BIT44(CPU_FEATURE_PROC_TRACE) in PcdCpuFeaturesSetting.<BR><BR>
  #  This PCD is ignored if CPU processor trace is disabled.<BR><BR>
  #  Default value is 0x00 which means 4KB of memory is allocated if CPU processor trace is enabled.<BR>
  #  0x0  -  4K.<BR>
  #  0x1  -  8K.<BR>
  #  0x2  -  16K.<BR>
  #  0x3  -  32K.<BR>
  #  0x4  -  64K.<BR>
  #  0x5  -  128K.<BR>
  #  0x6  -  256K.<BR>
  #  0x7  -  512K.<BR>
  #  0x8  -  1M.<BR>
  #  0x9  -  2M.<BR>
  #  0xA  -  4M.<BR>
  #  0xB  -  8M.<BR>
  #  0xC  -  16M.<BR>
  #  0xD  -  32M.<BR>
  #  0xE  -  64M.<BR>
  #  0xF  -  128M.<BR>
  # @Prompt The memory size used for processor trace if processor trace is enabled.
  # @ValidRange  0x80000001 | 0 - 0xF
  gUefiCpuPkgTokenSpaceGuid.PcdCpuProcTraceMemSize|0x0|UINT32|0x60000012

  ## Contains the processor trace output scheme when CPU processor trace is enabled.<BR><BR>
  #  Processor trace is enabled through set BIT44(CPU_FEATURE_PROC_TRACE) in PcdCpuFeaturesSetting.<BR><BR>
  #  This PCD is ignored if CPU processor trace is disabled.<BR><BR>
  #  Default value is 0 which means single range output scheme will be used if CPU processor trace is enabled.<BR>
  #  0 - Single Range output scheme.<BR>
  #  1 - ToPA(Table of physical address) scheme.<BR>
  # @Prompt The processor trace output scheme used when processor trace is enabled.
  # @ValidRange  0x80000001 | 0 - 1
  gUefiCpuPkgTokenSpaceGuid.PcdCpuProcTraceOutputScheme|0x0|UINT8|0x60000015

  ## This dynamic PCD indicates whether SEV-ES is enabled
  #   TRUE  - SEV-ES is enabled
  #   FALSE - SEV-ES is not enabled
  # @Prompt SEV-ES Status
  gUefiCpuPkgTokenSpaceGuid.PcdSevEsIsEnabled|FALSE|BOOLEAN|0x60000016

  ## This dynamic PCD contains the hypervisor features value obtained through the GHCB HYPERVISOR
  #  features VMGEXIT defined in the version 2 of GHCB spec.
  # @Prompt GHCB Hypervisor Features
  gUefiCpuPkgTokenSpaceGuid.PcdGhcbHypervisorFeatures|0x0|UINT64|0x60000018

[UserExtensions.TianoCore."ExtraFiles"]
  UefiCpuPkgExtra.uni