diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c index 1e75328f9b..2b53cf8fc2 100644 --- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c +++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c @@ -57,6 +57,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include +#include #include #include "FaultTolerantWrite.h" #include "FaultTolerantWriteSmmCommon.h" @@ -417,6 +418,12 @@ SmmFaultTolerantWriteHandler ( &SmmFvbHandle ); if (!EFI_ERROR (Status)) { + // + // The AsmLfence() call here is to ensure the previous range/content + // checks for the CommBuffer have been completed before calling into + // FtwWrite(). + // + AsmLfence (); Status = FtwWrite( &mFtwDevice->FtwInstance, SmmFtwWriteHeader->Lba, diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf index 3b57c3cf64..ef7f773c82 100644 --- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf +++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf @@ -55,6 +55,7 @@ PcdLib ReportStatusCodeLib SmmMemLib + BaseLib [Guids] #