similarity index 76%
rename from meta-arm/recipes-bsp/uefi/edk2-firmware_202211.bb
rename to meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_202211.bb
@@ -1,4 +1,4 @@
SRCREV_edk2 ?= "fff6d81270b57ee786ea18ad74f43149b9f03494"
SRCREV_edk2-platforms ?= "982212662c71b6c734b7578526071d6b78da3bcc"
-require edk2-firmware.inc
+require recipes-bsp/uefi/edk2-firmware.inc
new file mode 100644
@@ -0,0 +1,290 @@
+From 44b69c8d7c8ed665b4f8d8a9953ea23a731d221f Mon Sep 17 00:00:00 2001
+From: Your Name <you@example.com>
+Date: Fri, 10 Mar 2023 18:46:49 +0000
+Subject: [PATCH] Revert "ArmVirtPkg/QemuVirtMemInfoLib: use HOB not PCD to
+ record the memory size"
+
+This reverts commit 7136d5491e225c57f1d73e4a1b7ac27ed656ff72.
+
+Upstream-Status: Inappropriate [other]
+Signed-off-by: Jon Mason <jon.mason@arm.com>
+
+---
+ ArmVirtPkg/ArmVirtPkg.dec | 1 -
+ ArmVirtPkg/ArmVirtQemu.dsc | 6 ++--
+ .../ArmVirtMemoryInitPeiLib.c | 14 ++------
+ .../ArmVirtMemoryInitPeiLib.inf | 1 -
+ .../QemuVirtMemInfoLib/QemuVirtMemInfoLib.c | 35 ++-----------------
+ .../QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf | 5 +--
+ .../QemuVirtMemInfoPeiLib.inf | 8 ++---
+ .../QemuVirtMemInfoPeiLibConstructor.c | 30 +++++++---------
+ 8 files changed, 25 insertions(+), 75 deletions(-)
+
+diff --git a/ArmVirtPkg/ArmVirtPkg.dec b/ArmVirtPkg/ArmVirtPkg.dec
+index 4645c91a83..d2d325d71e 100644
+--- a/ArmVirtPkg/ArmVirtPkg.dec
++++ b/ArmVirtPkg/ArmVirtPkg.dec
+@@ -32,7 +32,6 @@
+ gArmVirtTokenSpaceGuid = { 0x0B6F5CA7, 0x4F53, 0x445A, { 0xB7, 0x6E, 0x2E, 0x36, 0x5B, 0x80, 0x63, 0x66 } }
+ gEarlyPL011BaseAddressGuid = { 0xB199DEA9, 0xFD5C, 0x4A84, { 0x80, 0x82, 0x2F, 0x41, 0x70, 0x78, 0x03, 0x05 } }
+ gEarly16550UartBaseAddressGuid = { 0xea67ca3e, 0x1f54, 0x436b, { 0x97, 0x88, 0xd4, 0xeb, 0x29, 0xc3, 0x42, 0x67 } }
+- gArmVirtSystemMemorySizeGuid = { 0x504eccb9, 0x1bf0, 0x4420, { 0x86, 0x5d, 0xdc, 0x66, 0x06, 0xd4, 0x13, 0xbf } }
+
+ [PcdsFeatureFlag]
+ #
+diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
+index 72a0cacab4..2e786dad12 100644
+--- a/ArmVirtPkg/ArmVirtQemu.dsc
++++ b/ArmVirtPkg/ArmVirtQemu.dsc
+@@ -226,9 +226,6 @@
+ # Shadowing PEI modules is absolutely pointless when the NOR flash is emulated
+ gEfiMdeModulePkgTokenSpaceGuid.PcdShadowPeimOnBoot|FALSE
+
+- # System Memory Size -- 128 MB initially, actual size will be fetched from DT
+- gArmTokenSpaceGuid.PcdSystemMemorySize|0x8000000
+-
+ [PcdsFixedAtBuild.AARCH64]
+ # Clearing BIT0 in this PCD prevents installing a 32-bit SMBIOS entry point,
+ # if the entry point version is >= 3.0. AARCH64 OSes cannot assume the
+@@ -245,6 +242,9 @@
+ # enumeration to complete before installing ACPI tables.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|TRUE
+
++ # System Memory Size -- 1 MB initially, actual size will be fetched from DT
++ gArmTokenSpaceGuid.PcdSystemMemorySize|0x00100000
++
+ gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum|0x0
+ gArmTokenSpaceGuid.PcdArmArchTimerIntrNum|0x0
+ gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum|0x0
+diff --git a/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c b/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c
+index 72e5c65af7..98d90ad420 100644
+--- a/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c
++++ b/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c
+@@ -52,19 +52,10 @@ MemoryPeim (
+ {
+ EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttributes;
+ UINT64 SystemMemoryTop;
+- UINT64 SystemMemorySize;
+- VOID *Hob;
+
+ // Ensure PcdSystemMemorySize has been set
+ ASSERT (PcdGet64 (PcdSystemMemorySize) != 0);
+
+- SystemMemorySize = PcdGet64 (PcdSystemMemorySize);
+-
+- Hob = GetFirstGuidHob (&gArmVirtSystemMemorySizeGuid);
+- if (Hob != NULL) {
+- SystemMemorySize = *(UINT64 *)GET_GUID_HOB_DATA (Hob);
+- }
+-
+ //
+ // Now, the permanent memory has been installed, we can call AllocatePages()
+ //
+@@ -75,7 +66,8 @@ MemoryPeim (
+ EFI_RESOURCE_ATTRIBUTE_TESTED
+ );
+
+- SystemMemoryTop = PcdGet64 (PcdSystemMemoryBase) + SystemMemorySize;
++ SystemMemoryTop = PcdGet64 (PcdSystemMemoryBase) +
++ PcdGet64 (PcdSystemMemorySize);
+
+ if (SystemMemoryTop - 1 > MAX_ALLOC_ADDRESS) {
+ BuildResourceDescriptorHob (
+@@ -95,7 +87,7 @@ MemoryPeim (
+ EFI_RESOURCE_SYSTEM_MEMORY,
+ ResourceAttributes,
+ PcdGet64 (PcdSystemMemoryBase),
+- SystemMemorySize
++ PcdGet64 (PcdSystemMemorySize)
+ );
+ }
+
+diff --git a/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf b/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf
+index 48d9c66b22..21327f79f4 100644
+--- a/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf
++++ b/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf
+@@ -34,7 +34,6 @@
+ CacheMaintenanceLib
+
+ [Guids]
+- gArmVirtSystemMemorySizeGuid
+ gEfiMemoryTypeInformationGuid
+
+ [FeaturePcd]
+diff --git a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.c b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.c
+index 9cf43f06c0..cf569bed99 100644
+--- a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.c
++++ b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.c
+@@ -6,12 +6,10 @@
+
+ **/
+
+-#include <Uefi.h>
+-#include <Pi/PiMultiPhase.h>
++#include <Base.h>
+ #include <Library/ArmLib.h>
+ #include <Library/BaseMemoryLib.h>
+ #include <Library/DebugLib.h>
+-#include <Library/HobLib.h>
+ #include <Library/MemoryAllocationLib.h>
+
+ // Number of Virtual Memory Map Descriptors
+@@ -26,28 +24,6 @@
+ #define MACH_VIRT_PERIPH_BASE 0x08000000
+ #define MACH_VIRT_PERIPH_SIZE SIZE_128MB
+
+-/**
+- Default library constructur that obtains the memory size from a PCD.
+-
+- @return Always returns RETURN_SUCCESS
+-
+-**/
+-RETURN_STATUS
+-EFIAPI
+-QemuVirtMemInfoLibConstructor (
+- VOID
+- )
+-{
+- UINT64 Size;
+- VOID *Hob;
+-
+- Size = PcdGet64 (PcdSystemMemorySize);
+- Hob = BuildGuidDataHob (&gArmVirtSystemMemorySizeGuid, &Size, sizeof Size);
+- ASSERT (Hob != NULL);
+-
+- return RETURN_SUCCESS;
+-}
+-
+ /**
+ Return the Virtual Memory Map of your platform
+
+@@ -67,16 +43,9 @@ ArmVirtGetMemoryMap (
+ )
+ {
+ ARM_MEMORY_REGION_DESCRIPTOR *VirtualMemoryTable;
+- VOID *MemorySizeHob;
+
+ ASSERT (VirtualMemoryMap != NULL);
+
+- MemorySizeHob = GetFirstGuidHob (&gArmVirtSystemMemorySizeGuid);
+- ASSERT (MemorySizeHob != NULL);
+- if (MemorySizeHob == NULL) {
+- return;
+- }
+-
+ VirtualMemoryTable = AllocatePool (
+ sizeof (ARM_MEMORY_REGION_DESCRIPTOR) *
+ MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS
+@@ -90,7 +59,7 @@ ArmVirtGetMemoryMap (
+ // System DRAM
+ VirtualMemoryTable[0].PhysicalBase = PcdGet64 (PcdSystemMemoryBase);
+ VirtualMemoryTable[0].VirtualBase = VirtualMemoryTable[0].PhysicalBase;
+- VirtualMemoryTable[0].Length = *(UINT64 *)GET_GUID_HOB_DATA (MemorySizeHob);
++ VirtualMemoryTable[0].Length = PcdGet64 (PcdSystemMemorySize);
+ VirtualMemoryTable[0].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
+
+ DEBUG ((
+diff --git a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf
+index 6acad8bbd7..7150de6c10 100644
+--- a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf
++++ b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf
+@@ -14,7 +14,6 @@
+ MODULE_TYPE = BASE
+ VERSION_STRING = 1.0
+ LIBRARY_CLASS = ArmVirtMemInfoLib
+- CONSTRUCTOR = QemuVirtMemInfoLibConstructor
+
+ [Sources]
+ QemuVirtMemInfoLib.c
+@@ -31,9 +30,7 @@
+ BaseMemoryLib
+ DebugLib
+ MemoryAllocationLib
+-
+-[Guids]
+- gArmVirtSystemMemorySizeGuid
++ PcdLib
+
+ [Pcd]
+ gArmTokenSpaceGuid.PcdFvBaseAddress
+diff --git a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLib.inf b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLib.inf
+index f045e39a41..7ecf6dfbb7 100644
+--- a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLib.inf
++++ b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLib.inf
+@@ -32,16 +32,16 @@
+ BaseMemoryLib
+ DebugLib
+ FdtLib
++ PcdLib
+ MemoryAllocationLib
+
+-[Guids]
+- gArmVirtSystemMemorySizeGuid
+-
+-[FixedPcd]
++[Pcd]
+ gArmTokenSpaceGuid.PcdFdBaseAddress
+ gArmTokenSpaceGuid.PcdFvBaseAddress
+ gArmTokenSpaceGuid.PcdSystemMemoryBase
+ gArmTokenSpaceGuid.PcdSystemMemorySize
++
++[FixedPcd]
+ gArmTokenSpaceGuid.PcdFdSize
+ gArmTokenSpaceGuid.PcdFvSize
+ gArmVirtTokenSpaceGuid.PcdDeviceTreeInitialBaseAddress
+diff --git a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLibConstructor.c b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLibConstructor.c
+index c47ab82966..33d3597d57 100644
+--- a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLibConstructor.c
++++ b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLibConstructor.c
+@@ -6,10 +6,9 @@
+
+ **/
+
+-#include <Uefi.h>
+-#include <Pi/PiMultiPhase.h>
++#include <Base.h>
+ #include <Library/DebugLib.h>
+-#include <Library/HobLib.h>
++#include <Library/PcdLib.h>
+ #include <libfdt.h>
+
+ RETURN_STATUS
+@@ -18,14 +17,14 @@ QemuVirtMemInfoPeiLibConstructor (
+ VOID
+ )
+ {
+- VOID *DeviceTreeBase;
+- INT32 Node, Prev;
+- UINT64 NewBase, CurBase;
+- UINT64 NewSize, CurSize;
+- CONST CHAR8 *Type;
+- INT32 Len;
+- CONST UINT64 *RegProp;
+- VOID *Hob;
++ VOID *DeviceTreeBase;
++ INT32 Node, Prev;
++ UINT64 NewBase, CurBase;
++ UINT64 NewSize, CurSize;
++ CONST CHAR8 *Type;
++ INT32 Len;
++ CONST UINT64 *RegProp;
++ RETURN_STATUS PcdStatus;
+
+ NewBase = 0;
+ NewSize = 0;
+@@ -87,13 +86,8 @@ QemuVirtMemInfoPeiLibConstructor (
+ // Make sure the start of DRAM matches our expectation
+ //
+ ASSERT (FixedPcdGet64 (PcdSystemMemoryBase) == NewBase);
+-
+- Hob = BuildGuidDataHob (
+- &gArmVirtSystemMemorySizeGuid,
+- &NewSize,
+- sizeof NewSize
+- );
+- ASSERT (Hob != NULL);
++ PcdStatus = PcdSet64S (PcdSystemMemorySize, NewSize);
++ ASSERT_RETURN_ERROR (PcdStatus);
+
+ //
+ // We need to make sure that the machine we are running on has at least
new file mode 100644
@@ -0,0 +1,89 @@
+From caef501f2c05ba2170d0a449856900919021d6f6 Mon Sep 17 00:00:00 2001
+From: Your Name <you@example.com>
+Date: Fri, 10 Mar 2023 18:47:09 +0000
+Subject: [PATCH] Revert "ArmVirtPkg/ArmVirtQemu: omit PCD PEIM unless TPM
+ support is enabled"
+
+This reverts commit b6efc505e4d6eb2055a39afd0a1ee67846a1e5f9.
+
+Upstream-Status: Inappropriate [other]
+Signed-off-by: Jon Mason <jon.mason@arm.com>
+
+---
+ ArmVirtPkg/ArmVirtQemu.dsc | 22 +++++-----------------
+ ArmVirtPkg/ArmVirtQemu.fdf | 2 +-
+ 2 files changed, 6 insertions(+), 18 deletions(-)
+
+diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
+index 2e786dad12..0f8157a032 100644
+--- a/ArmVirtPkg/ArmVirtQemu.dsc
++++ b/ArmVirtPkg/ArmVirtQemu.dsc
+@@ -293,15 +293,10 @@
+ #
+ # TPM2 support
+ #
+-!if $(TPM2_ENABLE) == TRUE
+ gEfiSecurityPkgTokenSpaceGuid.PcdTpmBaseAddress|0x0
++!if $(TPM2_ENABLE) == TRUE
+ gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ gEfiSecurityPkgTokenSpaceGuid.PcdTpm2HashMask|0
+-!else
+-[PcdsPatchableInModule]
+- # make this PCD patchable instead of dynamic when TPM support is not enabled
+- # this permits setting the PCD in unreachable code without pulling in dynamic PCD support
+- gEfiSecurityPkgTokenSpaceGuid.PcdTpmBaseAddress|0x0
+ !endif
+
+ [PcdsDynamicHii]
+@@ -314,13 +309,6 @@
+
+ gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|5
+
+-[LibraryClasses.common.PEI_CORE, LibraryClasses.common.PEIM]
+-!if $(TPM2_ENABLE) == TRUE
+- PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
+-!else
+- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+-!endif
+-
+ ################################################################################
+ #
+ # Components Section - list of all EDK II Modules needed by this Platform
+@@ -332,6 +320,10 @@
+ #
+ ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf
+ MdeModulePkg/Core/Pei/PeiMain.inf
++ MdeModulePkg/Universal/PCD/Pei/Pcd.inf {
++ <LibraryClasses>
++ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
++ }
+ ArmPlatformPkg/PlatformPei/PlatformPeim.inf
+ ArmVirtPkg/MemoryInitPei/MemoryInitPeim.inf {
+ <LibraryClasses>
+@@ -342,10 +334,6 @@
+ ArmPkg/Drivers/CpuPei/CpuPei.inf
+
+ !if $(TPM2_ENABLE) == TRUE
+- MdeModulePkg/Universal/PCD/Pei/Pcd.inf {
+- <LibraryClasses>
+- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+- }
+ MdeModulePkg/Universal/ResetSystemPei/ResetSystemPei.inf {
+ <LibraryClasses>
+ ResetSystemLib|ArmVirtPkg/Library/ArmVirtPsciResetSystemPeiLib/ArmVirtPsciResetSystemPeiLib.inf
+diff --git a/ArmVirtPkg/ArmVirtQemu.fdf b/ArmVirtPkg/ArmVirtQemu.fdf
+index 764f652afd..c85e36b185 100644
+--- a/ArmVirtPkg/ArmVirtQemu.fdf
++++ b/ArmVirtPkg/ArmVirtQemu.fdf
+@@ -109,10 +109,10 @@ READ_LOCK_STATUS = TRUE
+ INF ArmPlatformPkg/PlatformPei/PlatformPeim.inf
+ INF ArmVirtPkg/MemoryInitPei/MemoryInitPeim.inf
+ INF ArmPkg/Drivers/CpuPei/CpuPei.inf
++ INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf
+ INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
+
+ !if $(TPM2_ENABLE) == TRUE
+- INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf
+ INF MdeModulePkg/Universal/ResetSystemPei/ResetSystemPei.inf
+ INF OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf
+ INF SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf
new file mode 100644
@@ -0,0 +1,23 @@
+Platform/ARM: fix uninitialized variable FileSize in RunAxf
+
+Clang 14 detects a potentially uninitialized variable FileSize:
+
+RunAxf.c:216:11: error: variable 'FileSize' is used uninitialized
+ whenever 'if' condition is false
+RunAxf.c:281:38: note: uninitialized use occurs here
+WriteBackDataCacheRange (FileData, FileSize);
+ ^~~~~~~~
+
+Reading the code it doesn't look like this can actually happen, but we
+can keep clang happy by initialising FileSize to 0.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/Platform/ARM/Library/ArmShellCmdRunAxf/RunAxf.c b/Platform/ARM/Library/ArmShellCmdRunAxf/RunAxf.c
+index d23739ad38..fba5e0ba30 100644
+--- a/Platform/ARM/Library/ArmShellCmdRunAxf/RunAxf.c
++++ b/Platform/ARM/Library/ArmShellCmdRunAxf/RunAxf.c
+@@ -136,1 +136,1 @@ ShellDynCmdRunAxfHandler (
+- UINTN FileSize;
++ UINTN FileSize = 0;
202211 is only used in meta-arm-bsp, and all other users should be using the latest version. Move it there until n1sdp can be updated to the latest. Signed-off-by: Jon Mason <jon.mason@arm.com> --- .../recipes-bsp/uefi/edk2-firmware_202211.bb | 2 +- ...g-QemuVirtMemInfoLib-use-HOB-not-PCD.patch | 290 ++++++++++++++++++ ...g-ArmVirtQemu-omit-PCD-PEIM-unless-T.patch | 89 ++++++ .../recipes-bsp/uefi/files/default.patch | 23 ++ 4 files changed, 403 insertions(+), 1 deletion(-) rename {meta-arm => meta-arm-bsp}/recipes-bsp/uefi/edk2-firmware_202211.bb (76%) create mode 100644 meta-arm-bsp/recipes-bsp/uefi/files/0001-Revert-ArmVirtPkg-QemuVirtMemInfoLib-use-HOB-not-PCD.patch create mode 100644 meta-arm-bsp/recipes-bsp/uefi/files/0002-Revert-ArmVirtPkg-ArmVirtQemu-omit-PCD-PEIM-unless-T.patch create mode 100644 meta-arm-bsp/recipes-bsp/uefi/files/default.patch