1) PcdFlashNvStorageFtwWorkingSize, PcdFlashNvStorageFtwWorkingBase, PcdFlashNvStorageFtwSpareSize, PcdFlashNvStorageFtwSpareBase, PcdFlashNvStorageVariableSize PcdFlashNvStorageVariableBase should in gEfiMdeModulePkgTokenSpaceGuid.

2) Use FlashMapHob to get the address and length of FV instead of using PCD. 
3) Use hard code environment in WinNtBusDriver but not dynamic PCD.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3106 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
klu2
2007-07-06 08:08:57 +00:00
parent 9c8403b3f8
commit e15fbaf473
11 changed files with 130 additions and 73 deletions

View File

@@ -139,29 +139,29 @@
PcdMaxSizePopulateCapsule|0x0001001e|gEfiEdkModulePkgTokenSpaceGuid|UINT32|0x0
PcdMaxSizeNonPopulateCapsule|0x0001001f|gEfiEdkModulePkgTokenSpaceGuid|UINT32|0x0
PcdMaxPeiPerformanceLogEntries|0x0001002f|gEfiEdkModulePkgTokenSpaceGuid|UINT8|28
PcdFlashNvStorageVariableBase|0x30000001|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageVariableSize|0x30000002|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareBase|0x30000013|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareSize|0x30000014|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingBase|0x30000010|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingSize|0x30000011|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageVariableBase|0x30000001|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageVariableSize|0x30000002|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareBase|0x30000013|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareSize|0x30000014|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingBase|0x30000010|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingSize|0x30000011|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
[PcdsDynamic.common]
PcdFlashNvStorageVariableBase|0x30000001|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageVariableSize|0x30000002|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareBase|0x30000013|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareSize|0x30000014|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingBase|0x30000010|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingSize|0x30000011|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageVariableBase|0x30000001|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageVariableSize|0x30000002|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareBase|0x30000013|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareSize|0x30000014|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingBase|0x30000010|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingSize|0x30000011|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
[PcdsPatchableInModule.common]
PcdMaxPeiPerformanceLogEntries|0x0001002f|gEfiEdkModulePkgTokenSpaceGuid|UINT8|28
PcdFlashNvStorageVariableBase|0x30000001|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageVariableSize|0x30000002|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareBase|0x30000013|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareSize|0x30000014|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingBase|0x30000010|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingSize|0x30000011|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageVariableBase|0x30000001|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageVariableSize|0x30000002|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareBase|0x30000013|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwSpareSize|0x30000014|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingBase|0x30000010|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
PcdFlashNvStorageFtwWorkingSize|0x30000011|gEfiMdeModulePkgTokenSpaceGuid|UINT32|0x0
[PcdsFeatureFlag.IA32]

View File

@@ -339,12 +339,12 @@
PcdUefiLibMaxPrintBufferSize|gEfiMdePkgTokenSpaceGuid|320
PcdMaxSizeNonPopulateCapsule|gEfiEdkModulePkgTokenSpaceGuid|0x0
PcdMaxSizePopulateCapsule|gEfiEdkModulePkgTokenSpaceGuid|0x0
PcdFlashNvStorageFtwSpareBase|gEfiGenericPlatformTokenSpaceGuid|0x0
PcdFlashNvStorageFtwSpareSize|gEfiGenericPlatformTokenSpaceGuid|0x0
PcdFlashNvStorageFtwWorkingBase|gEfiGenericPlatformTokenSpaceGuid|0x0
PcdFlashNvStorageFtwWorkingSize|gEfiGenericPlatformTokenSpaceGuid|0x0
PcdFlashNvStorageVariableBase|gEfiGenericPlatformTokenSpaceGuid|0x0
PcdFlashNvStorageVariableSize|gEfiGenericPlatformTokenSpaceGuid|0x0
PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdFlashNvStorageFtwSpareSize|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdFlashNvStorageFtwWorkingSize|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdFlashNvStorageVariableSize|gEfiMdeModulePkgTokenSpaceGuid|0x0
PcdMaxPeiPerformanceLogEntries|gEfiEdkModulePkgTokenSpaceGuid|28
PcdVpdBaseAddress|gEfiEdkModulePkgTokenSpaceGuid|0x0
PcdMaxPeiPcdCallBackNumberPerPcdEntry|gEfiMdeModulePkgTokenSpaceGuid|0x08

View File

@@ -634,7 +634,8 @@ InitializeFtwLite (
UINTN Offset;
EFI_FV_BLOCK_MAP_ENTRY *FvbMapEntry;
UINT32 LbaIndex;
EFI_PEI_HOB_POINTERS FvHob;
EFI_FLASH_MAP_ENTRY_DATA *FlashMapEntry;
//
// Allocate Private data of this driver,
// INCLUDING THE FtwWorkSpace[FTW_WORK_SPACE_SIZE].
@@ -665,12 +666,34 @@ InitializeFtwLite (
FtwLiteDevice->FtwWorkSpaceHeader = (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *) FtwLiteDevice->FtwWorkSpace;
FtwLiteDevice->FtwLastRecord = NULL;
//
// BUGBUG: Here should use Pcd after build tool support dynamic PCD
//
FtwLiteDevice->SpareAreaLength = 0;
FtwLiteDevice->WorkSpaceLength = 0;
FvHob.Raw = GetHobList ();
while ((FvHob.Raw = GetNextGuidHob (&gEfiFlashMapHobGuid, FvHob.Raw)) != NULL) {
FtwLiteDevice->WorkSpaceAddress = (EFI_PHYSICAL_ADDRESS) PcdGet32 (PcdFlashNvStorageFtwWorkingBase);
FtwLiteDevice->WorkSpaceLength = (UINTN) PcdGet32 (PcdFlashNvStorageFtwWorkingSize);
FtwLiteDevice->SpareAreaAddress = (EFI_PHYSICAL_ADDRESS) PcdGet32 (PcdFlashNvStorageFtwSpareBase);
FtwLiteDevice->SpareAreaLength = (UINTN) PcdGet32 (PcdFlashNvStorageFtwSpareSize);
FlashMapEntry = (EFI_FLASH_MAP_ENTRY_DATA *) GET_GUID_HOB_DATA (FvHob.Guid);
//
// Get the FTW work space Flash Map SUB area
//
if ((FlashMapEntry->AreaType == EFI_FLASH_AREA_FTW_STATE) && (FlashMapEntry->NumEntries == 1)) {
FtwLiteDevice->WorkSpaceAddress = FlashMapEntry->Entries[0].Base;
FtwLiteDevice->WorkSpaceLength = (UINTN) FlashMapEntry->Entries[0].Length;
}
//
// Get the FTW backup SUB area
//
if ((FlashMapEntry->AreaType == EFI_FLASH_AREA_FTW_BACKUP) && (FlashMapEntry->NumEntries == 1)) {
FtwLiteDevice->SpareAreaAddress = FlashMapEntry->Entries[0].Base;
FtwLiteDevice->SpareAreaLength = (UINTN) FlashMapEntry->Entries[0].Length;
}
FvHob.Raw = GET_NEXT_HOB (FvHob);
}
ASSERT ((FtwLiteDevice->WorkSpaceLength != 0) && (FtwLiteDevice->SpareAreaLength != 0));

View File

@@ -38,6 +38,7 @@ Abstract:
//
#include <Protocol/PciRootBridgeIo.h>
#include <Guid/SystemNvDataGuid.h>
#include <Guid/FlashMapHob.h>
#include <Protocol/FaultTolerantWriteLite.h>
#include <Protocol/FirmwareVolumeBlock.h>
//
@@ -49,8 +50,10 @@ Abstract:
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/HobLib.h>
#include <Common/WorkingBlockHeader.h>
#include <Common/FlashMap.h>
#define EFI_D_FTW_LITE EFI_D_ERROR
#define EFI_D_FTW_INFO EFI_D_INFO

View File

@@ -88,7 +88,7 @@
UefiDriverEntryPoint
DebugLib
PcdLib
HobLib
################################################################################
#
@@ -98,7 +98,7 @@
[Guids]
gEfiSystemNvDataFvGuid # ALWAYS_CONSUMED
gEfiFlashMapHobGuid
################################################################################
#
@@ -125,10 +125,10 @@
################################################################################
[PcdsDynamic.common]
PcdFlashNvStorageFtwWorkingSize|gEfiGenericPlatformTokenSpaceGuid
PcdFlashNvStorageFtwWorkingBase|gEfiGenericPlatformTokenSpaceGuid
PcdFlashNvStorageFtwSpareSize|gEfiGenericPlatformTokenSpaceGuid
PcdFlashNvStorageFtwSpareBase|gEfiGenericPlatformTokenSpaceGuid
PcdFlashNvStorageFtwWorkingSize|gEfiMdeModulePkgTokenSpaceGuid
PcdFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid
PcdFlashNvStorageFtwSpareSize|gEfiMdeModulePkgTokenSpaceGuid
PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid
################################################################################
#

View File

@@ -63,7 +63,7 @@
gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_CONSUMED
[PcdsDynamic.common]
PcdFlashNvStorageVariableBase|gEfiGenericPlatformTokenSpaceGuid
PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid
[Depex]
TRUE

View File

@@ -105,8 +105,8 @@
################################################################################
[PcdsDynamic.common]
PcdFlashNvStorageVariableSize|gEfiGenericPlatformTokenSpaceGuid
PcdFlashNvStorageVariableBase|gEfiGenericPlatformTokenSpaceGuid
PcdFlashNvStorageVariableSize|gEfiMdeModulePkgTokenSpaceGuid
PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid
################################################################################