Call the passed in Child Notify event and convert the mFvbModuleGlobal\r
date items to there virtual address.\r
\r
- mFvbModuleGlobal->FvInstance[FVB_PHYSICAL] - Physical copy of instance\r
- data\r
- mFvbModuleGlobal->FvInstance[FVB_VIRTUAL] - Virtual pointer to common\r
- instance data.\r
-\r
Arguments:\r
\r
(Standard EFI notify event - EFI_EVENT_NOTIFY)\r
EFI_FW_VOL_INSTANCE *FwhInstance;\r
UINTN Index;\r
\r
- EfiConvertPointer (0x0,\r
- (VOID **) &mFvbModuleGlobal->FvInstance[FVB_VIRTUAL]);\r
+ FwhInstance = mFvbModuleGlobal->FvInstance;\r
+ EfiConvertPointer (0x0, (VOID **) &mFvbModuleGlobal->FvInstance);\r
\r
//\r
// Convert the base address of all the instances\r
//\r
Index = 0;\r
- FwhInstance = mFvbModuleGlobal->FvInstance[FVB_PHYSICAL];\r
while (Index < mFvbModuleGlobal->NumFv) {\r
- EfiConvertPointer (0x0, (VOID **) &FwhInstance->FvBase[FVB_VIRTUAL]);\r
+ EfiConvertPointer (0x0, (VOID **) &FwhInstance->FvBase);\r
FwhInstance = (EFI_FW_VOL_INSTANCE *)\r
(\r
(UINTN) ((UINT8 *) FwhInstance) +\r
GetFvbInstance (\r
IN UINTN Instance,\r
IN ESAL_FWB_GLOBAL *Global,\r
- OUT EFI_FW_VOL_INSTANCE **FwhInstance,\r
- IN BOOLEAN Virtual\r
+ OUT EFI_FW_VOL_INSTANCE **FwhInstance\r
)\r
/*++\r
\r
Global - Pointer to ESAL_FWB_GLOBAL that contains all\r
instance data\r
FwhInstance - The EFI_FW_VOL_INSTANCE fimrware instance structure\r
- Virtual - Whether CPU is in virtual or physical mode\r
\r
Returns:\r
EFI_SUCCESS - Successfully returns\r
//\r
// Find the right instance of the FVB private data\r
//\r
- FwhRecord = Global->FvInstance[Virtual];\r
+ FwhRecord = Global->FvInstance;\r
while (Instance > 0) {\r
FwhRecord = (EFI_FW_VOL_INSTANCE *)\r
(\r
FvbGetPhysicalAddress (\r
IN UINTN Instance,\r
OUT EFI_PHYSICAL_ADDRESS *Address,\r
- IN ESAL_FWB_GLOBAL *Global,\r
- IN BOOLEAN Virtual\r
+ IN ESAL_FWB_GLOBAL *Global\r
)\r
/*++\r
\r
address of the firmware volume.\r
Global - Pointer to ESAL_FWB_GLOBAL that contains all\r
instance data\r
- Virtual - Whether CPU is in virtual or physical mode\r
\r
Returns:\r
EFI_SUCCESS - Successfully returns\r
//\r
// Find the right instance of the FVB private data\r
//\r
- Status = GetFvbInstance (Instance, Global, &FwhInstance, Virtual);\r
+ Status = GetFvbInstance (Instance, Global, &FwhInstance);\r
ASSERT_EFI_ERROR (Status);\r
- *Address = FwhInstance->FvBase[Virtual];\r
+ *Address = FwhInstance->FvBase;\r
\r
return EFI_SUCCESS;\r
}\r
FvbGetVolumeAttributes (\r
IN UINTN Instance,\r
OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
- IN ESAL_FWB_GLOBAL *Global,\r
- IN BOOLEAN Virtual\r
+ IN ESAL_FWB_GLOBAL *Global\r
)\r
/*++\r
\r
Attributes - Output buffer which contains attributes\r
Global - Pointer to ESAL_FWB_GLOBAL that contains all\r
instance data\r
- Virtual - Whether CPU is in virtual or physical mode\r
\r
Returns:\r
EFI_SUCCESS - Successfully returns\r
//\r
// Find the right instance of the FVB private data\r
//\r
- Status = GetFvbInstance (Instance, Global, &FwhInstance, Virtual);\r
+ Status = GetFvbInstance (Instance, Global, &FwhInstance);\r
ASSERT_EFI_ERROR (Status);\r
*Attributes = FwhInstance->VolumeHeader.Attributes;\r
\r
OUT UINTN *LbaAddress,\r
OUT UINTN *LbaLength,\r
OUT UINTN *NumOfBlocks,\r
- IN ESAL_FWB_GLOBAL *Global,\r
- IN BOOLEAN Virtual\r
+ IN ESAL_FWB_GLOBAL *Global\r
)\r
/*++\r
\r
BlockSize\r
Global - Pointer to ESAL_FWB_GLOBAL that contains all\r
instance data\r
- Virtual - Whether CPU is in virtual or physical mode\r
\r
Returns:\r
EFI_SUCCESS - Successfully returns\r
//\r
// Find the right instance of the FVB private data\r
//\r
- Status = GetFvbInstance (Instance, Global, &FwhInstance, Virtual);\r
+ Status = GetFvbInstance (Instance, Global, &FwhInstance);\r
ASSERT_EFI_ERROR (Status);\r
\r
StartLba = 0;\r
if (Lba >= StartLba && Lba < NextLba) {\r
Offset = Offset + (UINTN) MultU64x32 ((Lba - StartLba), BlockLength);\r
if (LbaAddress != NULL) {\r
- *LbaAddress = FwhInstance->FvBase[Virtual] + Offset;\r
+ *LbaAddress = FwhInstance->FvBase + Offset;\r
}\r
\r
if (LbaLength != NULL) {\r
FvbSetVolumeAttributes (\r
IN UINTN Instance,\r
IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
- IN ESAL_FWB_GLOBAL *Global,\r
- IN BOOLEAN Virtual\r
+ IN ESAL_FWB_GLOBAL *Global\r
)\r
/*++\r
\r
of the firmware volume\r
Global - Pointer to ESAL_FWB_GLOBAL that contains all\r
instance data\r
- Virtual - Whether CPU is in virtual or physical mode\r
\r
Returns:\r
EFI_SUCCESS - Successfully returns\r
//\r
// Find the right instance of the FVB private data\r
//\r
- Status = GetFvbInstance (Instance, Global, &FwhInstance, Virtual);\r
+ Status = GetFvbInstance (Instance, Global, &FwhInstance);\r
ASSERT_EFI_ERROR (Status);\r
\r
AttribPtr =\r
FvbDevice = FVB_DEVICE_FROM_THIS (This);\r
\r
return FvbGetPhysicalAddress (FvbDevice->Instance, Address,\r
- mFvbModuleGlobal, EfiGoneVirtual ());\r
+ mFvbModuleGlobal);\r
}\r
\r
EFI_STATUS\r
NULL,\r
BlockSize,\r
NumOfBlocks,\r
- mFvbModuleGlobal,\r
- EfiGoneVirtual ()\r
+ mFvbModuleGlobal\r
);\r
}\r
\r
FvbDevice = FVB_DEVICE_FROM_THIS (This);\r
\r
return FvbGetVolumeAttributes (FvbDevice->Instance, Attributes,\r
- mFvbModuleGlobal, EfiGoneVirtual ());\r
+ mFvbModuleGlobal);\r
}\r
\r
EFI_STATUS\r
FvbDevice = FVB_DEVICE_FROM_THIS (This);\r
\r
return FvbSetVolumeAttributes (FvbDevice->Instance, Attributes,\r
- mFvbModuleGlobal, EfiGoneVirtual ());\r
+ mFvbModuleGlobal);\r
}\r
\r
EFI_STATUS\r
FvbDevice = FVB_DEVICE_FROM_THIS (This);\r
\r
Status = GetFvbInstance (FvbDevice->Instance, mFvbModuleGlobal,\r
- &FwhInstance, EfiGoneVirtual ());\r
+ &FwhInstance);\r
ASSERT_EFI_ERROR (Status);\r
\r
NumOfBlocks = FwhInstance->NumOfBlocks;\r
FwVolHeader->HeaderLength -\r
sizeof (EFI_FIRMWARE_VOLUME_HEADER)\r
);\r
+ mFvbModuleGlobal->FvInstance = AllocateRuntimePool (BufferSize);\r
+ ASSERT (mFvbModuleGlobal->FvInstance != NULL);\r
\r
- //\r
- // Only need to allocate once. There is only one copy of physical memory for\r
- // the private data of each FV instance. But in virtual mode or in physical\r
- // mode, the address of the the physical memory may be different.\r
- //\r
- mFvbModuleGlobal->FvInstance[FVB_PHYSICAL] = AllocateRuntimePool (\r
- BufferSize);\r
- ASSERT (mFvbModuleGlobal->FvInstance[FVB_PHYSICAL] != NULL);\r
-\r
- //\r
- // Make a virtual copy of the FvInstance pointer.\r
- //\r
- FwhInstance = mFvbModuleGlobal->FvInstance[FVB_PHYSICAL];\r
- mFvbModuleGlobal->FvInstance[FVB_VIRTUAL] = FwhInstance;\r
+ FwhInstance = mFvbModuleGlobal->FvInstance;\r
\r
mFvbModuleGlobal->NumFv = 0;\r
MaxLbaSize = 0;\r
(EFI_FIRMWARE_VOLUME_HEADER *) (UINTN)\r
PcdGet32 (PcdOvmfFlashNvStorageVariableBase);\r
\r
- FwhInstance->FvBase[FVB_PHYSICAL] = (UINTN) BaseAddress;\r
- FwhInstance->FvBase[FVB_VIRTUAL] = (UINTN) BaseAddress;\r
+ FwhInstance->FvBase = (UINTN) BaseAddress;\r
\r
CopyMem ((UINTN *) &(FwhInstance->VolumeHeader), (UINTN *) FwVolHeader,\r
FwVolHeader->HeaderLength);\r