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 v4 could be accessed at
https://github.com/JeffFan/edk2/tree/CpuFeaturesV4/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.
v3:
#9: Trim white space at end of line.
#10: Add AesniGetConfigData() to get current register state.
v4:
#3, #8, #9: Fix GCC complied issue.
Cc: Feng Tian <feng.tian@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@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 | 124 +++
UefiCpuPkg/Library/CpuCommonFeaturesLib/C1e.c | 79 ++
.../Library/CpuCommonFeaturesLib/ClockModulation.c | 106 +++
.../CpuCommonFeaturesLib/CpuCommonFeatures.h | 867 +++++++++++++++++++++
.../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 | 745 ++++++++++++++++++
.../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 | 31 +-
UefiCpuPkg/UefiCpuPkg.dec | 50 +-
UefiCpuPkg/UefiCpuPkg.dsc | 14 +-
60 files changed, 6541 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