Public branch: <https://github.com/mdkinney/edk2/tree/AddSmmUefiCpuPkg_V2>
Changes from PATCH v1 to PATCH v2: 1) Fix CRLF line ending issues reported by Laszlo 2) Break up into a larger set of smaller patches 3) Remove APState field from ACPI_CPU_DATA structure 4) Use module type specific CpuExceptionHandlerLib in DSC file instead of Null library instance 5) Swap PTE init order for QEMU compatibility. Current PTE initialization algorithm works on HW but breaks QEMU emulator. Update the PTE initialization order to be compatible with both. 6) Update comment block that describes 32KB SMBASE alignment requirement to match contents of Intel(R) 64 and IA-32 Architectures Software Developer's Manual 7) Remove BUGBUG comment and call to ClearSmi() that is not required. SMI should be cleared by root SMI handler. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <[email protected]> Cc: Laszlo Ersek <[email protected]> Cc: Paolo Bonzini <[email protected]> Michael Kinney (16): UefiCpuPkg: Add Cpuid.h include files for CPUID related defines UefiCpuPkg: Update CPU MP drivers to support single CPU configuration UefiCpuPkg: Add SMM Communication PPI and Handler Modules UefiCpuPkg: Add PlatformSecLib UefiCpuPkg: Add SecCore module UefiCpuPkg: Add SecCore module and supporting library class and PCD UefiCpuPkg: Add SmmCpuFeaturesLib UefiCpuPkg: Add SmmCpuPlatformHookLib UefiCpuPkg: Add SMM CPU Service Protocol UefiCpuPkg: Add SMRAM Save State include file UefiCpuPkg: Add ACPI CPU Data include file UefiCpuPkg: Add CPU Hot Plug Data include file UefiCpuPkg: Update DEC/DSC files for new includes and libraries UefiCpuPkg: Add PiSmmCpuDxeSmm module no IA32/X64 files UefiCpuPkg: Add PiSmmCpuDxeSmm module IA32 files UefiCpuPkg: Add PiSmmCpuDxeSmm module X64 files UefiCpuPkg/CpuDxe/CpuMp.c | 49 +- UefiCpuPkg/CpuMpPei/CpuMpPei.c | 34 +- UefiCpuPkg/CpuMpPei/CpuMpPei.h | 1 + UefiCpuPkg/Include/AcpiCpuData.h | 71 + UefiCpuPkg/Include/CpuHotPlugData.h | 33 + UefiCpuPkg/Include/Library/PlatformSecLib.h | 70 + UefiCpuPkg/Include/Library/SmmCpuFeaturesLib.h | 366 +++++ UefiCpuPkg/Include/Library/SmmCpuPlatformHookLib.h | 109 ++ UefiCpuPkg/Include/Protocol/SmmCpuService.h | 209 +++ UefiCpuPkg/Include/Register/Cpuid.h | 51 + UefiCpuPkg/Include/Register/LocalApic.h | 13 - UefiCpuPkg/Include/Register/SmramSaveStateMap.h | 190 +++ UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c | 1 + .../BaseXApicX2ApicLib/BaseXApicX2ApicLib.c | 1 + .../PlatformSecLibNull/PlatformSecLibNull.c | 90 ++ .../PlatformSecLibNull/PlatformSecLibNull.inf | 37 + .../PlatformSecLibNull/PlatformSecLibNull.uni | Bin 0 -> 1646 bytes .../Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c | 559 ++++++++ .../SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf | 39 + .../SmmCpuFeaturesLib/SmmCpuFeaturesLib.uni | Bin 0 -> 1674 bytes .../SmmCpuPlatformHookLibNull.c | 108 ++ .../SmmCpuPlatformHookLibNull.inf | 40 + .../SmmCpuPlatformHookLibNull.uni | Bin 0 -> 1606 bytes .../PiSmmCommunication/PiSmmCommunicationPei.c | 425 ++++++ .../PiSmmCommunication/PiSmmCommunicationPei.inf | 70 + .../PiSmmCommunication/PiSmmCommunicationPei.uni | Bin 0 -> 2066 bytes .../PiSmmCommunicationPeiExtra.uni | Bin 0 -> 1374 bytes .../PiSmmCommunication/PiSmmCommunicationPrivate.h | 30 + .../PiSmmCommunication/PiSmmCommunicationSmm.c | 269 ++++ .../PiSmmCommunication/PiSmmCommunicationSmm.inf | 82 ++ .../PiSmmCommunication/PiSmmCommunicationSmm.uni | Bin 0 -> 3004 bytes .../PiSmmCommunicationSmmExtra.uni | Bin 0 -> 1396 bytes UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c | 491 +++++++ UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c | 486 +++++++ UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.h | 181 +++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/MpFuncs.S | 165 +++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/MpFuncs.asm | 168 +++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c | 132 ++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/Semaphore.c | 45 + UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.S | 191 +++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.asm | 193 +++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.S | 911 ++++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.asm | 738 ++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.S | 84 ++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.asm | 94 ++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.c | 80 ++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.h | 97 ++ UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 1327 +++++++++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c | 1489 ++++++++++++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h | 638 +++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 159 +++ UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.uni | Bin 0 -> 1868 bytes UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmmExtra.uni | Bin 0 -> 1382 bytes UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c | 1441 +++++++++++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.h | 132 ++ UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfileInternal.h | 172 +++ UefiCpuPkg/PiSmmCpuDxeSmm/SmramSaveState.c | 672 +++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/SyncTimer.c | 116 ++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.S | 204 +++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.asm | 206 +++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c | 692 +++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/Semaphore.c | 64 + UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.S | 217 +++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.asm | 221 +++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S | 610 ++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.asm | 413 ++++++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.S | 141 ++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.asm | 132 ++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.c | 316 +++++ UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.h | 105 ++ UefiCpuPkg/SecCore/FindPeiCore.c | 198 +++ UefiCpuPkg/SecCore/Ia32/ResetVec.asm16 | 106 ++ UefiCpuPkg/SecCore/Ia32/ResetVec.nasmb | 103 ++ UefiCpuPkg/SecCore/SecCore.inf | 72 + UefiCpuPkg/SecCore/SecCore.uni | Bin 0 -> 2908 bytes UefiCpuPkg/SecCore/SecCoreExtra.uni | Bin 0 -> 1320 bytes UefiCpuPkg/SecCore/SecMain.c | 295 ++++ UefiCpuPkg/SecCore/SecMain.h | 109 ++ UefiCpuPkg/UefiCpuPkg.dec | 122 +- UefiCpuPkg/UefiCpuPkg.dsc | 34 +- UefiCpuPkg/UefiCpuPkg.uni | Bin 6628 -> 22066 bytes 81 files changed, 17452 insertions(+), 57 deletions(-) create mode 100644 UefiCpuPkg/Include/AcpiCpuData.h create mode 100644 UefiCpuPkg/Include/CpuHotPlugData.h create mode 100644 UefiCpuPkg/Include/Library/PlatformSecLib.h create mode 100644 UefiCpuPkg/Include/Library/SmmCpuFeaturesLib.h create mode 100644 UefiCpuPkg/Include/Library/SmmCpuPlatformHookLib.h create mode 100644 UefiCpuPkg/Include/Protocol/SmmCpuService.h create mode 100644 UefiCpuPkg/Include/Register/Cpuid.h create mode 100644 UefiCpuPkg/Include/Register/SmramSaveStateMap.h create mode 100644 UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNull.c create mode 100644 UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNull.inf create mode 100644 UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNull.uni create mode 100644 UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c create mode 100644 UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf create mode 100644 UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.uni create mode 100644 UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c create mode 100644 UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf create mode 100644 UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.uni create mode 100644 UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.c create mode 100644 UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf create mode 100644 UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.uni create mode 100644 UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPeiExtra.uni create mode 100644 UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPrivate.h create mode 100644 UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.c create mode 100644 UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf create mode 100644 UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.uni create mode 100644 UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmmExtra.uni create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.h create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/MpFuncs.S create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/MpFuncs.asm create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/Semaphore.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.S create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.asm create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.S create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.asm create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.S create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.asm create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.h create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.uni create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmmExtra.uni create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.h create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfileInternal.h create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/SmramSaveState.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/SyncTimer.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.S create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.asm create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/Semaphore.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.S create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.asm create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.asm create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.S create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.asm create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.c create mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.h create mode 100644 UefiCpuPkg/SecCore/FindPeiCore.c create mode 100644 UefiCpuPkg/SecCore/Ia32/ResetVec.asm16 create mode 100644 UefiCpuPkg/SecCore/Ia32/ResetVec.nasmb create mode 100644 UefiCpuPkg/SecCore/SecCore.inf create mode 100644 UefiCpuPkg/SecCore/SecCore.uni create mode 100644 UefiCpuPkg/SecCore/SecCoreExtra.uni create mode 100644 UefiCpuPkg/SecCore/SecMain.c create mode 100644 UefiCpuPkg/SecCore/SecMain.h -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

