This series proposed an alternative approach to the series sent out by Jagadeesh [0]. In particular, it gets rid of the InMm() calls and the special PCD, as well as some other if() conditionals.
The primary difference is that this series defines and implements MmServicesTableLib in such a way that the traditional SMM drivers can use it as well. This is appropriate, considering that the PI spec has rebranded traditional SMM as one implementation of the generic MM framework. Patch #1 is based on Jagadeesh's patch, and introduces the MmServicesTableLib library class, but for all SMM flavours, not only for standalone MM. Patch #2 implements MmServicesTableLib for traditional SMM implementations. Patch #3 refactors FaultTolerantWriteDxe so that the parts of the SMM driver that invoke boot services are separated from the core SMM pieces. Patch #4 implements FaultTolerantWriteSmm for the standalone MM environment. Patches #5 and #6 do the same, respectively, for the variable runtime driver. This approach minimizes the delta, and thus the maintenance burden, between the traditional SMM and standalone MM drivers, while not resorting to runtime checks or other conditionals in the code to implement logic that should be decided at build time. Note that this series only covers part of the work contributed by Jagadeesh. This series focuses on the MdePkg and MdeModulePkg changes that affect shared code. Cc: Laszlo Ersek <ler...@redhat.com> Cc: Leif Lindholm <leif.lindh...@linaro.org> Cc: Michael D Kinney <michael.d.kin...@intel.com> Cc: Liming Gao <liming....@intel.com> Cc: Jian J Wang <jian.j.w...@intel.com> Cc: Hao Wu <hao.a...@intel.com> Cc: Jagadeesh Ujja <jagadeesh.u...@arm.com> Cc: Achin Gupta <achin.gu...@arm.com> Cc: Thomas Panakamattam Abraham <thomas.abra...@arm.com> Cc: Sami Mujawar <sami.muja...@arm.com> Ard Biesheuvel (5): MdePkg: implement MmServicesTableLib based on traditional SMM MdeModulePkg/FaultTolerantWriteDxe: factor out boot service accesses MdeModulePkg/FaultTolerantWriteDxe: implement standalone MM version MdeModulePkg/VariableRuntimeDxe: factor out boot service accesses MdeModulePkg/VariableRuntimeDxe: implement standalone MM version Jagadeesh Ujja (1): MdePkg/Include: add MmServicesTableLib header file MdeModulePkg/MdeModulePkg.dsc | 1 + .../FaultTolerantWrite.h | 22 ++- .../FaultTolerantWriteDxe.c | 31 ++++ .../FaultTolerantWriteSmm.c | 54 +++---- .../FaultTolerantWriteSmm.inf | 5 +- .../FaultTolerantWriteSmmCommon.h | 31 ++++ .../FaultTolerantWriteSmmDxe.c | 1 + .../FaultTolerantWriteStandaloneMm.c | 70 +++++++++ .../FaultTolerantWriteStandaloneMm.inf | 90 ++++++++++++ .../FaultTolerantWriteTraditionalMm.c | 94 ++++++++++++ .../UpdateWorkingBlock.c | 10 +- .../Variable/RuntimeDxe/TcgMorLockSmm.c | 18 +-- .../Universal/Variable/RuntimeDxe/Variable.h | 50 +++++++ .../Variable/RuntimeDxe/VariableSmm.c | 59 +++----- .../Variable/RuntimeDxe/VariableSmm.inf | 5 +- .../RuntimeDxe/VariableStandaloneMm.c | 69 +++++++++ .../RuntimeDxe/VariableStandaloneMm.inf | 135 ++++++++++++++++++ .../RuntimeDxe/VariableTraditionalMm.c | 114 +++++++++++++++ MdePkg/Include/Library/MmServicesTableLib.h | 25 ++++ .../MmServicesTableLib/MmServicesTableLib.c | 63 ++++++++ .../MmServicesTableLib/MmServicesTableLib.inf | 45 ++++++ .../MmServicesTableLib/MmServicesTableLib.uni | 22 +++ MdePkg/MdePkg.dec | 4 + MdePkg/MdePkg.dsc | 1 + 24 files changed, 916 insertions(+), 103 deletions(-) create mode 100644 MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.c create mode 100644 MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.inf create mode 100644 MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteTraditionalMm.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableTraditionalMm.c create mode 100644 MdePkg/Include/Library/MmServicesTableLib.h create mode 100644 MdePkg/Library/MmServicesTableLib/MmServicesTableLib.c create mode 100644 MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf create mode 100644 MdePkg/Library/MmServicesTableLib/MmServicesTableLib.uni -- 2.17.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel