"OvmfPkg/SmbiosPlatformDxe" is structured somewhat differently from the
drivers duplicated and trimmed thus far in this series. The final QEMU and
Xen versions will share a relatively significant amount of code, therefore
duplicating the whole driver is less useful, even temporarily. Instead,
duplicate the INF file, in preparation for customizing the entry point
function.
Because ArmVirtXen doesn't actually include OvmfPkg/SmbiosPlatformDxe [*],
there is only one platform that's supposed to consume the new driver:
OvmfXen. Switch OvmfXen to the new driver at once.
[*] See commit 164cf40383 ("OvmfPkg: SmbiosPlatformDxe: restrict current
    Xen code to IA32/X64", 2015-07-26).
This patch is best viewed with "git show --find-copies-harder".
Cc: Anthony Perard <anthony.perard@citrix.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Julien Grall <julien@xen.org>
Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2122
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20210526201446.12554-42-lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
		
	
		
			
				
	
	
		
			534 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			534 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ## @file
 | |
| #  Open Virtual Machine Firmware: FDF
 | |
| #
 | |
| #  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
 | |
| #  (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
 | |
| #  Copyright (c) 2019, Citrix Systems, Inc.
 | |
| #
 | |
| #  SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| #
 | |
| ##
 | |
| 
 | |
| ################################################################################
 | |
| 
 | |
| [Defines]
 | |
| !include OvmfPkgDefines.fdf.inc
 | |
| 
 | |
| #
 | |
| # This will allow the flash device image to be recognize as an ELF, with first
 | |
| # an ELF headers, then the firmware code.
 | |
| #
 | |
| [FD.OVMF]
 | |
| BaseAddress   = $(FW_BASE_ADDRESS)
 | |
| Size          = $(FW_SIZE)
 | |
| ErasePolarity = 1
 | |
| BlockSize     = $(BLOCK_SIZE)
 | |
| NumBlocks     = $(FW_BLOCKS)
 | |
| 
 | |
| !if ($(FD_SIZE_IN_KB) == 1024) || ($(FD_SIZE_IN_KB) == 2048)
 | |
| 0x00000000|0x0000e000
 | |
| !endif
 | |
| !if $(FD_SIZE_IN_KB) == 4096
 | |
| 0x00000000|0x00040000
 | |
| !endif
 | |
| DATA = {
 | |
|   #
 | |
|   # This hex array have been generated by OvmfPkg/OvmfXenElfHeaderGenerator.c
 | |
|   # and copied manually.
 | |
|   #
 | |
|   # ELF file header
 | |
|   0x7f, 0x45, 0x4c, 0x46, # e_ident[0..3]: Magic number
 | |
|   0x01, # File class: 32-bit objects
 | |
|   0x01, # Data encoding: 2's complement, little endian
 | |
|   0x01, # File version
 | |
|   0x03, # OS ABI identification: Object uses GNU ELF extensions
 | |
|   0x00, # ABI version
 | |
|   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  # e_ident[EI_PAD...]
 | |
|   0x02, 0x00, # e_type = Executable file
 | |
|   0x03, 0x00, # e_machine = Intel 80386
 | |
|   0x01, 0x00, 0x00, 0x00, # e_version
 | |
|   0xd0, 0xff, 0x2f, 0x00, # e_entry: Entry point virtual address
 | |
|   0x34, 0x00, 0x00, 0x00, # e_phoff: Program header table file offset
 | |
|   0x00, 0x00, 0x00, 0x00, # e_shoff: Section header table file offset
 | |
|   0x00, 0x00, 0x00, 0x00, # e_flags: Processor-specific flags
 | |
|   0x34, 0x00, #    e_ehsize: ELF header size
 | |
|   0x20, 0x00, # e_phentsize: Program header table entry size
 | |
|   0x02, 0x00, #     e_phnum: Program header table entry count
 | |
|   0x00, 0x00, # e_shentsize: Section header table entry size
 | |
|   0x00, 0x00, #     e_shnum: Section header table entry count
 | |
|   0x00, 0x00, # e_shstrndx
 | |
| 
 | |
|   # ELF Program segment headers
 | |
|   # - Load segment
 | |
|   0x01, 0x00, 0x00, 0x00, # p_type = Loadable program segment
 | |
|   0x00, 0x00, 0x00, 0x00, # p_offset
 | |
|   0x00, 0x00, 0x10, 0x00, # p_vaddr: Segment virtual address
 | |
|   0x00, 0x00, 0x10, 0x00, # p_paddr: Segment physical address
 | |
|   0x00, 0x00, 0x20, 0x00, # p_filesz: Segment size in file
 | |
|   0x00, 0x00, 0x20, 0x00, # p_memsz: Segment size in memory
 | |
|   0x07, 0x00, 0x00, 0x00, # p_flags = Segment is executable | writable | readable
 | |
|   0x00, 0x00, 0x00, 0x00, # p_align
 | |
|   # - ELFNOTE segment
 | |
|   0x04, 0x00, 0x00, 0x00, # p_type = PT_NOTE
 | |
|   0x74, 0x00, 0x00, 0x00, # p_offset = point to XEN_ELFNOTE_PHYS32_ENTRY below
 | |
|   0x74, 0x00, 0x10, 0x00,
 | |
|   0x74, 0x00, 0x10, 0x00,
 | |
|   0x14, 0x00, 0x00, 0x00,
 | |
|   0x14, 0x00, 0x00, 0x00,
 | |
|   0x04, 0x00, 0x00, 0x00, # p_flags = Segment is readable
 | |
|   0x00, 0x00, 0x00, 0x00,
 | |
| 
 | |
|   # XEN_ELFNOTE_PHYS32_ENTRY
 | |
|   0x04, 0x00, 0x00, 0x00, # name size
 | |
|   0x04, 0x00, 0x00, 0x00, # desc size
 | |
|   0x12, 0x00, 0x00, 0x00, # type = XEN_ELFNOTE_PHYS32_ENTRY
 | |
|   0x58, 0x65, 0x6e, 0x00, # name = "Xen"
 | |
|   0xd0, 0xff, 0x2f, 0x00, # desc: PVH entry point
 | |
|   0x00
 | |
| }
 | |
| 
 | |
| !if ($(FD_SIZE_IN_KB) == 1024) || ($(FD_SIZE_IN_KB) == 2048)
 | |
| 0x0000e000|0x00001000
 | |
| !endif
 | |
| !if $(FD_SIZE_IN_KB) == 4096
 | |
| 0x00040000|0x00001000
 | |
| !endif
 | |
| #NV_EVENT_LOG
 | |
| 
 | |
| !if ($(FD_SIZE_IN_KB) == 1024) || ($(FD_SIZE_IN_KB) == 2048)
 | |
| 0x0000f000|0x00001000
 | |
| !endif
 | |
| !if $(FD_SIZE_IN_KB) == 4096
 | |
| 0x00041000|0x00001000
 | |
| !endif
 | |
| #NV_FTW_WORKING
 | |
| DATA = {
 | |
|   # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid         =
 | |
|   #  { 0x9e58292b, 0x7c68, 0x497d, { 0xa0, 0xce, 0x65,  0x0, 0xfd, 0x9f, 0x1b, 0x95 }}
 | |
|   0x2b, 0x29, 0x58, 0x9e, 0x68, 0x7c, 0x7d, 0x49,
 | |
|   0xa0, 0xce, 0x65,  0x0, 0xfd, 0x9f, 0x1b, 0x95,
 | |
|   # Crc:UINT32            #WorkingBlockValid:1, WorkingBlockInvalid:1, Reserved
 | |
|   0x2c, 0xaf, 0x2c, 0x64, 0xFE, 0xFF, 0xFF, 0xFF,
 | |
|   # WriteQueueSize: UINT64
 | |
|   0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | |
| }
 | |
| 
 | |
| !if ($(FD_SIZE_IN_KB) == 1024) || ($(FD_SIZE_IN_KB) == 2048)
 | |
| 0x00010000|0x00010000
 | |
| !endif
 | |
| !if $(FD_SIZE_IN_KB) == 4096
 | |
| 0x00042000|0x00042000
 | |
| !endif
 | |
| #NV_FTW_SPARE
 | |
| 
 | |
| 
 | |
| $(VARS_SIZE)|$(FVMAIN_SIZE)
 | |
| FV = FVMAIN_COMPACT
 | |
| 
 | |
| $(SECFV_OFFSET)|$(SECFV_SIZE)
 | |
| FV = SECFV
 | |
| 
 | |
| #
 | |
| # Build the variable store and the firmware code as separate flash device
 | |
| # images.
 | |
| #
 | |
| [FD.OVMF_VARS]
 | |
| BaseAddress   = $(FW_BASE_ADDRESS)
 | |
| Size          = $(VARS_SIZE)
 | |
| ErasePolarity = 1
 | |
| BlockSize     = $(BLOCK_SIZE)
 | |
| NumBlocks     = $(VARS_BLOCKS)
 | |
| 
 | |
| !include VarStore.fdf.inc
 | |
| 
 | |
| [FD.OVMF_CODE]
 | |
| BaseAddress   = $(CODE_BASE_ADDRESS)
 | |
| Size          = $(CODE_SIZE)
 | |
| ErasePolarity = 1
 | |
| BlockSize     = $(BLOCK_SIZE)
 | |
| NumBlocks     = $(CODE_BLOCKS)
 | |
| 
 | |
| 0x00000000|$(FVMAIN_SIZE)
 | |
| FV = FVMAIN_COMPACT
 | |
| 
 | |
| $(FVMAIN_SIZE)|$(SECFV_SIZE)
 | |
| FV = SECFV
 | |
| 
 | |
| ################################################################################
 | |
| 
 | |
| [FD.MEMFD]
 | |
| BaseAddress   = $(MEMFD_BASE_ADDRESS)
 | |
| Size          = 0xB00000
 | |
| ErasePolarity = 1
 | |
| BlockSize     = 0x10000
 | |
| NumBlocks     = 0xB0
 | |
| 
 | |
| 0x000000|0x006000
 | |
| gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize
 | |
| 
 | |
| 0x006000|0x001000
 | |
| gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageSize
 | |
| 
 | |
| 0x007000|0x001000
 | |
| gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress|gUefiOvmfPkgTokenSpaceGuid.PcdGuidedExtractHandlerTableSize
 | |
| 
 | |
| 0x008000|0x001000
 | |
| # Used by XenResetVector to communicate with XenPlatformPei
 | |
| gUefiOvmfPkgTokenSpaceGuid.PcdXenPvhStartOfDayStructPtr|gUefiOvmfPkgTokenSpaceGuid.PcdXenPvhStartOfDayStructPtrSize
 | |
| 
 | |
| 0x010000|0x010000
 | |
| gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize
 | |
| 
 | |
| 0x020000|0x0E0000
 | |
| gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize
 | |
| FV = PEIFV
 | |
| 
 | |
| 0x100000|0xA00000
 | |
| gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvSize
 | |
| FV = DXEFV
 | |
| 
 | |
| ################################################################################
 | |
| 
 | |
| [FV.SECFV]
 | |
| FvNameGuid         = 763BED0D-DE9F-48F5-81F1-3E90E1B1A015
 | |
| BlockSize          = 0x1000
 | |
| FvAlignment        = 16
 | |
| ERASE_POLARITY     = 1
 | |
| MEMORY_MAPPED      = TRUE
 | |
| STICKY_WRITE       = TRUE
 | |
| LOCK_CAP           = TRUE
 | |
| LOCK_STATUS        = TRUE
 | |
| WRITE_DISABLED_CAP = TRUE
 | |
| WRITE_ENABLED_CAP  = TRUE
 | |
| WRITE_STATUS       = TRUE
 | |
| WRITE_LOCK_CAP     = TRUE
 | |
| WRITE_LOCK_STATUS  = TRUE
 | |
| READ_DISABLED_CAP  = TRUE
 | |
| READ_ENABLED_CAP   = TRUE
 | |
| READ_STATUS        = TRUE
 | |
| READ_LOCK_CAP      = TRUE
 | |
| READ_LOCK_STATUS   = TRUE
 | |
| 
 | |
| #
 | |
| # SEC Phase modules
 | |
| #
 | |
| # The code in this FV handles the initial firmware startup, and
 | |
| # decompresses the PEI and DXE FVs which handles the rest of the boot sequence.
 | |
| #
 | |
| INF  OvmfPkg/Sec/SecMain.inf
 | |
| 
 | |
| INF  RuleOverride=RESET_VECTOR OvmfPkg/XenResetVector/XenResetVector.inf
 | |
| 
 | |
| ################################################################################
 | |
| [FV.PEIFV]
 | |
| FvNameGuid         = 6938079B-B503-4E3D-9D24-B28337A25806
 | |
| BlockSize          = 0x10000
 | |
| FvAlignment        = 16
 | |
| ERASE_POLARITY     = 1
 | |
| MEMORY_MAPPED      = TRUE
 | |
| STICKY_WRITE       = TRUE
 | |
| LOCK_CAP           = TRUE
 | |
| LOCK_STATUS        = TRUE
 | |
| WRITE_DISABLED_CAP = TRUE
 | |
| WRITE_ENABLED_CAP  = TRUE
 | |
| WRITE_STATUS       = TRUE
 | |
| WRITE_LOCK_CAP     = TRUE
 | |
| WRITE_LOCK_STATUS  = TRUE
 | |
| READ_DISABLED_CAP  = TRUE
 | |
| READ_ENABLED_CAP   = TRUE
 | |
| READ_STATUS        = TRUE
 | |
| READ_LOCK_CAP      = TRUE
 | |
| READ_LOCK_STATUS   = TRUE
 | |
| 
 | |
| APRIORI PEI {
 | |
|   INF  MdeModulePkg/Universal/PCD/Pei/Pcd.inf
 | |
| }
 | |
| 
 | |
| #
 | |
| #  PEI Phase modules
 | |
| #
 | |
| INF  MdeModulePkg/Core/Pei/PeiMain.inf
 | |
| INF  MdeModulePkg/Universal/PCD/Pei/Pcd.inf
 | |
| INF  MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
 | |
| INF  MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf
 | |
| INF  OvmfPkg/XenPlatformPei/XenPlatformPei.inf
 | |
| INF  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
 | |
| INF  UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
 | |
| INF  UefiCpuPkg/CpuMpPei/CpuMpPei.inf
 | |
| 
 | |
| ################################################################################
 | |
| 
 | |
| [FV.DXEFV]
 | |
| FvForceRebase      = FALSE
 | |
| FvNameGuid         = 7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1
 | |
| BlockSize          = 0x10000
 | |
| FvAlignment        = 16
 | |
| ERASE_POLARITY     = 1
 | |
| MEMORY_MAPPED      = TRUE
 | |
| STICKY_WRITE       = TRUE
 | |
| LOCK_CAP           = TRUE
 | |
| LOCK_STATUS        = TRUE
 | |
| WRITE_DISABLED_CAP = TRUE
 | |
| WRITE_ENABLED_CAP  = TRUE
 | |
| WRITE_STATUS       = TRUE
 | |
| WRITE_LOCK_CAP     = TRUE
 | |
| WRITE_LOCK_STATUS  = TRUE
 | |
| READ_DISABLED_CAP  = TRUE
 | |
| READ_ENABLED_CAP   = TRUE
 | |
| READ_STATUS        = TRUE
 | |
| READ_LOCK_CAP      = TRUE
 | |
| READ_LOCK_STATUS   = TRUE
 | |
| 
 | |
| APRIORI DXE {
 | |
|   INF  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
 | |
|   INF  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
 | |
|   INF  OvmfPkg/AmdSevDxe/AmdSevDxe.inf
 | |
|   INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
 | |
| }
 | |
| 
 | |
| #
 | |
| # DXE Phase modules
 | |
| #
 | |
| INF  MdeModulePkg/Core/Dxe/DxeMain.inf
 | |
| 
 | |
| INF  MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
 | |
| INF  MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf
 | |
| INF  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
 | |
| 
 | |
| INF  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
 | |
| INF  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
 | |
| INF  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
 | |
| INF  OvmfPkg/XenTimerDxe/XenTimerDxe.inf
 | |
| INF  UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
 | |
| INF  UefiCpuPkg/CpuDxe/CpuDxe.inf
 | |
| INF  OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
 | |
| INF  MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
 | |
| INF  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
 | |
| INF  MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
 | |
| INF  MdeModulePkg/Universal/Metronome/Metronome.inf
 | |
| INF  EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
 | |
| 
 | |
| INF  OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.inf
 | |
| INF  OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf
 | |
| INF  OvmfPkg/XenBusDxe/XenBusDxe.inf
 | |
| INF  OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf
 | |
| INF  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 | |
| 
 | |
| INF  MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
 | |
| INF  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
 | |
| INF  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
 | |
| INF  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
 | |
| INF  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
 | |
| INF  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
 | |
| INF  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
 | |
| INF  MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf
 | |
| INF  MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
 | |
| INF  MdeModulePkg/Application/UiApp/UiApp.inf
 | |
| INF  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
 | |
| INF  MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
 | |
| INF  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
 | |
| INF  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
 | |
| INF  MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.inf
 | |
| INF  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
 | |
| INF  MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
 | |
| INF  MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
 | |
| INF  OvmfPkg/SataControllerDxe/SataControllerDxe.inf
 | |
| INF  MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
 | |
| INF  MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
 | |
| INF  MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
 | |
| INF  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
 | |
| INF  MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
 | |
| INF  MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
 | |
| INF  MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
 | |
| 
 | |
| INF  OvmfPkg/SioBusDxe/SioBusDxe.inf
 | |
| !if $(SOURCE_DEBUG_ENABLE) == FALSE
 | |
| INF  MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
 | |
| !endif
 | |
| INF  MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
 | |
| 
 | |
| INF  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
 | |
| INF  OvmfPkg/SmbiosPlatformDxe/XenSmbiosPlatformDxe.inf
 | |
| 
 | |
| INF  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
 | |
| INF  OvmfPkg/XenAcpiPlatformDxe/XenAcpiPlatformDxe.inf
 | |
| INF  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
 | |
| INF  MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf
 | |
| INF  MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
 | |
| 
 | |
| INF  FatPkg/EnhancedFatDxe/Fat.inf
 | |
| INF  MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
 | |
| 
 | |
| !if $(TOOL_CHAIN_TAG) != "XCODE5"
 | |
| INF  ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf
 | |
| INF  ShellPkg/DynamicCommand/HttpDynamicCommand/HttpDynamicCommand.inf
 | |
| INF  OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf
 | |
| !endif
 | |
| INF  ShellPkg/Application/Shell/Shell.inf
 | |
| 
 | |
| INF MdeModulePkg/Logo/LogoDxe.inf
 | |
| 
 | |
| #
 | |
| # Network modules
 | |
| #
 | |
| !if $(E1000_ENABLE)
 | |
|   FILE DRIVER = 5D695E11-9B3F-4b83-B25F-4A8D5D69BE07 {
 | |
|     SECTION PE32 = Intel3.5/EFIX64/E3522X2.EFI
 | |
|   }
 | |
| !endif
 | |
| !include NetworkPkg/Network.fdf.inc
 | |
| 
 | |
| #
 | |
| # Usb Support
 | |
| #
 | |
| INF  MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
 | |
| INF  MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
 | |
| INF  MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
 | |
| INF  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
 | |
| INF  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
 | |
| INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
 | |
| 
 | |
| !ifdef $(CSM_ENABLE)
 | |
| INF  OvmfPkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf
 | |
| INF  OvmfPkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf
 | |
| INF  RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf
 | |
| !endif
 | |
| 
 | |
| INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
 | |
| INF  OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf
 | |
| INF  OvmfPkg/PlatformDxe/Platform.inf
 | |
| INF  OvmfPkg/AmdSevDxe/AmdSevDxe.inf
 | |
| INF  OvmfPkg/IoMmuDxe/IoMmuDxe.inf
 | |
| 
 | |
| #
 | |
| # Variable driver stack (non-SMM)
 | |
| #
 | |
| INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
 | |
| INF  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
 | |
| INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
 | |
| INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
 | |
| 
 | |
| ################################################################################
 | |
| 
 | |
| [FV.FVMAIN_COMPACT]
 | |
| FvNameGuid         = 48DB5E17-707C-472D-91CD-1613E7EF51B0
 | |
| FvAlignment        = 16
 | |
| ERASE_POLARITY     = 1
 | |
| MEMORY_MAPPED      = TRUE
 | |
| STICKY_WRITE       = TRUE
 | |
| LOCK_CAP           = TRUE
 | |
| LOCK_STATUS        = TRUE
 | |
| WRITE_DISABLED_CAP = TRUE
 | |
| WRITE_ENABLED_CAP  = TRUE
 | |
| WRITE_STATUS       = TRUE
 | |
| WRITE_LOCK_CAP     = TRUE
 | |
| WRITE_LOCK_STATUS  = TRUE
 | |
| READ_DISABLED_CAP  = TRUE
 | |
| READ_ENABLED_CAP   = TRUE
 | |
| READ_STATUS        = TRUE
 | |
| READ_LOCK_CAP      = TRUE
 | |
| READ_LOCK_STATUS   = TRUE
 | |
| 
 | |
| FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
 | |
|    SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {
 | |
|      #
 | |
|      # These firmware volumes will have files placed in them uncompressed,
 | |
|      # and then both firmware volumes will be compressed in a single
 | |
|      # compression operation in order to achieve better overall compression.
 | |
|      #
 | |
|      SECTION FV_IMAGE = PEIFV
 | |
|      SECTION FV_IMAGE = DXEFV
 | |
|    }
 | |
|  }
 | |
