Reviewed-by: Sai Chaganty <rangasai.v.chaga...@intel.com>   

-----Original Message-----
From: Luo, Heng <heng....@intel.com> 
Sent: Thursday, February 04, 2021 12:49 AM
To: devel@edk2.groups.io
Cc: Chaganty, Rangasai V <rangasai.v.chaga...@intel.com>; Desimone, Nathaniel L 
<nathaniel.l.desim...@intel.com>
Subject: [Patch V2 04/40] TigerlakeSiliconPkg/Cpu: Add Include headers

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3171

Adds header files common to CPU modules.

Cc: Sai Chaganty <rangasai.v.chaga...@intel.com>
Cc: Nate DeSimone <nathaniel.l.desim...@intel.com>
Signed-off-by: Heng Luo <heng....@intel.com>
---
 Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuConfig.h          
      |  83 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuConfigLibPreMemConfig.h
 | 148 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPidTestConfig.h   
      |  52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 
Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtBasicConfig.h
  | 226 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtCustomConfig.h
 |  76 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtPsysConfig.h
   |  36 ++++++++++++++++++++++++++++++++++++
 
Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtTestConfig.h
   | 150 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuSecurityPreMemConfig.h
  |  63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuTestConfig.h      
      |  51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuAccess.h                      
      |  12 ++++++++++++
 Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuDataStruct.h                  
      |  21 +++++++++++++++++++++
 Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuPolicyCommon.h                
      |  23 +++++++++++++++++++++++
 Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/Register/CommonMsr.h             
      |  18 ++++++++++++++++++
 13 files changed, 959 insertions(+)

diff --git 
a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuConfig.h 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuConfig.h
new file mode 100644
index 0000000000..d837500a38
--- /dev/null
+++ b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuConfig.h
@@ -0,0 +1,83 @@
+/** @file

+  CPU Config Block.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPU_CONFIG_H_

+#define _CPU_CONFIG_H_

+

+#define CPU_CONFIG_REVISION 3

+

+extern EFI_GUID gCpuConfigGuid;

+

+#pragma pack (push,1)

+

+/**

+  CPU Configuration Structure.

+

+  <b>Revision 1</b>:

+  - Initial version.

+  <b>Revision 2</b>:

+  - Add SmbiosType4MaxSpeedOverride.

+  <b>Revision 3</b>:

+  - Add AvxDisable & Avx3Disable.

+**/

+typedef struct {

+  CONFIG_BLOCK_HEADER   Header;                   ///< Config Block Header

+  UINT32                MicrocodePatchRegionSize;

+  EFI_PHYSICAL_ADDRESS  MicrocodePatchAddress;    ///< Pointer to microcode 
patch that is suitable for this processor.

+  /**

+    Enable or Disable Advanced Encryption Standard (AES) feature.

+    For some countries, this should be disabled for legal reasons.

+    -    0: Disable

+    - <b>1: Enable</b>

+  **/

+  UINT32 AesEnable           : 1;

+  /**

+    Enable or Disable Trusted Execution Technology (TXT) feature.

+    -    0: Disable

+    - <b>1: Enable</b>

+  **/

+  UINT32 TxtEnable           : 1;

+  UINT32 SkipMpInit          : 1;                 ///< For Fsp only, Silicon 
Initialization will skip MP Initialization (including BSP) if enabled. For 
non-FSP, this should always be 0.

+  /**

+    Enable or Disable or Auto for PPIN Support to view Protected Processor 
Inventory Number.

+    - <b>0: Disable</b>

+    -    1: Enable

+    -    2: Auto : Feature is based on End Of Manufacturing (EOM) flag. If EOM 
is set, it is disabled.

+  **/

+  UINT32 PpinSupport         : 2;

+  /**

+    Enable or Disable #AC machine check on split lock.

+    - <b>0: Disable</b>

+    -    1: Enable

+  **/

+  UINT32 AcSplitLock         : 1;

+  /**

+  Enable or Disable Avx.

+  -      1: Disable

+  -  <b> 0: Enable</b>

+  **/

+  UINT32 AvxDisable          : 1;

+  /**

+  Enable or Disable Avx3.

+  -      1: Disable

+  -  <b> 0: Enable</b>

+  **/

+  UINT32 Avx3Disable         : 1;

+  UINT32 RsvdBits            : 24;                ///< Reserved for future use

+  /**

+    Provide the option for platform to override the MaxSpeed field of Smbios 
Type 4.

+    Value 4000 means 4000MHz.

+    If this value is not zero, it dominates the field.

+    If this value is zero, CPU RC will update the field according to the max 
radio.

+    <b>default is 0.</b>

+  **/

+  UINT16 SmbiosType4MaxSpeedOverride;

+  UINT8  Reserved0[2];                            ///< Reserved for future use

+} CPU_CONFIG;

+

+#pragma pack (pop)

+

+#endif // _CPU_CONFIG_H_

diff --git 
a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuConfigLibPreMemConfig.h
 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuConfigLibPreMemConfig.h
new file mode 100644
index 0000000000..bf3f436ddd
--- /dev/null
+++ 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuConfigLibPreMemConfig.h
@@ -0,0 +1,148 @@
+/** @file

+  CPU Security PreMemory Config Block.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPU_CONFIG_LIB_PREMEM_CONFIG_H_

+#define _CPU_CONFIG_LIB_PREMEM_CONFIG_H_

+

+#define CPU_CONFIG_LIB_PREMEM_CONFIG_REVISION 6

+

+extern EFI_GUID gCpuConfigLibPreMemConfigGuid;

+

+#define BOOT_FREQUENCY_MAX_BATTERY_PERF   0

+#define BOOT_FREQUENCY_MAX_NON_TURBO_PERF 1

+#define BOOT_FREQUENCY_TURBO_PERF         2

+

+#pragma pack (push,1)

+

+/**

+  CPU Config Library PreMemory Configuration Structure.

+

+  <b>Revision 1</b>:

+  - Initial version.

+  <b>Revision 2</b>:

+  - Expand the supported number of processor cores (ActiveCoreCount1).

+  <b>Revision  3</b>:

+  - Added PECI Sx and C10 Reset.

+  <b>Revision  4</b>:

+  - Added ActiveSmallCoreCount.

+  <b>Revision  5</b>:

+  - Added CrashLogGprs

+  <b>Revision  6</b>:

+  - Added ConfigTdpLevel

+**/

+typedef struct {

+  CONFIG_BLOCK_HEADER Header;            ///< Config Block Header

+  UINT32 HyperThreading             : 1; ///< Enable or Disable Hyper 
Threading; 0: Disable; <b>1: Enable</b>.

+  /**

+  Sets the boot frequency starting from reset vector.

+   - 0: Maximum battery performance.

+   - 1: Maximum non-turbo performance

+   -<b>2: Turbo performance</b>.

+  @note If Turbo is selected BIOS will start in max non-turbo mode and switch 
to Turbo mode.

+  **/

+  UINT32 BootFrequency              : 2;

+  /**

+    Number of processor cores to enable.

+    - <b> 0: All cores</b>

+    -     1: 1 core

+    -     2: 2 cores

+    -     3: 3 cores

+  **/

+  UINT32 ActiveCoreCount            : 3; ///< @deprecated due to core active 
number limitaion.

+  UINT32 JtagC10PowerGateDisable    : 1; ///< False: JTAG is power gated in 
C10 state. True: keeps the JTAG power up during C10 and deeper power states for 
debug purpose. <b>0: False<\b>; 1: True.

+  UINT32 BistOnReset                : 1; ///< <b>(Test)</b> Enable or Disable 
BIST on Reset; <b>0: Disable</b>; 1: Enable.

+  /**

+    Enable or Disable Virtual Machine Extensions (VMX) feature.

+    -    0: Disable

+    - <b>1: Enable</b>

+  **/

+  UINT32 VmxEnable                  : 1;

+  /**

+  Processor Early Power On Configuration FCLK setting.

+   - <b>0: 800 MHz (ULT/ULX)</b>.

+   - <b>1: 1 GHz (DT/Halo)</b>. Not supported on ULT/ULX.

+   - 2: 400 MHz.

+   - 3: Reserved.

+  **/

+  UINT32 FClkFrequency              : 2;

+  /**

+  Enable or Disable CrashLog feature

+    -    0: Disable

+    - <b>1: Enable</b>

+  **/

+  UINT32 CrashLogEnable              : 1;

+

+  /**

+  Enable or Disable Total Memory Encryption (TME) feature.

+    - <b>0: Disable</b>

+    -    1: Enable

+  **/

+  UINT32 TmeEnable                  : 1;

+

+  UINT32 DebugInterfaceEnable       : 2; ///< Enable or Disable processor 
debug features; 0: Disable; 1: Enable; <b>2: No Change</b>.

+  UINT32 DebugInterfaceLockEnable   : 1; ///< Lock or Unlock debug interface 
features; 0: Disable; <b>1: Enable</b>.

+

+  /**

+    Number of big cores in processor to enable. And support up to 16 cores.

+    - <b> 0: All cores</b>

+    -     1: 1 core

+    -     2: 2 cores

+    -     3: 3 cores

+  **/

+  UINT32 ActiveCoreCount1           : 4;

+

+  /**

+  Enables a mailbox command to resolve rare PECI related Sx issues.

+  @note This should only be used on systems that observe PECI Sx issues.

+  - <b>0: Disable</b>

+  -    1: Enable

+  **/

+  UINT32 PeciSxReset                : 1;

+

+  /**

+  Enables the mailbox command to resolve PECI reset issues during Pkg-C10 exit.

+  If Enabled, BIOS will send the CPU message to disable peci reset on C10 exit.

+  The default value is <b>1: Enable</b> for CML, and <b>0: Disable</b> for all 
other CPU's

+  - 0: Disable

+  - 1: Enable

+  **/

+  UINT32 PeciC10Reset               : 1;

+

+  /**

+    Number of small cores in processor to enable. And support the enabling of 
up to 63 cores.

+    - <b> 0: All cores</b>

+    -     1: 1 core

+    -     2: 2 cores

+    -     3: 3 cores

+  **/

+  UINT32 ActiveSmallCoreCount       : 6;

+

+  /**

+  Enable or Disable CrashLog GPRs dump

+    - <b>0: Disable</b>

+    -    1: Gprs Enabled, Smm Gprs Enabled

+         2: Gprs Enabled, Smm Gprs Disabled

+  **/

+  UINT32 CrashLogGprs               : 2;

+

+  UINT32 RsvdBits                   : 2;

+

+  /**

+    CpuRatio - Max non-turbo ratio (Flexible Ratio Boot) is set to CpuRatio. 
<b>0: Disabled</b> If disabled, doesn't override max-non turbo ratio.

+  **/

+  UINT8  CpuRatio;

+  /**

+    Configuration for boot TDP selection; <b>0: TDP Nominal</b>; 1: TDP Down; 
2: TDP Up.

+  **/

+  UINT8  ConfigTdpLevel;

+  UINT8  Reserved[2];                    ///< Reserved for alignment

+  UINT32 ElixirSpringsPatchAddr;         ///< Address of Elixir Springs 
Patch(es)

+  UINT32 ElixirSpringsPatchSize;         ///< Elixir Springs Patch(es) Size.

+} CPU_CONFIG_LIB_PREMEM_CONFIG;

+

+#pragma pack (pop)

+

+#endif // _CPU_CONFIG_LIB_PREMEM_CONFIG_H_

diff --git 
a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPidTestConfig.h 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPidTestConfig.h
new file mode 100644
index 0000000000..4fcb92cb27
--- /dev/null
+++ 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPidTestConfig.h
@@ -0,0 +1,52 @@
+/** @file

+  CPU PID Config Block.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPU_PID_TEST_CONFIG_H_

+#define _CPU_PID_TEST_CONFIG_H_

+

+#define CPU_PID_TEST_CONFIG_REVISION 1

+

+extern EFI_GUID gCpuPidTestConfigGuid;

+

+#pragma pack (push,1)

+

+/**

+  PID Tuning Configuration Structure.

+  Domain is mapped to Kp = 0, Ki = 1, Kd = 2.

+

+  <b>Revision 1</b>:

+  - Initial version.

+**/

+typedef struct {

+  CONFIG_BLOCK_HEADER   Header;                   ///< Config Block Header

+  UINT16  Ratl[3];                                ///< RATL setting, in 1/256 
units. Range is 0 - 65280

+  UINT16  VrTdcVr0[3];                            ///< VR Thermal Design 
Current for VR0. In 1/256 units. Range is 0 - 65280

+  UINT16  VrTdcVr1[3];                            ///< VR Thermal Design 
Current for VR1. In 1/256 units. Range is 0 - 65280

+  UINT16  VrTdcVr2[3];                            ///< VR Thermal Design 
Current for VR2. In 1/256 units. Range is 0 - 65280

+  UINT16  VrTdcVr3[3];                            ///< VR Thermal Design 
Current for VR3. In 1/256 units. Range is 0 - 65280

+  UINT16  PbmPsysPl1Msr[3];                       ///< Power Budget Management 
Psys PL1 MSR. In 1/256 units. Range is 0 - 65280

+  UINT16  PbmPsysPl1MmioPcs[3];                   ///< Power Budget Management 
Psys PL1 MMIO/PCS. In 1/256 units. Range is 0 - 65280

+  UINT16  PbmPsysPl2Msr[3];                       ///< Power Budget Management 
Psys PL2 MSR. In 1/256 units. Range is 0 - 65280

+  UINT16  PbmPsysPl2MmioPcs[3];                   ///< Power Budget Management 
Psys PL2 MMIO/PCS. In 1/256 units. Range is 0 - 65280

+  UINT16  PbmPkgPl1Msr[3];                        ///< Power Budget Management 
Package PL1 MSR. In 1/256 units. Range is 0 - 65280

+  UINT16  PbmPkgPl1MmioPcs[3];                    ///< Power Budget Management 
Package PL1 MMIO/PCS. In 1/256 units. Range is 0 - 65280

+  UINT16  PbmPkgPl2Msr[3];                        ///< Power Budget Management 
Package PL2 MSR. In 1/256 units. Range is 0 - 65280

+  UINT16  PbmPkgPl2MmioPcs[3];                    ///< Power Budget Management 
Package PL2 MMIO/PCS. In 1/256 units. Range is 0 - 65280

+  UINT16  DdrPl1Msr[3];                           ///< DDR PL1 MSR. In 1/256 
units. Range is 0 - 65280

+  UINT16  DdrPl1MmioPcs[3];                       ///< DDR PL1 MMIO/PCS. In 
1/256 units. Range is 0 - 65280

+  UINT16  DdrPl2Msr[3];                           ///< DDR PL2 MSR. In 1/256 
units. Range is 0 - 65280

+  UINT16  DdrPl2MmioPcs[3];                       ///< DDR PL2 MMIO/PCS. In 
1/256 units. Range is 0 - 65280

+  /**

+  Enable or Disable PID Tuning programming flow.

+  If disabled, all other policies in this config block are ignored.

+  **/

+  UINT8   PidTuning;

+  UINT8   Rsvd;                                   ///< Reserved for DWORD 
alignment.

+} CPU_PID_TEST_CONFIG;

