1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039 |
- /** @file
- CPU Common features library header file.
- Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #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/Intel/Cpuid.h>
- #include <Register/Intel/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
- );
- /**
- 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
- ClockModulationGetConfigData (
- IN UINTN NumberOfProcessors
- );
- /**
- 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
- PpinGetConfigData (
- 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
|