/** @file
CPU Config Block.
Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _CPU_CONFIG_H_
#define _CPU_CONFIG_H_
#include
#define CPU_CONFIG_REVISION 3
extern EFI_GUID gCpuConfigGuid;
#pragma pack (push,1)
/**
CPU Configuration Structure.
This structure is identical to CPU_CONFIG_FSP.
Revision 1:
- Initial version.
Revision 2:
- Add SkipMpInit : Silicon Initialization will skip MP Initialization for FSP only
Revision 3:
- Deprecated and moved FclkFrequency, VmxEnable to CPU_CONFIG_LIB_PREMEM_CONFIG
**/
typedef struct {
CONFIG_BLOCK_HEADER Header; ///< Config Block Header
/**
Enable or Disable Advanced Encryption Standard (AES) feature.
For some countries, this should be disabled for legal reasons.
- 0: Disable
- 1: Enable
**/
UINT32 AesEnable : 1;
/**
@deprecated since revision 3. Moved to CPU_CONFIG_LIB_PREMEM_CONFIG
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;
UINT32 EnableRsr : 1; ///< Enable or Disable RSR feature; 0: Disable; 1: Enable
/**
Policies to obtain CPU temperature.
- 0: ACPI thermal management uses EC reported temperature values.
- 1: ACPI thermal management uses DTS SMM mechanism to obtain CPU temperature values.
- 2: ACPI Thermal Management uses EC reported temperature values and DTS SMM is used to handle Out of Spec condition.
**/
UINT32 EnableDts : 2;
UINT32 SmmbaseSwSmiNumber : 8; ///< Software SMI number for handler to save CPU information in SMRAM.
/**
@deprecated since revision 3. Moved to CPU_CONFIG_LIB_PREMEM_CONFIG
Enable or Disable Virtual Machine Extensions (VMX) feature.
- 0: Disable
- 1: Enable
**/
UINT32 VmxEnable : 1;
/**
Enable or Disable Trusted Execution Technology (TXT) feature.
- 0: Disable
- 1: Enable
**/
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.
UINT32 RsvdBits : 15; ///< Reserved for future use
EFI_PHYSICAL_ADDRESS MicrocodePatchAddress; ///< Pointer to microcode patch that is suitable for this processor.
} CPU_CONFIG;
/**
FSP CPU Configuration Structure.
This structure is identical to CPU_CONFIG.
Revision 1:
- Initial version.
**/
typedef struct {
CONFIG_BLOCK_HEADER Header; ///< Config Block Header
UINT32 Data; ///< Config Block Data
EFI_PHYSICAL_ADDRESS MicrocodePatchAddress; ///< Pointer to microcode patch that is suitable for this processor.
} CPU_CONFIG_FSP;
typedef union {
CPU_CONFIG CpuConfig;
CPU_CONFIG_FSP CpuConfigFsp;
} CPU_CONFIG_UNION;
#pragma pack (pop)
#endif // _CPU_CONFIG_H_