1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-06-02 01:20:09 +00:00

arm/edk2-firmware: Update to 202602

Update edk2, edk2-platforms, and sbsa-acs to the latest versions/SHAs.
A bleeding edge patch from upstream is needed to correct a build race in
antlr, and the latest SHA for edk2-platforms is needed to work around
some compilation issues with ENABLE_TPM in fvp-base.

Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
Jon Mason
2026-02-24 11:43:57 -05:00
parent c0416d7426
commit 40d015d780
7 changed files with 54 additions and 199 deletions
@@ -10,7 +10,7 @@ LICENSE = "BSD-2-Clause-Patent"
SRC_URI = "git://github.com/tianocore/edk2.git;branch=master;protocol=https"
LIC_FILES_CHKSUM = "file://License.txt;md5=2b415520383f7964e96700ae12b4570a"
SRCREV = "46548b1adac82211d8d11da12dd914f41e7aa775"
SRCREV = "b7a715f7c03c45c6b4575bf88596bfd79658b8ce"
UPSTREAM_CHECK_GITTAGREGEX = "^edk2-stable(?P<pver>\d+)$"
@@ -1,7 +0,0 @@
require recipes-bsp/uefi/edk2-firmware.inc
SRCREV_edk2 ?= "46548b1adac82211d8d11da12dd914f41e7aa775"
SRCREV_edk2-platforms ?= "675f692ace4ae501c7f6f700cff364b13960e74e"
SRC_URI += "file://0001-BaseTools-tools_def-Use-LLD-to-link-ACPI-table-binar.patch \
file://0001-ArmPkg-Fix-errors-in-MiscChassisManufacturerFunction.patch"
@@ -0,0 +1,6 @@
require recipes-bsp/uefi/edk2-firmware.inc
SRCREV_edk2 ?= "b7a715f7c03c45c6b4575bf88596bfd79658b8ce"
SRCREV_edk2-platforms ?= "75024f5aa54cf4d975d024768604b28c754db338"
SRC_URI += "file://0001-BaseTools-Source-C-VfrCompile-Fix-parallel-make-fail.patch"
@@ -1,148 +0,0 @@
From 33e4e73a17bff0823bc916998169b926115b0c6b Mon Sep 17 00:00:00 2001
From: Mike Beaton <mjsbeaton@gmail.com>
Date: Mon, 24 Nov 2025 20:40:28 +0000
Subject: [PATCH] ArmPkg: Fix errors in MiscChassisManufacturerFunction
Initial error found while attempting to implement Azure Pipelines
CLANGDWARF CI:
ERROR - Compiler #error from /__w/1/s/ArmPkg/Universal/Smbios/SmbiosMiscDx
e/Type03/MiscChassisManufacturerFunction.c variable 'ContainedElements' is
uninitialized when passed as a const pointer argument here [-Werror,-Wunin
itialized-const-pointer]
The code in question should copy the optional ContainedElements from
InputData, so fix it so that it does.
Additionally:
- Various size calculations in the original code are incorrect, since
the base size for calculations should not include ContainedElements,
so fix these.
- Since we are calculating Hdr.Length separately as part of the above,
add code to ASSERT and return EFI_OUT_OF_RESOURCES if it would
overflow the UINT8 location where it will be stored.
- Since we are adding a new early exit, fix the fact that no error log
message is generated on early exit.
Fixes: bfc0fae459543442f3f17e0de655a72aba5b0920
Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>
Upstream-Status: Backport [33e4e73a17bff0823bc916998169b926115b0c6b]
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
.../Type03/MiscChassisManufacturerFunction.c | 54 ++++++++++---------
1 file changed, 29 insertions(+), 25 deletions(-)
diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type03/MiscChassisManufacturerFunction.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type03/MiscChassisManufacturerFunction.c
index 6b3b63b0e8d5..363f3bfe30d6 100644
--- a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type03/MiscChassisManufacturerFunction.c
+++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type03/MiscChassisManufacturerFunction.c
@@ -45,6 +45,9 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscChassisManufacturer) {
UINTN AssertTagStrLen;
UINTN SerialNumStrLen;
UINTN ChaNumStrLen;
+ UINTN BaseSize;
+ UINTN ExtendLength;
+ UINTN HdrLength;
EFI_STRING Manufacturer;
EFI_STRING Version;
EFI_STRING SerialNumber;
@@ -55,12 +58,6 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscChassisManufacturer) {
SMBIOS_TABLE_TYPE3 *InputData;
EFI_STATUS Status;
- UINT8 ContainedElementCount;
- CONTAINED_ELEMENT ContainedElements;
- UINT8 ExtendLength;
-
- ExtendLength = 0;
-
//
// First check for invalid parameters.
//
@@ -116,14 +113,25 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscChassisManufacturer) {
ChassisSkuNumber = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
ChaNumStrLen = StrLen (ChassisSkuNumber);
- ContainedElementCount = InputData->ContainedElementCount;
- ExtendLength = ContainedElementCount * sizeof (CONTAINED_ELEMENT);
+ STATIC_ASSERT (OFFSET_OF (SMBIOS_TABLE_TYPE3, ContainedElements) == 0x15, "Base size of SMBIOS_TABLE_TYPE3 does not meet SMBIOS specification");
+
+ BaseSize = OFFSET_OF (SMBIOS_TABLE_TYPE3, ContainedElements);
+ ExtendLength = (UINTN)InputData->ContainedElementCount * (UINTN)InputData->ContainedElementRecordLength;
+
+ //
+ // Length of SMBIOS struct includes ContainedElements and SKUNumber.
+ //
+ HdrLength = BaseSize + ExtendLength + sizeof (SMBIOS_TABLE_STRING);
+ if (HdrLength > MAX_UINT8) {
+ ASSERT (HdrLength <= MAX_UINT8);
+ Status = EFI_OUT_OF_RESOURCES;
+ goto Exit;
+ }
//
- // Two zeros following the last string.
+ // Additional zero follows the last string.
//
- RecordLength = sizeof (SMBIOS_TABLE_TYPE3) +
- ExtendLength + 1 +
+ RecordLength = HdrLength +
ManuStrLen + 1 +
VerStrLen + 1 +
SerialNumStrLen + 1 +
@@ -135,25 +143,20 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscChassisManufacturer) {
goto Exit;
}
- (VOID)CopyMem (SmbiosRecord, InputData, sizeof (SMBIOS_TABLE_TYPE3));
+ // Copy base record plus ContainedElements.
+ (VOID)CopyMem (SmbiosRecord, InputData, BaseSize + ExtendLength);
- SmbiosRecord->Hdr.Length = sizeof (SMBIOS_TABLE_TYPE3) + ExtendLength + 1;
+ SmbiosRecord->Hdr.Length = HdrLength;
SmbiosRecord->Type = OemGetChassisType ();
- // ContainedElements
- ASSERT (ContainedElementCount < 2);
- (VOID)CopyMem (SmbiosRecord + 1, &ContainedElements, ExtendLength);
-
// ChassisSkuNumber
- SkuNumberField = (UINT8 *)SmbiosRecord +
- sizeof (SMBIOS_TABLE_TYPE3) -
- sizeof (CONTAINED_ELEMENT) + ExtendLength;
+ SkuNumberField = (UINT8 *)SmbiosRecord + BaseSize + ExtendLength;
+ // The string numbers in the fixed position portion of the record are populated in the input data.
*SkuNumberField = 5;
- OptionalStrStart = (CHAR8 *)((UINT8 *)SmbiosRecord + sizeof (SMBIOS_TABLE_TYPE3) +
- ExtendLength + 1);
+ OptionalStrStart = (CHAR8 *)((UINT8 *)SmbiosRecord + HdrLength);
UnicodeStrToAsciiStrS (Manufacturer, OptionalStrStart, ManuStrLen + 1);
StrStart = OptionalStrStart + ManuStrLen + 1;
UnicodeStrToAsciiStrS (Version, StrStart, VerStrLen + 1);
@@ -175,6 +178,10 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscChassisManufacturer) {
// Now we have got the full smbios record, call smbios protocol to add this record.
//
Status = SmbiosMiscAddRecord ((UINT8 *)SmbiosRecord, NULL);
+
+ FreePool (SmbiosRecord);
+
+Exit:
if (EFI_ERROR (Status)) {
DEBUG ((
DEBUG_ERROR,
@@ -185,9 +192,6 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscChassisManufacturer) {
));
}
- FreePool (SmbiosRecord);
-
-Exit:
if (Manufacturer != NULL) {
FreePool (Manufacturer);
}
@@ -0,0 +1,46 @@
From 5f8c99d9a7fe88301b01a7015375a827eecc7985 Mon Sep 17 00:00:00 2001
From: Michael D Kinney <michael.d.kinney@intel.com>
Date: Thu, 26 Feb 2026 11:48:11 -0500
Subject: [PATCH] BaseTools/Source/C/VfrCompile: Fix parallel make failures
Update makefile rules to run antlr and dlg to completion
before compiling any of the generated cpp files.
Without this change, parallel make may start compiling some
of the cpp files before both antlr and dlg have finished
which produces syntax errors from compilation with partially
generated files.
Also use &: so the targets are treated as a group and the
rule is only executed once for the entire group. Without
this change, parallel make may run the rule actions more
than once and modify the output while it is being used by
another rule.
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Upstream-Status: Backport [2f75effb93999adadeead511dd76f86833649b45]
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
BaseTools/Source/C/VfrCompile/GNUmakefile | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/BaseTools/Source/C/VfrCompile/GNUmakefile b/BaseTools/Source/C/VfrCompile/GNUmakefile
index b469bd3f303f..4f10b1d9338b 100644
--- a/BaseTools/Source/C/VfrCompile/GNUmakefile
+++ b/BaseTools/Source/C/VfrCompile/GNUmakefile
@@ -54,10 +54,11 @@ VfrCompiler.o: ../Include/Common/BuildVersion.h
include $(MAKEROOT)/Makefiles/footer.makefile
-VfrSyntax.cpp EfiVfrParser.cpp EfiVfrParser.h VfrParser.dlg VfrTokens.h: Pccts/antlr/antlr VfrSyntax.g
- Pccts/antlr/antlr -CC -e3 -ck 3 -k 2 -fl VfrParser.dlg -ft VfrTokens.h -o . VfrSyntax.g
+ANTLR_GEN = VfrSyntax.cpp EfiVfrParser.cpp EfiVfrParser.h VfrParser.dlg VfrTokens.h
+DLG_GEN = VfrLexer.cpp VfrLexer.h
-VfrLexer.cpp VfrLexer.h: Pccts/dlg/dlg VfrParser.dlg
+$(ANTLR_GEN) $(DLG_GEN) &: Pccts/antlr/antlr Pccts/dlg/dlg VfrSyntax.g
+ Pccts/antlr/antlr -CC -e3 -ck 3 -k 2 -fl VfrParser.dlg -ft VfrTokens.h -o . VfrSyntax.g
Pccts/dlg/dlg -C2 -i -CC -cl VfrLexer -o . VfrParser.dlg
Pccts/antlr/antlr:
@@ -1,42 +0,0 @@
From 5d38a20196b9b9d15552ba3617ec7f63f6401a5c Mon Sep 17 00:00:00 2001
From: Ard Biesheuvel <ardb@kernel.org>
Date: Tue, 25 Nov 2025 14:29:20 +0100
Subject: [PATCH] BaseTools/tools_def: Use LLD to link ACPI table binaries
Currently, the CLANGDWARF toolchain on AARCH64 fails to pass the
-fuse-ld=lld compiler option, and so linking ACPI table binaries falls
back to the BFD linker. On non-AARCH64 build systems, this will
correctly run the cross-linker, based on the -target argument passed to
Clang, which therefore needs to be installed.
However, the ASLCC invocation fails to pass that same -target argument,
therefore producing object files for the native architecture, which the
cross-linker cannot link, resulting in a build error.
So pass the target in ASLCC_FLAGS as well, which is sufficient to get a
working build. And for good measure, pass -fuse-ld=lld so that we don't
rely on the BFD cross-linker in the first place.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Upstream-Status: Backport [5d38a20196b9b9d15552ba3617ec7f63f6401a5c]
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
BaseTools/Conf/tools_def.template | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 32085ad00af7..d19624fa4628 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -1872,8 +1872,8 @@ DEFINE CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_
*_CLANGDWARF_AARCH64_SLINK_PATH = ENV(CLANGDWARF_BIN)llvm-ar
*_CLANGDWARF_AARCH64_RC_PATH = ENV(CLANGDWARF_BIN)llvm-objcopy
-*_CLANGDWARF_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -fno-lto
-*_CLANGDWARF_AARCH64_ASLDLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS) DEF(CLANGDWARF_DLINK_WARNING_FLAGS)
+*_CLANGDWARF_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) -fno-lto
+*_CLANGDWARF_AARCH64_ASLDLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS) DEF(CLANGDWARF_DLINK_WARNING_FLAGS) -fuse-ld=lld
*_CLANGDWARF_AARCH64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments
*_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 DEF(CLANGDWARF_DLINK_WARNING_FLAGS)
*_CLANGDWARF_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
+1 -1
View File
@@ -1,4 +1,4 @@
require recipes-bsp/uefi/edk2-firmware_202511.bb
require recipes-bsp/uefi/edk2-firmware_202602.bb
PROVIDES:remove = "virtual/bootloader"
LICENSE += "& Apache-2.0"