Ard: I have no other comment for the changes in MdePkg. You can add my R-B for MdePkg. Besides, I have updated our internal platform too consume new MmServicesTableLib.
Thanks Liming > -----Original Message----- > From: Zeng, Star > Sent: Wednesday, January 16, 2019 2:32 PM > To: Ard Biesheuvel <ard.biesheu...@linaro.org>; edk2-devel@lists.01.org > Cc: Wu, Hao A <hao.a...@intel.com>; Gao, Liming <liming....@intel.com>; > Kinney, Michael D <michael.d.kin...@intel.com>; Laszlo > Ersek <ler...@redhat.com>; Zeng, Star <star.z...@intel.com> > Subject: Re: [edk2] [PATCH v2 09/17] MdePkg: introduce standalone MM entry > point library class > > On 2019/1/14 21:27, Ard Biesheuvel wrote: > > Add the library interface for the standalone MM driver entry point. > > > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> > > --- > > MdePkg/MdePkg.dec | 3 + > > MdePkg/Include/Library/StandaloneMmDriverEntryPoint.h | 134 > > ++++++++++++++++++++ > > 2 files changed, 137 insertions(+) > > > > diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec > > index a7383b6daafb..a4854083105d 100644 > > --- a/MdePkg/MdePkg.dec > > +++ b/MdePkg/MdePkg.dec > > @@ -247,6 +247,9 @@ [LibraryClasses] > > # Only available to MM_STANDALONE, SMM/DXE Combined and > > SMM module types. > > MmServicesTableLib|Include/Library/MmServicesTableLib.h > > > > + ## @libraryclass Module entry point library for standalone MM drivers. > > + > > StandaloneMmDriverEntryPoint|Include/Library/StandaloneMmDriverEntryPoint.h > > + > > [LibraryClasses.IA32, LibraryClasses.X64] > > ## @libraryclass Abstracts both S/W SMI generation and detection. > > ## > > diff --git a/MdePkg/Include/Library/StandaloneMmDriverEntryPoint.h > > b/MdePkg/Include/Library/StandaloneMmDriverEntryPoint.h > > new file mode 100644 > > index 000000000000..d08a73303dbb > > --- /dev/null > > +++ b/MdePkg/Include/Library/StandaloneMmDriverEntryPoint.h > > @@ -0,0 +1,134 @@ > > +/** @file > > + Module entry point library for Standalone MM Drivers. > > + > > +Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR> > > +Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.<BR> > > +Copyright (c) 2018, Linaro, Limited. All rights reserved.<BR> > > + > > +This program and the accompanying materials are licensed and made available > > +under the terms and conditions of the BSD License which accompanies this > > +distribution. The full text of the license may be found at > > +http://opensource.org/licenses/bsd-license.php > > + > > +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > > +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR > > IMPLIED. > > + > > +**/ > > + > > +#ifndef __MODULE_ENTRY_POINT_H__ > > +#define __MODULE_ENTRY_POINT_H__ > > + > > +/// > > +/// Declare the PI Specification Revision that this driver requires to > > execute > > +/// correctly. > > +/// > > +extern CONST UINT32 _gMmRevision; > > + > > +/** > > + The entry point of PE/COFF Image for a Standalone MM Driver. > > + > > + This function is the entry point for a Standalone MM Driver. > > + This function must call ProcessLibraryConstructorList() and > > + ProcessModuleEntryPointList(). > > + If the return status from ProcessModuleEntryPointList() > > + is an error status, then ProcessLibraryDestructorList() must be called. > > + The return value from ProcessModuleEntryPointList() is returned. > > noop > > > + If _gDriverUnloadImageCount is greater > > + than zero, then an unload handler must be registered for this image and > > + the unload handler must invoke ProcessModuleUnloadList(). > > This block could be removed. > > > + If _gMmRevision is not zero and SystemTable->Hdr.Revision is > > SystemTable should be MmSystemTable. > > > + less than _gUefiDriverRevison, then return EFI_INCOMPATIBLE_VERSION. > > _gUefiDriverRevison should be _gMmRevision. > > > + > > + @param ImageHandle The image handle of the Standalone MM Driver. > > + @param SystemTable A pointer to the EFI System Table. > > + > > + @retval EFI_SUCCESS The Standalone MM Driver exited > > normally. > > + @retval EFI_INCOMPATIBLE_VERSION _gMmRevision is greater than > > + SystemTable->Hdr.Revision. > > SystemTable should be MmSystemTable. > > These feedback may be also applied to the implementation in next patch. > > With them handled, Acked-by: Star Zeng <star.z...@intel.com> to this and > next patches. > > Thanks, > Star > > > > + @retval Other Return value from > > + ProcessModuleEntryPointList(). > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +_ModuleEntryPoint ( > > + IN EFI_HANDLE ImageHandle, > > + IN EFI_MM_SYSTEM_TABLE *MmSystemTable > > + ); > > + > > + > > +/** > > + Auto generated function that calls the library constructors for all of > > the > > + module's dependent libraries. > > + > > + This function must be called by _ModuleEntryPoint(). > > + This function calls the set of library constructors for the set of > > library > > + instances that a module depends on. This includes library instances > > that a > > + module depends on directly and library instances that a module depends on > > + indirectly through other libraries. This function is auto generated by > > build > > + tools and those build tools are responsible for collecting the set of > > library > > + instances, determine which ones have constructors, and calling the > > library > > + constructors in the proper order based upon each of the library > > instances own > > + dependencies. > > + > > + @param ImageHandle The image handle of the Standalone MM Driver. > > + @param SystemTable A pointer to the MM System Table. > > + > > +**/ > > +VOID > > +EFIAPI > > +ProcessLibraryConstructorList ( > > + IN EFI_HANDLE ImageHandle, > > + IN EFI_MM_SYSTEM_TABLE *MmSystemTable > > + ); > > + > > + > > +/** > > + Auto generated function that calls the library descructors for all of the > > + module's dependent libraries. > > + > > + This function may be called by _ModuleEntryPoint(). > > + This function calls the set of library destructors for the set of library > > + instances that a module depends on. This includes library instances that > > a > > + module depends on directly and library instances that a module depends on > > + indirectly through other libraries. > > + This function is auto generated by build tools and those build tools are > > + responsible for collecting the set of library instances, determine which > > ones > > + have destructors, and calling the library destructors in the proper order > > + based upon each of the library instances own dependencies. > > + > > + @param ImageHandle The image handle of the Standalone MM Driver. > > + @param SystemTable A pointer to the MM System Table. > > + > > +**/ > > +VOID > > +EFIAPI > > +ProcessLibraryDestructorList ( > > + IN EFI_HANDLE ImageHandle, > > + IN EFI_MM_SYSTEM_TABLE *MmSystemTable > > + ); > > + > > + > > +/** > > + Auto generated function that calls a set of module entry points. > > + > > + This function must be called by _ModuleEntryPoint(). > > + This function calls the set of module entry points. > > + This function is auto generated by build tools and those build tools are > > + responsible for collecting the module entry points and calling them in a > > + specified order. > > + > > + @param ImageHandle The image handle of the Standalone MM Driver. > > + @param SystemTable A pointer to the EFI System Table. > > + > > + @retval EFI_SUCCESS The Standalone MM Driver executed normally. > > + @retval !EFI_SUCCESS The Standalone MM Driver failed to execute > > normally. > > +**/ > > +EFI_STATUS > > +EFIAPI > > +ProcessModuleEntryPointList ( > > + IN EFI_HANDLE ImageHandle, > > + IN EFI_MM_SYSTEM_TABLE *MmSystemTable > > + ); > > + > > +#endif > > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel