]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/OvmfPkgIa32X64.fdf
OvmfPkg: Add section of memory to use for PEI on S3 resume
[mirror_edk2.git] / OvmfPkg / OvmfPkgIa32X64.fdf
index d734175e6e35ce70c676b284ea6b4147a68015d4..e3728a4330ffd9114e09721262ae16dbaae9abda 100644 (file)
@@ -1,9 +1,9 @@
-#/** @file\r
+## @file\r
 #  Open Virtual Machine Firmware: FDF\r
 #\r
-#  Copyright (c) 2006 - 2009, Intel Corporation\r
+#  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
 #\r
-#  All rights reserved. This program and the accompanying materials\r
+#  This program and the accompanying materials\r
 #  are licensed and made available under the terms and conditions of the BSD License\r
 #  which accompanies this distribution. The full text of the license may be found at\r
 #  http://opensource.org/licenses/bsd-license.php\r
 #  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
 #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 #\r
-#**/\r
+##\r
 \r
 ################################################################################\r
+\r
 #\r
-# FD Section\r
-# The [FD] Section is made up of the definition statements and a\r
-# description of what goes into  the Flash Device Image.  Each FD section\r
-# defines one flash "device" image.  A flash device image may be one of\r
-# the following: Removable media bootable image (like a boot floppy\r
-# image,) an Option ROM image (that would be "flashed" into an add-in\r
-# card,) a System "Flash"  image (that would be burned into a system's\r
-# flash) or an Update ("Capsule") image that will be used to update and\r
-# existing system flash.\r
+# Default flash size for DEBUG build is 2MB. For RELEASE it is 1MB.\r
 #\r
-################################################################################\r
+# Defining FD_SIZE_1MB or FD_SIZE_2MB on the build command line can\r
+# override this.\r
+#\r
+[Defines]\r
+!if $(TARGET) == RELEASE\r
+!ifndef $(FD_SIZE_2MB)\r
+DEFINE FD_SIZE_1MB=\r
+!endif\r
+!endif\r
+\r
+!ifdef $(FD_SIZE_1MB)\r
+[FD.OVMF]\r
+BaseAddress   = 0xFFF00000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress\r
+Size          = 0x00100000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize\r
+ErasePolarity = 1\r
+BlockSize     = 0x1000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize\r
+NumBlocks     = 0x100\r
+!else\r
 [FD.OVMF]\r
-BaseAddress   = 0xFFE00000     # The base address of the FLASH Device.\r
-Size          = 0x00200000     # The size in bytes of the FLASH Device\r
+BaseAddress   = 0xFFE00000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress\r
+Size          = 0x00200000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize\r
+ErasePolarity = 1\r
+BlockSize     = 0x1000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize\r
+NumBlocks     = 0x200\r
+!endif\r
+\r
+0x00000000|0x0000e000\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize\r
+#NV_VARIABLE_STORE\r
+DATA = {\r
+  ## This is the EFI_FIRMWARE_VOLUME_HEADER\r
+  # ZeroVector []\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  # FileSystemGuid: gEfiSystemNvDataFvGuid         =\r
+  #   { 0xFFF12B8D, 0x7696, 0x4C8B,\r
+  #     { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50 }}\r
+  0x8D, 0x2B, 0xF1, 0xFF, 0x96, 0x76, 0x8B, 0x4C,\r
+  0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50,\r
+  # FvLength: 0x20000\r
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  # Signature "_FVH"       # Attributes\r
+  0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00,\r
+  # HeaderLength # CheckSum # ExtHeaderOffset #Reserved #Revision\r
+  0x48, 0x00, 0x19, 0xF9, 0x00, 0x00, 0x00, 0x02,\r
+  # Blockmap[0]: 0x20 Blocks * 0x1000 Bytes / Block\r
+  0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,\r
+  # Blockmap[1]: End\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+  ## This is the VARIABLE_STORE_HEADER\r
+!if $(SECURE_BOOT_ENABLE) == TRUE\r
+  # Signature: gEfiAuthenticatedVariableGuid =\r
+  #   { 0xaaf32c78, 0x947b, 0x439a,\r
+  #     { 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92 }}\r
+  0x78, 0x2c, 0xf3, 0xaa, 0x7b, 0x94, 0x9a, 0x43,\r
+  0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92,\r
+!else\r
+  # Signature: gEfiVariableGuid =\r
+  #   { 0xddcf3616, 0x3275, 0x4164,\r
+  #     { 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d }}\r
+  0x16, 0x36, 0xcf, 0xdd, 0x75, 0x32, 0x64, 0x41,\r
+  0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d,\r
+!endif\r
+  # Size: 0xe000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize) -\r
+  #         0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) = 0xdfb8\r
+  # This can speed up the Variable Dispatch a bit.\r
+  0xB8, 0xDF, 0x00, 0x00,\r
+  # FORMATTED: 0x5A #HEALTHY: 0xFE #Reserved: UINT16 #Reserved1: UINT32\r
+  0x5A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+}\r
+\r
+0x0000e000|0x00001000\r
+#NV_EVENT_LOG\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogSize\r
+\r
+0x0000f000|0x00001000\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize\r
+#NV_FTW_WORKING\r
+DATA = {\r
+  # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid         =\r
+  #  { 0x9e58292b, 0x7c68, 0x497d, { 0xa0, 0xce, 0x65,  0x0, 0xfd, 0x9f, 0x1b, 0x95 }}\r
+  0x2b, 0x29, 0x58, 0x9e, 0x68, 0x7c, 0x7d, 0x49,\r
+  0xa0, 0xce, 0x65,  0x0, 0xfd, 0x9f, 0x1b, 0x95,\r
+  # Crc:UINT32            #WorkingBlockValid:1, WorkingBlockInvalid:1, Reserved\r
+  0x2c, 0xaf, 0x2c, 0x64, 0xFE, 0xFF, 0xFF, 0xFF,\r
+  # WriteQueueSize: UINT64\r
+  0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+}\r
+\r
+0x00010000|0x00010000\r
+#NV_FTW_SPARE\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize\r
+\r
+!ifdef $(FD_SIZE_1MB)\r
+0x00020000|0x000CC000\r
+FV = FVMAIN_COMPACT\r
+\r
+0x000EC000|0x14000\r
+FV = SECFV\r
+\r
+!else\r
+0x00020000|0x001AC000\r
+FV = FVMAIN_COMPACT\r
+\r
+0x001CC000|0x34000\r
+FV = SECFV\r
+!endif\r
+\r
+################################################################################\r
+\r
+[FD.MEMFD]\r
+BaseAddress   = 0x800000\r
+Size          = 0x800000\r
 ErasePolarity = 1\r
 BlockSize     = 0x10000\r
-NumBlocks     = 0x20\r
+NumBlocks     = 0x80\r
+\r
+0x000000|0x006000\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize\r
+\r
+0x010000|0x008000\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize\r
+\r
+0x018000|0x008000\r
+gUefiOvmfPkgTokenSpaceGuid.PcdS3AcpiReservedMemoryBase|gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdS3AcpiReservedMemorySize\r
+\r
+0x020000|0x0E0000\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize\r
+FV = PEIFV\r
+\r
+0x100000|0x700000\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvSize\r
+FV = DXEFV\r
 \r
 ################################################################################\r
+\r
+[FV.SECFV]\r
+BlockSize          = 0x1000\r
+FvAlignment        = 16\r
+ERASE_POLARITY     = 1\r
+MEMORY_MAPPED      = TRUE\r
+STICKY_WRITE       = TRUE\r
+LOCK_CAP           = TRUE\r
+LOCK_STATUS        = TRUE\r
+WRITE_DISABLED_CAP = TRUE\r
+WRITE_ENABLED_CAP  = TRUE\r
+WRITE_STATUS       = TRUE\r
+WRITE_LOCK_CAP     = TRUE\r
+WRITE_LOCK_STATUS  = TRUE\r
+READ_DISABLED_CAP  = TRUE\r
+READ_ENABLED_CAP   = TRUE\r
+READ_STATUS        = TRUE\r
+READ_LOCK_CAP      = TRUE\r
+READ_LOCK_STATUS   = TRUE\r
+\r
 #\r
