public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ard Biesheuvel" <ardb@kernel.org>
To: devel@edk2.groups.io
Cc: Ard Biesheuvel <ardb@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Michael Kubacki <michael.kubacki@microsoft.com>,
	Jiewen Yao <jiewen.yao@intel.com>,
	Oliver Steffen <osteffen@redhat.com>
Subject: [PATCH v2 5/6] ArmVirtPkg/PlatformCI: Add CI coverage for ArmVirtQemuKernel
Date: Tue, 24 Jan 2023 17:34:16 +0100	[thread overview]
Message-ID: <20230124163417.584727-6-ardb@kernel.org> (raw)
In-Reply-To: <20230124163417.584727-1-ardb@kernel.org>

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>
---
 ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml      | 43 ++++++++++++++++++++
 ArmVirtPkg/PlatformCI/PlatformBuildLib.py                  |  4 +-
 ArmVirtPkg/PlatformCI/QemuBuild.py                         |  3 ++
 ArmVirtPkg/PlatformCI/{QemuBuild.py => QemuKernelBuild.py} |  6 ++-
 4 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml b/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
index 44a1d3da6742..2b6cc119167b 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 91aa9b31d3c5..405817cae785 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 f4dcc1d1d245..c651a9501fcf 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/QemuBuild.py b/ArmVirtPkg/PlatformCI/QemuKernelBuild.py
similarity index 81%
copy from ArmVirtPkg/PlatformCI/QemuBuild.py
copy to ArmVirtPkg/PlatformCI/QemuKernelBuild.py
index f4dcc1d1d245..f340dfac8843 100644
--- a/ArmVirtPkg/PlatformCI/QemuBuild.py
+++ b/ArmVirtPkg/PlatformCI/QemuKernelBuild.py
@@ -25,7 +25,11 @@ class CommonPlatform():
     WorkspaceRoot = os.path.realpath(os.path.join(
         os.path.dirname(os.path.abspath(__file__)), "..", ".."))
 
-    DscName = os.path.join("ArmVirtPkg", "ArmVirtQemu.dsc")
+    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
-- 
2.39.0


  parent reply	other threads:[~2023-01-24 16:34 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-24 16:34 [PATCH v2 0/6] ArmVirtPkg: Increase PlatformCI coverage Ard Biesheuvel
2023-01-24 16:34 ` [PATCH v2 1/6] ArmVirtPkg/PrePi: Ensure timely execution of library constructors Ard Biesheuvel
2023-01-24 16:34 ` [PATCH v2 2/6] ArmVirtPkg/ArmVirtQemu: enlarge initial flash mapping Ard Biesheuvel
2023-01-24 16:34 ` [PATCH v2 3/6] ArmVirtPkg/PlatformCI: factor out reusable PlatformBuildLib.py Ard Biesheuvel
2023-01-26 14:34   ` [edk2-devel] " Michael Kubacki
2023-01-24 16:34 ` [PATCH v2 4/6] ArmVirtPkg/PlatformCI: Enable optional features on Qemu AARCH64 builds Ard Biesheuvel
2023-01-26 14:35   ` [edk2-devel] " Michael Kubacki
2023-01-24 16:34 ` Ard Biesheuvel [this message]
2023-01-26 14:35   ` [edk2-devel] [PATCH v2 5/6] ArmVirtPkg/PlatformCI: Add CI coverage for ArmVirtQemuKernel Michael Kubacki
2023-01-24 16:34 ` [PATCH v2 6/6] ArmVirtPkg/PlatformCI: Perform build test of ArmVirtKvmTool Ard Biesheuvel
2023-01-26 14:35   ` [edk2-devel] " Michael Kubacki
2023-01-25  9:41 ` [edk2-devel] [PATCH v2 0/6] ArmVirtPkg: Increase PlatformCI coverage Gerd Hoffmann
2023-01-25 12:38   ` Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230124163417.584727-6-ardb@kernel.org \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox