Hi, Thanks to all the reviewers helping through this patch series. Each individual patch has received a reviewed-by tag. Should I send out a v5 that adds the final 3 reviewed-by tags based on latest top of master? If not, could one of the maintainers help to merge these patches into the mainline? Just for reference, the final 3 reviewed-by tags are here: #11: Re: [PATCH v4 11/20] MdeModulePkg: SmmSmiHandlerProfileLib: Support StandaloneMm Instance (groups.io) #18: Re: [PATCH v4 18/20] UefiCpuPkg: CpuIo2Smm: Abstract SMM specific functions into separate file (groups.io) #19: Re: [PATCH v4 19/20] UefiCpuPkg: CpuIo2Smm: Support of CpuIo driver under StandaloneMm (groups.io) Please let me know if there is anything needed from me to merge in these patches. Thanks in advance! Regards, Kun From: Kun Qin Sent: Tuesday, January 26, 2021 11:45 To: devel@edk2.groups.io Cc: Bob Feng; Yuwei Chen; Jian J Wang; Hao A Wu; Eric Dong; Dandan Bi; Liming Gao; Michael D Kinney; Zhiguang Liu; Ray Ni; Jiewen Yao; Qi Zhang; Rahul Kumar; Ard Biesheuvel; Sami Mujawar; Supreeth Venkatesh; Laszlo Ersek Subject: [edk2-devel] [PATCH v4 00/20] Extends Support of MM_STANDALONE Type Modules to X64 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3129 This patch series is a follow up of previous submission: https://edk2.groups.io/g/devel/message/70329 These module changes are validated on two different physical platforms. Standalone and traditional MM are both tested to be functional on these systems. v4 patches mainly focus on feedback for reviewed commits in v3 patches, including: a. Adding "Reviewed-by" tags for applicable patches; b. Breaking CpuIo2Smm patch for file renaming and abstraction purpose; c. Adding SmmSmiHandlerProfileLib coverage; Patch v4 branch: https://github.com/kuqin12/edk2/tree/standalone_x64_v4 Cc: Bob Feng Cc: Yuwei Chen Cc: Jian J Wang Cc: Hao A Wu Cc: Eric Dong Cc: Dandan Bi Cc: Liming Gao Cc: Michael D Kinney Cc: Zhiguang Liu Cc: Ray Ni Cc: Jiewen Yao Cc: Qi Zhang Cc: Rahul Kumar Cc: Ard Biesheuvel Cc: Sami Mujawar Cc: Supreeth Venkatesh Cc: Laszlo Ersek Kun Qin (20): BaseTools: Ecc/exception: Added _ModuleEntryPoint into exception list StandaloneMmPkg: StandaloneMmCoreEntryPoint: Extends support for X64 StandaloneMmPkg: StandaloneMmCoreHobLib: Extend support for x64 Mm Core StandaloneMmPkg: StandaloneMmCoreMemoryAllocationLib: Fix compiler warning StandaloneMmPkg: StandaloneMmMemLib: Extends support for X64 architecture MdeModulePkg: SmmLockBoxSmmLib: Support StandaloneMm for SmmLockBoxLib MdeModulePkg: SmmReportStatusCodeLib: ReportStatusCodeLib in StandaloneMm MdeModulePkg: StatusCodeHandler: StatusCodeHandler driver in StandaloneMm MdeModulePkg: FirmwarePerformanceDataTable: Added StandaloneMm support MdeModulePkg: ReportStatusCodeRouter: Support StandaloneMm RSC Router MdeModulePkg: SmmSmiHandlerProfileLib: Support StandaloneMm Instance MdePkg: UefiDevicePathLib: Support UefiDevicePathLib under StandaloneMm PcAtChipsetPkg: AcpiTimerLib: Added StandaloneMm instance of AcpiTimerLib SecurityPkg: Tcg2PhysicalPresenceLib: Introduce StandaloneMm instance SecurityPkg: Tcg2PpVendorLibNull: Added support for MM_STANDALONE type SecurityPkg: Tpm2DeviceLibDTpm: Introduce StandaloneMm instance UefiCpuPkg: CpuIo2Smm: Move CpuIo2Smm driver to consume gMmst UefiCpuPkg: CpuIo2Smm: Abstract SMM specific functions into separate file UefiCpuPkg: CpuIo2Smm: Support of CpuIo driver under StandaloneMm UefiCpuPkg: SmmCpuExceptionHandlerLib: Added StandaloneMm module support MdeModulePkg/Library/SmmLockBoxLib/{SmmLockBoxSmmLib.c => SmmLockBoxMmLib.c} | 82 ++--- MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxStandaloneMmLib.c | 53 +++ MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxTraditionalMmLib.c | 53 +++ MdeModulePkg/Library/SmmReportStatusCodeLib/ReportStatusCodeLib.c | 16 +- MdeModulePkg/Library/SmmReportStatusCodeLib/ReportStatusCodeLibStandaloneMm.c | 38 ++ MdeModulePkg/Library/SmmReportStatusCodeLib/ReportStatusCodeLibTraditional.c | 38 ++ MdeModulePkg/Library/SmmSmiHandlerProfileLib/{SmmSmiHandlerProfileLib.c => MmSmiHandlerProfileLib.c} | 20 +- MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.c | 90 +---- MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandlerProfileLib.c | 31 ++ MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/{FirmwarePerformanceSmm.c => FirmwarePerformanceCommon.c} | 76 ++-- MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceStandaloneMm.c | 61 ++++ MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceTraditional.c | 61 ++++ MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/{ReportStatusCodeRouterSmm.c => ReportStatusCodeRouterCommon.c} | 59 ++- MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.c | 33 ++ MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterTraditional.c | 33 ++ MdeModulePkg/Universal/StatusCodeHandler/Smm/MemoryStatusCodeWorker.c | 36 +- MdeModulePkg/Universal/StatusCodeHandler/Smm/SerialStatusCodeWorker.c | 2 +- MdeModulePkg/Universal/StatusCodeHandler/Smm/{StatusCodeHandlerSmm.c => StatusCodeHandlerMm.c} | 23 +- MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c | 31 ++ MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c | 31 ++ MdePkg/Library/UefiDevicePathLib/DevicePathUtilities.c | 33 -- MdePkg/Library/UefiDevicePathLib/DevicePathUtilitiesDxeSmm.c | 51 +++ MdePkg/Library/UefiDevicePathLib/DevicePathUtilitiesStandaloneMm.c | 40 ++ PcAtChipsetPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.c | 81 +--- PcAtChipsetPkg/Library/AcpiTimerLib/{DxeAcpiTimerLib.c => DxeStandaloneMmAcpiTimerLib.c} | 9 +- PcAtChipsetPkg/Library/AcpiTimerLib/StandaloneMmAcpiTimerLib.c | 31 ++ SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/{SmmTcg2PhysicalPresenceLib.c => MmTcg2PhysicalPresenceLibCommon.c} | 33 +- SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/SmmTcg2PhysicalPresenceLib.c | 368 +------------------ SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/StandaloneMmTcg2PhysicalPresenceLib.c | 42 +++ SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpm.c | 42 +-- SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpmBase.c | 68 ++++ SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpmStandaloneMm.c | 66 ++++ SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2InstanceLibDTpm.c | 40 +- SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2Ptp.c | 15 +- StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/X64/StandaloneMmCoreEntryPoint.c | 71 ++++ StandaloneMmPkg/Library/StandaloneMmCoreHobLib/{ => AArch64}/StandaloneMmCoreHobLib.c | 272 -------------- StandaloneMmPkg/Library/StandaloneMmCoreHobLib/Common.c | 291 +++++++++++++++ StandaloneMmPkg/Library/StandaloneMmCoreHobLib/X64/StandaloneMmCoreHobLib.c | 298 +++++++++++++++ StandaloneMmPkg/Library/StandaloneMmCoreMemoryAllocationLib/StandaloneMmCoreMemoryAllocationLib.c | 6 +- StandaloneMmPkg/Library/StandaloneMmMemLib/AArch64/StandaloneMmMemLibInternal.c | 27 ++ StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib.c | 52 +++ StandaloneMmPkg/Library/StandaloneMmMemLib/X86StandaloneMmMemLibInternal.c | 155 ++++++++ UefiCpuPkg/CpuIo2Smm/{CpuIo2Smm.c => CpuIo2Mm.c} | 17 +- UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.c | 385 +------------------- UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.c | 32 ++ BaseTools/Source/Python/Ecc/exception.xml | 4 + MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxLibPrivate.h | 25 ++ MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf | 15 +- MdeModulePkg/Library/SmmLockBoxLib/{SmmLockBoxSmmLib.inf => SmmLockBoxStandaloneMmLib.inf} | 26 +- MdeModulePkg/Library/SmmReportStatusCodeLib/ReportStatusCodeLib.h | 36 ++ MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf | 4 +- MdeModulePkg/Library/SmmReportStatusCodeLib/{SmmReportStatusCodeLib.inf => StandaloneMmReportStatusCodeLib.inf} | 22 +- MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfileLib.h | 23 ++ MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.inf | 4 +- MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandlerProfileLib.inf | 44 +++ MdeModulePkg/MdeModulePkg.dsc | 8 + MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceCommon.h | 50 +++ MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceSmm.inf | 11 +- MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/{FirmwarePerformanceSmm.inf => FirmwarePerformanceStandaloneMm.inf} | 31 +- MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/{ReportStatusCodeRouterSmm.h => ReportStatusCodeRouterCommon.h} | 46 ++- MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf | 13 +- MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.inf | 49 +++ MdeModulePkg/Universal/StatusCodeHandler/Smm/{StatusCodeHandlerSmm.h => StatusCodeHandlerMm.h} | 23 +- MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf | 15 +- MdeModulePkg/Universal/StatusCodeHandler/Smm/{StatusCodeHandlerSmm.inf => StatusCodeHandlerStandaloneMm.inf} | 32 +- MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf | 1 + MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibOptionalDevicePathProtocol.inf | 1 + MdePkg/Library/UefiDevicePathLib/{UefiDevicePathLib.inf => UefiDevicePathLibStandaloneMm.inf} | 11 +- MdePkg/MdePkg.dsc | 1 + PcAtChipsetPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf | 2 + PcAtChipsetPkg/Library/AcpiTimerLib/DxeStandaloneMmAcpiTimerLib.h | 24 ++ PcAtChipsetPkg/Library/AcpiTimerLib/{DxeAcpiTimerLib.inf => StandaloneMmAcpiTimerLib.inf} | 19 +- PcAtChipsetPkg/PcAtChipsetPkg.dsc | 1 + SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/MmTcg2PhysicalPresenceLibCommon.h | 34 ++ SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/SmmTcg2PhysicalPresenceLib.inf | 6 +- SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/{SmmTcg2PhysicalPresenceLib.inf => StandaloneMmTcg2PhysicalPresenceLib.inf} | 22 +- SecurityPkg/Library/Tcg2PpVendorLibNull/Tcg2PpVendorLibNull.inf | 2 +- SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpm.h | 67 ++++ SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpm.inf | 3 + SecurityPkg/Library/Tpm2DeviceLibDTpm/{Tpm2DeviceLibDTpm.inf => Tpm2DeviceLibDTpmStandaloneMm.inf} | 13 +- SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2InstanceLibDTpm.inf | 3 + SecurityPkg/SecurityPkg.dsc | 3 + StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreEntryPoint.inf | 3 + StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCoreHobLib.inf | 11 +- StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib.inf | 13 +- UefiCpuPkg/CpuIo2Smm/{CpuIo2Smm.h => CpuIo2Mm.h} | 14 +- UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf | 5 +- UefiCpuPkg/CpuIo2Smm/{CpuIo2Smm.inf => CpuIo2StandaloneMm.inf} | 24 +- UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf | 2 +- UefiCpuPkg/UefiCpuPkg.dsc | 6 + 90 files changed, 2503 insertions(+), 1661 deletions(-) rename MdeModulePkg/Library/SmmLockBoxLib/{SmmLockBoxSmmLib.c => SmmLockBoxMmLib.c} (89%) create mode 100644 MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxStandaloneMmLib.c create mode 100644 MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxTraditionalMmLib.c create mode 100644 MdeModulePkg/Library/SmmReportStatusCodeLib/ReportStatusCodeLibStandaloneMm.c create mode 100644 MdeModulePkg/Library/SmmReportStatusCodeLib/ReportStatusCodeLibTraditional.c copy MdeModulePkg/Library/SmmSmiHandlerProfileLib/{SmmSmiHandlerProfileLib.c => MmSmiHandlerProfileLib.c} (86%) create mode 100644 MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandlerProfileLib.c rename MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/{FirmwarePerformanceSmm.c => FirmwarePerformanceCommon.c} (75%) create mode 100644 MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceStandaloneMm.c create mode 100644 MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceTraditional.c rename MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/{ReportStatusCodeRouterSmm.c => ReportStatusCodeRouterCommon.c} (74%) create mode 100644 MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.c create mode 100644 MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterTraditional.c rename MdeModulePkg/Universal/StatusCodeHandler/Smm/{StatusCodeHandlerSmm.c => StatusCodeHandlerMm.c} (69%) create mode 100644 MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c create mode 100644 MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c create mode 100644 MdePkg/Library/UefiDevicePathLib/DevicePathUtilitiesDxeSmm.c create mode 100644 MdePkg/Library/UefiDevicePathLib/DevicePathUtilitiesStandaloneMm.c copy PcAtChipsetPkg/Library/AcpiTimerLib/{DxeAcpiTimerLib.c => DxeStandaloneMmAcpiTimerLib.c} (86%) create mode 100644 PcAtChipsetPkg/Library/AcpiTimerLib/StandaloneMmAcpiTimerLib.c copy SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/{SmmTcg2PhysicalPresenceLib.c => MmTcg2PhysicalPresenceLibCommon.c} (90%) create mode 100644 SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/StandaloneMmTcg2PhysicalPresenceLib.c create mode 100644 SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpmBase.c create mode 100644 SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpmStandaloneMm.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/X64/StandaloneMmCoreEntryPoint.c rename StandaloneMmPkg/Library/StandaloneMmCoreHobLib/{ => AArch64}/StandaloneMmCoreHobLib.c (55%) create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreHobLib/Common.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmCoreHobLib/X64/StandaloneMmCoreHobLib.c create mode 100644 StandaloneMmPkg/Library/StandaloneMmMemLib/X86StandaloneMmMemLibInternal.c copy UefiCpuPkg/CpuIo2Smm/{CpuIo2Smm.c => CpuIo2Mm.c} (93%) create mode 100644 UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.c copy MdeModulePkg/Library/SmmLockBoxLib/{SmmLockBoxSmmLib.inf => SmmLockBoxStandaloneMmLib.inf} (52%) create mode 100644 MdeModulePkg/Library/SmmReportStatusCodeLib/ReportStatusCodeLib.h copy MdeModulePkg/Library/SmmReportStatusCodeLib/{SmmReportStatusCodeLib.inf => StandaloneMmReportStatusCodeLib.inf} (56%) create mode 100644 MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfileLib.h create mode 100644 MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandlerProfileLib.inf create mode 100644 MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceCommon.h copy MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/{FirmwarePerformanceSmm.inf => FirmwarePerformanceStandaloneMm.inf} (65%) rename MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/{ReportStatusCodeRouterSmm.h => ReportStatusCodeRouterCommon.h} (72%) create mode 100644 MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterStandaloneMm.inf rename MdeModulePkg/Universal/StatusCodeHandler/Smm/{StatusCodeHandlerSmm.h => StatusCodeHandlerMm.h} (87%) copy MdeModulePkg/Universal/StatusCodeHandler/Smm/{StatusCodeHandlerSmm.inf => StatusCodeHandlerStandaloneMm.inf} (62%) copy MdePkg/Library/UefiDevicePathLib/{UefiDevicePathLib.inf => UefiDevicePathLibStandaloneMm.inf} (79%) create mode 100644 PcAtChipsetPkg/Library/AcpiTimerLib/DxeStandaloneMmAcpiTimerLib.h copy PcAtChipsetPkg/Library/AcpiTimerLib/{DxeAcpiTimerLib.inf => StandaloneMmAcpiTimerLib.inf} (70%) create mode 100644 SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/MmTcg2PhysicalPresenceLibCommon.h copy SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/{SmmTcg2PhysicalPresenceLib.inf => StandaloneMmTcg2PhysicalPresenceLib.inf} (64%) create mode 100644 SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpm.h copy SecurityPkg/Library/Tpm2DeviceLibDTpm/{Tpm2DeviceLibDTpm.inf => Tpm2DeviceLibDTpmStandaloneMm.inf} (70%) rename UefiCpuPkg/CpuIo2Smm/{CpuIo2Smm.h => CpuIo2Mm.h} (93%) copy UefiCpuPkg/CpuIo2Smm/{CpuIo2Smm.inf => CpuIo2StandaloneMm.inf} (56%) -- 2.30.0.windows.1