[edk2-devel] [PATCH v2 5/6] ArmVirtPkg/PlatformCI: Add CI coverage for ArmVirtQemuKernel

Ard Biesheuvel posted 6 patches 3 years ago
[edk2-devel] [PATCH v2 5/6] ArmVirtPkg/PlatformCI: Add CI coverage for ArmVirtQemuKernel
Posted by Ard Biesheuvel 3 years ago
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



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#98983): https://edk2.groups.io/g/devel/message/98983
Mute This Topic: https://groups.io/mt/96501371/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: [edk2-devel] [PATCH v2 5/6] ArmVirtPkg/PlatformCI: Add CI coverage for ArmVirtQemuKernel
Posted by Michael Kubacki 3 years ago
Reviewed-by: Michael Kubacki <michael.kubacki@microsoft.com>

On 1/24/2023 11:34 AM, Ard Biesheuvel wrote:
> 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
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#99079): https://edk2.groups.io/g/devel/message/99079
Mute This Topic: https://groups.io/mt/96501371/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-