]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsImages.c
ArmPlatformPkg/BootMonFs: Cache the HW Description address
[mirror_edk2.git] / ArmPlatformPkg / FileSystem / BootMonFs / BootMonFsImages.c
index c362b384f2ceafd54b9b04902575e5692c2412b8..346c360292eb1ec0b65b54f14e9a066814706a9d 100644 (file)
@@ -135,11 +135,12 @@ BootMonFsIsImageValid (
   return TRUE;\r
 }\r
 \r
+STATIC\r
 EFI_STATUS\r
 BootMonFsDiscoverNextImage (\r
-  IN BOOTMON_FS_INSTANCE      *Instance,\r
-  IN EFI_LBA                  *LbaStart,\r
-  OUT HW_IMAGE_DESCRIPTION    *ImageDescription\r
+  IN     BOOTMON_FS_INSTANCE      *Instance,\r
+  IN OUT EFI_LBA                  *LbaStart,\r
+  IN OUT BOOTMON_FS_FILE          *File\r
   )\r
 {\r
   EFI_DISK_IO_PROTOCOL  *DiskIo;\r
@@ -162,17 +163,21 @@ BootMonFsDiscoverNextImage (
                        Instance->Media->MediaId,\r
                        DescOffset,\r
                        sizeof (HW_IMAGE_DESCRIPTION),\r
-                       ImageDescription\r
+                       &File->HwDescription\r
                        );\r
     if (EFI_ERROR (Status)) {\r
       return Status;\r
     }\r
 \r
     // If we found a valid image description...\r
-    if (BootMonFsIsImageValid (ImageDescription, (CurrentLba - Instance->Media->LowestAlignedLba))) {\r
-      DEBUG ((EFI_D_ERROR, "Found image: %a in block %d.\n", &(ImageDescription->Footer.Filename), (UINTN)(CurrentLba - Instance->Media->LowestAlignedLba)));\r
-\r
-      *LbaStart = ImageDescription->BlockEnd + 1;\r
+    if (BootMonFsIsImageValid (&File->HwDescription, (CurrentLba - Instance->Media->LowestAlignedLba))) {\r
+      DEBUG ((EFI_D_ERROR, "Found image: %a in block %d.\n",\r
+        &(File->HwDescription.Footer.Filename),\r
+        (UINTN)(CurrentLba - Instance->Media->LowestAlignedLba)\r
+        ));\r
+      File->HwDescAddress = DescOffset;\r
+\r
+      *LbaStart = CurrentLba + 1;\r
       return EFI_SUCCESS;\r
     } else {\r
       CurrentLba++;\r
@@ -202,7 +207,7 @@ BootMonFsInitialize (
       return Status;\r
     }\r
 \r
-    Status = BootMonFsDiscoverNextImage (Instance, &Lba, &(NewFile->HwDescription));\r
+    Status = BootMonFsDiscoverNextImage (Instance, &Lba, NewFile);\r
     if (EFI_ERROR (Status)) {\r
       // Free NewFile allocated by BootMonFsCreateFile ()\r
       FreePool (NewFile);\r