/** @file | |
CPU Common features library header file. | |
Copyright (c) 2017 - 2018, 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 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 feature must be enabled. | |
If FALSE, then the VMX feature must be disabled. | |
@retval RETURN_SUCCESS VMX feature is initialized. | |
@note This service could be called by BSP only. | |
**/ | |
RETURN_STATUS | |
EFIAPI | |
VmxInitialize ( | |
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 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 SMX feature must be enabled. | |
If FALSE, then SMX feature must be disabled. | |
@retval RETURN_SUCCESS SMX feature is initialized. | |
@retval RETURN_UNSUPPORTED VMX not initialized. | |
@note This service could be called by BSP only. | |
**/ | |
RETURN_STATUS | |
EFIAPI | |
SmxInitialize ( | |
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 | |
); | |
/** | |
Detects if Protected Processor Inventory Number 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 Protected Processor Inventory Number feature is supported. | |
@retval FALSE Protected Processor Inventory Number feature is not supported. | |
@note This service could be called by BSP/APs. | |
**/ | |
BOOLEAN | |
EFIAPI | |
PpinSupport ( | |
IN UINTN ProcessorNumber, | |
IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
IN VOID *ConfigData OPTIONAL | |
); | |
/** | |
Initializes Protected Processor Inventory Number 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 Protected Processor Inventory | |
Number feature must be enabled. | |
If FALSE, then the Protected Processor Inventory | |
Number feature must be disabled. | |
@retval RETURN_SUCCESS Protected Processor Inventory Number feature is | |
initialized. | |
@retval RETURN_DEVICE_ERROR Device can't change state because it has been | |
locked. | |
**/ | |
RETURN_STATUS | |
EFIAPI | |
PpinInitialize ( | |
IN UINTN ProcessorNumber, | |
IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
IN VOID *ConfigData, OPTIONAL | |
IN BOOLEAN State | |
); | |
/** | |
Detects if Local 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 Local machine check exception feature is supported. | |
@retval FALSE Local machine check exception feature is not supported. | |
@note This service could be called by BSP/APs. | |
**/ | |
BOOLEAN | |
EFIAPI | |
LmceSupport ( | |
IN UINTN ProcessorNumber, | |
IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
IN VOID *ConfigData OPTIONAL | |
); | |
/** | |
Initializes Local 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 Local machine check exception | |
feature must be enabled. | |
If FALSE, then the Local machine check exception | |
feature must be disabled. | |
@retval RETURN_SUCCESS Local machine check exception feature is initialized. | |
**/ | |
RETURN_STATUS | |
EFIAPI | |
LmceInitialize ( | |
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 | |
ProcTraceGetConfigData ( | |
IN UINTN NumberOfProcessors | |
); | |
/** | |
Detects if Intel Processor Trace 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 Processor Trace feature is supported. | |
@retval FALSE Processor Trace feature is not supported. | |
@note This service could be called by BSP/APs. | |
**/ | |
BOOLEAN | |
EFIAPI | |
ProcTraceSupport ( | |
IN UINTN ProcessorNumber, | |
IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
IN VOID *ConfigData OPTIONAL | |
); | |
/** | |
Initializes Intel Processor Trace 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 Processor Trace feature must be | |
enabled. | |
If FALSE, then the Processor Trace feature must be | |
disabled. | |
@retval RETURN_SUCCESS Intel Processor Trace feature is initialized. | |
**/ | |
RETURN_STATUS | |
EFIAPI | |
ProcTraceInitialize ( | |
IN UINTN ProcessorNumber, | |
IN REGISTER_CPU_FEATURE_INFORMATION *CpuInfo, | |
IN VOID *ConfigData, OPTIONAL | |
IN BOOLEAN State | |
); | |
#endif |