| 
 | |
| !include FvmainCompactScratchEnd.fdf.inc
 | |
| 
 | |
| ################################################################################
 | |
| 
 | |
| [Rule.Common.SEC]
 | |
|   FILE SEC = $(NAMED_GUID) {
 | |
|     PE32     PE32           $(INF_OUTPUT)/$(MODULE_NAME).efi
 | |
|     UI       STRING ="$(MODULE_NAME)" Optional
 | |
|     VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
 | |
|   }
 | |
| 
 | |
| [Rule.Common.PEI_CORE]
 | |
|   FILE PEI_CORE = $(NAMED_GUID) {
 | |
|     PE32     PE32   Align=Auto    $(INF_OUTPUT)/$(MODULE_NAME).efi
 | |
|     UI       STRING ="$(MODULE_NAME)" Optional
 | |
|     VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
 | |
|   }
 | |
| 
 | |
| [Rule.Common.PEIM]
 | |
|   FILE PEIM = $(NAMED_GUID) {
 | |
|      PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex
 | |
|      PE32      PE32   Align=Auto         $(INF_OUTPUT)/$(MODULE_NAME).efi
 | |
|      UI       STRING="$(MODULE_NAME)" Optional
 | |
|      VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
 | |
|   }
 | |
| 
 | |
