Re: [edk2] [PATCH v2 09/17] MdePkg: introduce standalone MM entry point library class
On Wed, 16 Jan 2019 at 15:56, Gao, Liming 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 ; edk2-devel@lists.01.org > > Cc: Wu, Hao A ; Gao, Liming ; > > Kinney, Michael D ; Laszlo > > Ersek ; Zeng, Star > > 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 > > > --- > > > 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 ..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. > > > +Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. > > > +Copyright (c) 2018, Linaro, Limited. All rights reserved. > > > + > > > +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. > &
Re: [edk2] [PATCH v2 09/17] MdePkg: introduce standalone MM entry point library class
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 ; edk2-devel@lists.01.org > Cc: Wu, Hao A ; Gao, Liming ; > Kinney, Michael D ; Laszlo > Ersek ; Zeng, Star > 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 > > --- > > 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 ..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. > > +Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. > > +Copyright (c) 2018, Linaro, Limited. All rights reserved. > > + > > +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 pa
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 --- 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 ..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. +Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. +Copyright (c) 2018, Linaro, Limited. All rights reserved. + +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 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
[edk2] [PATCH v2 09/17] MdePkg: introduce standalone MM entry point library class
Add the library interface for the standalone MM driver entry point. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- 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 ..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. +Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. +Copyright (c) 2018, Linaro, Limited. All rights reserved. + +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. + If _gDriverUnloadImageCount is greater + than zero, then an unload handler must be registered for this image and + the unload handler must invoke ProcessModuleUnloadList(). + If _gMmRevision is not zero and SystemTable->Hdr.Revision is + less than _gUefiDriverRevison, then return EFI_INCOMPATIBLE_VERSION. + + @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. + @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