| /** @file | |
| CPU Common features library header file. | |
| Copyright (c) 2017, Intel Corporation. All rights reserved.<BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #ifndef _CPU_COMMON_FEATURES_H_ | |
| #define _CPU_COMMON_FEATURES_H_ | |
| #include <PiDxe.h> | |
| #include <Library/BaseLib.h> | |
| #include <Library/PcdLib.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/RegisterCpuFeaturesLib.h> | |
| #include <Library/BaseMemoryLib.h> | |
| #include <Library/MemoryAllocationLib.h> | |
| #include <Library/LocalApicLib.h> | |
| #include <Register/Cpuid.h> | |
| #include <Register/Msr.h> | |
| /** | |
| Prepares for the data used by CPU feature detection and initialization. | |
| @param[in] NumberOfProcessors The number of CPUs in the platform. | |
| @return Pointer to a buffer of CPU related configuration data. | |
| @note This service could be called by BSP only. | |
| **/ | |
| VOID * | |
| EFIAPI | |
| AesniGetConfigData ( | |
| IN UINTN NumberOfProcessors | |
| ); | |
| /** | |
| Detects if AESNI feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE AESNI feature is supported. | |
| @retval FALSE AESNI feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| AesniSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes AESNI feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the AESNI feature must be enabled. | |
| If FALSE, then the AESNI feature must be disabled. | |
| @retval RETURN_SUCCESS AESNI feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| AesniInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if Clock Modulation feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE Clock Modulation feature is supported. | |
| @retval FALSE Clock Modulation feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| ClockModulationSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes Clock Modulation feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the Clock Modulation feature must be enabled. | |
| If FALSE, then the Clock Modulation feature must be disabled. | |
| @retval RETURN_SUCCESS Clock Modulation feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| ClockModulationInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if Enhanced Intel SpeedStep feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE Enhanced Intel SpeedStep feature is supported. | |
| @retval FALSE Enhanced Intel SpeedStep feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| EistSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes Enhanced Intel SpeedStep feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the Enhanced Intel SpeedStep feature | |
| must be enabled. | |
| If FALSE, then the Enhanced Intel SpeedStep feature | |
| must be disabled. | |
| @retval RETURN_SUCCESS Enhanced Intel SpeedStep feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| EistInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if Execute Disable feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE Execute Disable feature is supported. | |
| @retval FALSE Execute Disable feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| ExecuteDisableSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes Execute Disable feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the Execute Disable feature must be enabled. | |
| If FALSE, then the Execute Disable feature must be disabled. | |
| @retval RETURN_SUCCESS Execute Disable feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| ExecuteDisableInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Initializes Fast-Strings feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the Fast-Strings feature must be enabled. | |
| If FALSE, then the Fast-Strings feature must be disabled. | |
| @retval RETURN_SUCCESS Fast-Strings feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| FastStringsInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if MONITOR/MWAIT feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE MONITOR/MWAIT feature is supported. | |
| @retval FALSE MONITOR/MWAIT feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| MonitorMwaitSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes MONITOR/MWAIT feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the MONITOR/MWAIT feature must be enabled. | |
| If FALSE, then the MONITOR/MWAIT feature must be disabled. | |
| @retval RETURN_SUCCESS MONITOR/MWAIT feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| MonitorMwaitInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if VMX feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE VMX feature is supported. | |
| @retval FALSE VMX feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| VmxSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes VMX inside SMX feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the VMX inside SMX feature must be enabled. | |
| If FALSE, then the VMX inside SMX feature must be disabled. | |
| @retval RETURN_SUCCESS VMX inside SMX feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| VmxInsideSmxInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Initializes SENTER feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the SENTER feature must be enabled. | |
| If FALSE, then the SENTER feature must be disabled. | |
| @retval RETURN_SUCCESS SENTER feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| SenterInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if Lock Feature Control Register feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE Lock Feature Control Register feature is supported. | |
| @retval FALSE Lock Feature Control Register feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| LockFeatureControlRegisterSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes Lock Feature Control Register feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the Lock Feature Control Register feature must be enabled. | |
| If FALSE, then the Lock Feature Control Register feature must be disabled. | |
| @retval RETURN_SUCCESS Lock Feature Control Register feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| LockFeatureControlRegisterInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if SMX feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE SMX feature is supported. | |
| @retval FALSE SMX feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| SmxSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes VMX outside SMX feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the VMX outside SMX feature must be enabled. | |
| If FALSE, then the VMX outside SMX feature must be disabled. | |
| @retval RETURN_SUCCESS VMX outside SMX feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| VmxOutsideSmxInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if LimitCpuidMaxval feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE LimitCpuidMaxval feature is supported. | |
| @retval FALSE LimitCpuidMaxval feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| LimitCpuidMaxvalSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes LimitCpuidMaxval feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the LimitCpuidMaxval feature must be enabled. | |
| If FALSE, then the LimitCpuidMaxval feature must be disabled. | |
| @retval RETURN_SUCCESS LimitCpuidMaxval feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| LimitCpuidMaxvalInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if Machine Check Exception feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE Machine Check Exception feature is supported. | |
| @retval FALSE Machine Check Exception feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| MceSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes Machine Check Exception feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the Machine Check Exception feature must be enabled. | |
| If FALSE, then the Machine Check Exception feature must be disabled. | |
| @retval RETURN_SUCCESS Machine Check Exception feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| MceInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if Machine Check Architecture feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE Machine Check Architecture feature is supported. | |
| @retval FALSE Machine Check Architecture feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| McaSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes Machine Check Architecture feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the Machine Check Architecture feature must be enabled. | |
| If FALSE, then the Machine Check Architecture feature must be disabled. | |
| @retval RETURN_SUCCESS Machine Check Architecture feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| McaInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if IA32_MCG_CTL feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE IA32_MCG_CTL feature is supported. | |
| @retval FALSE IA32_MCG_CTL feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| McgCtlSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes IA32_MCG_CTL feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the IA32_MCG_CTL feature must be enabled. | |
| If FALSE, then the IA32_MCG_CTL feature must be disabled. | |
| @retval RETURN_SUCCESS IA32_MCG_CTL feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| McgCtlInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if Pending Break feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE Pending Break feature is supported. | |
| @retval FALSE Pending Break feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| PendingBreakSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes Pending Break feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the Pending Break feature must be enabled. | |
| If FALSE, then the Pending Break feature must be disabled. | |
| @retval RETURN_SUCCESS Pending Break feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| PendingBreakInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Detects if C1E feature supported on current processor. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE C1E feature is supported. | |
| @retval FALSE C1E feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| C1eSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes C1E feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the C1E feature must be enabled. | |
| If FALSE, then the C1E feature must be disabled. | |
| @retval RETURN_SUCCESS C1E feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| C1eInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Prepares for the data used by CPU feature detection and initialization. | |
| @param[in] NumberOfProcessors The number of CPUs in the platform. | |
| @return Pointer to a buffer of CPU related configuration data. | |
| @note This service could be called by BSP only. | |
| **/ | |
| VOID * | |
| EFIAPI | |
| X2ApicGetConfigData ( | |
| IN UINTN NumberOfProcessors | |
| ); | |
| /** | |
| Detects if X2Apci feature supported on current processor. | |
| Detect if X2Apci has been already enabled. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @retval TRUE X2Apci feature is supported. | |
| @retval FALSE X2Apci feature is not supported. | |
| @note This service could be called by BSP/APs. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| X2ApicSupport ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData OPTIONAL | |
| ); | |
| /** | |
| Initializes X2Apci feature to specific state. | |
| @param[in] ProcessorNumber The index of the CPU executing this function. | |
| @param[in] CpuInfo A pointer to the REGISTER_CPU_FEATURE_INFORMATION | |
| structure for the CPU executing this function. | |
| @param[in] ConfigData A pointer to the configuration buffer returned | |
| by CPU_FEATURE_GET_CONFIG_DATA. NULL if | |
| CPU_FEATURE_GET_CONFIG_DATA was not provided in | |
| RegisterCpuFeature(). | |
| @param[in] State If TRUE, then the X2Apci feature must be enabled. | |
| If FALSE, then the X2Apci feature must be disabled. | |
| @retval RETURN_SUCCESS X2Apci feature is initialized. | |
| @note This service could be called by BSP only. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| X2ApicInitialize ( | |
| IN UINTN ProcessorNumber, | |
| IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
| IN VOID *ConfigData, OPTIONAL | |
| IN BOOLEAN State | |
| ); | |
| /** | |
| Prepares for the data used by CPU feature detection and initialization. | |
| @param[in] NumberOfProcessors The number of CPUs in the platform. | |
| @return Pointer to a buffer of CPU related configuration data. | |
| @note This service could be called by BSP only. | |
| **/ | |
| VOID * | |
| EFIAPI | |
| FeatureControlGetConfigData ( | |
| IN UINTN NumberOfProcessors | |
| ); | |
| #endif |