]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/FvbRuntimeService/FWBlockService.c
Add 8254 module and fix the hob operation for R9 library.
[mirror_edk2.git] / DuetPkg / FvbRuntimeService / FWBlockService.c
index ab1ef25f570e3b727abc34636fead317c562e627..e4dab6339e9a7ccf90f78237357719bba53151e4 100644 (file)
@@ -1329,7 +1329,7 @@ Returns:
 \r
 EFI_STATUS\r
 GetFvbHeader (\r
-  IN OUT VOID                           **HobList,\r
+  IN OUT EFI_PEI_HOB_POINTERS           *HobList,\r
   OUT    EFI_FIRMWARE_VOLUME_HEADER     **FwVolHeader,\r
   OUT    EFI_PHYSICAL_ADDRESS           *BaseAddress     OPTIONAL,\r
   OUT    UINT32                         *VolumeId        OPTIONAL,\r
@@ -1340,7 +1340,6 @@ GetFvbHeader (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-  VOID                        *Buffer;\r
   EFI_FLASH_MAP_FS_ENTRY_DATA *FlashMapEntry;\r
   EFI_FLASH_SUBAREA_ENTRY     *FlashMapSubEntry;\r
 \r
@@ -1348,13 +1347,15 @@ GetFvbHeader (
   *FwVolHeader  = NULL;\r
   TRY_ASSIGN (WriteBack, FALSE);\r
 \r
-  Buffer        = GetNextGuidHob (&gEfiFlashMapHobGuid, HobList);\r
-  if (EFI_ERROR (Status)) {\r
+  DEBUG ((EFI_D_INFO, "Hob start is 0x%x\n", (UINTN)(*HobList).Raw));\r
+  (*HobList).Raw = GetNextGuidHob (&gEfiFlashMapHobGuid, (*HobList).Raw);\r
+  if ((*HobList).Raw == NULL) {\r
     return EFI_NOT_FOUND;\r
   }\r
 \r
-  FlashMapEntry     = (EFI_FLASH_MAP_FS_ENTRY_DATA *) Buffer;\r
+  FlashMapEntry     = (EFI_FLASH_MAP_FS_ENTRY_DATA *) GET_GUID_HOB_DATA ((*HobList).Guid);\r
   FlashMapSubEntry  = &FlashMapEntry->Entries[0];\r
+  \r
   //\r
   // Check if it is a "FVB" area\r
   //\r
@@ -1548,7 +1549,7 @@ Returns:
   EFI_FW_VOL_INSTANCE                 *FwhInstance;\r
   EFI_FIRMWARE_VOLUME_HEADER          *FwVolHeader;\r
   VOID                                *HobList;\r
-  VOID                                *FirmwareVolumeHobList;\r
+  EFI_PEI_HOB_POINTERS                FirmwareVolumeHobList;\r
   UINT32                              BufferSize;\r
   EFI_FV_BLOCK_MAP_ENTRY              *PtrBlockMapEntry;\r
   UINTN                               LbaAddress;\r
@@ -1591,12 +1592,13 @@ Returns:
   // Calculate the total size for all firmware volume block instances\r
   //\r
   BufferSize            = 0;\r
-  FirmwareVolumeHobList = HobList;\r
+  FirmwareVolumeHobList.Raw = GetHobList();\r
   do {\r
     Status = GetFvbHeader (&FirmwareVolumeHobList, &FwVolHeader, NULL, NULL, NULL, NULL, NULL, NULL);\r
     if (EFI_ERROR (Status)) {\r
       break;\r
     }\r
+    FirmwareVolumeHobList.Raw = GET_NEXT_HOB (FirmwareVolumeHobList);\r
 \r
     if (FwVolHeader) {\r
       BufferSize += (FwVolHeader->HeaderLength + sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER));\r
@@ -1621,9 +1623,9 @@ Returns:
   FwhInstance = mFvbModuleGlobal->FvInstance[FVB_PHYSICAL];\r
   mFvbModuleGlobal->FvInstance[FVB_VIRTUAL] = FwhInstance;\r
 \r
-  mFvbModuleGlobal->NumFv = 0;\r
-  FirmwareVolumeHobList   = HobList;\r
-  MaxLbaSize              = 0;\r
+  mFvbModuleGlobal->NumFv     = 0;\r
+  FirmwareVolumeHobList.Raw   = GetHobList();\r
+  MaxLbaSize                  = 0;\r
 \r
   //\r
   // Fill in the private data of each firmware volume block instance\r
@@ -1637,6 +1639,7 @@ Returns:
     if (EFI_ERROR (Status)) {\r
       break;\r
     }\r
+    FirmwareVolumeHobList.Raw = GET_NEXT_HOB (FirmwareVolumeHobList);\r
 \r
     if (!FwVolHeader) {\r
       continue;\r