summaryrefslogtreecommitdiffstats
path: root/StandaloneMmPkg/Core/FwVol.c
diff options
context:
space:
mode:
Diffstat (limited to 'StandaloneMmPkg/Core/FwVol.c')
-rw-r--r--StandaloneMmPkg/Core/FwVol.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/StandaloneMmPkg/Core/FwVol.c b/StandaloneMmPkg/Core/FwVol.c
index 4d2b63a448..07500cee41 100644
--- a/StandaloneMmPkg/Core/FwVol.c
+++ b/StandaloneMmPkg/Core/FwVol.c
@@ -79,6 +79,8 @@ MmCoreFfsFindMmDriver (
UINTN DepexSize;
UINTN Index;
EFI_COMMON_SECTION_HEADER *Section;
+ VOID *SectionData;
+ UINTN SectionDataSize;
UINT32 DstBufferSize;
VOID *ScratchBuffer;
UINT32 ScratchBufferSize;
@@ -115,6 +117,26 @@ MmCoreFfsFindMmDriver (
break;
}
+ //
+ // Check uncompressed firmware volumes
+ //
+ Status = FfsFindSectionData (
+ EFI_SECTION_FIRMWARE_VOLUME_IMAGE,
+ FileHeader,
+ &SectionData,
+ &SectionDataSize
+ );
+ if (!EFI_ERROR (Status)) {
+ if (SectionDataSize > sizeof (EFI_FIRMWARE_VOLUME_HEADER)) {
+ InnerFvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)SectionData;
+ MmCoreFfsFindMmDriver (InnerFvHeader, Depth + 1);
+ continue;
+ }
+ }
+
+ //
+ // Check compressed firmware volumes
+ //
Status = FfsFindSection (
EFI_SECTION_GUID_DEFINED,
FileHeader,