| [Rule.Common.DXE_CORE]
 | |
|   FILE DXE_CORE = $(NAMED_GUID) {
 | |
|     PE32     PE32           $(INF_OUTPUT)/$(MODULE_NAME).efi
 | |
|     UI       STRING="$(MODULE_NAME)" Optional
 | |
|     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
 | |
|   }
 | |
| 
 | |
| [Rule.Common.DXE_DRIVER]
 | |
|   FILE DRIVER = $(NAMED_GUID) {
 | |
|     DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex
 | |
|     PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
 | |
|     UI       STRING="$(MODULE_NAME)" Optional
 | |
|     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
 | |
|     RAW ACPI  Optional               |.acpi
 | |
|     RAW ASL   Optional               |.aml
 | |
|   }
 | |
| 
 | |
| [Rule.Common.DXE_RUNTIME_DRIVER]
 | |
|   FILE DRIVER = $(NAMED_GUID) {
 | |
|     DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex
 | |
|     PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
 | |
|     UI       STRING="$(MODULE_NAME)" Optional
 | |
|     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
 | |
|   }
 | |
| 
 | |
| [Rule.Common.UEFI_DRIVER]
 | |
|   FILE DRIVER = $(NAMED_GUID) {
 | |
|     DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex
 | |
|     PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
 | |
|     UI       STRING="$(MODULE_NAME)" Optional
 | |
|     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
 | |
|   }
 | |
