1#
2#  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
3#  Copyright (c) 2014, Linaro Limited. All rights reserved.
4#  Copyright (c) 2015 - 2020, Intel Corporation. All rights reserved.
5#
6#  SPDX-License-Identifier: BSD-2-Clause-Patent
7#
8#
9
10################################################################################
11#
12# Defines Section - statements that will be processed to create a Makefile.
13#
14################################################################################
15[Defines]
16  PLATFORM_NAME                  = ArmVirtQemu
17  PLATFORM_GUID                  = 37d7e986-f7e9-45c2-8067-e371421a626c
18  PLATFORM_VERSION               = 0.1
19  DSC_SPECIFICATION              = 0x00010005
20  OUTPUT_DIRECTORY               = Build/ArmVirtQemu-$(ARCH)
21  SUPPORTED_ARCHITECTURES        = AARCH64|ARM
22  BUILD_TARGETS                  = DEBUG|RELEASE|NOOPT
23  SKUID_IDENTIFIER               = DEFAULT
24  FLASH_DEFINITION               = ArmVirtPkg/ArmVirtQemu.fdf
25
26  #
27  # Defines for default states.  These can be changed on the command line.
28  # -D FLAG=VALUE
29  #
30  DEFINE TTY_TERMINAL            = FALSE
31  DEFINE SECURE_BOOT_ENABLE      = FALSE
32  DEFINE TPM2_ENABLE             = FALSE
33  DEFINE TPM2_CONFIG_ENABLE      = FALSE
34
35  #
36  # Network definition
37  #
38  DEFINE NETWORK_IP6_ENABLE              = FALSE
39  DEFINE NETWORK_HTTP_BOOT_ENABLE        = FALSE
40  DEFINE NETWORK_SNP_ENABLE              = FALSE
41  DEFINE NETWORK_TLS_ENABLE              = FALSE
42  DEFINE NETWORK_ALLOW_HTTP_CONNECTIONS  = TRUE
43  DEFINE NETWORK_ISCSI_ENABLE            = TRUE
44
45!if $(NETWORK_SNP_ENABLE) == TRUE
46  !error "NETWORK_SNP_ENABLE is IA32/X64/EBC only"
47!endif
48
49!include NetworkPkg/NetworkDefines.dsc.inc
50
51!include ArmVirtPkg/ArmVirt.dsc.inc
52
53[LibraryClasses.common]
54  ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
55  ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf
56
57  # Virtio Support
58  VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
59  VirtioMmioDeviceLib|OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf
60  QemuFwCfgLib|ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf
61  QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/BaseQemuFwCfgS3LibNull.inf
62  QemuFwCfgSimpleParserLib|OvmfPkg/Library/QemuFwCfgSimpleParserLib/QemuFwCfgSimpleParserLib.inf
63  QemuLoadImageLib|OvmfPkg/Library/GenericQemuLoadImageLib/GenericQemuLoadImageLib.inf
64
65  ArmPlatformLib|ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.inf
66
67  TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
68  NorFlashPlatformLib|ArmVirtPkg/Library/NorFlashQemuLib/NorFlashQemuLib.inf
69
70  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
71  BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
72  PlatformBootManagerLib|ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
73  PlatformBmPrintScLib|OvmfPkg/Library/PlatformBmPrintScLib/PlatformBmPrintScLib.inf
74  CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
75  FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf
76  QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf
77  FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
78  PciPcdProducerLib|ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf
79  PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf
80  PciHostBridgeLib|ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.inf
81  PciHostBridgeUtilityLib|OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.inf
82
83!if $(TPM2_ENABLE) == TRUE
84  Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf
85  Tcg2PhysicalPresenceLib|OvmfPkg/Library/Tcg2PhysicalPresenceLibQemu/DxeTcg2PhysicalPresenceLib.inf
86  TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf
87!else
88  TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
89!endif
90
91[LibraryClasses.common.PEIM]
92  ArmVirtMemInfoLib|ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLib.inf
93
94!if $(TPM2_ENABLE) == TRUE
95  BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf
96  ResetSystemLib|MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.inf
97  Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpm.inf
98!endif
99
100[LibraryClasses.common.DXE_DRIVER]
101  ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
102
103!if $(TPM2_ENABLE) == TRUE
104  Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf
105!endif
106
107[LibraryClasses.common.UEFI_DRIVER]
108  UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
109
110[BuildOptions]
111!include NetworkPkg/NetworkBuildOptions.dsc.inc
112
113################################################################################
114#
115# Pcd Section - list of all EDK II PCD Entries defined by this Platform
116#
117################################################################################
118
119[PcdsFeatureFlag.common]
120  gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderPciTranslation|TRUE
121  gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderMmioTranslation|TRUE
122
123  ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
124  #  It could be set FALSE to save size.
125  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
126  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
127
128  gEfiMdeModulePkgTokenSpaceGuid.PcdTurnOffUsbLegacySupport|TRUE
129
130  gArmVirtTokenSpaceGuid.PcdTpm2SupportEnabled|$(TPM2_ENABLE)
131
132[PcdsFixedAtBuild.common]
133!if $(ARCH) == AARCH64
134  gArmTokenSpaceGuid.PcdVFPEnabled|1
135!endif
136
137  gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase|0x4007c000
138  gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x4000
139  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000
140  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x2800
141!if $(NETWORK_TLS_ENABLE) == TRUE
142  #
143  # The cumulative and individual VOLATILE variable size limits should be set
144  # high enough for accommodating several and/or large CA certificates.
145  #
146  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x80000
147  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize|0x40000
148!endif
149
150  # Size of the region used by UEFI in permanent memory (Reserved 64MB)
151  gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
152
153  #
154  # ARM PrimeCell
155  #
156
157  ## PL011 - Serial Terminal
158  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|38400
159
160  ## Default Terminal Type
161  ## 0-PCANSI, 1-VT100, 2-VT00+, 3-UTF8, 4-TTYTERM
162!if $(TTY_TERMINAL) == TRUE
163  gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|4
164  # Set terminal type to TtyTerm, the value encoded is EFI_TTY_TERM_GUID
165  gArmVirtTokenSpaceGuid.PcdTerminalTypeGuidBuffer|{0x80, 0x6d, 0x91, 0x7d, 0xb1, 0x5b, 0x8c, 0x45, 0xa4, 0x8f, 0xe2, 0x5f, 0xdd, 0x51, 0xef, 0x94}
166!else
167  gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|1
168!endif
169
170  #
171  # ARM Virtual Architectural Timer -- fetch frequency from QEMU (TCG) or KVM
172  #
173  gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|0
174
175  #
176  # Network Pcds
177  #
178!include NetworkPkg/NetworkPcds.dsc.inc
179
180  # System Memory Base -- fixed at 0x4000_0000
181  gArmTokenSpaceGuid.PcdSystemMemoryBase|0x40000000
182
183  # initial location of the device tree blob passed by QEMU -- base of DRAM
184  gArmVirtTokenSpaceGuid.PcdDeviceTreeInitialBaseAddress|0x40000000
185
186  gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE
187  gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }
188
189  #
190  # The maximum physical I/O addressability of the processor, set with
191  # BuildCpuHob().
192  #
193  gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize|16
194
195  #
196  # Enable the non-executable DXE stack. (This gets set up by DxeIpl)
197  #
198  gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack|TRUE
199
200!if $(SECURE_BOOT_ENABLE) == TRUE
201  # override the default values from SecurityPkg to ensure images from all sources are verified in secure boot
202  gEfiSecurityPkgTokenSpaceGuid.PcdOptionRomImageVerificationPolicy|0x04
203  gEfiSecurityPkgTokenSpaceGuid.PcdFixedMediaImageVerificationPolicy|0x04
204  gEfiSecurityPkgTokenSpaceGuid.PcdRemovableMediaImageVerificationPolicy|0x04
205!endif
206
207  gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|3
208  gEfiShellPkgTokenSpaceGuid.PcdShellFileOperationSize|0x20000
209
210[PcdsFixedAtBuild.AARCH64]
211  # Clearing BIT0 in this PCD prevents installing a 32-bit SMBIOS entry point,
212  # if the entry point version is >= 3.0. AARCH64 OSes cannot assume the
213  # presence of the 32-bit entry point anyway (because many AARCH64 systems
214  # don't have 32-bit addressable physical RAM), and the additional allocations
215  # below 4 GB needlessly fragment the memory map. So expose the 64-bit entry
216  # point only, for entry point versions >= 3.0.
217  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosEntryPointProvideMethod|0x2
218
219[PcdsDynamicDefault.common]
220  gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|3
221
222  ## If TRUE, OvmfPkg/AcpiPlatformDxe will not wait for PCI
223  #  enumeration to complete before installing ACPI tables.
224  gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|TRUE
225
226  # System Memory Size -- 1 MB initially, actual size will be fetched from DT
227  gArmTokenSpaceGuid.PcdSystemMemorySize|0x00100000
228
229  gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum|0x0
230  gArmTokenSpaceGuid.PcdArmArchTimerIntrNum|0x0
231  gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum|0x0
232  gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum|0x0
233
234  #
235  # ARM General Interrupt Controller
236  #
237  gArmTokenSpaceGuid.PcdGicDistributorBase|0x0
238  gArmTokenSpaceGuid.PcdGicRedistributorsBase|0x0
239  gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x0
240
241  ## PL031 RealTimeClock
242  gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x0
243
244  # set PcdPciExpressBaseAddress to MAX_UINT64, which signifies that this
245  # PCD and PcdPciDisableBusEnumeration above have not been assigned yet
246  gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0xFFFFFFFFFFFFFFFF
247
248  gArmTokenSpaceGuid.PcdPciIoTranslation|0x0
249
250  #
251  # Set video resolution for boot options and for text setup.
252  # PlatformDxe can set the former at runtime.
253  #
254  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
255  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
256  gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|640
257  gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|480
258
259  #
260  # SMBIOS entry point version
261  #
262  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0300
263  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0
264  gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE
265
266  #
267  # IPv4 and IPv6 PXE Boot support.
268  #
269  gEfiNetworkPkgTokenSpaceGuid.PcdIPv4PXESupport|0x01
270  gEfiNetworkPkgTokenSpaceGuid.PcdIPv6PXESupport|0x01
271
272  #
273  # TPM2 support
274  #
275  gEfiSecurityPkgTokenSpaceGuid.PcdTpmBaseAddress|0x0
276!if $(TPM2_ENABLE) == TRUE
277  gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
278  gEfiSecurityPkgTokenSpaceGuid.PcdTpm2HashMask|0
279!endif
280
281[PcdsDynamicHii]
282  gArmVirtTokenSpaceGuid.PcdForceNoAcpi|L"ForceNoAcpi"|gArmVirtVariableGuid|0x0|FALSE|NV,BS
283
284!if $(TPM2_CONFIG_ENABLE) == TRUE
285  gEfiSecurityPkgTokenSpaceGuid.PcdTcgPhysicalPresenceInterfaceVer|L"TCG2_VERSION"|gTcg2ConfigFormSetGuid|0x0|"1.3"|NV,BS
286  gEfiSecurityPkgTokenSpaceGuid.PcdTpm2AcpiTableRev|L"TCG2_VERSION"|gTcg2ConfigFormSetGuid|0x8|3|NV,BS
287!endif
288
289################################################################################
290#
291# Components Section - list of all EDK II Modules needed by this Platform
292#
293################################################################################
294[Components.common]
295  #
296  # PEI Phase modules
297  #
298  ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf
299  MdeModulePkg/Core/Pei/PeiMain.inf
300  MdeModulePkg/Universal/PCD/Pei/Pcd.inf {
301    <LibraryClasses>
302      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
303  }
304  ArmPlatformPkg/PlatformPei/PlatformPeim.inf
305  ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf
306  ArmPkg/Drivers/CpuPei/CpuPei.inf
307
308  MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
309
310!if $(TPM2_ENABLE) == TRUE
311  MdeModulePkg/Universal/ResetSystemPei/ResetSystemPei.inf {
312    <LibraryClasses>
313      ResetSystemLib|ArmVirtPkg/Library/ArmVirtPsciResetSystemPeiLib/ArmVirtPsciResetSystemPeiLib.inf
314  }
315  OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf
316  SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf {
317    <LibraryClasses>
318      HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterPei.inf
319      NULL|SecurityPkg/Library/HashInstanceLibSha1/HashInstanceLibSha1.inf
320      NULL|SecurityPkg/Library/HashInstanceLibSha256/HashInstanceLibSha256.inf
321      NULL|SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.inf
322      NULL|SecurityPkg/Library/HashInstanceLibSha512/HashInstanceLibSha512.inf
323      NULL|SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf
324  }
325!endif
326
327  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf {
328    <LibraryClasses>
329      NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
330  }
331
332  #
333  # DXE
334  #
335  MdeModulePkg/Core/Dxe/DxeMain.inf {
336    <LibraryClasses>
337      NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
338      DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
339  }
340  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
341    <LibraryClasses>
342      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
343  }
344
345  #
346  # Architectural Protocols
347  #
348  ArmPkg/Drivers/CpuDxe/CpuDxe.inf
349  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
350  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
351    <LibraryClasses>
352      NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
353      NULL|EmbeddedPkg/Library/NvVarStoreFormattedLib/NvVarStoreFormattedLib.inf
354      # don't use unaligned CopyMem () on the UEFI varstore NOR flash region
355      BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
356  }
357!if $(SECURE_BOOT_ENABLE) == TRUE
358  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf {
359    <LibraryClasses>
360      NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf
361!if $(TPM2_ENABLE) == TRUE
362      NULL|SecurityPkg/Library/DxeTpm2MeasureBootLib/DxeTpm2MeasureBootLib.inf
363!endif
364  }
365  SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
366  OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.inf
367!else
368  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
369!endif
370  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
371  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
372  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
373  MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
374  EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf {
375    <LibraryClasses>
376      NULL|ArmVirtPkg/Library/ArmVirtPL031FdtClientLib/ArmVirtPL031FdtClientLib.inf
377  }
378  EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
379
380  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
381  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
382  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
383  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
384  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
385
386  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
387
388  ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
389  ArmPkg/Drivers/TimerDxe/TimerDxe.inf {
390    <LibraryClasses>
391      NULL|ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.inf
392  }
393  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
394  MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
395
396  #
397  # Status Code Routing
398  #
399  MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
400
401  #
402  # Platform Driver
403  #
404  ArmVirtPkg/VirtioFdtDxe/VirtioFdtDxe.inf
405  ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf
406  ArmVirtPkg/HighMemDxe/HighMemDxe.inf
407  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
408  OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
409  OvmfPkg/VirtioNetDxe/VirtioNet.inf
410  OvmfPkg/VirtioRngDxe/VirtioRng.inf
411
412  #
413  # FAT filesystem + GPT/MBR partitioning + UDF filesystem + virtio-fs
414  #
415  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
416  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
417  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
418  FatPkg/EnhancedFatDxe/Fat.inf
419  MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
420  OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf
421
422  #
423  # Bds
424  #
425  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf {
426    <LibraryClasses>
427      DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
428      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
429  }
430  MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
431  MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
432  MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf
433  MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
434  MdeModulePkg/Logo/LogoDxe.inf
435  MdeModulePkg/Application/UiApp/UiApp.inf {
436    <LibraryClasses>
437      NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
438      NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
439      NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
440  }
441  OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.inf
442
443  #
444  # Networking stack
445  #
446!include NetworkPkg/NetworkComponents.dsc.inc
447
448  NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf {
449    <LibraryClasses>
450      NULL|OvmfPkg/Library/PxeBcPcdProducerLib/PxeBcPcdProducerLib.inf
451  }
452
453!if $(NETWORK_TLS_ENABLE) == TRUE
454  NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.inf {
455    <LibraryClasses>
456      NULL|OvmfPkg/Library/TlsAuthConfigLib/TlsAuthConfigLib.inf
457  }
458!endif
459
460  #
461  # SCSI Bus and Disk Driver
462  #
463  MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
464  MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
465
466  #
467  # NVME Driver
468  #
469  MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
470
471  #
472  # SMBIOS Support
473  #
474  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf {
475    <LibraryClasses>
476      NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf
477  }
478  OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
479
480  #
481  # PCI support
482  #
483  ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf {
484    <LibraryClasses>
485      NULL|ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf
486  }
487  MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
488  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf {
489    <LibraryClasses>
490      NULL|ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf
491  }
492  OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
493  OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
494  OvmfPkg/Virtio10Dxe/Virtio10.inf
495
496  #
497  # Video support
498  #
499  OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf
500  OvmfPkg/VirtioGpuDxe/VirtioGpu.inf
501  OvmfPkg/PlatformDxe/Platform.inf
502
503  #
504  # USB Support
505  #
506  MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
507  MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
508  MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
509  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
510  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
511  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
512
513  #
514  # TPM2 support
515  #
516!if $(TPM2_ENABLE) == TRUE
517  SecurityPkg/Tcg/Tcg2Dxe/Tcg2Dxe.inf {
518    <LibraryClasses>
519      HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterDxe.inf
520      Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibRouter/Tpm2DeviceLibRouterDxe.inf
521      NULL|SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2InstanceLibDTpm.inf
522      NULL|SecurityPkg/Library/HashInstanceLibSha1/HashInstanceLibSha1.inf
523      NULL|SecurityPkg/Library/HashInstanceLibSha256/HashInstanceLibSha256.inf
524      NULL|SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.inf
525      NULL|SecurityPkg/Library/HashInstanceLibSha512/HashInstanceLibSha512.inf
526      NULL|SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf
527  }
528!if $(TPM2_CONFIG_ENABLE) == TRUE
529  SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf
530!endif
531!endif
532
533  #
534  # ACPI Support
535  #
536  ArmVirtPkg/PlatformHasAcpiDtDxe/PlatformHasAcpiDtDxe.inf
537[Components.AARCH64]
538  MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
539  OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpiPlatformDxe.inf {
540    <LibraryClasses>
541      NULL|ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf
542  }
543