MdeModulePkg PeiCore: Make sure FvInfo has FFS2 format if Ffs2Guid FvFormat

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=160

Cc: Liming Gao <liming.gao@intel.com>
Cc: Sean Brogan <sean.brogan@microsoft.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
diff --git a/MdeModulePkg/Core/Pei/FwVol/FwVol.c b/MdeModulePkg/Core/Pei/FwVol/FwVol.c
index d2eb0bc..8d07bd0 100644
--- a/MdeModulePkg/Core/Pei/FwVol/FwVol.c
+++ b/MdeModulePkg/Core/Pei/FwVol/FwVol.c
@@ -565,6 +565,20 @@
     IsFvInfo2 = FALSE;

   }

 

+  if (CompareGuid (&FvInfo2Ppi.FvFormat, &gEfiFirmwareFileSystem2Guid)) {

+    //

+    // gEfiFirmwareFileSystem2Guid is specified for FvFormat, then here to check the

+    // FileSystemGuid pointed by FvInfo against gEfiFirmwareFileSystem2Guid to make sure

+    // FvInfo has the firmware file system 2 format.

+    //

+    // If the ASSERT really appears, FvFormat needs to be specified correctly, for example,

+    // gEfiFirmwareFileSystem3Guid can be used for firmware file system 3 format, or

+    // ((EFI_FIRMWARE_VOLUME_HEADER *) FvInfo)->FileSystemGuid can be just used for both

+    // firmware file system 2 and 3 format.

+    //

+    ASSERT (CompareGuid (&(((EFI_FIRMWARE_VOLUME_HEADER *) FvInfo2Ppi.FvInfo)->FileSystemGuid), &gEfiFirmwareFileSystem2Guid));

+  }

+

   //

   // Locate the corresponding FV_PPI according to founded FV's format guid

   //