[edk2-devel] [edk2-platforms][PATCH V2 5/7] Platform/ARM/Morello: Add initial support for Morello Platform

Sami Mujawar sami.mujawar at arm.com
Mon Apr 12 09:18:48 UTC 2021


Hi Chandni,

This patch looks good to me.

Reviewed-by: Sami Mujawar <sami.mujawar at arm.com>

Regards,

Sami Mujawar

On 01/04/2021, 15:36, "Chandni Cherukuri" <chandni.cherukuri at arm.com> wrote:

    From: Anurag Koul <anurag.koul at arm.com>

    This patch adds the initial support for Morello FVP platform.

    Co-authored-by: Chandni Cherukuri <chandni.cherukuri at arm.com>
    Signed-off-by: Chandni Cherukuri <chandni.cherukuri at arm.com>
    ---
     Platform/ARM/Morello/MorelloPlatform.dec     |  60 ++++
     Platform/ARM/Morello/MorelloPlatform.dsc.inc | 236 +++++++++++++++
     Platform/ARM/Morello/MorelloPlatformFvp.dsc  |  61 ++++
     Platform/ARM/Morello/MorelloPlatformFvp.fdf  | 303 ++++++++++++++++++++
     4 files changed, 660 insertions(+)

    diff --git a/Platform/ARM/Morello/MorelloPlatform.dec b/Platform/ARM/Morello/MorelloPlatform.dec
    new file mode 100644
    index 000000000000..9a674593cb3c
    --- /dev/null
    +++ b/Platform/ARM/Morello/MorelloPlatform.dec
    @@ -0,0 +1,60 @@
    +## @file
    +#  Describes the entire platform configuration.
    +#
    +#  Copyright (c) 2021, ARM Limited. All rights reserved.<BR>
    +#
    +#  SPDX-License-Identifier: BSD-2-Clause-Patent
    +##
    +
    +[Defines]
    +  DEC_SPECIFICATION              = 0x0001001A
    +  PACKAGE_NAME                   = Morello
    +  PACKAGE_GUID                   = F09A2C11-7864-4B1D-869E-03EE2AD79288
    +  PACKAGE_VERSION                = 0.1
    +
    +################################################################################
    +#
    +# Include Section - list of Include Paths that are provided by this package.
    +#                   Comments are used for Keywords and Module Types.
    +#
    +################################################################################
    +[Includes.common]
    +  Include                        # Root include for the package
    +
    +[Guids.common]
    +  gArmMorelloTokenSpaceGuid =  { 0x0A8C3A78, 0xA56F, 0x4788, { 0x83, 0xB4, 0xCD, 0x29, 0x62, 0x96, 0x77, 0x51 } }
    +
    +[PcdsFixedAtBuild]
    +  # Ramdisk
    +  gArmMorelloTokenSpaceGuid.PcdRamDiskBase|0x88000000|UINT32|0x00000001
    +  gArmMorelloTokenSpaceGuid.PcdRamDiskSize|0x18000000|UINT32|0x00000002
    +
    +  # Secondary DDR memory
    +  gArmMorelloTokenSpaceGuid.PcdDramBlock2Base|0|UINT64|0x00000003
    +
    +  # Virtio Block device
    +  gArmMorelloTokenSpaceGuid.PcdVirtioBlkBaseAddress|0x00000000|UINT32|0x00000004
    +  gArmMorelloTokenSpaceGuid.PcdVirtioBlkSize|0x00000000|UINT32|0x00000005
    +  gArmMorelloTokenSpaceGuid.PcdVirtioBlkInterrupt|0x00000000|UINT32|0x00000006
    +
    +  # PCIe
    +  gArmMorelloTokenSpaceGuid.PcdPciBusMin|0|UINT32|0x00000009
    +  gArmMorelloTokenSpaceGuid.PcdPciBusMax|15|UINT32|0x0000000A
    +  gArmMorelloTokenSpaceGuid.PcdPciBusCount|16|UINT32|0x0000000B
    +  gArmMorelloTokenSpaceGuid.PcdPciIoBase|0x0|UINT32|0x0000000C
    +  gArmMorelloTokenSpaceGuid.PcdPciIoSize|0x00800000|UINT32|0x0000000D
    +  gArmMorelloTokenSpaceGuid.PcdPciIoMaxBase|0x007FFFFF|UINT32|0x0000000E
    +  gArmMorelloTokenSpaceGuid.PcdPciIoTranslation|0x67800000|UINT32|0x0000000F
    +  gArmMorelloTokenSpaceGuid.PcdPciMmio32Base|0x60000000|UINT32|0x00000010
    +  gArmMorelloTokenSpaceGuid.PcdPciMmio32Size|0x07800000|UINT32|0x00000011
    +  gArmMorelloTokenSpaceGuid.PcdPciMmio32MaxBase|0x677FFFFF|UINT32|0x00000012
    +  gArmMorelloTokenSpaceGuid.PcdPciMmio32Translation|0x0|UINT32|0x00000013
    +  gArmMorelloTokenSpaceGuid.PcdPciMmio64Base|0x900000000|UINT64|0x00000014
    +  gArmMorelloTokenSpaceGuid.PcdPciMmio64Size|0x2000000000|UINT64|0x00000015
    +  gArmMorelloTokenSpaceGuid.PcdPciMmio64MaxBase|0x28FFFFFFFF|UINT64|0x00000016
    +  gArmMorelloTokenSpaceGuid.PcdPciMmio64Translation|0x0|UINT64|0x00000017
    +  gArmMorelloTokenSpaceGuid.PcdPciExpressBaseAddress|0x20000000|UINT64|0x00000018
    +
    +[PcdsFeatureFlag.common]
    +  gArmMorelloTokenSpaceGuid.PcdRamDiskSupported|FALSE|BOOLEAN|0x00000007
    +  gArmMorelloTokenSpaceGuid.PcdVirtioBlkSupported|FALSE|BOOLEAN|0x00000008
    diff --git a/Platform/ARM/Morello/MorelloPlatform.dsc.inc b/Platform/ARM/Morello/MorelloPlatform.dsc.inc
    new file mode 100644
    index 000000000000..dccd22248318
    --- /dev/null
    +++ b/Platform/ARM/Morello/MorelloPlatform.dsc.inc
    @@ -0,0 +1,236 @@
    +## @file
    +#  Component description file for Morello Platform
    +#
    +#  Copyright (c) 2021, ARM Limited. All rights reserved.<BR>
    +#
    +#  SPDX-License-Identifier: BSD-2-Clause-Patent
    +##
    +
    +[LibraryClasses.common]
    +  ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
    +  ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf
    +  ArmPlatformLib|Platform/ARM/Morello/Library/PlatformLib/PlatformLib.inf
    +  BasePathLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
    +  HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
    +  TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
    +
    +  # Ramdisk Support
    +  FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
    +
    +[LibraryClasses.common.SEC]
    +  HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
    +  MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
    +  PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
    +  PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
    +  PeiServicesTablePointerLib|ArmPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
    +
    +[LibraryClasses.common.PEI_CORE, LibraryClasses.common.PEIM]
    +  BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
    +  HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
    +  MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
    +  PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
    +  PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
    +  PeiServicesTablePointerLib|ArmPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
    +  ReportStatusCodeLib|MdePkg/Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.inf
    +
    +[LibraryClasses.common.PEI_CORE]
    +  PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf
    +
    +[LibraryClasses.common.PEIM]
    +  PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf
    +
    +[LibraryClasses.common.DXE_CORE]
    +  DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf
    +  HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf
    +  MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
    +  PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
    +
    +[LibraryClasses.common.DXE_DRIVER]
    +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
    +  PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf
    +  PciLib|MdePkg/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf
    +  PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf
    +
    +[LibraryClasses.common.DXE_RUNTIME_DRIVER]
    +  BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
    +  HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
    +!if $(TARGET) != RELEASE
    +  DebugLib|MdePkg/Library/DxeRuntimeDebugLibSerialPort/DxeRuntimeDebugLibSerialPort.inf
    +!endif
    +
    +[LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION, LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.DXE_DRIVER]
    +  PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
    +
    +################################################################################
    +#
    +# Pcd Section - list of all EDK II PCD Entries defined by this Platform
    +#
    +################################################################################
    +
    +[PcdsFeatureFlag.common]
    +  gArmMorelloTokenSpaceGuid.PcdRamDiskSupported|TRUE
    +  gEfiMdeModulePkgTokenSpaceGuid.PcdTurnOffUsbLegacySupport|TRUE
    +
    +[PcdsFixedAtBuild.common]
    +  gArmTokenSpaceGuid.PcdVFPEnabled|1
    +
    +  # Stacks for MPCores in Normal World
    +  gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase|0x80000000
    +  gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x40000
    +  gArmPlatformTokenSpaceGuid.PcdCPUCoreSecondaryStackSize|0x0
    +
    +  # System Memory (2GB - 16MB)
    +  gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000
    +  gArmTokenSpaceGuid.PcdSystemMemorySize|0x7F000000
    +
    +  # Secondary DDR memory
    +  gArmMorelloTokenSpaceGuid.PcdDramBlock2Base|0x8080000000
    +
    +  # GIC Base Addresses
    +  gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x2C000000
    +  gArmTokenSpaceGuid.PcdGicDistributorBase|0x30000000
    +  gArmTokenSpaceGuid.PcdGicRedistributorsBase|0x300C0000
    +
    +  # PL011 - Serial Terminal
    +  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x2A400000
    +  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|115200
    +  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultReceiveFifoDepth|0
    +  gArmPlatformTokenSpaceGuid.PL011UartClkInHz|50000000
    +  gArmPlatformTokenSpaceGuid.PL011UartInterrupt|95
    +
    +  # PL011 Serial Debug UART (DBG2)
    +  gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase|0x1C0A0000
    +  gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate|115200
    +  gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz|50000000
    +
    +  # SBSA Watchdog
    +  gArmTokenSpaceGuid.PcdGenericWatchdogEl2IntrNum|93
    +
    +  # PL031 RealTimeClock
    +  gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C100000
    +
    +  # ARM Architectural Timer Frequency
    +  gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|50000000
    +  gEmbeddedTokenSpaceGuid.PcdMetronomeTickPeriod|1000
    +  gEmbeddedTokenSpaceGuid.PcdTimerPeriod|1000
    +
    +  # ARM Cores and Clusters
    +  gArmPlatformTokenSpaceGuid.PcdCoreCount|2
    +  gArmPlatformTokenSpaceGuid.PcdClusterCount|2
    +
    +  # ACPI Table Version
    +  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20
    +
    +  # Runtime Variable storage
    +  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
    +  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable|TRUE
    +  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000
    +  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x2800
    +
    +  # RAM Disk
    +  gArmMorelloTokenSpaceGuid.PcdRamDiskBase|0x88000000
    +  gArmMorelloTokenSpaceGuid.PcdRamDiskSize|0x18000000
    +
    +  # PCIe
    +  gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize|24
    +  gEfiMdeModulePkgTokenSpaceGuid.PcdSrIovSupport|FALSE
    +  gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x20000000
    +
    +[PcdsDynamicHii.common.DEFAULT]
    +  gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|0
    +
    +################################################################################
    +#
    +# Components Section - list of all EDK II Modules needed by this Platform
    +#
    +################################################################################
    +[Components.common]
    +  # PEI Phase modules
    +  ArmPkg/Drivers/CpuPei/CpuPei.inf
    +  ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf
    +  ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf
    +  ArmPlatformPkg/PlatformPei/PlatformPeim.inf
    +  MdeModulePkg/Core/Pei/PeiMain.inf
    +  MdeModulePkg/Universal/PCD/Pei/Pcd.inf {
    +    <LibraryClasses>
    +      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
    +  }
    +  MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
    +  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf {
    +    <LibraryClasses>
    +      NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
    +  }
    +
    +  # DXE
    +  MdeModulePkg/Core/Dxe/DxeMain.inf {
    +    <LibraryClasses>
    +      NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
    +    <PcdsFixedAtBuild>
    +      gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000000F
    +  }
    +
    +  # Architectural Protocols
    +  ArmPkg/Drivers/CpuDxe/CpuDxe.inf
    +  ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
    +  ArmPkg/Drivers/TimerDxe/TimerDxe.inf
    +  ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.inf
    +  EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
    +  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
    +  MdeModulePkg/Universal/Metronome/Metronome.inf
    +  MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
    +  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
    +  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
    +  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
    +
    +  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
    +  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
    +  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
    +  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
    +  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
    +  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
    +    <LibraryClasses>
    +      NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
    +      BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
    +  }
    +
    +  # ACPI Support
    +  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
    +  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
    +
    +  # FAT filesystem + GPT/MBR partitioning
    +  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
    +  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
    +  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
    +  FatPkg/EnhancedFatDxe/Fat.inf
    +
    +  # Bds
    +  MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
    +  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
    +  MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
    +  MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
    +  MdeModulePkg/Application/UiApp/UiApp.inf {
    +    <LibraryClasses>
    +      NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
    +      NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
    +      NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
    +  }
    +
    +  # RAM Disk
    +  MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.inf
    +
    +  # Required by PCI
    +  ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf
    +
    +  # PCI Support
    +  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
    +  MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
    +    <PcdsFixedAtBuild>
    +      gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8010004F
    +  }
    +
    +  # AHCI Support
    +  MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
    +  MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
    +
    +  # SATA Controller
    +  MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
    diff --git a/Platform/ARM/Morello/MorelloPlatformFvp.dsc b/Platform/ARM/Morello/MorelloPlatformFvp.dsc
    new file mode 100644
    index 000000000000..35e02be5d5ab
    --- /dev/null
    +++ b/Platform/ARM/Morello/MorelloPlatformFvp.dsc
    @@ -0,0 +1,61 @@
    +## @file
    +#  Compoenent description file specific for Morello FVP Platform
    +#
    +#  Copyright (c) 2021, ARM Limited. All rights reserved.<BR>
    +#
    +#  SPDX-License-Identifier: BSD-2-Clause-Patent
    +##
    +
    +################################################################################
    +#
    +# Defines Section - statements that will be processed to create a Makefile.
    +#
    +################################################################################
    +[Defines]
    +  PLATFORM_NAME                  = morellofvp
    +  PLATFORM_GUID                  = CB995FFD-EAEF-4d5E-8A4B-3213B39CD14A
    +  PLATFORM_VERSION               = 0.1
    +  DSC_SPECIFICATION              = 0x0001001B
    +!ifdef $(EDK2_OUT_DIR)
    +  OUTPUT_DIRECTORY               = $(EDK2_OUT_DIR)
    +!else
    +  OUTPUT_DIRECTORY               = Build/$(PLATFORM_NAME)
    +!endif
    +  SUPPORTED_ARCHITECTURES        = AARCH64
    +  BUILD_TARGETS                  = NOOPT|DEBUG|RELEASE
    +  SKUID_IDENTIFIER               = DEFAULT
    +  FLASH_DEFINITION               = Platform/ARM/Morello/MorelloPlatformFvp.fdf
    +  BUILD_NUMBER                   = 1
    +
    +  # Network definition
    +  DEFINE NETWORK_ISCSI_ENABLE    = FALSE
    +
    +!include Platform/ARM/Morello/MorelloPlatform.dsc.inc
    +!include Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc
    +!include DynamicTablesPkg/DynamicTables.dsc.inc
    +!include Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerFvp.dsc.inc
    +
    +[LibraryClasses.common]
    +  # Virtio Support
    +  VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
    +  VirtioMmioDeviceLib|OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf
    +  FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
    +  OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf
    +
    +[LibraryClasses.common.DXE_DRIVER]
    +  PciHostBridgeLib|Platform/ARM/Morello/Library/PciHostBridgeLib/PciHostBridgeLibFvp.inf
    +
    +[PcdsFeatureFlag.common]
    +  gArmMorelloTokenSpaceGuid.PcdVirtioBlkSupported|TRUE
    +
    +[PcdsFixedAtBuild.common]
    +  # Virtio Disk
    +  gArmMorelloTokenSpaceGuid.PcdVirtioBlkBaseAddress|0x1C170000
    +  gArmMorelloTokenSpaceGuid.PcdVirtioBlkSize|0x200
    +  gArmMorelloTokenSpaceGuid.PcdVirtioBlkInterrupt|128
    +
    +[Components.common]
    +  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
    +
    +  # Platform driver
    +  Platform/ARM/Morello/Drivers/PlatformDxe/PlatformDxeFvp.inf
    diff --git a/Platform/ARM/Morello/MorelloPlatformFvp.fdf b/Platform/ARM/Morello/MorelloPlatformFvp.fdf
    new file mode 100644
    index 000000000000..dc3eccd2f3ba
    --- /dev/null
    +++ b/Platform/ARM/Morello/MorelloPlatformFvp.fdf
    @@ -0,0 +1,303 @@
    +## @file
    +#  FDF file of Morello FVP platform
    +#
    +#  Copyright (c) 2021, ARM Limited. All rights reserved.<BR>
    +#
    +#  SPDX-License-Identifier: BSD-2-Clause-Patent
    +##
    +
    +################################################################################
    +#
    +# FD Section
    +# The [FD] Section is made up of the definition statements and a
    +# description of what goes into  the Flash Device Image.  Each FD section
    +# defines one flash "device" image.  A flash device image may be one of
    +# the following: Removable media bootable image (like a boot floppy
    +# image,) an Option ROM image (that would be "flashed" into an add-in
    +# card,) a System "Flash"  image (that would be burned into a system's
    +# flash) or an Update ("Capsule") image that will be used to update and
    +# existing system flash.
    +#
    +################################################################################
    +
    +[FD.BL33_AP_UEFI]
    +BaseAddress   = 0xE0000000|gArmTokenSpaceGuid.PcdFdBaseAddress  # The base address of the Firmware in NOR Flash.
    +Size          = 0x00200000|gArmTokenSpaceGuid.PcdFdSize         # The size in bytes of the FLASH Device
    +ErasePolarity = 1
    +
    +# This one is tricky, it must be: BlockSize * NumBlocks = Size
    +BlockSize     = 0x00001000
    +NumBlocks     = 0x200
    +
    +################################################################################
    +#
    +# Following are lists of FD Region layout which correspond to the locations of
    +# different images within the flash device.
    +#
    +# Regions must be defined in ascending order and may not overlap.
    +#
    +# A Layout Region start with a eight digit hex offset (leading "0x" required)
    +# followed by the pipe "|" character, followed by the size of the region, also
    +# in hex with the leading "0x" characters. Like:
    +# Offset|Size
    +# PcdOffsetCName|PcdSizeCName
    +# RegionType <FV, DATA, or FILE>
    +#
    +################################################################################
    +
    +0x00000000|0x00200000
    +gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
    +FV = FVMAIN_COMPACT
    +
    +
    +################################################################################
    +#
    +# FV Section
    +#
    +# [FV] section is used to define what components or modules are placed within a
    +# flash device file. This section also defines order the components and modules
    +# are positioned within the image. The [FV] section consists of define
    +# statements, set statements and module statements.
    +#
    +################################################################################
    +
    +[FV.FvMain]
    +BlockSize          = 0x40
    +NumBlocks          = 0         # This FV gets compressed so make it just big enough
    +FvAlignment        = 8         # FV alignment and FV attributes setting.
    +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
    +
    +  INF MdeModulePkg/Core/Dxe/DxeMain.inf
    +
    +  # PI DXE Drivers producing Architectural Protocols (EFI Services)
    +  INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf
    +  INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
    +  INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
    +  INF MdeModulePkg/Universal/Metronome/Metronome.inf
    +  INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
    +  INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
    +  INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
    +  INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
    +  INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
    +
    +  # ACPI Support
    +  INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
    +  INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
    +
    +  # Configuration Manager
    +  INF Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxeFvp.inf
    +
    +  # Dynamic Table fdf
    +  !include DynamicTablesPkg/DynamicTables.fdf.inc
    +
    +  # Multiple Console IO support
    +  INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
    +  INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
    +  INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
    +  INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
    +
    +  INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
    +  INF ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.inf
    +  INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf
    +
    +  INF Platform/ARM/Drivers/BootMonFs/BootMonFs.inf
    +  INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
    +
    +  # Virtio Block Device support
    +  INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
    +
    +  # FAT filesystem + GPT/MBR partitioning
    +  INF FatPkg/EnhancedFatDxe/Fat.inf
    +  INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
    +  INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
    +  INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
    +
    +  # FV FileSystem
    +  INF MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf
    +  INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.inf
    +
    +  # UEFI applications
    +  INF ShellPkg/Application/Shell/Shell.inf
    +
    +  # Platform driver
    +  INF Platform/ARM/Morello/Drivers/PlatformDxe/PlatformDxeFvp.inf
    +
    +  # Bds
    +  INF MdeModulePkg/Application/UiApp/UiApp.inf
    +  INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
    +  INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
    +  INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
    +  INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
    +
    +  # Required by PCI
    +  INF ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf
    +
    +  # PCI Support
    +  INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
    +  INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
    +
    +  # AHCI Support
    +  INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
    +  INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
    +
    +  # SATA Controller
    +  INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
    +
    +[FV.FVMAIN_COMPACT]
    +FvAlignment        = 8
    +BlockSize          = 0x1000
    +NumBlocks          = 0x200
    +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
    +
    +  INF ArmPkg/Drivers/CpuPei/CpuPei.inf
    +  INF ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf
    +  INF ArmPlatformPkg/PlatformPei/PlatformPeim.inf
    +  INF ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf
    +  INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
    +  INF MdeModulePkg/Core/Pei/PeiMain.inf
    +  INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf
    +  INF MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
    +
    +  FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
    +    SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {
    +      SECTION FV_IMAGE = FVMAIN
    +    }
    +  }
    +
    +
    +################################################################################
    +#
    +# Rules are use with the [FV] section's module INF type to define
    +# how an FFS file is created for a given INF file. The following Rule are the default
    +# rules for the different module type. User can add the customized rules to define the
    +# content of the FFS file.
    +#
    +################################################################################
    +
    +
    +############################################################################
    +# Example of a DXE_DRIVER FFS file with a Checksum encapsulation section   #
    +############################################################################
    +#
    +#[Rule.Common.DXE_DRIVER]
    +#  FILE DRIVER = $(NAMED_GUID) {
    +#    DXE_DEPEX    DXE_DEPEX               Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
    +#    COMPRESS PI_STD {
    +#      GUIDED {
    +#        PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
    +#        UI       STRING="$(MODULE_NAME)" Optional
    +#        VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
    +#      }
    +#    }
    +#  }
    +#
    +############################################################################
    +
    +#
    +# These SEC rules are used for ArmPlatformPkg/PrePeiCore module.
    +# ArmPlatformPkg/PrePeiCore is declared as a SEC module to make GenFv patch
    +# the UEFI Firmware to jump to ArmPlatformPkg/PrePeiCore entrypoint
    +#
    +
    +[Rule.Common.SEC]
    +  FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED FIXED {
    +    TE  TE Align = Auto                 $(INF_OUTPUT)/$(MODULE_NAME).efi
    +  }
    +
    +[Rule.Common.PEI_CORE]
    +  FILE PEI_CORE = $(NAMED_GUID) FIXED {
    +    TE  TE Align = Auto                 $(INF_OUTPUT)/$(MODULE_NAME).efi
    +    UI  STRING ="$(MODULE_NAME)" Optional
    +  }
    +
    +[Rule.Common.PEIM]
    +  FILE PEIM = $(NAMED_GUID) FIXED {
    +     PEI_DEPEX PEI_DEPEX Optional       $(INF_OUTPUT)/$(MODULE_NAME).depex
    +     TE  TE Align = Auto                $(INF_OUTPUT)/$(MODULE_NAME).efi
    +     UI  STRING="$(MODULE_NAME)" Optional
    +  }
    +
    +[Rule.Common.PEIM.TIANOCOMPRESSED]
    +  FILE PEIM = $(NAMED_GUID) DEBUG_MYTOOLS_IA32 {
    +    PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex
    +    GUIDED A31280AD-481E-41B6-95E8-127F4C984779 PROCESSING_REQUIRED = TRUE {
    +      PE32      PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
    +      UI        STRING="$(MODULE_NAME)" Optional
    +    }
    +  }
    +
    +[Rule.Common.DXE_CORE]
    +  FILE DXE_CORE = $(NAMED_GUID) {
    +    PE32     PE32                       $(INF_OUTPUT)/$(MODULE_NAME).efi
    +    UI       STRING="$(MODULE_NAME)" Optional
    +  }
    +
    +[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
    +  }
    +
    +[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
    +  }
    +
    +[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
    +  }
    +
    +[Rule.Common.UEFI_APPLICATION]
    +  FILE APPLICATION = $(NAMED_GUID) {
    +    UI     STRING ="$(MODULE_NAME)" Optional
    +    PE32   PE32                         $(INF_OUTPUT)/$(MODULE_NAME).efi
    +  }
    +
    +[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.BINARY]
    +  FILE APPLICATION = $(NAMED_GUID) {
    +    PE32      PE32                    |.efi
    +    UI        STRING="$(MODULE_NAME)" Optional
    +    VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
    +  }
    -- 
    2.17.1




-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#73942): https://edk2.groups.io/g/devel/message/73942
Mute This Topic: https://groups.io/mt/81778210/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list