/** @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_