+ Status = FindFfsSectionInstance (\r
+ OutputBuffer,\r
+ OutputBufferSize,\r
+ EFI_SECTION_FIRMWARE_VOLUME_IMAGE,\r
+ 1,\r
+ (EFI_COMMON_SECTION_HEADER**) &FvSection\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((EFI_D_ERROR, "Unable to find DXE FV section\n"));\r
+ return Status;\r
+ }\r
+\r
+ ASSERT (FvSection->Type == EFI_SECTION_FIRMWARE_VOLUME_IMAGE);\r
+ ASSERT (SECTION_SIZE (FvSection) ==\r
+ (PcdGet32 (PcdOvmfDxeMemFvSize) + sizeof (*FvSection)));\r
+\r
+ DxeMemFv = (EFI_FIRMWARE_VOLUME_HEADER*)(UINTN) PcdGet32 (PcdOvmfDxeMemFvBase);\r
+ CopyMem (DxeMemFv, (VOID*) (FvSection + 1), PcdGet32 (PcdOvmfDxeMemFvSize));\r
+\r
+ if (DxeMemFv->Signature != EFI_FVH_SIGNATURE) {\r
+ DEBUG ((EFI_D_ERROR, "Extracted FV at %p does not have FV header signature\n", DxeMemFv));\r
+ CpuDeadLoop ();\r
+ return EFI_VOLUME_CORRUPTED;\r
+ }\r
+\r
+ *Fv = PeiMemFv;\r