-# Following are lists of FD Region layout which correspond to the locations of different\r
-# images within the flash device.\r
-#\r
-# Regions must be defined in ascending order and may not overlap.\r
+# SEC Phase modules\r
 #\r
-# A Layout Region start with a eight digit hex offset (leading "0x" required) followed by\r
-# the pipe "|" character, followed by the size of the region, also in hex with the leading\r
-# "0x" characters. Like:\r
-# Offset|Size\r
-# PcdOffsetCName|PcdSizeCName\r
-# RegionType <FV, DATA, or FILE>\r
+# The code in this FV handles the initial firmware startup, and\r
+# decompresses the PEI and DXE FVs which handles the rest of the boot sequence.\r
 #\r
-################################################################################\r
-0x0|0x200000\r
-gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashFvRecoveryBase|gEfiUnixPkgTokenSpaceGuid.PcdUnixFlashFvRecoverySize\r
-FV = MAINFV\r
+INF  OvmfPkg/Sec/SecMain.inf\r
+\r
+INF  RuleOverride=RESET_VECTOR USE = IA32 UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.inf\r
 \r
 ################################################################################\r
+[FV.PEIFV]\r
+BlockSize          = 0x10000\r
+FvAlignment        = 16\r
+ERASE_POLARITY     = 1\r
+MEMORY_MAPPED      = TRUE\r
+STICKY_WRITE       = TRUE\r
+LOCK_CAP           = TRUE\r
+LOCK_STATUS        = TRUE\r
+WRITE_DISABLED_CAP = TRUE\r
+WRITE_ENABLED_CAP  = TRUE\r
+WRITE_STATUS       = TRUE\r
+WRITE_LOCK_CAP     = TRUE\r
+WRITE_LOCK_STATUS  = TRUE\r
+READ_DISABLED_CAP  = TRUE\r
+READ_ENABLED_CAP   = TRUE\r
+READ_STATUS        = TRUE\r
+READ_LOCK_CAP      = TRUE\r
+READ_LOCK_STATUS   = TRUE\r
+\r
+APRIORI PEI {\r
+  INF  MdeModulePkg/Universal/PCD/Pei/Pcd.inf\r
+}\r
+\r
 #\r
-# FV Section\r
-#\r
-# [FV] section is used to define what components or modules are placed within a flash\r
-# device file.  This section also defines order the components and modules are positioned\r
-# within the image.  The [FV] section consists of define statements, set statements and\r
-# module statements.\r
+#  PEI Phase modules\r
 #\r
+INF  MdeModulePkg/Core/Pei/PeiMain.inf\r
+INF  MdeModulePkg/Universal/PCD/Pei/Pcd.inf\r
+INF  IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf\r
+INF  OvmfPkg/PlatformPei/PlatformPei.inf\r
+INF  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf\r
+\r
 ################################################################################\r
+\r
 [FV.DXEFV]\r
-BlockSize          = 0x1000\r
-FvAlignment        = 16         #FV alignment and FV attributes setting.\r
+BlockSize          = 0x10000\r
+FvAlignment        = 16\r
 ERASE_POLARITY     = 1\r
 MEMORY_MAPPED      = TRUE\r
 STICKY_WRITE       = TRUE\r
@@ -81,18 +237,10 @@ READ_STATUS        = TRUE
 READ_LOCK_CAP      = TRUE\r
 READ_LOCK_STATUS   = TRUE\r
 \r
-#\r
-# Files to be placed in DXEFV\r
-#\r
-# This firmware volume will have files placed in it uncompressed,\r
-# and then then entire firmware volume will be compressed in a\r
-# single compression operation in order to achieve better\r
-# overall compression.\r
-#\r
-\r
 APRIORI DXE {\r
+  INF  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf\r
   INF  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf\r
-  INF  IntelFrameworkModulePkg/Universal/DataHubDxe/DataHubDxe.inf\r
+  INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
 }\r
 \r
 #\r
@@ -105,9 +253,7 @@ INF  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
 \r
 INF  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf\r
 INF  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf\r
-INF  IntelFrameworkModulePkg/Universal/DataHubDxe/DataHubDxe.inf\r
-INF  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
-INF  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf\r
+INF  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf\r
 INF  PcAtChipsetPkg/8259InterruptControllerDxe/8259.inf\r
 INF  UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf\r
 INF  UefiCpuPkg/CpuDxe/CpuDxe.inf\r
@@ -118,9 +264,21 @@ INF  PcAtChipsetPkg/KbcResetDxe/Reset.inf
 INF  MdeModulePkg/Universal/Metronome/Metronome.inf\r
 INF  PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf\r
 \r
+INF  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf\r
+INF  OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf\r
+INF  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf\r
+INF  OvmfPkg/VirtioScsiDxe/VirtioScsi.inf\r
+INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
 INF  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf\r
 INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf\r
-INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+\r
+!if $(SECURE_BOOT_ENABLE) == TRUE\r
+  INF  SecurityPkg/VariableAuthenticated/RuntimeDxe/VariableRuntimeDxe.inf\r
+  INF  OvmfPkg/SecureBootConfigDxe/SecureBootConfigDxe.inf\r
+!else\r
+  INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+!endif\r
+\r
 INF  MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf\r
 INF  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf\r
 INF  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf\r
@@ -140,34 +298,81 @@ INF  IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBusDxe.inf
 INF  PcAtChipsetPkg/Bus/Pci/IdeControllerDxe/IdeControllerDxe.inf\r
 INF  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf\r
 INF  MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf\r
+INF  MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf\r
+INF  MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf\r
 \r
 INF  PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf\r
 INF  IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf\r
+\r
+!ifndef $(SOURCE_DEBUG_ENABLE)\r
 INF  IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf\r
+!endif\r
+\r
 INF  IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf\r
 INF  IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppyDxe.inf\r
 \r
+INF  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf\r
+INF  OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf\r
+\r
 INF  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf\r
-INF  MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf\r
+INF  OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf\r
 INF  RuleOverride=ACPITABLE OvmfPkg/AcpiTables/AcpiTables.inf\r
 \r
-FILE DRIVER = 961578FE-B6B7-44c3-AF35-6BC705CD2B1F {\r
-    SECTION PE32 = FatBinPkg/EnhancedFatDxe/X64/Fat.efi\r
-  }\r
+INF  RuleOverride = BINARY USE = X64 FatBinPkg/EnhancedFatDxe/Fat.inf\r
 \r
-FILE APPLICATION = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile) {\r
-    SECTION PE32 = EdkShellBinPkg/FullShell/X64/Shell_full.efi\r
-  }\r
+!ifndef $(USE_OLD_SHELL)\r
+INF  ShellPkg/Application/Shell/Shell.inf\r
+!else\r
+INF  RuleOverride = BINARY USE = X64 EdkShellBinPkg/FullShell/FullShell.inf\r
+!endif\r
 \r
 FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {\r
-    SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE { # LzmaCompress\r
-      SECTION RAW = MdeModulePkg/Logo/Logo.bmp\r
-    }\r
+  SECTION RAW = MdeModulePkg/Logo/Logo.bmp\r
+}\r
+\r
+#\r
+# Network modules\r
+#\r
+!if $(E1000_ENABLE)\r
+  FILE DRIVER = 5D695E11-9B3F-4b83-B25F-4A8D5D69BE07 {\r
+    SECTION PE32 = Intel3.5/EFIX64/E3507X2.EFI\r
   }\r
+!endif\r
+  INF  MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf\r
+  INF  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf\r
+  INF  MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf\r
+  INF  MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf\r
+  INF  MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf\r
+  INF  MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf\r
+  INF  MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxe.inf\r
+  INF  MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf\r
+  INF  MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf\r
+  INF  MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf\r
+  INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf\r
+  INF  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
+  INF  MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
+  INF  OvmfPkg/VirtioNetDxe/VirtioNet.inf\r
+\r
+#\r
+# Usb Support\r
+#\r
+INF  MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf\r
+INF  MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf\r
+INF  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf\r
+INF  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf\r
+INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf\r
+\r
+!ifdef $(CSM_ENABLE)\r
+INF  IntelFrameworkModulePkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf\r
+INF  IntelFrameworkModulePkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf\r
+INF  RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf\r
+!endif\r
+\r
+INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf\r
 \r
 ################################################################################\r
 \r
