1# 2# Copyright (c) 2011-2015, ARM Limited. All rights reserved. 3# Copyright (c) 2014, Linaro Limited. All rights reserved. 4# Copyright (c) 2015, Intel Corporation. All rights reserved. 5# 6# This program and the accompanying materials 7# are licensed and made available under the terms and conditions of the BSD License 8# which accompanies this distribution. The full text of the license may be found at 9# http://opensource.org/licenses/bsd-license.php 10# 11# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13# 14# 15 16################################################################################ 17# 18# Defines Section - statements that will be processed to create a Makefile. 19# 20################################################################################ 21[Defines] 22 PLATFORM_NAME = ArmVirtQemu 23 PLATFORM_GUID = 37d7e986-f7e9-45c2-8067-e371421a626c 24 PLATFORM_VERSION = 0.1 25 DSC_SPECIFICATION = 0x00010005 26 OUTPUT_DIRECTORY = Build/ArmVirtQemu-$(ARCH) 27 SUPPORTED_ARCHITECTURES = AARCH64|ARM 28 BUILD_TARGETS = DEBUG|RELEASE 29 SKUID_IDENTIFIER = DEFAULT 30 FLASH_DEFINITION = ArmVirtPkg/ArmVirtQemu.fdf 31 32 # 33 # Defines for default states. These can be changed on the command line. 34 # -D FLAG=VALUE 35 # 36 DEFINE SECURE_BOOT_ENABLE = FALSE 37 38!include ArmVirtPkg/ArmVirt.dsc.inc 39 40[LibraryClasses.AARCH64] 41 ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf 42 ArmCpuLib|ArmPkg/Drivers/ArmCpuLib/ArmCortexAEMv8Lib/ArmCortexAEMv8Lib.inf 43 44[LibraryClasses.ARM] 45 ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.inf 46 ArmCpuLib|ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.inf 47 48[LibraryClasses.common] 49 # Virtio Support 50 VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf 51 VirtioMmioDeviceLib|OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf 52 QemuFwCfgLib|ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf 53 54 ArmPlatformLib|ArmVirtPkg/Library/ArmVirtPlatformLib/ArmVirtPlatformLib.inf 55 ArmPlatformSysConfigLib|ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.inf 56 57 TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf 58 NorFlashPlatformLib|ArmVirtPkg/Library/NorFlashQemuLib/NorFlashQemuLib.inf 59 60 CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf 61 GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf 62 PlatformBdsLib|ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf 63 CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf 64 QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf 65 66[LibraryClasses.common.UEFI_DRIVER] 67 UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf 68 69[LibraryClasses.AARCH64.SEC] 70 ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64LibSec.inf 71 72[LibraryClasses.ARM.SEC] 73 ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf 74 75[BuildOptions] 76 RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A15 -I$(WORKSPACE)/ArmVirtPkg/Include 77 GCC:*_*_ARM_PLATFORM_FLAGS == -mcpu=cortex-a15 -I$(WORKSPACE)/ArmVirtPkg/Include 78 *_*_AARCH64_PLATFORM_FLAGS == -I$(WORKSPACE)/ArmVirtPkg/Include 79 80 81################################################################################ 82# 83# Pcd Section - list of all EDK II PCD Entries defined by this Platform 84# 85################################################################################ 86 87[PcdsFeatureFlag.common] 88 gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderPciTranslation|TRUE 89 gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderMmioTranslation|TRUE 90 91 ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe. 92 # It could be set FALSE to save size. 93 gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE 94 gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE 95 96 # Activate KVM workaround for now. 97 gArmVirtTokenSpaceGuid.PcdKludgeMapPciMmioAsCached|TRUE 98 99[PcdsFixedAtBuild.common] 100 gArmPlatformTokenSpaceGuid.PcdCoreCount|1 101!if $(ARCH) == AARCH64 102 gArmTokenSpaceGuid.PcdVFPEnabled|1 103!endif 104 105 gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase|0x4007c000 106 gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x4000 107 108 # Size of the region used by UEFI in permanent memory (Reserved 64MB) 109 gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000 110 111 # 112 # ARM Pcds 113 # 114 gArmTokenSpaceGuid.PcdArmUncachedMemoryMask|0x0000000040000000 115 116 ## Trustzone enable (to make the transition from EL3 to EL2 in ArmPlatformPkg/Sec) 117 gArmTokenSpaceGuid.PcdTrustzoneSupport|FALSE 118 119 # 120 # ARM PrimeCell 121 # 122 123 ## PL011 - Serial Terminal 124 gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|38400 125 126 ## Default Terminal Type 127 ## 0-PCANSI, 1-VT100, 2-VT00+, 3-UTF8, 4-TTYTERM 128!if $(TTY_TERMINAL) == TRUE 129 gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|4 130!else 131 gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|1 132!endif 133 gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|3 134 135 # 136 # ARM Virtual Architectural Timer -- fetch frequency from QEMU (TCG) or KVM 137 # 138 gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|0 139 140 # 141 # NV Storage PCDs. Use base of 0x04000000 for NOR1 142 # 143 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x04000000 144 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00040000 145 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x04040000 146 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00040000 147 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x04080000 148 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00040000 149 150 # System Memory Base -- fixed at 0x4000_0000 151 gArmTokenSpaceGuid.PcdSystemMemoryBase|0x40000000 152 153 # initial location of the device tree blob passed by QEMU -- base of DRAM 154 gArmVirtTokenSpaceGuid.PcdDeviceTreeInitialBaseAddress|0x40000000 155 156 gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE 157 gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile|{ 0x83, 0xA5, 0x04, 0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1 } 158 159 # 160 # The maximum physical I/O addressability of the processor, set with 161 # BuildCpuHob(). 162 # 163 gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize|16 164 165[PcdsFixedAtBuild.AARCH64] 166 gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack|TRUE 167 168 # KVM limits it IPA space to 40 bits (1 TB), so there is no need to 169 # support anything bigger, even if the host hardware does 170 gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize|40 171 172[PcdsDynamicDefault.common] 173 ## If TRUE, OvmfPkg/AcpiPlatformDxe will not wait for PCI 174 # enumeration to complete before installing ACPI tables. 175 gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|TRUE 176 177 # System Memory Size -- 1 MB initially, actual size will be fetched from DT 178 gArmTokenSpaceGuid.PcdSystemMemorySize|0x00100000 179 180 gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum|0x0 181 gArmTokenSpaceGuid.PcdArmArchTimerIntrNum|0x0 182 gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum|0x0 183 gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum|0x0 184 185 # 186 # ARM General Interrupt Controller 187 # 188 gArmTokenSpaceGuid.PcdGicDistributorBase|0x0 189 gArmTokenSpaceGuid.PcdGicRedistributorsBase|0x0 190 gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x0 191 gArmVirtTokenSpaceGuid.PcdArmGicRevision|0x0 192 193 ## PL031 RealTimeClock 194 gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x0 195 196 gArmPlatformTokenSpaceGuid.PcdPciBusMin|0x0 197 gArmPlatformTokenSpaceGuid.PcdPciBusMax|0x0 198 gArmPlatformTokenSpaceGuid.PcdPciIoBase|0x0 199 gArmPlatformTokenSpaceGuid.PcdPciIoSize|0x0 200 gArmPlatformTokenSpaceGuid.PcdPciIoTranslation|0x0 201 gArmPlatformTokenSpaceGuid.PcdPciMmio32Base|0x0 202 gArmPlatformTokenSpaceGuid.PcdPciMmio32Size|0x0 203 gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x0 204 205 gArmVirtTokenSpaceGuid.PcdArmPsciMethod|0 206 207 gArmVirtTokenSpaceGuid.PcdFwCfgSelectorAddress|0x0 208 gArmVirtTokenSpaceGuid.PcdFwCfgDataAddress|0x0 209 gArmVirtTokenSpaceGuid.PcdFwCfgDmaAddress|0x0 210 211 # 212 # Set video resolution for boot options and for text setup. 213 # PlatformDxe can set the former at runtime. 214 # 215 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 216 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 217 gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|640 218 gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|480 219 220 # 221 # SMBIOS entry point version 222 # 223 gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0300 224 gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0 225 gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE 226 227################################################################################ 228# 229# Components Section - list of all EDK II Modules needed by this Platform 230# 231################################################################################ 232[Components.common] 233 # 234 # PEI Phase modules 235 # 236 ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf 237 MdeModulePkg/Core/Pei/PeiMain.inf 238 MdeModulePkg/Universal/PCD/Pei/Pcd.inf 239 ArmPlatformPkg/PlatformPei/PlatformPeim.inf 240 ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf 241 ArmPkg/Drivers/CpuPei/CpuPei.inf 242 243 MdeModulePkg/Universal/Variable/Pei/VariablePei.inf 244 245 MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf { 246 <LibraryClasses> 247 NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf 248 } 249 250 # 251 # DXE 252 # 253 MdeModulePkg/Core/Dxe/DxeMain.inf { 254 <LibraryClasses> 255 NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf 256 } 257 MdeModulePkg/Universal/PCD/Dxe/Pcd.inf 258 259 # 260 # Architectural Protocols 261 # 262 ArmPkg/Drivers/CpuDxe/CpuDxe.inf 263 MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf 264 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { 265 <LibraryClasses> 266 NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf 267 } 268!if $(SECURE_BOOT_ENABLE) == TRUE 269 MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf { 270 <LibraryClasses> 271 NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf 272 } 273 SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf 274!else 275 MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf 276!endif 277 MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf 278 MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf 279 MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf 280 EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf 281 EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf 282 EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf 283 284 MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf 285 MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf 286 MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf 287 MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf 288 MdeModulePkg/Universal/SerialDxe/SerialDxe.inf 289 290 MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf 291 292 ArmPkg/Drivers/ArmGic/ArmGicDxe.inf 293 ArmPkg/Drivers/TimerDxe/TimerDxe.inf 294!if $(SECURE_BOOT_ENABLE) == TRUE 295 ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashAuthenticatedDxe.inf 296!else 297 ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf 298!endif 299 MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf 300 301 # 302 # Platform Driver 303 # 304 ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.inf 305 ArmVirtPkg/HighMemDxe/HighMemDxe.inf 306 OvmfPkg/VirtioBlkDxe/VirtioBlk.inf 307 OvmfPkg/VirtioScsiDxe/VirtioScsi.inf 308 OvmfPkg/VirtioNetDxe/VirtioNet.inf 309 310 # 311 # FAT filesystem + GPT/MBR partitioning 312 # 313 MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf 314 MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf 315 MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf 316 317 # 318 # Bds 319 # 320 MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf 321 MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf 322 MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf 323 IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf 324 325 # 326 # SCSI Bus and Disk Driver 327 # 328 MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf 329 MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf 330 331 # 332 # SMBIOS Support 333 # 334 MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf { 335 <LibraryClasses> 336 NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf 337 } 338 OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf 339 340 # 341 # ACPI Support 342 # 343 MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf 344 OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpiPlatformDxe.inf 345 346 # 347 # PCI support 348 # 349 ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf 350 MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf 351 OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf 352 353 # 354 # Video support 355 # 356 OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf { 357 <LibraryClasses> 358 BltLib|OptionRomPkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf 359 } 360 OvmfPkg/PlatformDxe/Platform.inf 361 362 # 363 # USB Support 364 # 365 MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf 366 MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf 367 MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf 368 MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf 369 MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf 370 371[Components.ARM] 372 # 373 # The ARM/Linux kernel has no built in EFI boot stub (yet), so we still need 374 # an intermediate OS loader. Add the LinuxLoader UEFI application so we can 375 # invoke it from the shell. 376 # 377 MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf 378 ArmPkg/Application/LinuxLoader/LinuxLoader.inf { 379 <LibraryClasses> 380 BdsLib|ArmPkg/Library/BdsLib/BdsLib.inf 381 } 382