| 
 | |
| [Rule.Common.UEFI_DRIVER.BINARY]
 | |
|   FILE DRIVER = $(NAMED_GUID) {
 | |
|     DXE_DEPEX DXE_DEPEX Optional      |.depex
 | |
|     PE32      PE32                    |.efi
 | |
|     UI        STRING="$(MODULE_NAME)" Optional
 | |
|     VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
 | |
|   }
 | |
| 
 | |
| [Rule.Common.UEFI_APPLICATION]
 | |
|   FILE APPLICATION = $(NAMED_GUID) {
 | |
|     PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
 | |
|     UI       STRING="$(MODULE_NAME)" Optional
 | |
|     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
 | |
|   }
 | |
| 
 | |
| [Rule.Common.UEFI_APPLICATION.BINARY]
 | |
|   FILE APPLICATION = $(NAMED_GUID) {
 | |
|     PE32      PE32                    |.efi
 | |
|     UI        STRING="$(MODULE_NAME)" Optional
 | |
|     VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
 | |
|   }
 | |
| 
 | |
| [Rule.Common.USER_DEFINED.CSM]
 | |
|   FILE FREEFORM = $(NAMED_GUID) {
 | |
|     RAW BIN                |.bin
 | |
|   }
 | |
| 
 | |
| [Rule.Common.SEC.RESET_VECTOR]
 | |
|   FILE RAW = $(NAMED_GUID) {
 | |
|     RAW BIN   Align = 16   |.bin
 | |
|   }
 |