+

+#pragma pack (pop)

+

+#endif // _CPU_PID_TEST_CONFIG_H_

diff --git 
a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtBasicConfig.h
 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtBasicConfig.h
new file mode 100644
index 0000000000..0255d49bdf
--- /dev/null
+++ 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtBasicConfig.h
@@ -0,0 +1,226 @@
+/** @file

+  CPU Power Management Basic Config Block.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPU_POWER_MGMT_BASIC_CONFIG_H_

+#define _CPU_POWER_MGMT_BASIC_CONFIG_H_

+

+#define CPU_POWER_MGMT_BASIC_CONFIG_REVISION 5

+

+extern EFI_GUID gCpuPowerMgmtBasicConfigGuid;

+

+#pragma pack (push,1)

+

+/**

+  CPU Power Management Basic Configuration Structure.

+

+  <b>Revision 1</b>:

+  - Initial version.

+  <b>Revision 2</b>:

+  - Changed EnableItbm default to be disable

+  - Deprecated EnableItbmDriver due to Platform doesn't have ITBMT OS driver

+  <b>Revision 3</b>:

+  - Add ApplyConfigTdp for TDP initialization settings based on non-cTDP or 
cTDP

+  <b>Revision 4</b>:

+  - Add Hwp Lock support

+  <b>Revision 5</b>:

+  - Add VccInDemotionOverride and VccInDemotionMs

+**/

