diff options
author | lzeng14 <lzeng14@6f19259b-4bc3-4df7-8a09-765794883524> | 2012-09-14 06:54:35 +0000 |
---|---|---|
committer | lzeng14 <lzeng14@6f19259b-4bc3-4df7-8a09-765794883524> | 2012-09-14 06:54:35 +0000 |
commit | d26c7e82f2bf80dd2a64b61fee33a3f3f5e01d5a (patch) | |
tree | b6fd1300299f4041b03861ead824d9a5b19ccf6d /MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c | |
parent | 42ed76042a117057d819218164dd9cddff1ae7a0 (diff) | |
download | edk2-platforms-d26c7e82f2bf80dd2a64b61fee33a3f3f5e01d5a.tar.xz |
Fix the issue that FTW driver fail to reclaim WorkSpace.
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Hengyan Tao <hengyan.tao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13732 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c')
-rw-r--r-- | MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c index 482753f62c..f1d64942b4 100644 --- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c +++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c @@ -572,6 +572,9 @@ FlushSpareBlockToWorkingBlock ( if (Buffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
+ WorkSpaceLbaOffset = FtwDevice->FtwWorkSpaceLba - FtwDevice->FtwWorkBlockLba;
+
//
// To guarantee that the WorkingBlockValid is set on spare block
//
@@ -581,7 +584,7 @@ FlushSpareBlockToWorkingBlock ( //
FtwUpdateFvState (
FtwDevice->FtwBackupFvb,
- FtwDevice->FtwWorkSpaceLba,
+ FtwDevice->FtwSpareLba + WorkSpaceLbaOffset,
FtwDevice->FtwWorkSpaceBase + sizeof (EFI_GUID) + sizeof (UINT32),
WORKING_BLOCK_VALID
);
@@ -608,7 +611,6 @@ FlushSpareBlockToWorkingBlock ( //
// Clear the CRC and STATE, copy data from spare to working block.
//
- WorkSpaceLbaOffset = FtwDevice->FtwWorkSpaceLba - FtwDevice->FtwWorkBlockLba;
WorkingBlockHeader = (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *) (Buffer + (UINTN) WorkSpaceLbaOffset * FtwDevice->BlockSize + FtwDevice->FtwWorkSpaceBase);
InitWorkSpaceHeader (WorkingBlockHeader);
WorkingBlockHeader->WorkingBlockValid = FTW_ERASE_POLARITY;
|