DHCP, PXE, and StdLib socket apps are enabled in OVMF by the sum of: (a) a UEFI NIC driver, (b) the generic network stack. The only choice for (a) used to be the proprietary Intel E1000 driver, which is cumbersome to obtain and enable. The iPXE UEFI NIC drivers packaged with qemu-1.5 cover (a) for each NIC type supported by qemu, and are easy to obtain & configure, even for earlier qemu versions. Therefore enable (b) per default as well. This doesn't take up much space; the binaries (b) adds to the firmware don't seem to need -D FD_SIZE_2MB. Intel's e1000 driver remains an option, requested by the -D E1000_ENABLE build flag. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14366 6f19259b-4bc3-4df7-8a09-765794883524
406 lines
13 KiB
Plaintext
406 lines
13 KiB
Plaintext
## @file
|
|
# Open Virtual Machine Firmware: FDF
|
|
#
|
|
# Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
|
#
|
|
# This program and the accompanying materials
|
|
# are licensed and made available under the terms and conditions of the BSD License
|
|
# which accompanies this distribution. The full text of the license may be found at
|
|
# http://opensource.org/licenses/bsd-license.php
|
|
#
|
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
#
|
|
##
|
|
|
|
################################################################################
|
|
!ifndef $(FD_SIZE_2MB)
|
|
[FD.OVMF]
|
|
BaseAddress = 0xFFF00000
|
|
Size = 0x00100000
|
|
ErasePolarity = 1
|
|
BlockSize = 0x1000
|
|
NumBlocks = 0x100
|
|
|
|
0x00000000|0x000E6000
|
|
FV = FVMAIN_COMPACT
|
|
|
|
0x000E6000|0x1A000
|
|
FV = SECFV
|
|
!else
|
|
[FD.OVMF]
|
|
BaseAddress = 0xFFE00000
|
|
Size = 0x00200000
|
|
ErasePolarity = 1
|
|
BlockSize = 0x1000
|
|
NumBlocks = 0x200
|
|
|
|
0x00000000|0x001CC000
|
|
FV = FVMAIN_COMPACT
|
|
|
|
0x001CC000|0x34000
|
|
FV = SECFV
|
|
!endif
|
|
|
|
################################################################################
|
|
|
|
[FD.MEMFD]
|
|
BaseAddress = 0x800000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase
|
|
Size = 0x800000|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize
|
|
ErasePolarity = 1
|
|
BlockSize = 0x10000
|
|
NumBlocks = 0x80
|
|
|
|
0x0|0x800000
|
|
FV = MAINFV
|
|
|
|
################################################################################
|
|
|
|
[FV.SECFV]
|
|
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 MAINFV which handles the majority of the boot sequence.
|
|
#
|
|
INF OvmfPkg/Sec/SecMain.inf
|
|
|
|
INF RuleOverride=RESET_VECTOR UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.inf
|
|
|
|
################################################################################
|
|
[FV.MAINFV]
|
|
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
|
|
|
|
#
|
|
# Files to be placed in MAIN FV
|
|
#
|
|
# This firmware volume will have files placed in it uncompressed,
|
|
# and then then entire firmware volume will be compressed in a
|
|
# single compression operation in order to achieve better
|
|
# overall compression.
|
|
#
|
|
|
|
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 IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf
|
|
INF OvmfPkg/PlatformPei/PlatformPei.inf
|
|
INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
|
|
|
|
FILE FV_IMAGE = A4EF5A93-3F1B-4232-A1C4-F0910E6D1D9C {
|
|
SECTION COMPRESS PI_NONE {
|
|
SECTION FV_IMAGE = DXEFV
|
|
}
|
|
}
|
|
|
|
################################################################################
|
|
|
|
[FV.DXEFV]
|
|
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/PCD/Dxe/Pcd.inf
|
|
}
|
|
|
|
#
|
|
# DXE Phase modules
|
|
#
|
|
INF MdeModulePkg/Core/Dxe/DxeMain.inf
|
|
|
|
INF IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.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 PcAtChipsetPkg/8259InterruptControllerDxe/8259.inf
|
|
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
|
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
|
|
INF PcAtChipsetPkg/8254TimerDxe/8254Timer.inf
|
|
INF PcAtChipsetPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
|
INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
|
|
INF PcAtChipsetPkg/KbcResetDxe/Reset.inf
|
|
INF MdeModulePkg/Universal/Metronome/Metronome.inf
|
|
INF PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
|
|
|
|
INF OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
|
INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
|
INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
|
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
|
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
|
|
|
!if $(SECURE_BOOT_ENABLE) == TRUE
|
|
INF SecurityPkg/VariableAuthenticated/RuntimeDxe/VariableRuntimeDxe.inf
|
|
INF OvmfPkg/SecureBootConfigDxe/SecureBootConfigDxe.inf
|
|
!else
|
|
INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
|
|
!endif
|
|
|
|
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 IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.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/UnicodeCollation/EnglishDxe/EnglishDxe.inf
|
|
INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
|
|
INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
|
|
INF IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBusDxe.inf
|
|
INF PcAtChipsetPkg/Bus/Pci/IdeControllerDxe/IdeControllerDxe.inf
|
|
INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
|
|
INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
|
|
INF MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
|
|
|
|
INF PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf
|
|
INF IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
|
|
|
|
!ifndef $(SOURCE_DEBUG_ENABLE)
|
|
INF IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf
|
|
!endif
|
|
|
|
INF IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf
|
|
INF IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppyDxe.inf
|
|
|
|
INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
|
|
INF OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
|
|
|
|
INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
|
|
INF OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
|
|
INF RuleOverride=ACPITABLE OvmfPkg/AcpiTables/AcpiTables.inf
|
|
|
|
INF RuleOverride = BINARY FatBinPkg/EnhancedFatDxe/Fat.inf
|
|
|
|
!if $(BUILD_NEW_SHELL)
|
|
INF ShellPkg/Application/Shell/Shell.inf
|
|
!else
|
|
!if $(USE_NEW_SHELL)
|
|
INF RuleOverride = BINARY ShellBinPkg/UefiShell/UefiShell.inf
|
|
!else
|
|
INF RuleOverride = BINARY EdkShellBinPkg/FullShell/FullShell.inf
|
|
!endif
|
|
!endif
|
|
|
|
FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
|
|
SECTION RAW = MdeModulePkg/Logo/Logo.bmp
|
|
}
|
|
|
|
#
|
|
# Network modules
|
|
#
|
|
!if $(E1000_ENABLE)
|
|
FILE DRIVER = 5D695E11-9B3F-4b83-B25F-4A8D5D69BE07 {
|
|
SECTION PE32 = Intel3.5/EFIX64/E3507X2.EFI
|
|
}
|
|
!endif
|
|
INF MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
|
|
INF MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
|
INF MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
|
|
INF MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
|
|
INF MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
|
|
INF MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf
|
|
INF MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxe.inf
|
|
INF MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
|
|
INF MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
|
|
INF MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
|
|
INF MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
|
|
INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
|
|
INF MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
|
|
|
|
#
|
|
# Usb Support
|
|
#
|
|
INF MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
|
|
INF MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.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 IntelFrameworkModulePkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf
|
|
INF IntelFrameworkModulePkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf
|
|
INF RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf
|
|
!endif
|
|
|
|
INF OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
|
|
|
|
################################################################################
|
|
|
|
[FV.FVMAIN_COMPACT]
|
|
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 {
|
|
SECTION FV_IMAGE = MAINFV
|
|
}
|
|
}
|
|
|
|
################################################################################
|
|
|
|
[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=32 $(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=32 $(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)
|
|
}
|
|
|
|
[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.ACPITABLE]
|
|
FILE FREEFORM = $(NAMED_GUID) {
|
|
RAW ACPI |.acpi
|
|
RAW ASL |.aml
|
|
}
|
|
|
|
[Rule.Common.USER_DEFINED.CSM]
|
|
FILE FREEFORM = $(NAMED_GUID) {
|
|
RAW BIN |.bin
|
|
}
|
|
|
|
[Rule.Common.SEC.RESET_VECTOR]
|
|
FILE RAW = $(NAMED_GUID) {
|
|
RAW RAW |.raw
|
|
}
|