On 11/6/23 08:52, Xu, Wei6 wrote: > The MmCoreFfsFindMmDriver only checks for encapsulated compressed FVs. > When an inner FV is uncompressed, StandaloneMmCore will miss the FV and > all the MM drivers in the FV will not be dispatched. > Add checks for uncompressed inner FV to fix this issue. > > Cc: Laszlo Ersek <[email protected]> > Cc: Ard Biesheuvel <[email protected]> > Cc: Sami Mujawar <[email protected]> > Cc: Ray Ni <[email protected]> > Signed-off-by: Wei6 Xu <[email protected]> > --- > StandaloneMmPkg/Core/FwVol.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/StandaloneMmPkg/Core/FwVol.c b/StandaloneMmPkg/Core/FwVol.c > index 4d2b63a448e7..07500cee41f3 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,
Reviewed-by: Laszlo Ersek <[email protected]> -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#110924): https://edk2.groups.io/g/devel/message/110924 Mute This Topic: https://groups.io/mt/102416011/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
