Reviewed-by: [email protected] > -----Original Message----- > From: Zeng, Star > Sent: Friday, March 2, 2018 1:16 PM > To: [email protected] > Cc: Zeng, Star <[email protected]>; Yao, Jiewen <[email protected]> > Subject: [PATCH 2/3] MdeModulePkg PiSmmCore: Register SMI handler to install > S3SmmInitDone > > Cc: Jiewen Yao <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Star Zeng <[email protected]> > --- > MdeModulePkg/Core/PiSmmCore/PiSmmCore.c | 62 > ++++++++++++++++++++++++++++++- > MdeModulePkg/Core/PiSmmCore/PiSmmCore.h | 26 ++++++++++++- > MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf | 3 +- > 3 files changed, 88 insertions(+), 3 deletions(-) > > diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c > b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c > index d2f0207b5c83..686b9b45a556 100644 > --- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c > +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c > @@ -1,7 +1,7 @@ > /** @file > SMM Core Main Entry Point > > - Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR> > + Copyright (c) 2009 - 2018, Intel Corporation. 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 > @@ -87,6 +87,7 @@ SMM_CORE_SMI_HANDLERS mSmmCoreSmiHandlers[] > = { > { SmmExitBootServicesHandler, &gEfiEventExitBootServicesGuid, NULL, > FALSE }, > { SmmReadyToBootHandler, &gEfiEventReadyToBootGuid, > NULL, FALSE }, > { SmmEndOfDxeHandler, &gEfiEndOfDxeEventGroupGuid, > NULL, TRUE }, > + { SmmS3SmmInitDoneHandler, &gEdkiiS3SmmInitDoneGuid, > NULL, FALSE }, > { SmmEndOfS3ResumeHandler, &gEdkiiEndOfS3ResumeGuid, > NULL, FALSE }, > { NULL, NULL, > NULL, FALSE } > }; > @@ -472,6 +473,65 @@ SmmEndOfDxeHandler ( > } > > /** > + Software SMI handler that is called when the S3SmmInitDone signal is > triggered. > + This function installs the SMM S3SmmInitDone Protocol so SMM Drivers are > informed that > + S3 SMM initialization has been done. > + > + @param DispatchHandle The unique handle assigned to this handler by > SmiHandlerRegister(). > + @param Context Points to an optional handler context which > was specified when the handler was registered. > + @param CommBuffer A pointer to a collection of data in memory > that will > + be conveyed from a non-SMM environment into > an SMM environment. > + @param CommBufferSize The size of the CommBuffer. > + > + @return Status Code > + > +**/ > +EFI_STATUS > +EFIAPI > +SmmS3SmmInitDoneHandler ( > + IN EFI_HANDLE DispatchHandle, > + IN CONST VOID *Context, OPTIONAL > + IN OUT VOID *CommBuffer, OPTIONAL > + IN OUT UINTN *CommBufferSize OPTIONAL > + ) > +{ > + EFI_STATUS Status; > + EFI_HANDLE SmmHandle; > + > + DEBUG ((DEBUG_INFO, "SmmS3SmmInitDoneHandler\n")); > + > + if (!mDuringS3Resume) { > + DEBUG ((DEBUG_ERROR, "It is not during S3 resume\n")); > + return EFI_SUCCESS; > + } > + > + // > + // Install SMM S3SmmInitDone protocol > + // > + SmmHandle = NULL; > + Status = SmmInstallProtocolInterface ( > + &SmmHandle, > + &gEdkiiS3SmmInitDoneGuid, > + EFI_NATIVE_INTERFACE, > + NULL > + ); > + ASSERT_EFI_ERROR (Status); > + > + // > + // Uninstall the protocol here because the comsumer just hook the > + // installation event. > + // > + Status = SmmUninstallProtocolInterface ( > + SmmHandle, > + &gEdkiiS3SmmInitDoneGuid, > + NULL > + ); > + ASSERT_EFI_ERROR (Status); > + > + return Status; > +} > + > +/** > Software SMI handler that is called when the EndOfS3Resume signal is > triggered. > This function installs the SMM EndOfS3Resume Protocol so SMM Drivers are > informed that > S3 resume has finished. > diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h > b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h > index 8c10d833e2ae..2f6032646f46 100644 > --- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h > +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h > @@ -2,7 +2,7 @@ > The internal header file includes the common header files, defines > internal structure and functions used by SmmCore module. > > - Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR> > + Copyright (c) 2009 - 2018, Intel Corporation. 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 > @@ -42,6 +42,7 @@ > #include <Guid/LoadModuleAtFixedAddress.h> > #include <Guid/SmiHandlerProfile.h> > #include <Guid/EndOfS3Resume.h> > +#include <Guid/S3SmmInitDone.h> > > #include <Library/BaseLib.h> > #include <Library/BaseMemoryLib.h> > @@ -811,6 +812,29 @@ SmmReadyToBootHandler ( > ); > > /** > + Software SMI handler that is called when the S3SmmInitDone signal is > triggered. > + This function installs the SMM S3SmmInitDone Protocol so SMM Drivers are > informed that > + S3 SMM initialization has been done. > + > + @param DispatchHandle The unique handle assigned to this handler by > SmiHandlerRegister(). > + @param Context Points to an optional handler context which > was specified when the handler was registered. > + @param CommBuffer A pointer to a collection of data in memory > that will > + be conveyed from a non-SMM environment into > an SMM environment. > + @param CommBufferSize The size of the CommBuffer. > + > + @return Status Code > + > +**/ > +EFI_STATUS > +EFIAPI > +SmmS3SmmInitDoneHandler ( > + IN EFI_HANDLE DispatchHandle, > + IN CONST VOID *Context, OPTIONAL > + IN OUT VOID *CommBuffer, OPTIONAL > + IN OUT UINTN *CommBufferSize OPTIONAL > + ); > + > +/** > Software SMI handler that is called when the EndOfS3Resume event is > trigged. > This function installs the SMM EndOfS3Resume Protocol so SMM Drivers are > informed that > S3 resume has finished. > diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf > b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf > index 5c04e851f94b..09cffb879e6f 100644 > --- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf > +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf > @@ -1,7 +1,7 @@ > ## @file > # This module provide an SMM CIS compliant implementation of SMM Core. > # > -# Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR> > +# Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR> > # > # This program and the accompanying materials > # are licensed and made available under the terms and conditions of the BSD > License > @@ -124,6 +124,7 @@ [Guids] > ## SOMETIMES_PRODUCES ## GUID # SmiHandlerRegister > gSmiHandlerProfileGuid > gEdkiiEndOfS3ResumeGuid ## SOMETIMES_PRODUCES ## GUID # Install > protocol > + gEdkiiS3SmmInitDoneGuid ## SOMETIMES_PRODUCES ## GUID # Install > protocol > > [UserExtensions.TianoCore."ExtraFiles"] > PiSmmCoreExtra.uni > -- > 2.7.0.windows.1
_______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