+typedef struct {

+  CONFIG_BLOCK_HEADER   Header;                   ///< Config Block Header

+  /**

+  Sets the boot frequency starting from reset vector.

+   - 0: Maximum battery performance.

+   - 1: Maximum non-turbo performance.

+   - <b>2: Turbo performance.</b>

+  @note If Turbo is selected BIOS will start in max non-turbo mode and switch 
to Turbo mode.

+  **/

+  UINT32 BootFrequency                  : 2;       //@deprecated

+  UINT32 SkipSetBootPState              : 1;      ///< Choose whether to skip 
SetBootPState function for all APs; <b>0: Do not skip</b>; 1: Skip.

+  /**

+  Enable or Disable Intel Speed Shift Technology.

+  Enabling allows for processor control of P-state transitions.

+  0: Disable; <b>1: Enable;</b> Bit 1 is ignored.

+  @note Currently this feature is recommended to be enabled only on win10

+  **/

+  UINT32 Hwp                            : 2;

+  /**

+  Hardware Duty Cycle Control configuration. 0: Disabled; <b>1: Enabled</b> 
2-3:Reserved

+  HDC enables the processor to autonomously force components to enter into an 
idle state to lower effective frequency.

+  This allows for increased package level C6 residency.

+  @note Currently this feature is recommended to be enabled only on win10

+  **/

+  UINT32 HdcControl                     : 2;

+  UINT32 PowerLimit2                    : 1;      ///< Enable or Disable short 
duration Power Limit (PL2). 0: Disable; <b>1: Enable</b>

+  UINT32 TurboPowerLimitLock            : 1;      ///< MSR 0x610[63] and 
0x618[63]: Locks all Turbo power limit settings to read-only; <b>0: 
Disable</b>; 1: Enable (Lock).

+  UINT32 PowerLimit3DutyCycle           : 8;      ///< Package PL3 Duty Cycle. 
Specifies the PL3 duty cycle percentage, Range 0-100. <b>Default: 0</b>.

+  UINT32 PowerLimit3Lock                : 1;      ///< Package PL3 MSR 615h 
lock; <b>0: Disable</b>; 1: Enable (Lock).

+  UINT32 PowerLimit4Lock                : 1;      ///< Package PL4 MSR 601h 
lock; <b>0: Disable</b>; 1: Enable (Lock).

+  /**

+  Tcc Offset Clamp for Runtime Average Temperature Limit (RATL) allows CPU to 
throttle below P1.

+  For Y SKU, the recommended default for this policy is <b>1: Enabled</b>, 
which indicates throttling below P1 is allowed.

+  For all other SKUs the recommended default are  <b>0: Disabled</b>.

+  **/

+  UINT32 TccOffsetClamp                 : 1;

+  UINT32 TccOffsetLock                  : 1;      ///< Tcc Offset Lock for 
Runtime Average Temperature Limit (RATL) to lock temperature target MSR 1A2h; 
0: Disabled; <b>1: Enabled (Lock)</b>.

+  UINT32 TurboMode                      : 1;      ///< Enable or Disable Turbo 
Mode. Disable; <b>1: Enable</b>

+  UINT32 HwpInterruptControl            : 1;      ///< Set HW P-State 
Interrupts Enabled  for MISC_PWR_MGMT MSR 0x1AA[7]; <b>0: Disable</b>; 1: 
Enable.

+  UINT32 ApplyConfigTdp                 : 1;      ///< Switch TDP applied 
setting based on non-cTDP or TDP; 0: non-cTDP; <b>1: cTDP</b>.

+  UINT32 HwpLock                        : 1;      ///< HWP Lock in MISC PWR 
MGMT MSR 1AAh; <b>0: Disable</b>; 1: Enable (Lock).

+  UINT32 VccInDemotionOverride          : 1;      ///< Enable VccIn Demotion 
Override configuration. <b>0: Disable</b>; 1: Enable.

+  UINT32 RsvdBits                       : 6;      ///< Reserved for future use.

+

+  /**

+   1-Core Ratio Limit: LFM to Fused 1-Core Ratio Limit. For overclocking 
parts: LFM to Fused 1-Core Ratio Limit + OC Bins.

+   Note: OC Bins = 7 means fully unlocked, so range is LFM to 83.

+     - This 1-Core Ratio Limit Must be greater than or equal to 2-Core Ratio 
Limit, 3-Core Ratio Limit, 4-Core Ratio Limit.

+  **/

+  UINT8  OneCoreRatioLimit;

+  /**

+   2-Core Ratio Limit: LFM to Fused 2-Core Ratio Limit, For overclocking part: 
LFM to Fused 2-Core Ratio Limit + OC Bins.

+   Note: OC Bins = 7 means fully unlocked, so range is LFM to 83.

+     - This 2-Core Ratio Limit Must be Less than or equal to 1-Core Ratio 
Limit.

+  **/

+  UINT8  TwoCoreRatioLimit;

+  /**

+   3-Core Ratio Limit: LFM to Fused 3-Core Ratio Limit, For overclocking part: 
LFM to Fused 3-Core Ratio Limit + OC Bins.

+   Note: OC Bins = 7 means fully unlocked, so range is LFM to 83.

+     - This 3-Core Ratio Limit Must be Less than or equal to 1-Core Ratio 
Limit.

+  **/

+  UINT8  ThreeCoreRatioLimit;

+  /**

+   4-Core Ratio Limit: LFM to Fused 4-Core Ratio Limit, For overclocking part: 
LFM to Fused 4-Core Ratio Limit + OC Bins.

+   Note: OC Bins = 7 means fully unlocked, so range is LFM to 83.

+     - This 4-Core Ratio Limit Must be Less than or equal to 1-Core Ratio 
Limit.

+  **/

+  UINT8  FourCoreRatioLimit;

+  /**

+   5-Core Ratio Limit: LFM to Fused 5-Core Ratio Limit, For overclocking part: 
LFM to Fused 5-Core Ratio Limit + OC Bins.

+   Note: OC Bins = 7 means fully unlocked, so range is LFM to 83.

+     - This 5-Core Ratio Limit Must be Less than or equal to 1-Core Ratio 
Limit.

+  **/

+  UINT8  FiveCoreRatioLimit;

+  /**

+   6-Core Ratio Limit: LFM to Fused 6-Core Ratio Limit, For overclocking part: 
LFM to Fused 6-Core Ratio Limit + OC Bins.

+   Note: OC Bins = 7 means fully unlocked, so range is LFM to 83.

+     - This 6-Core Ratio Limit Must be Less than or equal to 1-Core Ratio 
Limit.

+  **/

+  UINT8  SixCoreRatioLimit;

+  /**

+   7-Core Ratio Limit: LFM to Fused 7-Core Ratio Limit, For overclocking part: 
LFM to Fused 7-Core Ratio Limit + OC Bins.

+   Note: OC Bins = 7 means fully unlocked, so range is LFM to 83.

+     - This 7-Core Ratio Limit Must be Less than or equal to 1-Core Ratio 
Limit.

+  **/

+  UINT8  SevenCoreRatioLimit;

+  /**

+   8-Core Ratio Limit: LFM to Fused 8-Core Ratio Limit, For overclocking part: 
LFM to Fused 8-Core Ratio Limit + OC Bins.

+   Note: OC Bins = 7 means fully unlocked, so range is LFM to 83.

+     - This 8-Core Ratio Limit Must be Less than or equal to 1-Core Ratio 
Limit.

+  **/

+  UINT8  EightCoreRatioLimit;

+  /**

+  TCC Activation Offset. Offset from factory set TCC activation temperature at 
which the Thermal Control Circuit must be activated.

+  TCC will be activated at (TCC Activation Temperature - TCC Activation 
Offset), in degrees Celcius.

+  For Y SKU, the recommended default for this policy is  <b>10</b>

+  For all other SKUs the recommended default are <b>0</b>, causing TCC to 
activate at TCC Activation temperature.

+  @note The policy is recommended for validation purpose only.

+  **/

+  UINT8  TccActivationOffset;

+  /**

+  Intel Turbo Boost Max Technology 3.0

+  Enabling it on processors with OS support will allow OS to exploit the 
diversity in max turbo frequency of the cores.

+  <b>0: Disable</b>; 1: Enable;

+  **/

+  UINT8  EnableItbm                     : 1;

+  /**

+  @deprecated: Platform doesn't have Intel Turbo Boost Max Technology 3.0 
Driver

+  Enabling it will load the driver upon ACPI device with HID = INT3510.

+  <b> 0: Disable;</b> 1: Enable;

+  **/

+  UINT8  EnableItbmDriver               : 1;

+  /**

+  Per Core P State OS control mode

+  Disabling will set PCU_MISC_CONFIG (Command 0x06) Bit 31 = 1. When set, the 
highest core request is used for all other core requests.

+  0: Disable;<b> 1: Enable;</b>

+  **/

+  UINT8  EnablePerCorePState            : 1;

+  /**

+  HwP Autonomous Per Core P State

+  Disabling will set Bit 30 = 1, command 0x11. When set, autonomous will 
request the same value

+  for all cores all the time.

+  0: Disable;<b> 1: Enable;</b>

+  **/

+  UINT8  EnableHwpAutoPerCorePstate     : 1;

+  /**

+  HwP Autonomous EPP grouping.

+  Disabling will set Bit 29 = 1, command 0x11. When set, autonomous will not 
necesarrily request the same value

+  for all cores with same EPP.

+  Enabling will clean Bit 29 = 0, command 0x11. Autonomous will request same 
values for all cores with same EPP.

+  0: Disable;<b> 1: Enable;</b>

+  **/

+  UINT8  EnableHwpAutoEppGrouping       : 1;

+  /**

+  EPB override over PECI

+  Enable by sending pcode command 0x2b , subcommand 0x3 to 1.

+  This will allow OOB EPB PECI override control.

+  <b>0: Disable;</b> 1: Enable;

+  **/

+  UINT8  EnableEpbPeciOverride          : 1;

+  /**

+  Support for Fast MSR for IA32_HWP_REQUEST.

+  On systems with HwP enabled, if this feature is available as indicated by 
MSR 0x65F[0] = 1,

+  set MSR 0x657[0] = 1.

+  0: Disable; <b> 1: Enable;</b>

+  **/

+  UINT8  EnableFastMsrHwpReq            : 1;

+  UINT8  ReservedBits1                  : 1;      ///< Reserved for future use.

+  UINT8  MinRingRatioLimit;                       ///< Minimum Ring Ratio 
Limit. Range from 0 to Max Turbo Ratio. 0 = AUTO/HW Default

+  UINT8  MaxRingRatioLimit;                       ///< Maximum Ring Ratio 
Limit. Range from 0 to Max Turbo Ratio. 0 = AUTO/HW Default

+  /**

+  Package Long duration turbo mode power limit (PL1).

+  Default is the TDP power limit of processor. Units are based on 
POWER_MGMT_CONFIG.CustomPowerUnit.

+  **/

+  UINT16 PowerLimit1;

+  /**

+  Package Short duration turbo mode power limit (PL2). Allows for short 
excursions above TDP power limit.

+  Default = 1.25 * TDP Power Limit. Units are based on 
POWER_MGMT_CONFIG.CustomPowerUnit.

+  **/

+  UINT16 PowerLimit2Power;

+  /**

+  Package PL3 power limit. PL3 is the CPU Peak Power Occurences Limit.

+  <b>Default: 0</b>. Range 0-65535. Units are based on 
POWER_MGMT_CONFIG.CustomPowerUnit.

+  **/

+  UINT16 PowerLimit3;

+  /**

+  Package PL4 power limit. PL4 is a Preemptive CPU Package Peak Power Limit, 
it will never be exceeded.

+  Power is premptively lowered before limit is reached. <b>Default: 0</b>. 
Range 0-65535.

+  Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.

+  **/

+  UINT16 PowerLimit4;

+  /**

+  Package Long duration turbo mode power limit (PL1) time window in seconds.

+  Used in calculating the average power over time.

+  Mobile: <b> 28s</b>

+  Desktop: <b> 8s</b>

+  Range: 0 - 128s

+  **/

+  UINT32 PowerLimit1Time;

+  UINT32 PowerLimit3Time;                         ///< Package PL3 time 
window. Range from 3ms to 64ms.

+  /**

+  Tcc Offset Time Window can range from 5ms to 448000ms for Runtime Average 
Temperature Limit (RATL).

+  For Y SKU, the recommended default for this policy is <b>5000: 5 
seconds</b>, For all other SKUs the recommended default are <b>0: Disabled</b>

+  **/

+  UINT32 TccOffsetTimeWindowForRatl;

+  /**

+  Customize the VccIn Demotion in ms accordingly. Values used by OEM expected 
to be in lower end of 1-30 ms range.

+  Value 1 means 1ms, value 2 means 2ms, and so on. Value 0 will disable VccIn 
Demotion knob.

+  <b> It's 30ms by silicon default</b>.

+  **/

+  UINT32 VccInDemotionMs;

+} CPU_POWER_MGMT_BASIC_CONFIG;