-[FV.MAINFV]\r
+[FV.FVMAIN_COMPACT]\r
 FvAlignment        = 16\r
 ERASE_POLARITY     = 1\r
 MEMORY_MAPPED      = TRUE\r
@@ -185,148 +390,107 @@ READ_STATUS        = TRUE
 READ_LOCK_CAP      = TRUE\r
 READ_LOCK_STATUS   = TRUE\r
 \r
-#\r
-# Files to be placed in MAINFV\r
-#\r
-# This firmware volume will have all the files placed in it which\r
-# must not be compressed at the initial boot phase.  The only\r
-# exception to this is the compressed 'DXEFV'.\r
-#\r
-\r
-APRIORI PEI {\r
-  INF  MdeModulePkg/Universal/PCD/Pei/Pcd.inf\r
-}\r
-\r
-#\r
-#  SEC Phase modules\r
-#\r
-INF  OvmfPkg/Sec/SecMain.inf\r
-\r
-#\r
-#  PEI Phase modules\r
-#\r
-INF  MdeModulePkg/Core/Pei/PeiMain.inf\r
-INF  RuleOverride=NORELOC MdeModulePkg/Universal/PCD/Pei/Pcd.inf\r
-INF  RuleOverride=NORELOC IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf\r
-INF  RuleOverride=NORELOC OvmfPkg/PlatformPei/PlatformPei.inf\r
-INF  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf\r
-\r
-#\r
-# This file contains the compressed 'DXEFV', which is compressed\r
-# in a single compression operation in order to achieve better\r
-# overall compression.\r
-#\r
-FILE FV_IMAGE = 20bc8ac9-94d1-4208-ab28-5d673fd73486 {\r
-   SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE { # LzmaCompress\r
-      SECTION FV_IMAGE = DXEFV\r
+FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {\r
+   SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {\r
+     #\r
+     # These firmware volumes will have files placed in them uncompressed,\r
+     # and then both firmware volumes will be compressed in a single\r
+     # compression operation in order to achieve better overall compression.\r
+     #\r
+     SECTION FV_IMAGE = PEIFV\r
+     SECTION FV_IMAGE = DXEFV\r
    }\r
  }\r
 \r
-FILE RAW = 1BA0062E-C779-4582-8566-336AE8F78F09 {\r
-    SECTION RAW = OvmfPkg/ResetVector/Bin/ResetVector.ia32.raw\r
-  }\r
-\r
-\r
-################################################################################\r
-#\r
-# Rules are use with the [FV] section's module INF type to define\r
-# how an FFS file is created for a given INF file. The following Rule are the default\r
-# rules for the different module type. User can add the customized rules to define the\r
-# content of the FFS file.\r
-#\r
 ################################################################################\r
 \r
-[Rule.Common.PEI_CORE]\r
-  FILE PEI_CORE = $(NAMED_GUID) {\r
-    PE32     PE32   Align=32    |.efi\r
-    UI       STRING ="$(MODULE_NAME)" Optional\r
-    VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
-  }\r
-\r
 [Rule.Common.SEC]\r
   FILE SEC = $(NAMED_GUID) {\r
-    PE32     PE32           |.efi\r
+    PE32     PE32           $(INF_OUTPUT)/$(MODULE_NAME).efi\r
     UI       STRING ="$(MODULE_NAME)" Optional\r
     VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
 \r
-[Rule.Common.PEIM.NORELOC]\r
-  FILE PEIM = $(NAMED_GUID) RELOCS_STRIPPED  {\r
-     PEI_DEPEX PEI_DEPEX Optional        |.depex\r
-     TE        TE                        |.efi\r
-     UI        STRING="$(MODULE_NAME)" Optional\r
-     VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+[Rule.Common.PEI_CORE]\r
+  FILE PEI_CORE = $(NAMED_GUID) {\r
+    PE32     PE32   Align=32    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+    UI       STRING ="$(MODULE_NAME)" Optional\r
+    VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
 \r
 [Rule.Common.PEIM]\r
   FILE PEIM = $(NAMED_GUID) {\r
-     PEI_DEPEX PEI_DEPEX Optional        |.depex\r
-     PE32      PE32   Align=32           |.efi\r
+     PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex\r
+     PE32      PE32   Align=32           $(INF_OUTPUT)/$(MODULE_NAME).efi\r
      UI       STRING="$(MODULE_NAME)" Optional\r
      VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
 \r
-[Rule.Common.PEIM.TIANOCOMPRESSED]\r
-  FILE PEIM = $(NAMED_GUID) {\r
-    PEI_DEPEX PEI_DEPEX Optional         |.depex\r
-    GUIDED A31280AD-481E-41B6-95E8-127F4C984779 PROCESSING_REQUIRED = TRUE {\r
-      PE32      PE32                     |.efi\r
-      UI        STRING="$(MODULE_NAME)" Optional\r
-      VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
-    }\r
-  }\r
-\r
 [Rule.Common.DXE_CORE]\r
   FILE DXE_CORE = $(NAMED_GUID) {\r
-    PE32     PE32           |.efi\r
+    PE32     PE32           $(INF_OUTPUT)/$(MODULE_NAME).efi\r
     UI       STRING="$(MODULE_NAME)" Optional\r
     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
 \r
-[Rule.Common.UEFI_DRIVER]\r
+[Rule.Common.DXE_DRIVER]\r
   FILE DRIVER = $(NAMED_GUID) {\r
-    DXE_DEPEX    DXE_DEPEX Optional      |.depex\r
-    PE32     PE32                    |.efi\r
+    DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex\r
+    PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
     UI       STRING="$(MODULE_NAME)" Optional\r
     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
 \r
-[Rule.Common.DXE_DRIVER]\r
+[Rule.Common.DXE_RUNTIME_DRIVER]\r
   FILE DRIVER = $(NAMED_GUID) {\r
-    DXE_DEPEX    DXE_DEPEX Optional      |.depex\r
-    PE32     PE32                    |.efi\r
+    DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex\r
+    PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
     UI       STRING="$(MODULE_NAME)" Optional\r
     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
 \r
-[Rule.Common.DXE_RUNTIME_DRIVER]\r
+[Rule.Common.UEFI_DRIVER]\r
   FILE DRIVER = $(NAMED_GUID) {\r
-    DXE_DEPEX    DXE_DEPEX Optional      |.depex\r
-    PE32     PE32                    |.efi\r
+    DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex\r
+    PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
     UI       STRING="$(MODULE_NAME)" Optional\r
     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
 \r
+[Rule.Common.UEFI_DRIVER.BINARY]\r
+  FILE DRIVER = $(NAMED_GUID) {\r
+    DXE_DEPEX DXE_DEPEX Optional      |.depex\r
+    PE32      PE32                    |.efi\r
+    UI        STRING="$(MODULE_NAME)" Optional\r
+    VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+  }\r
+\r
 [Rule.Common.UEFI_APPLICATION]\r
   FILE APPLICATION = $(NAMED_GUID) {\r
-    PE32     PE32                    |.efi\r
+    PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
     UI       STRING="$(MODULE_NAME)" Optional\r
     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
 \r
+[Rule.Common.UEFI_APPLICATION.BINARY]\r
+  FILE APPLICATION = $(NAMED_GUID) {\r
+    PE32      PE32                    |.efi\r
+    UI        STRING="$(MODULE_NAME)" Optional\r
+    VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
+  }\r
+\r
 [Rule.Common.USER_DEFINED.ACPITABLE]\r
   FILE FREEFORM = $(NAMED_GUID) {\r
     RAW ACPI               |.acpi\r
     RAW ASL                |.aml\r
   }\r
 \r
+[Rule.Common.USER_DEFINED.CSM]\r
+  FILE FREEFORM = $(NAMED_GUID) {\r
+    RAW BIN                |.bin\r
+  }\r
+\r
 [Rule.Common.SEC.RESET_VECTOR]\r
   FILE RAW = $(NAMED_GUID) {\r
     RAW RAW                |.raw\r
   }\r
-\r
-[OptionRom.CirrusLogic5446]\r
-INF  OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf {\r
-    PCI_DEVICE_ID  = 0x00B8\r
-  }\r
-\r