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

