summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArd Biesheuvel <ardb@kernel.org>2023-01-24 15:45:02 +0000
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2023-01-26 18:54:58 +0000
commit0eda2533170b9e9793c245d9cb4710e5c8d997f6 (patch)
treee554ee84ce88b88a3f939b1fc1d498a82cd73fe2
parented1806b2c011f1cbcc729284dc8e386b45c903d7 (diff)
downloadedk2-0eda2533170b9e9793c245d9cb4710e5c8d997f6.tar.gz
edk2-0eda2533170b9e9793c245d9cb4710e5c8d997f6.tar.bz2
edk2-0eda2533170b9e9793c245d9cb4710e5c8d997f6.zip
ArmVirtPkg/PlatformCI: Add CI coverage for ArmVirtQemuKernel
ArmVirtQemuKernel.dsc describes a firmware build that is loadable at arbitrary address and can be invoked using the Linux/arm64 kernel boot protocol. The early code deviates significantly from ArmVirtQemu, and so it makes sense to cover this platform in CI even if it is not widely used. This ensures that the relocatable PrePi and other components in EmbeddedPkg don't regress on ARM as they are being updated for use on TDVF. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Michael Kubacki <michael.kubacki@microsoft.com>
-rw-r--r--ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml43
-rw-r--r--ArmVirtPkg/PlatformCI/PlatformBuildLib.py4
-rw-r--r--ArmVirtPkg/PlatformCI/QemuBuild.py3
-rw-r--r--ArmVirtPkg/PlatformCI/QemuKernelBuild.py35
4 files changed, 83 insertions, 2 deletions
diff --git a/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml b/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
index 44a1d3da67..2b6cc11916 100644
--- a/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
+++ b/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
@@ -72,6 +72,49 @@ jobs:
Run.Flags: $(run_flags)
Run: $(should_run)
+ QEMU_KERNEL_AARCH64_DEBUG:
+ Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"
+ Build.Arch: "AARCH64"
+ Build.Flags: ""
+ Build.Target: "DEBUG"
+ Run.Flags: $(run_flags)
+ Run: $(should_run)
+ QEMU_KERNEL_AARCH64_RELEASE:
+ Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"
+ Build.Arch: "AARCH64"
+ Build.Flags: ""
+ Build.Target: "RELEASE"
+ Run.Flags: $(run_flags)
+ Run: $(should_run)
+ QEMU_KERNEL_AARCH64_NOOPT:
+ Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"
+ Build.Arch: "AARCH64"
+ Build.Flags: ""
+ Build.Target: "NOOPT"
+ Run.Flags: $(run_flags)
+ Run: $(should_run)
+ QEMU_KERNEL_ARM_DEBUG:
+ Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"
+ Build.Arch: "ARM"
+ Build.Flags: ""
+ Build.Target: "DEBUG"
+ Run.Flags: $(run_flags)
+ Run: $(should_run)
+ QEMU_KERNEL_ARM_RELEASE:
+ Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"
+ Build.Arch: "ARM"
+ Build.Flags: ""
+ Build.Target: "RELEASE"
+ Run.Flags: $(run_flags)
+ Run: $(should_run)
+ QEMU_KERNEL_ARM_NOOPT:
+ Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"
+ Build.Arch: "ARM"
+ Build.Flags: ""
+ Build.Target: "NOOPT"
+ Run.Flags: $(run_flags)
+ Run: $(should_run)
+
workspace:
clean: all
diff --git a/ArmVirtPkg/PlatformCI/PlatformBuildLib.py b/ArmVirtPkg/PlatformCI/PlatformBuildLib.py
index 91aa9b31d3..405817cae7 100644
--- a/ArmVirtPkg/PlatformCI/PlatformBuildLib.py
+++ b/ArmVirtPkg/PlatformCI/PlatformBuildLib.py
@@ -226,13 +226,13 @@ class PlatformBuilder(UefiBuilder, BuildSettingsManager):
args += " -cpu cortex-a57" # emulate cpu
elif(self.env.GetValue("TARGET_ARCH").upper() == "ARM"):
cmd = "qemu-system-arm"
- args = "-M virt"
+ args = "-M virt,highmem=off"
args += " -cpu cortex-a15" # emulate cpu
else:
raise NotImplementedError()
# Common Args
- args += " -pflash " + Built_FV # path to fw
+ args += CommonPlatform.FvQemuArg + Built_FV # path to fw
args += " -m 1024" # 1gb memory
# turn off network
args += " -net none"
diff --git a/ArmVirtPkg/PlatformCI/QemuBuild.py b/ArmVirtPkg/PlatformCI/QemuBuild.py
index f4dcc1d1d2..c651a9501f 100644
--- a/ArmVirtPkg/PlatformCI/QemuBuild.py
+++ b/ArmVirtPkg/PlatformCI/QemuBuild.py
@@ -27,5 +27,8 @@ class CommonPlatform():
DscName = os.path.join("ArmVirtPkg", "ArmVirtQemu.dsc")
+ # this platform produces a bootable NOR flash image
+ FvQemuArg = " -pflash "
+
import PlatformBuildLib
PlatformBuildLib.CommonPlatform = CommonPlatform
diff --git a/ArmVirtPkg/PlatformCI/QemuKernelBuild.py b/ArmVirtPkg/PlatformCI/QemuKernelBuild.py
new file mode 100644
index 0000000000..f340dfac88
--- /dev/null
+++ b/ArmVirtPkg/PlatformCI/QemuKernelBuild.py
@@ -0,0 +1,35 @@
+# @file
+# Script to Build OVMF UEFI firmware
+#
+# Copyright (c) Microsoft Corporation.
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+import os
+import sys
+
+sys.path.append(os.path.dirname(os.path.abspath(__file__)))
+from PlatformBuildLib import SettingsManager
+from PlatformBuildLib import PlatformBuilder
+
+ # ####################################################################################### #
+ # Common Configuration #
+ # ####################################################################################### #
+class CommonPlatform():
+ ''' Common settings for this platform. Define static data here and use
+ for the different parts of stuart
+ '''
+ PackagesSupported = ("ArmVirtPkg",)
+ ArchSupported = ("AARCH64", "ARM")
+ TargetsSupported = ("DEBUG", "RELEASE", "NOOPT")
+ Scopes = ('armvirt', 'edk2-build')
+ WorkspaceRoot = os.path.realpath(os.path.join(
+ os.path.dirname(os.path.abspath(__file__)), "..", ".."))
+
+ DscName = os.path.join("ArmVirtPkg", "ArmVirtQemuKernel.dsc")
+
+ # this platform produces an executable image that is invoked using
+ # the Linux/arm64 kernel boot protocol
+ FvQemuArg = " -kernel "
+
+import PlatformBuildLib
+PlatformBuildLib.CommonPlatform = CommonPlatform