Hi Liming, On Thu, Nov 29, 2018 at 9:27 PM Gao, Liming <[email protected]> wrote: > > My comment is below. > > 1. Please don't update MemoryFence() implementation. It will impact all > consumer code. AsmLfence() is X86 specific API. You can implement the > internal function in the arch specific source file to call AsmLfence() for > X86 and call MemoryFence() for ARM. This internal function will be called in > the common logic. > 2. On StandaloneMmServicesTableLib.h, I suggest to add it into MdePkg, and > add StandaloneMmRuntimeDxe library into MdePkg. This library sets gMmst is > NULL, and always return FALSE in InMm(). > 3. On PcdStandaloneMmEnable, I also suggest to add it into MdePkg. It can be > used to control the driver logic in the different packages. > > With 2 & 3, other edk2 packages don't need to depend on > StandaloneMmPkg/StandaloneMmPkg.dec
Thank you for your comments. All your comments have been addressed and the next version of this patchset will include appropriate changes based on your comments. Regards, Jagadeesh. > > > -----Original Message----- > > From: Jagadeesh Ujja [mailto:[email protected]] > > Sent: Wednesday, November 28, 2018 5:35 PM > > To: [email protected]; Gao, Liming <[email protected]>; Zhang, > > Chao B <[email protected]>; [email protected]; > > [email protected] > > Subject: [RFC PATCH v3 00/11] Extend secure variable service to be usable > > from Standalone MM > > > > Changes since v2: > > - Added 'Contributed-under' tag, removed Change-ID tag and > > maintained a single signed-off-by for the all the patches. > > > > Changes since v1: > > - Addressed all the comments from Liming Gao > > - Removed the use of #ifdef/#else/#endif and used a Pcd instead to > > select between MM and non-MM paths. > > - Removed all dependencies on edk2-platforms. > > - Dropped the use of mMmst and used gSmst instead. > > - Added a dummy implementation UefiRuntimeServiceTableLib for > > MM_STANDALONE usage > > - Replaced all uses of AsmLfence with MemoryFence from variable > > service code. > > - Add a new StandaloneMmRuntimeDxe library to for use by non-MM code. > > > > This RFC patch series extends the existing secure variable service support > > for > > use with Standalone MM. This is applicable to paltforms that use Standalone > > Management Mode to protect access to non-volatile memory (NOR flash in case > > of these patches) used to store the secure EFI variables. > > > > The first patch pulls in additional libraries from the staging branch of > > StandaloneMmPkg into the edk2's StandaloneMmPkg. The existing secure > > variable > > service implementation supports only the traditional MM mode and so the rest > > of the patches extends the existing secure variable service support to be > > useable with Standalone MM mode as well. > > > > This patch series is being posted as an RFC to get feedback on the approach > > taken > > in these patches. > > > > Jagadeesh Ujja (11): > > MdeModulePkg/Variable: replace all uses of AsmLfence with MemoryFence > > StandaloneMmPkg: Pull in additonal libraries from staging branch > > MdeModulePkg/Library: Add StandaloneMmRuntimeDxe library > > ArmPlatformPkg/NorFlashDxe: allow reusability as a MM driver > > MdeModulePkg/FaultTolerantWriteDxe: allow reusability as a MM driver > > MdeModulePkg/Variable/RuntimeDxe: adapt for usability with MM > > Standalone > > MdeModulePkg/Variable/RuntimeDxe: adapt as a MM Standalone driver > > SecurityPkg/AuthVariableLib: allow MM_STANDALONE drivers to use this > > library > > MdeModulePkg/VarCheckLib: allow MM_STANDALONE drivers to use this > > library > > CryptoPkg/BaseCryptLib: allow MM_STANDALONE drivers to use this > > library > > CryptoPkg/BaseCryptLib: Hack to get time in MM Standalone mode > > > > ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf > > | 3 + > > ArmPlatformPkg/Drivers/NorFlashDxe/{NorFlashDxe.inf => > > NorFlashStandaloneMm.inf} > > | 28 +- > > CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf > > | 8 +- > > CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf > > | 5 + > > MdeModulePkg/Library/{VarCheckLib/VarCheckLib.inf => > > StandaloneMmRuntimeDxe/StandaloneMmRuntimeDxe.inf} > > | 22 +- > > MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf > > | 5 +- > > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf > > | 2 + > > MdeModulePkg/Universal/FaultTolerantWriteDxe/{FaultTolerantWriteDxe.inf => > > FaultTolerantWriteStandaloneMm.inf} | > > 53 +- > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf > > | 2 + > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf > > | 4 + > > MdeModulePkg/Universal/Variable/RuntimeDxe/{VariableRuntimeDxe.inf => > > VariableStandaloneMm.inf} > > | 107 ++- > > SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf > > | 5 +- > > StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCoreHobLib.inf > > | 2 +- > > StandaloneMmPkg/Library/{StandaloneMmCoreHobLib/StandaloneMmCoreHobLib.inf > > => > > StandaloneMmHobLib/StandaloneMmHobLib.inf} | 11 +- > > > > StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/StandaloneMmMemoryAllocationLib.inf > > | 45 ++ > > > > StandaloneMmPkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.inf > > | 36 + > > ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.h > > | 5 +- > > MdeModulePkg/Include/Library/StandaloneMmRuntimeDxe.h > > | 39 + > > StandaloneMmPkg/Include/Library/StandaloneMmServicesTableLib.h > > | 47 ++ > > ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashBlockIoDxe.c > > | 2 +- > > ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c > > | 211 ++++- > > ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c > > | 88 ++- > > CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c > > | 27 +- > > MdeModulePkg/Library/StandaloneMmRuntimeDxe/StandaloneMmRuntimeDxe.c > > | 36 + > > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c > > | 207 +++-- > > MdeModulePkg/Universal/FaultTolerantWriteDxe/UpdateWorkingBlock.c > > | 27 +- > > MdeModulePkg/Universal/Variable/RuntimeDxe/LoadFenceSmm.c > > | 2 +- > > MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c > > | 37 +- > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c > > | 201 ++++- > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c > > | 31 +- > > MdePkg/Library/BaseLib/X86MemoryFence.c > > | 2 +- > > > > StandaloneMmPkg/Library/StandaloneMmHobLib/AArch64/StandaloneMmCoreHobLibInternal.c > > | 64 ++ > > StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.c > > | 655 ++++++++++++++++ > > > > StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/StandaloneMmMemoryAllocationLib.c > > | 824 ++++++++++++++++++++ > > > > StandaloneMmPkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.c > > | 64 ++ > > 35 files changed, 2564 insertions(+), 343 deletions(-) > > copy ArmPlatformPkg/Drivers/NorFlashDxe/{NorFlashDxe.inf => > > NorFlashStandaloneMm.inf} (71%) > > copy MdeModulePkg/Library/{VarCheckLib/VarCheckLib.inf => > > StandaloneMmRuntimeDxe/StandaloneMmRuntimeDxe.inf} (51%) > > copy > > MdeModulePkg/Universal/FaultTolerantWriteDxe/{FaultTolerantWriteDxe.inf => > > FaultTolerantWriteStandaloneMm.inf} (54%) > > copy MdeModulePkg/Universal/Variable/RuntimeDxe/{VariableRuntimeDxe.inf => > > VariableStandaloneMm.inf} (54%) > > copy > > StandaloneMmPkg/Library/{StandaloneMmCoreHobLib/StandaloneMmCoreHobLib.inf > > => > > StandaloneMmHobLib/StandaloneMmHobLib.inf} (79%) > > create mode 100644 > > StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/StandaloneMmMemoryAllocationLib.inf > > create mode 100644 > > StandaloneMmPkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.inf > > create mode 100644 MdeModulePkg/Include/Library/StandaloneMmRuntimeDxe.h > > create mode 100644 > > StandaloneMmPkg/Include/Library/StandaloneMmServicesTableLib.h > > create mode 100644 > > MdeModulePkg/Library/StandaloneMmRuntimeDxe/StandaloneMmRuntimeDxe.c > > create mode 100644 > > StandaloneMmPkg/Library/StandaloneMmHobLib/AArch64/StandaloneMmCoreHobLibInternal.c > > create mode 100644 > > StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.c > > create mode 100644 > > StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/StandaloneMmMemoryAllocationLib.c > > create mode 100644 > > StandaloneMmPkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.c > > > > -- > > 2.7.4 > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