+

+#pragma pack (pop)

+

+#endif // _CPU_POWER_MGMT_BASIC_CONFIG_H_

diff --git 
a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtCustomConfig.h
 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtCustomConfig.h
new file mode 100644
index 0000000000..e1a5bcc684
--- /dev/null
+++ 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtCustomConfig.h
@@ -0,0 +1,76 @@
+/** @file

+  CPU Power Managment Custom Config Block.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPU_POWER_MGMT_CUSTOM_CONFIG_H_

+#define _CPU_POWER_MGMT_CUSTOM_CONFIG_H_

+

+#define CPU_POWER_MGMT_CUSTOM_CONFIG_REVISION 1

+

+extern EFI_GUID gCpuPowerMgmtCustomConfigGuid;

+

+#pragma pack (push,1)

+

+///

+/// Defines the maximum number of custom ratio states supported.

+///

+#define MAX_CUSTOM_RATIO_TABLE_ENTRIES    40

+#define MAX_16_CUSTOM_RATIO_TABLE_ENTRIES 16

+

+///

+/// Defines the maximum number of custom ConfigTdp entries supported.

+/// @warning: Changing this define would cause DWORD alignment issues in 
policy structures.

+///

+#define MAX_CUSTOM_CTDP_ENTRIES 3

+

+///

+/// This structure is used to describe the custom processor ratio table 
desired by the platform.

+///

+typedef struct {

+  UINT8  MaxRatio;                                           ///< The maximum 
ratio of the custom ratio table.

+  UINT8  NumberOfEntries;                                    ///< The number 
of custom ratio state entries, ranges from 2 to 40 for a valid custom ratio 
table.

+  UINT8  Rsvd0[2];                                           ///< Reserved for 
DWORD alignment.

+  UINT32 Cpuid;                                              ///< The CPU ID 
for which this custom ratio table applies.

+  UINT8  StateRatio[MAX_CUSTOM_RATIO_TABLE_ENTRIES];         ///< The 
processor ratios in the custom ratio table.

+  ///

+  /// If there are more than 16 total entries in the StateRatio table, then 
use these 16 entries to fill max 16 table.

+  /// @note If NumberOfEntries is 16 or less, or the first entry of this table 
is 0, then this table is ignored,

+  /// and up to the top 16 values from the StateRatio table is used instead.

+  ///

+  UINT8  StateRatioMax16[MAX_16_CUSTOM_RATIO_TABLE_ENTRIES];

+#if ((MAX_CUSTOM_RATIO_TABLE_ENTRIES + MAX_16_CUSTOM_RATIO_TABLE_ENTRIES) % 4)

+  UINT8  Rsvd1[4 - ((MAX_CUSTOM_RATIO_TABLE_ENTRIES + 
MAX_16_CUSTOM_RATIO_TABLE_ENTRIES) % 4)];  ///< If needed, add padding for 
dword alignment.

+#endif

+} PPM_CUSTOM_RATIO_TABLE;

+

+///

+/// PPM Custom ConfigTdp Settings

+///

+typedef struct _PPM_CUSTOM_CTDP_TABLE {

+  UINT32 CustomPowerLimit1Time      :  8;            ///< Short term Power 
Limit time window value for custom cTDP level.

+  UINT32 CustomTurboActivationRatio :  8;            ///< Turbo Activation 
Ratio for custom cTDP level.

+  UINT32 RsvdBits                   : 16;            ///< Bits reserved for 
DWORD alignment.

+  UINT16 CustomPowerLimit1;                          ///< Short term Power 
Limit value for custom cTDP level. Units are based on 
POWER_MGMT_CONFIG.CustomPowerUnit.

+  UINT16 CustomPowerLimit2;                          ///< Long term Power 
Limit value for custom cTDP level. Units are based on 
POWER_MGMT_CONFIG.CustomPowerUnit.

+} PPM_CUSTOM_CTDP_TABLE;

+

+/**

+  CPU Power Management Custom Configuration Structure.

+

+  <b>Revision 1</b>:

+  - Initial version.

+**/

+typedef struct {

+  CONFIG_BLOCK_HEADER    Header;                                               
 ///< Config Block Header

+  PPM_CUSTOM_RATIO_TABLE CustomRatioTable;                                     
 ///< Custom Processor Ratio Table Instance

+  PPM_CUSTOM_CTDP_TABLE  CustomConfigTdpTable[MAX_CUSTOM_CTDP_ENTRIES];        
 ///< Custom ConfigTdp Settings Instance

+  UINT32                 ConfigTdpLock  : 1;                                   
 ///< Lock the ConfigTdp mode settings from runtime changes; <b>0: Disable</b>; 
1: Enable.

+  UINT32                 ConfigTdpBios  : 1;                                   
 ///< Configure whether to load Configurable TDP SSDT; <b>0: Disable</b>; 1: 
Enable.

+  UINT32                 RsvdBits       : 30;                                  
 ///< Reserved for future use

+} CPU_POWER_MGMT_CUSTOM_CONFIG;

+

+#pragma pack (pop)

+

+#endif // _CPU_POWER_MGMT_CUSTOM_CONFIG_H_

diff --git 
a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtPsysConfig.h
 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtPsysConfig.h
new file mode 100644
index 0000000000..f1ceb8f43b
--- /dev/null
+++ 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtPsysConfig.h
@@ -0,0 +1,36 @@
+/** @file

+  CPU Power Management Psys(Platform) Config Block.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPU_POWER_MGMT_PSYS_CONFIG_H_

+#define _CPU_POWER_MGMT_PSYS_CONFIG_H_

+

+#define CPU_POWER_MGMT_PSYS_CONFIG_REVISION 1

+

+extern EFI_GUID gCpuPowerMgmtPsysConfigGuid;

+

+#pragma pack (push,1)

+

+/**

+  CPU Power Management Psys(Platform) Configuration Structure.

+

+  <b>Revision 1</b>:

+  - Initial version.

+**/

+typedef struct {

+  CONFIG_BLOCK_HEADER   Header;                   ///< Config Block Header

+  UINT32 PsysPowerLimit1       : 1;               ///< MSR 0x65C[15]: PL1 
Enable activates the PL1 value to limit average platform power

+  UINT32 PsysPowerLimit1Time   : 8;               ///< MSR 0x65C[23:17]: PL1 
timewindow in seconds.

+  UINT32 PsysPowerLimit2       : 1;               ///< MSR 0x65C[47]: PL2 
Enable activates the PL2 value to limit average platform power

+  UINT32 RsvdBits              : 22;              ///< Reserved for future use.

+  UINT16 PsysPowerLimit1Power;                    ///< MSR 0x65C[14:0]: 
Platform PL1 power. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.

+  UINT16 PsysPowerLimit2Power;                    ///< MSR 0x65C[46:32]]: 
Platform PL2 power. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.

+  UINT16 PsysPmax;                                ///< PCODE MMIO Mailbox: 
Platform Power Pmax. <b>0 - Auto</b> Specified in 1/8 Watt increments. 0-1024 
Watts. Value of 800 = 100W.

+  UINT8  Rsvd[2];                                 ///< Reserved for future use 
and config block alignment

+} CPU_POWER_MGMT_PSYS_CONFIG;

