This serial of patches will add CPU featuers initialization on boot time. 1) One new Register CPU Features Library and instances are added to provide the capability to register CPU feature's detect/initialize services. 2) One new NULL class CPU Commong Features Library instance is added to provide detect/initialize servcies of CPU features defined in SDM. 3) New CPU features PEI/DXE drivers are added to initialize CPU features in PEI phase or DXE phase, by consuming Register CPU Features Library.
https://bugzilla.tianocore.org/show_bug.cgi?id=421 The whole updated UefiCpuPkg v2 could be accessed at https://github.com/JeffFan/edk2/tree/CpuFeaturesV2/UefiCpuPkg for review. v2: #9: Format debug messages. #10: 1. Using MSR_IA32_EFER to enable/disable NX feature instead of using MSR_IA32_MISC_ENABLE. 2. Fix bug that SMX and VMX feature is swapped. Cc: Feng Tian <feng.t...@intel.com> Cc: Michael Kinney <michael.d.kin...@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan <jeff....@intel.com> Jeff Fan (11): UefiCpuPkg/AcpiCpuData: Update RegisterTableEntry type UefiCpuPkg/CpuS3DataDxe: Consume the existing PcdCpuS3DataAddress UefiCpuPkg/PiSmmCpuDxeSmm: Skip if AllocatedSize is 0 UefiCpuPkg/Msr: Add CPUID signature check MACROs UefiCpuPkg/UefiCpuPkg.dec: Add a set of CPU features PCDs UefiCpuPkg: Add GUID gEdkiiCpuFeaturesSetDoneGuid UefiCpuPkg: Add GUID gEdkiiCpuFeaturesInitDoneGuid UefiCpuPkg/Include/Library: Add Register CPU Features Library UefiCpuPkg: Add PEI/DXE Register CPU Features Library instances UefiCpuPkg: Add NULL CPU Common Features Library instance UefiCpuPkg: Add CPU Features PEI/DXE drivers UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.c | 122 +++ UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.inf | 53 ++ UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.uni | 22 + UefiCpuPkg/CpuFeatures/CpuFeaturesDxeExtra.uni | 20 + UefiCpuPkg/CpuFeatures/CpuFeaturesPei.c | 75 ++ UefiCpuPkg/CpuFeatures/CpuFeaturesPei.inf | 49 ++ UefiCpuPkg/CpuFeatures/CpuFeaturesPei.uni | 22 + UefiCpuPkg/CpuFeatures/CpuFeaturesPeiExtra.uni | 20 + UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c | 56 +- UefiCpuPkg/Include/AcpiCpuData.h | 6 +- UefiCpuPkg/Include/Guid/CpuFeaturesInitDone.h | 26 + UefiCpuPkg/Include/Guid/CpuFeaturesSetDone.h | 26 + .../Include/Library/RegisterCpuFeaturesLib.h | 516 +++++++++++++ UefiCpuPkg/Include/Register/Msr/AtomMsr.h | 22 +- UefiCpuPkg/Include/Register/Msr/BroadwellMsr.h | 21 +- UefiCpuPkg/Include/Register/Msr/Core2Msr.h | 19 +- UefiCpuPkg/Include/Register/Msr/CoreMsr.h | 18 +- UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h | 18 +- UefiCpuPkg/Include/Register/Msr/HaswellEMsr.h | 18 +- UefiCpuPkg/Include/Register/Msr/HaswellMsr.h | 20 +- UefiCpuPkg/Include/Register/Msr/IvyBridgeMsr.h | 18 +- UefiCpuPkg/Include/Register/Msr/NehalemMsr.h | 21 +- UefiCpuPkg/Include/Register/Msr/P6Msr.h | 23 +- UefiCpuPkg/Include/Register/Msr/Pentium4Msr.h | 15 +- UefiCpuPkg/Include/Register/Msr/PentiumMMsr.h | 18 +- UefiCpuPkg/Include/Register/Msr/PentiumMsr.h | 20 +- UefiCpuPkg/Include/Register/Msr/SandyBridgeMsr.h | 19 +- UefiCpuPkg/Include/Register/Msr/SilvermontMsr.h | 22 +- UefiCpuPkg/Include/Register/Msr/SkylakeMsr.h | 19 +- UefiCpuPkg/Include/Register/Msr/Xeon5600Msr.h | 19 +- UefiCpuPkg/Include/Register/Msr/XeonDMsr.h | 19 +- UefiCpuPkg/Include/Register/Msr/XeonE7Msr.h | 18 +- UefiCpuPkg/Include/Register/Msr/XeonPhiMsr.h | 18 +- UefiCpuPkg/Library/CpuCommonFeaturesLib/Aesni.c | 94 +++ UefiCpuPkg/Library/CpuCommonFeaturesLib/C1e.c | 79 ++ .../Library/CpuCommonFeaturesLib/ClockModulation.c | 106 +++ .../CpuCommonFeaturesLib/CpuCommonFeatures.h | 852 +++++++++++++++++++++ .../CpuCommonFeaturesLib/CpuCommonFeaturesLib.c | 227 ++++++ .../CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf | 68 ++ .../CpuCommonFeaturesLib/CpuCommonFeaturesLib.uni | 25 + UefiCpuPkg/Library/CpuCommonFeaturesLib/Eist.c | 81 ++ .../Library/CpuCommonFeaturesLib/ExecuteDisable.c | 91 +++ .../Library/CpuCommonFeaturesLib/FastStrings.c | 52 ++ .../Library/CpuCommonFeaturesLib/FeatureControl.c | 314 ++++++++ .../CpuCommonFeaturesLib/LimitCpuIdMaxval.c | 82 ++ .../Library/CpuCommonFeaturesLib/MachineCheck.c | 231 ++++++ .../Library/CpuCommonFeaturesLib/MonitorMwait.c | 79 ++ .../Library/CpuCommonFeaturesLib/PendingBreak.c | 90 +++ UefiCpuPkg/Library/CpuCommonFeaturesLib/X2Apic.c | 81 ++ .../RegisterCpuFeaturesLib/CpuFeaturesInitialize.c | 747 ++++++++++++++++++ .../DxeRegisterCpuFeaturesLib.c | 266 +++++++ .../DxeRegisterCpuFeaturesLib.inf | 62 ++ .../PeiRegisterCpuFeaturesLib.c | 390 ++++++++++ .../PeiRegisterCpuFeaturesLib.inf | 64 ++ .../RegisterCpuFeaturesLib/RegisterCpuFeatures.h | 193 +++++ .../RegisterCpuFeaturesDxe.uni | 22 + .../RegisterCpuFeaturesLib.c | 770 +++++++++++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c | 30 +- UefiCpuPkg/UefiCpuPkg.dec | 50 +- UefiCpuPkg/UefiCpuPkg.dsc | 14 +- 60 files changed, 6497 insertions(+), 61 deletions(-) create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.c create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.inf create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.uni create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesDxeExtra.uni create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesPei.c create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesPei.inf create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesPei.uni create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesPeiExtra.uni create mode 100644 UefiCpuPkg/Include/Guid/CpuFeaturesInitDone.h create mode 100644 UefiCpuPkg/Include/Guid/CpuFeaturesSetDone.h create mode 100644 UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/Aesni.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/C1e.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/ClockModulation.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeatures.h create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.uni create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/Eist.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/ExecuteDisable.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/FastStrings.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/FeatureControl.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/LimitCpuIdMaxval.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/MachineCheck.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/MonitorMwait.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/PendingBreak.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/X2Apic.c create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.c create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.inf create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.inf create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesDxe.uni create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c -- 2.9.3.windows.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel