OvmfPkg EmuVariableFvbRuntimeDxe: Let FaultTolerantWriteDxe to init working block header.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14458 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Star Zeng 2013-07-03 09:26:49 +00:00 committed by lzeng14
parent 94c4575cd0
commit c30f1e0974
1 changed files with 1 additions and 50 deletions

View File

@ -2,7 +2,7 @@
Firmware Block Services to support emulating non-volatile variables Firmware Block Services to support emulating non-volatile variables
by pretending that a memory buffer is storage for the NV variables. by pretending that a memory buffer is storage for the NV variables.
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR> Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License 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 which accompanies this distribution. The full text of the license may be found at
@ -781,52 +781,6 @@ InitializeFvAndVariableStoreHeaders (
Fv->Checksum = CalculateCheckSum16 (Ptr, Fv->HeaderLength); Fv->Checksum = CalculateCheckSum16 (Ptr, Fv->HeaderLength);
} }
/**
Initializes the Fault Tolerant Write data structure
This data structure is used by the Fault Tolerant Write driver.
@param[in] Buffer - Location for the FTW data structure
**/
VOID
InitializeFtwState (
IN VOID *Buffer
)
{
EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *Hdr;
UINT32 TempCrc;
STATIC EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER DefaultFtw = {
EFI_SYSTEM_NV_DATA_FV_GUID, // EFI_GUID Signature;
ERASED_UINT32, // UINT32 Crc;
ERASED_BIT, // UINT8 WorkingBlockValid : 1;
ERASED_BIT, // UINT8 WorkingBlockInvalid : 1;
0, // UINT8 Reserved : 6;
{ 0, 0, 0 }, // UINT8 Reserved3[3];
FTW_WRITE_QUEUE_SIZE // UINT64 WriteQueueSize;
};
CopyMem (Buffer, (VOID*) &DefaultFtw, sizeof (DefaultFtw));
Hdr = (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER*) Buffer;
//
// Calculate checksum.
//
// The Crc, WorkingBlockValid and WorkingBlockInvalid bits should
// be set to the erased state before computing the checksum.
//
gBS->CalculateCrc32 (Buffer, sizeof (DefaultFtw), &TempCrc);
Hdr->Crc = TempCrc;
//
// Mark as valid.
//
Hdr->WorkingBlockValid = NOT_ERASED_BIT;
}
/** /**
Main entry point. Main entry point.
@ -908,9 +862,6 @@ FvbInitialize (
// Initialize the Fault Tolerant Write data area // Initialize the Fault Tolerant Write data area
// //
SubPtr = (VOID*) ((UINT8*) Ptr + PcdGet32 (PcdVariableStoreSize)); SubPtr = (VOID*) ((UINT8*) Ptr + PcdGet32 (PcdVariableStoreSize));
if (Initialize) {
InitializeFtwState (SubPtr);
}
PcdSet32 (PcdFlashNvStorageFtwWorkingBase, (UINT32)(UINTN) SubPtr); PcdSet32 (PcdFlashNvStorageFtwWorkingBase, (UINT32)(UINTN) SubPtr);
// //