+

+#pragma pack (pop)

+

+#endif // _CPU_POWER_MGMT_PSYS_CONFIG_H_

diff --git 
a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtTestConfig.h
 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtTestConfig.h
new file mode 100644
index 0000000000..bd641f27c5
--- /dev/null
+++ 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuPowerMgmtTestConfig.h
@@ -0,0 +1,150 @@
+/** @file

+  CPU Power Management Test Config Block.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPU_POWER_MGMT_TEST_CONFIG_H_

+#define _CPU_POWER_MGMT_TEST_CONFIG_H_

+

+#define CPU_POWER_MGMT_TEST_CONFIG_REVISION 4

+

+extern EFI_GUID gCpuPowerMgmtTestConfigGuid;

+

+#pragma pack (push,1)

+

+///

+/// PPM Package C State Limit

+///

+typedef enum {

+  PkgC0C1                 = 0,

+  PkgC2,

+  PkgC3,

+  PkgC6,

+  PkgC7,

+  PkgC7s,

+  PkgC8,

+  PkgC9,

+  PkgC10,

+  PkgCMax,

+  PkgCpuDefault = 254,

+  PkgAuto = 255

+} MAX_PKG_C_STATE;

+

+///

+/// PPM Package C State Time Limit

+///

+typedef enum {

+  TimeUnit1ns             = 0,

+  TimeUnit32ns,

+  TimeUnit1024ns,

+  TimeUnit32768ns,

+  TimeUnit1048576ns,

+  TimeUnit33554432ns,

+  TimeUnitMax

+} C_STATE_TIME_UNIT;

+

+///

+/// Custom Power Units. User can choose to enter in watts or 125 milliwatt 
increments.

+///

+typedef enum {

+  PowerUnitWatts = 0,     ///< in Watts.

+  PowerUnit125MilliWatts, ///< in 125 milliwatt increments. Example: 90 power 
units times 125 mW equals 11.250 W.

+  PowerUnitMax

+} CUSTOM_POWER_UNIT;

+

+///

+/// PPM Interrupt Redirection Mode Selection

+///

+typedef enum {

+  PpmIrmFixedPriority     = 0,

+  PpmIrmRoundRobin,

+  PpmIrmHashVector,

+  PpmIrmReserved1,

+  PpmIrmReserved2,

+  PpmIrmReserved3,

+  PpmIrmReserved4,

+  PpmIrmNoChange

+} PPM_IRM_SETTING;

+

+/**

+  CPU Power Management Test Configuration Structure.

+

+  <b>Revision 1</b>:

+  - Initial version.

+  <b>Revision 2</b>:

+  - Add  CstateLatencyControl0TimeUnit for WHL only

+  - Add  CstateLatencyControl0Irtl for WHL only

+  <b>Revision 3</b>:

+  - Change C State LatencyContol to Auto as default.

+  <b>Revision 4</b>:

+  - Deprecate ConfigTdpLevel. Move to premem.

+**/

