Reviewed-by: Michael Kinney <[email protected]>

> -----Original Message-----
> From: Yao, Jiewen
> Sent: Tuesday, November 24, 2015 5:00 AM
> To: [email protected]
> Cc: Yao, Jiewen <[email protected]>; Zeng, Star <[email protected]>; 
> Fan, Jeff <[email protected]>; Kinney, Michael D
> <[email protected]>
> Subject: [patch] MdeModulePkg/PiSmmIpl: Move CommunicationBuffer from stack 
> to global variable.
> 
> We had put communication buffer to Runtime memory,
> so that SMI handler can know it is not used by OS.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: "Yao, Jiewen" <[email protected]>
> Cc: "Zeng, Star" <[email protected]>
> Cc: "Fan, Jeff" <[email protected]>
> Cc: "Kinney, Michael D" <[email protected]>
> ---
>  MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c | 26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c 
> b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
> index c534ee3..50c3b34 100644
> --- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
> +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
> @@ -246,6 +246,8 @@ BOOLEAN                    mSmmLocked = FALSE;
>  EFI_PHYSICAL_ADDRESS       mSmramCacheBase;
>  UINT64                     mSmramCacheSize;
> 
> +EFI_SMM_COMMUNICATE_HEADER mCommunicateHeader;
> +
>  //
>  // Table of Protocol notification and GUIDed Event notifications that the 
> SMM IPL requires
>  //
> @@ -538,21 +540,20 @@ SmmIplGuidedEventNotify (
>    IN VOID       *Context
>    )
>  {
> -  EFI_SMM_COMMUNICATE_HEADER  CommunicateHeader;
>    UINTN                       Size;
> 
>    //
>    // Use Guid to initialize EFI_SMM_COMMUNICATE_HEADER structure
>    //
> -  CopyGuid (&CommunicateHeader.HeaderGuid, (EFI_GUID *)Context);
> -  CommunicateHeader.MessageLength = 1;
> -  CommunicateHeader.Data[0] = 0;
> +  CopyGuid (&mCommunicateHeader.HeaderGuid, (EFI_GUID *)Context);
> +  mCommunicateHeader.MessageLength = 1;
> +  mCommunicateHeader.Data[0] = 0;
> 
>    //
>    // Generate the Software SMI and return the result
>    //
> -  Size = sizeof (CommunicateHeader);
> -  SmmCommunicationCommunicate (&mSmmCommunication, &CommunicateHeader, 
> &Size);
> +  Size = sizeof (mCommunicateHeader);
> +  SmmCommunicationCommunicate (&mSmmCommunication, &mCommunicateHeader, 
> &Size);
>  }
> 
>  /**
> @@ -569,7 +570,6 @@ SmmIplDxeDispatchEventNotify (
>    IN VOID       *Context
>    )
>  {
> -  EFI_SMM_COMMUNICATE_HEADER  CommunicateHeader;
>    UINTN                       Size;
>    EFI_STATUS                  Status;
> 
> @@ -582,20 +582,20 @@ SmmIplDxeDispatchEventNotify (
>      // Clear the buffer passed into the Software SMI.  This buffer will 
> return
>      // the status of the SMM Core Dispatcher.
>      //
> -    CopyGuid (&CommunicateHeader.HeaderGuid, (EFI_GUID *)Context);
> -    CommunicateHeader.MessageLength = 1;
> -    CommunicateHeader.Data[0] = 0;
> +    CopyGuid (&mCommunicateHeader.HeaderGuid, (EFI_GUID *)Context);
> +    mCommunicateHeader.MessageLength = 1;
> +    mCommunicateHeader.Data[0] = 0;
> 
>      //
>      // Generate the Software SMI and return the result
>      //
> -    Size = sizeof (CommunicateHeader);
> -    SmmCommunicationCommunicate (&mSmmCommunication, &CommunicateHeader, 
> &Size);
> +    Size = sizeof (mCommunicateHeader);
> +    SmmCommunicationCommunicate (&mSmmCommunication, &mCommunicateHeader, 
> &Size);
> 
>      //
>      // Return if there is no request to restart the SMM Core Dispatcher
>      //
> -    if (CommunicateHeader.Data[0] != COMM_BUFFER_SMM_DISPATCH_RESTART) {
> +    if (mCommunicateHeader.Data[0] != COMM_BUFFER_SMM_DISPATCH_RESTART) {
>        return;
>      }
> 
> --
> 1.9.5.msysgit.0

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to