123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- /** @file
- This library registers CPU features defined in Intel(R) 64 and IA-32
- Architectures Software Developer's Manual.
- Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include "CpuCommonFeatures.h"
- /**
- Register CPU features.
- @retval RETURN_SUCCESS Register successfully
- **/
- RETURN_STATUS
- EFIAPI
- CpuCommonFeaturesLibConstructor (
- VOID
- )
- {
- RETURN_STATUS Status;
- if (IsCpuFeatureSupported (CPU_FEATURE_AESNI)) {
- Status = RegisterCpuFeature (
- "AESNI",
- AesniGetConfigData,
- AesniSupport,
- AesniInitialize,
- CPU_FEATURE_AESNI,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_MWAIT)) {
- Status = RegisterCpuFeature (
- "MWAIT",
- NULL,
- MonitorMwaitSupport,
- MonitorMwaitInitialize,
- CPU_FEATURE_MWAIT,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_ACPI)) {
- Status = RegisterCpuFeature (
- "ACPI",
- ClockModulationGetConfigData,
- ClockModulationSupport,
- ClockModulationInitialize,
- CPU_FEATURE_ACPI,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_EIST)) {
- Status = RegisterCpuFeature (
- "EIST",
- NULL,
- EistSupport,
- EistInitialize,
- CPU_FEATURE_EIST,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_FASTSTRINGS)) {
- Status = RegisterCpuFeature (
- "FastStrings",
- NULL,
- NULL,
- FastStringsInitialize,
- CPU_FEATURE_FASTSTRINGS,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_LOCK_FEATURE_CONTROL_REGISTER)) {
- Status = RegisterCpuFeature (
- "Lock Feature Control Register",
- NULL,
- LockFeatureControlRegisterSupport,
- LockFeatureControlRegisterInitialize,
- CPU_FEATURE_LOCK_FEATURE_CONTROL_REGISTER,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_SMX)) {
- Status = RegisterCpuFeature (
- "SMX",
- NULL,
- SmxSupport,
- SmxInitialize,
- CPU_FEATURE_SMX,
- CPU_FEATURE_LOCK_FEATURE_CONTROL_REGISTER | CPU_FEATURE_THREAD_BEFORE,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_VMX)) {
- Status = RegisterCpuFeature (
- "VMX",
- NULL,
- VmxSupport,
- VmxInitialize,
- CPU_FEATURE_VMX,
- CPU_FEATURE_LOCK_FEATURE_CONTROL_REGISTER | CPU_FEATURE_THREAD_BEFORE,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_LIMIT_CPUID_MAX_VAL)) {
- Status = RegisterCpuFeature (
- "Limit CpuId Maximum Value",
- NULL,
- LimitCpuidMaxvalSupport,
- LimitCpuidMaxvalInitialize,
- CPU_FEATURE_LIMIT_CPUID_MAX_VAL,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_MCE)) {
- Status = RegisterCpuFeature (
- "Machine Check Enable",
- NULL,
- MceSupport,
- MceInitialize,
- CPU_FEATURE_MCE,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_MCA)) {
- Status = RegisterCpuFeature (
- "Machine Check Architect",
- NULL,
- McaSupport,
- McaInitialize,
- CPU_FEATURE_MCA,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_MCG_CTL)) {
- Status = RegisterCpuFeature (
- "MCG_CTL",
- NULL,
- McgCtlSupport,
- McgCtlInitialize,
- CPU_FEATURE_MCG_CTL,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_PENDING_BREAK)) {
- Status = RegisterCpuFeature (
- "Pending Break",
- NULL,
- PendingBreakSupport,
- PendingBreakInitialize,
- CPU_FEATURE_PENDING_BREAK,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_C1E)) {
- Status = RegisterCpuFeature (
- "C1E",
- NULL,
- C1eSupport,
- C1eInitialize,
- CPU_FEATURE_C1E,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_X2APIC)) {
- Status = RegisterCpuFeature (
- "X2Apic",
- X2ApicGetConfigData,
- X2ApicSupport,
- X2ApicInitialize,
- CPU_FEATURE_X2APIC,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_PPIN)) {
- Status = RegisterCpuFeature (
- "PPIN",
- PpinGetConfigData,
- PpinSupport,
- PpinInitialize,
- CPU_FEATURE_PPIN,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_LMCE)) {
- Status = RegisterCpuFeature (
- "LMCE",
- NULL,
- LmceSupport,
- LmceInitialize,
- CPU_FEATURE_LMCE,
- CPU_FEATURE_LOCK_FEATURE_CONTROL_REGISTER | CPU_FEATURE_THREAD_BEFORE,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- if (IsCpuFeatureSupported (CPU_FEATURE_PROC_TRACE)) {
- Status = RegisterCpuFeature (
- "Proc Trace",
- ProcTraceGetConfigData,
- ProcTraceSupport,
- ProcTraceInitialize,
- CPU_FEATURE_PROC_TRACE,
- CPU_FEATURE_END
- );
- ASSERT_EFI_ERROR (Status);
- }
- return RETURN_SUCCESS;
- }
|