+typedef struct {

+  CONFIG_BLOCK_HEADER   Header;                    ///< Offset 0-27  Config 
Block Header

+  UINT32 Eist                          : 1;        ///< Offset 28-31 Enable or 
Disable Intel SpeedStep Technology. 0: Disable; <b>1: Enable</b>

+  UINT32 EnergyEfficientPState         : 1;        ///<              Enable or 
Disable Energy Efficient P-state will be applied in Turbo mode. Disable; <b>1: 
Enable</b>

+  UINT32 EnergyEfficientTurbo          : 1;        ///<              Enable or 
Disable Energy Efficient Turbo, will be applied in Turbo mode. Disable; <b>1: 
Enable</b>

+  UINT32 TStates                       : 1;        ///<              Enable or 
Disable T states; <b>0: Disable</b>; 1: Enable.

+  UINT32 BiProcHot                     : 1;        ///<              Enable or 
Disable Bi-Directional PROCHOT#; 0: Disable; <b>1: Enable</b>.

+  UINT32 DisableProcHotOut             : 1;        ///<              Enable or 
Disable PROCHOT# signal being driven externally; 0: Disable; <b>1: Enable</b>.

+  UINT32 ProcHotResponse               : 1;        ///<              Enable or 
Disable PROCHOT# Response; <b>0: Disable</b>; 1: Enable.

+  UINT32 DisableVrThermalAlert         : 1;        ///<              Enable or 
Disable VR Thermal Alert; <b>0: Disable</b>; 1: Enable.

+  UINT32 EnableAllThermalFunctions     : 1;        ///<              Enable or 
Disable Thermal Reporting through ACPI tables; 0: Disable; <b>1: Enable</b>.

+  UINT32 ThermalMonitor                : 1;        ///<              Enable or 
Disable Thermal Monitor; 0: Disable; <b>1: Enable</b>.

+  UINT32 Cx                            : 1;        ///<              Enable or 
Disable CPU power states (C-states). 0: Disable; <b>1: Enable</b>

+  UINT32 PmgCstCfgCtrlLock             : 1;        ///<              If 
enabled, sets MSR 0xE2[15]; 0: Disable; <b>1: Enable</b>.

+  UINT32 C1e                           : 1;        ///<              Enable or 
Disable Enhanced C-states. 0: Disable; <b>1: Enable</b>

+  UINT32 C1AutoDemotion                : 1;        ///<              Enable or 
Disable C6/C7 auto demotion to C1. 0: Disabled; <b>1: C1 Auto demotion</b>

+  UINT32 C1UnDemotion                  : 1;        ///<              Enable or 
Disable C1UnDemotion. 0: Disabled; <b>1: C1 Auto undemotion</b>

+  UINT32 C3AutoDemotion                : 1;        ///<              
[CoffeeLake Only] Enable or Disable C6/C7 auto demotion to C3  0: Disabled; 
<b>1: C3 Auto demotion</b>

+  UINT32 C3UnDemotion                  : 1;        ///<              
[CoffeeLake Only] Enable or Disable C3UnDemotion. 0: Disabled; <b>1: C3 Auto 
undemotion</b>

+  UINT32 PkgCStateDemotion             : 1;        ///<              Enable or 
Disable Package Cstate Demotion. Disable; <b>1: Enable</b> [WhiskeyLake] 
<b>Disable</b>; 1: Enable

+  UINT32 PkgCStateUnDemotion           : 1;        ///<              Enable or 
Disable Package Cstate UnDemotion. Disable; <b>1: Enable</b> [WhiskeyLake] 
<b>Disable</b>; 1: Enable

+  UINT32 CStatePreWake                 : 1;        ///<              Enable or 
Disable CState-Pre wake. Disable; <b>1: Enable</b>

+  UINT32 TimedMwait                    : 1;        ///<              Enable or 
Disable TimedMwait Support. <b>Disable</b>; 1: Enable

+  UINT32 CstCfgCtrIoMwaitRedirection   : 1;        ///<              Enable or 
Disable IO to MWAIT redirection; <b>0: Disable</b>; 1: Enable.

+  UINT32 ProcHotLock                   : 1;        ///<              If 
enabled, sets MSR 0x1FC[23]; <b>0: Disable</b>; 1: Enable.

+  UINT32 RaceToHalt                    : 1;        ///<              Enable or 
Disable Race To Halt feature; 0: Disable; <b>1: Enable </b>. RTH will 
dynamically increase CPU frequency in order to enter pkg C-State faster to 
reduce overall power. (RTH is controlled through MSR 1FC bit 20)

+  UINT32 ConfigTdpLevel                : 8;        ///<              
@deprecated. Move to premem phase.

+  UINT16 CstateLatencyControl1Irtl;                ///< Offset 32-33 Interrupt 
Response Time Limit of LatencyContol1 MSR 0x60B[9:0].<b>0 is Auto</b>.

+  UINT16 CstateLatencyControl2Irtl;                ///< Offset 34-35 Interrupt 
Response Time Limit of LatencyContol2 MSR 0x60C[9:0].<b>0 is Auto</b>.

+  UINT16 CstateLatencyControl3Irtl;                ///< Offset 36-37 Interrupt 
Response Time Limit of LatencyContol3 MSR 0x633[9:0].<b>0 is Auto</b>.

+  UINT16 CstateLatencyControl4Irtl;                ///< Offset 38-39 Interrupt 
Response Time Limit of LatencyContol4 MSR 0x634[9:0].<b>0 is Auto</b>.

+  UINT16 CstateLatencyControl5Irtl;                ///< Offset 40-41 Interrupt 
Response Time Limit of LatencyContol5 MSR 0x635[9:0].<b>0 is Auto</b>.

+  // Due to the removal of CstateLatencyControl0Irtl, PkgCStateLimit is not 
aligned to 32-bit address.

+  UINT8  Rsvd1[2];                                 ///< Offset 42-43 Reserved 
for config block alignment.

+  MAX_PKG_C_STATE   PkgCStateLimit;                ///< Offset 44    This 
field is used to set the Max Pkg Cstate. Default set to Auto which limits the 
Max Pkg Cstate to deep C-state.

+  /**

+     @todo: The following enums have to be replaced with policies.

+  **/

+  C_STATE_TIME_UNIT Reserved;                      ///< Offset 45    Reserved 
for config block alignment.

+  C_STATE_TIME_UNIT CstateLatencyControl1TimeUnit; ///< Offset 46    TimeUnit 
for Latency Control1 MSR 0x60B[12:10]; <b>2: 1024ns</b>.

+  C_STATE_TIME_UNIT CstateLatencyControl2TimeUnit; ///< Offset 47    TimeUnit 
for Latency Control2 MSR 0x60C[12:10]; <b>2: 1024ns</b>.

+  C_STATE_TIME_UNIT CstateLatencyControl3TimeUnit; ///< Offset 48    TimeUnit 
for Latency Control3 MSR 0x633[12:10]; <b>2: 1024ns</b>.

+  C_STATE_TIME_UNIT CstateLatencyControl4TimeUnit; ///< Offset 49    TimeUnit 
for Latency Control4 MSR 0x634[12:10]; <b>2: 1024ns</b>.

+  C_STATE_TIME_UNIT CstateLatencyControl5TimeUnit; ///< Offset 50    TimeUnit 
for Latency Control5 MSR 0x635[12:10]; <b>2: 1024ns</b>.

+  /**

+  Offset 51  Default power unit in watts or in 125 milliwatt increments.

+  - 0: PowerUnitWatts.

+  - <b>1: PowerUnit125MilliWatts</b>.

+  **/

+  CUSTOM_POWER_UNIT CustomPowerUnit;

+  /**

+  Offset 52  Interrupt Redirection Mode Select.

+   - 0: Fixed priority.             //Default under CNL.

+   - 1: Round robin.

+   - 2: Hash vector.

+   - 4: PAIR with fixed priority.   //Default under KBL, not available under 
CNL.

+   - 5: PAIR with round robin.      //Not available under CNL.

+   - 6: PAIR with hash vector.      //Not available under CNL.

+   - 7: No change.

+  **/

+  PPM_IRM_SETTING      PpmIrmSetting;

+  // Move the padding to previous offset to align the structure at 32-bit 
address.

+  UINT8  Rsvd[4];                                 ///< Offset 53-56 Reserved 
for future use and config block alignment

+} CPU_POWER_MGMT_TEST_CONFIG;

+

+#pragma pack (pop)

+

+#endif // _CPU_POWER_MGMT_TEST_CONFIG_H_

diff --git 
a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuSecurityPreMemConfig.h
 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuSecurityPreMemConfig.h
new file mode 100644
index 0000000000..24614fe497
--- /dev/null
+++ 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuSecurityPreMemConfig.h
@@ -0,0 +1,63 @@
+/** @file

+  CPU Security PreMemory Config Block.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPU_SECURITY_PREMEM_CONFIG_H_

+#define _CPU_SECURITY_PREMEM_CONFIG_H_

+

+#define CPU_SECURITY_PREMEM_CONFIG_REVISION 1

+

+extern EFI_GUID gCpuSecurityPreMemConfigGuid;

+

+#pragma pack (push,1)

+

+/**

+  CPU Security PreMemory Configuration Structure.

+

+  <b>Revision 1</b>:

+  - Initial version.

+**/

+typedef struct {

+  CONFIG_BLOCK_HEADER Header;                      ///< Config Block Header

+  UINT32              PrmrrSize;                   ///< PRMRR Size.<b>Software 
Control: 0x0</b>  32MB: 0x2000000, 64MB: 0x4000000, 128 MB: 0x8000000, 256 MB: 
0x10000000, 512 MB: 0x20000000

+  UINT16              BiosSize;                    ///< Flash information for 
BIOS Guard: BIOS Size in KB.

+  UINT8               Reserved[2];                 ///< Reserved for future use

+/**

+   Enable or Disable BIOS Guard; 0: Disable; <b>1: Enable</b>.

+    - This is an optional feature and can be opted out.

+    - If this policy is set to Disabled, the policies in the BIOS_GUARD_CONFIG 
will be ignored.

+    - If PeiBiosGuardLibNull is used, this policy will have no effect.

+**/

+  UINT32              BiosGuard               :  1;

+  UINT32              BiosGuardToolsInterface :  1; ///< BIOS Guard Tools 
Interface; <b>0: Disable</b>, 1:Enable

+/**

+   Enable or Disable Software Guard Extensions; <b>0: Disable</b>; 1: Enable.

+    - This is an optional feature and can be opted out.

+    - If this policy is set to Disabled, the policies in the CPU_SGX_CONFIG 
will be ignored.

+    - If BaseSoftwareGuardLibNull is used, this policy will have no effect.

+**/

+  UINT32              EnableSgx               :  1;

+/**

+   Enable or Disable Trusted Execution Technology; <b>0: Disable</b>; 1: 
Enable.

+    - This is an optional feature and can be opted out.

+    - If this policy is set to Disabled, the policies in the 
CPU_TXT_PREMEM_CONFIG will be ignored.

+    - If PeiTxtLibNull is used, this policy will have no effect.

+**/

+  UINT32              Txt                     :  1;

+  UINT32              SkipStopPbet            :  1; ///< <b>(Test)</b> Skip 
Stop PBET Timer; <b>0: Disable</b>; 1: Enable.

+  ///

+  /// <b>(Test)</b> This policy indicates whether or not BIOS should allocate 
PRMRR memory for C6DRAM power gating feature.

+  ///  - 0: Don't allocate any PRMRR memory for C6DRAM power gating feature.

+  ///  - <b>1: Allocate PRMRR memory for C6DRAM power gating feature</b>.

+  ///

+  UINT32              EnableC6Dram            :  1;

+  UINT32              ResetAux                :  1; ///< <b>(Test)</b> Reset 
Auxiliary content, <b>0: Disabled</b>, 1: Enabled

+  UINT32              TxtAcheckRequest        :  1; ///< <b>(Test)</b> 
AcheckRequest <b>0: Disabled</b>, 1: Enabled. When Enabled, it will call Acheck 
regardless of crashcode value

+  UINT32              RsvdBits                : 24; ///< Reserved for future 
use

+} CPU_SECURITY_PREMEM_CONFIG;

+

+#pragma pack (pop)

+

+#endif // _CPU_SECURITY_CONFIG_H_

diff --git 
a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuTestConfig.h 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuTestConfig.h
new file mode 100644
index 0000000000..ee946290e0
--- /dev/null
+++ b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/ConfigBlock/CpuTestConfig.h
@@ -0,0 +1,51 @@
+/** @file

+  CPU Test Config Block.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPU_TEST_CONFIG_H_

+#define _CPU_TEST_CONFIG_H_

+

+#define CPU_TEST_CONFIG_REVISION 2

+

+extern EFI_GUID gCpuTestConfigGuid;

+

+#pragma pack (push,1)

+

+/**

+  CPU Test Configuration Structure.

+

+  <b>Revision 1</b>:

+  - Initial version.

+  <b>Revision 2</b>:

+  - Removed Voltage Optimization feature.

+**/

+typedef struct {

+  CONFIG_BLOCK_HEADER   Header;                   ///< Config Block Header

+  UINT32                MlcStreamerPrefetcher           : 1;     ///< Enable 
or Disable MLC Streamer Prefetcher; 0: Disable; <b>1: Enable</b>.

+  UINT32                MlcSpatialPrefetcher            : 1;     ///< Enable 
or Disable MLC Spatial Prefetcher; 0: Disable; <b>1: Enable</b>.

+  UINT32                MonitorMwaitEnable              : 1;     ///< Enable 
or Disable Monitor /MWAIT instructions; 0: Disable; <b>1: Enable</b>.

+  UINT32                MachineCheckEnable              : 1;     ///< Enable 
or Disable initialization of machine check registers; 0: Disable; <b>1: 
Enable</b>.

+  UINT32                ProcessorTraceOutputScheme      : 1;     ///< Control 
on Processor Trace output scheme; <b>0: Single Range Output</b>; 1: ToPA Output.

+  UINT32                ProcessorTraceEnable            : 1;     ///< Enable 
or Disable Processor Trace feature; <b>0: Disable</b>; 1: Enable.

+  UINT32                ThreeStrikeCounterDisable       : 1;     ///< Disable 
Three strike counter; <b>0: FALSE</b>; 1: TRUE.

+  UINT32                RsvdBits                        : 25;     ///< 
Reserved for future use

+  /**

+     Base address of memory region allocated for Processor Trace.

+     Processor Trace requires 2^N alignment and size in bytes per thread, from 
4KB to 128MB.

+     - <b>NULL: Disable</b>

+  **/

+  EFI_PHYSICAL_ADDRESS  ProcessorTraceMemBase;

+  /**

+     Length in bytes of memory region allocated for Processor Trace.

+     Processor Trace requires 2^N alignment and size in bytes per thread, from 
4KB to 128MB.

+     - <b>0: Disable</b>

+  **/

+  UINT32                ProcessorTraceMemLength;

+  UINT8                 Reserved0[4];

+} CPU_TEST_CONFIG;

+

+#pragma pack (pop)

+

+#endif // _CPU_TEST_CONFIG_H_

diff --git a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuAccess.h 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuAccess.h
new file mode 100644
index 0000000000..5d5e4df071
--- /dev/null
+++ b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuAccess.h
@@ -0,0 +1,12 @@
+/** @file

+  Macros to simplify and abstract the interface to CPU configuration.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPUACCESS_H_

+#define _CPUACCESS_H_

+

+#include "CpuDataStruct.h"

+

+#endif

diff --git a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuDataStruct.h 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuDataStruct.h
new file mode 100644
index 0000000000..ba9a840e54
--- /dev/null
+++ b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuDataStruct.h
@@ -0,0 +1,21 @@
+/** @file

+  This file declares various data structures used in CPU reference code.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+

+#ifndef _CPU_DATA_STRUCT_H

+#define _CPU_DATA_STRUCT_H

+

+///

+/// Structure to hold the return value of AsmCpuid instruction

+///

+typedef struct {

+  UINT32 RegEax; ///< Value of EAX.

+  UINT32 RegEbx; ///< Value of EBX.

+  UINT32 RegEcx; ///< Value of ECX.

+  UINT32 RegEdx; ///< Value of EDX.

+} EFI_CPUID_REGISTER;

+

+#endif

diff --git a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuPolicyCommon.h 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuPolicyCommon.h
new file mode 100644
index 0000000000..1178f68d0c
--- /dev/null
+++ b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/CpuPolicyCommon.h
@@ -0,0 +1,23 @@
+/** @file

+  CPU Policy Structure definition which will contain several config blocks 
during runtime.

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+#ifndef _CPU_POLICY_COMMON_H_

+#define _CPU_POLICY_COMMON_H_

+

+#include <ConfigBlock.h>

+#include <ConfigBlock/CpuConfig.h>

+#include <ConfigBlock/CpuPidTestConfig.h>

+#include <ConfigBlock/CpuPowerMgmtBasicConfig.h>

+#include <ConfigBlock/CpuPowerMgmtCustomConfig.h>

+#include <ConfigBlock/CpuPowerMgmtPsysConfig.h>

+#include <ConfigBlock/CpuPowerMgmtTestConfig.h>

+#include <ConfigBlock/VoltageRegulator/CpuPowerMgmtVrConfig.h>

+#include <ConfigBlock/CpuTestConfig.h>

+#include <ConfigBlock/CpuSecurityPreMemConfig.h>

+#include <ConfigBlock/CpuConfigLibPreMemConfig.h>

+#include <OverclockingConfig.h>

+

+#endif // _CPU_POLICY_COMMON_H_

diff --git a/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/Register/CommonMsr.h 
b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/Register/CommonMsr.h
new file mode 100644
index 0000000000..a2cd1db1d6
--- /dev/null
+++ b/Silicon/Intel/TigerlakeSiliconPkg/Cpu/Include/Register/CommonMsr.h
@@ -0,0 +1,18 @@
+

+/** @file

+  CommonMsr.h

+

+  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+

+#ifndef _COMMONMSR_h

+#define _COMMONMSR_h

+#include <Base.h>

+

+/**

+  Special Chipset Usage MSR

+**/

+#define MSR_SPCL_CHIPSET_USAGE 0x000001FE

+

+#endif /* _COMMONMSR_h */

-- 
2.24.0.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#71295): https://edk2.groups.io/g/devel/message/71295
Mute This Topic: https://groups.io/mt/80375649/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to