On Wed, 16 Jan 2019 at 15:56, Gao, Liming <[email protected]> wrote: > > 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. >
Thank you Liming. I will go through all Star's comments, and fix up the patches before pushing. What about the Quark and Vlv2 changes? (adding MmServicesTableLib) > > From: Zeng, Star > > Sent: Wednesday, January 16, 2019 2:32 PM > > To: Ard Biesheuvel <[email protected]>; [email protected] > > Cc: Wu, Hao A <[email protected]>; Gao, Liming <[email protected]>; > > Kinney, Michael D <[email protected]>; Laszlo > > Ersek <[email protected]>; Zeng, Star <[email protected]> > > 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 <[email protected]> > > > --- > > > 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 <[email protected]> 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 [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

