/** @file
CPU Security PreMemory Config Block.
Copyright (c) 2021, Intel Corporation. All rights reserved.
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.
Revision 1:
- Initial version.
Revision 2:
- Expand the supported number of processor cores (ActiveCoreCount1).
Revision 3:
- Added PECI Sx and C10 Reset.
Revision 4:
- Added ActiveSmallCoreCount.
Revision 5:
- Added CrashLogGprs
Revision 6:
- Added ConfigTdpLevel
**/
typedef struct {
CONFIG_BLOCK_HEADER Header; ///< Config Block Header
UINT32 HyperThreading : 1; ///< Enable or Disable Hyper Threading; 0: Disable; 1: Enable.
/**
Sets the boot frequency starting from reset vector.
- 0: Maximum battery performance.
- 1: Maximum non-turbo performance
-2: Turbo performance.
@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.
- 0: All cores
- 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. 0: False<\b>; 1: True.
UINT32 BistOnReset : 1; ///< (Test) Enable or Disable BIST on Reset; 0: Disable; 1: Enable.
/**
Enable or Disable Virtual Machine Extensions (VMX) feature.
- 0: Disable
- 1: Enable
**/
UINT32 VmxEnable : 1;
/**
Processor Early Power On Configuration FCLK setting.
- 0: 800 MHz (ULT/ULX).
- 1: 1 GHz (DT/Halo). Not supported on ULT/ULX.
- 2: 400 MHz.
- 3: Reserved.
**/
UINT32 FClkFrequency : 2;
/**
Enable or Disable CrashLog feature
- 0: Disable
- 1: Enable
**/
UINT32 CrashLogEnable : 1;
/**
Enable or Disable Total Memory Encryption (TME) feature.
- 0: Disable
- 1: Enable
**/
UINT32 TmeEnable : 1;
UINT32 DebugInterfaceEnable : 2; ///< Enable or Disable processor debug features; 0: Disable; 1: Enable; 2: No Change.
UINT32 DebugInterfaceLockEnable : 1; ///< Lock or Unlock debug interface features; 0: Disable; 1: Enable.
/**
Number of big cores in processor to enable. And support up to 16 cores.
- 0: All cores
- 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.
- 0: Disable
- 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 1: Enable for CML, and 0: Disable 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.
- 0: All cores
- 1: 1 core
- 2: 2 cores
- 3: 3 cores
**/
UINT32 ActiveSmallCoreCount : 6;
/**
Enable or Disable CrashLog GPRs dump
- 0: Disable
- 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. 0: Disabled If disabled, doesn't override max-non turbo ratio.
**/
UINT8 CpuRatio;
/**
Configuration for boot TDP selection; 0: TDP Nominal; 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_