From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by mx.groups.io with SMTP id smtpd.web11.20022.1674578074009902071 for ; Tue, 24 Jan 2023 08:34:34 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=pq0+6+XU; spf=pass (domain: kernel.org, ip: 139.178.84.217, mailfrom: ardb@kernel.org) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 8626D612AF; Tue, 24 Jan 2023 16:34:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97C89C433A4; Tue, 24 Jan 2023 16:34:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1674578072; bh=aMe5Uss2Oonnclegsuv0og/avEp9OJORZIuRCAtVpFE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pq0+6+XUFz0RGAbnKzQ5iO682HELOVF22rgWbOpzCDx2BBP+XS8uSE6kIklgIwQg7 aff1SRyMMCpS3iI5YSy8WSx25asXcyoE+hFHSAv5LN3+dGRBmk9/XSZfYMa3utb112 98lEfzq1c7gKtClnwu7+1RSsbybxNRUG8CWpux344L7CKe2tdovNrAR+W00lIYDZ/H StLjUBpAJLHhJ02CWlrXYRhWrTfGqNLmEEmjBORxajamgpDxX0cSbwV0PEHnzI/vCb QV5s1VxQZtGeJCct0M01plCN2/2YgYJKAAFl+G9H2Cw2BKk/6Bx+VHArZA9+/cCFHW Oe2bgP6Zel8rQ== From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Gerd Hoffmann , Michael Kubacki , Jiewen Yao , Oliver Steffen Subject: [PATCH v2 5/6] ArmVirtPkg/PlatformCI: Add CI coverage for ArmVirtQemuKernel Date: Tue, 24 Jan 2023 17:34:16 +0100 Message-Id: <20230124163417.584727-6-ardb@kernel.org> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230124163417.584727-1-ardb@kernel.org> References: <20230124163417.584727-1-ardb@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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 --- ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml | 43 ++++++++++= ++++++++++ ArmVirtPkg/PlatformCI/PlatformBuildLib.py | 4 +- ArmVirtPkg/PlatformCI/QemuBuild.py | 3 ++ ArmVirtPkg/PlatformCI/{QemuBuild.py =3D> QemuKernelBuild.py} | 6 ++- 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml b/ArmVir= tPkg/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)=0D Run: $(should_run)=0D =0D + QEMU_KERNEL_AARCH64_DEBUG:=0D + Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"=0D + Build.Arch: "AARCH64"=0D + Build.Flags: ""=0D + Build.Target: "DEBUG"=0D + Run.Flags: $(run_flags)=0D + Run: $(should_run)=0D + QEMU_KERNEL_AARCH64_RELEASE:=0D + Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"=0D + Build.Arch: "AARCH64"=0D + Build.Flags: ""=0D + Build.Target: "RELEASE"=0D + Run.Flags: $(run_flags)=0D + Run: $(should_run)=0D + QEMU_KERNEL_AARCH64_NOOPT:=0D + Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"=0D + Build.Arch: "AARCH64"=0D + Build.Flags: ""=0D + Build.Target: "NOOPT"=0D + Run.Flags: $(run_flags)=0D + Run: $(should_run)=0D + QEMU_KERNEL_ARM_DEBUG:=0D + Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"=0D + Build.Arch: "ARM"=0D + Build.Flags: ""=0D + Build.Target: "DEBUG"=0D + Run.Flags: $(run_flags)=0D + Run: $(should_run)=0D + QEMU_KERNEL_ARM_RELEASE:=0D + Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"=0D + Build.Arch: "ARM"=0D + Build.Flags: ""=0D + Build.Target: "RELEASE"=0D + Run.Flags: $(run_flags)=0D + Run: $(should_run)=0D + QEMU_KERNEL_ARM_NOOPT:=0D + Build.File: "$(package)/PlatformCI/QemuKernelBuild.py"=0D + Build.Arch: "ARM"=0D + Build.Flags: ""=0D + Build.Target: "NOOPT"=0D + Run.Flags: $(run_flags)=0D + Run: $(should_run)=0D +=0D workspace:=0D clean: all=0D =0D diff --git a/ArmVirtPkg/PlatformCI/PlatformBuildLib.py b/ArmVirtPkg/Platfor= mCI/PlatformBuildLib.py index 91aa9b31d3c5..405817cae785 100644 --- a/ArmVirtPkg/PlatformCI/PlatformBuildLib.py +++ b/ArmVirtPkg/PlatformCI/PlatformBuildLib.py @@ -226,13 +226,13 @@ class PlatformBuilder(UefiBuilder, BuildSettingsManag= er): args +=3D " -cpu cortex-a57" = # emulate cpu=0D elif(self.env.GetValue("TARGET_ARCH").upper() =3D=3D "ARM"):=0D cmd =3D "qemu-system-arm"=0D - args =3D "-M virt"=0D + args =3D "-M virt,highmem=3Doff"=0D args +=3D " -cpu cortex-a15" = # emulate cpu=0D else:=0D raise NotImplementedError()=0D =0D # Common Args=0D - args +=3D " -pflash " + Built_FV = # path to fw=0D + args +=3D CommonPlatform.FvQemuArg + Built_FV = # path to fw=0D args +=3D " -m 1024" = # 1gb memory=0D # turn off network=0D args +=3D " -net none"=0D diff --git a/ArmVirtPkg/PlatformCI/QemuBuild.py b/ArmVirtPkg/PlatformCI/Qem= uBuild.py index f4dcc1d1d245..c651a9501fcf 100644 --- a/ArmVirtPkg/PlatformCI/QemuBuild.py +++ b/ArmVirtPkg/PlatformCI/QemuBuild.py @@ -27,5 +27,8 @@ class CommonPlatform(): =0D DscName =3D os.path.join("ArmVirtPkg", "ArmVirtQemu.dsc")=0D =0D + # this platform produces a bootable NOR flash image=0D + FvQemuArg =3D " -pflash "=0D +=0D import PlatformBuildLib=0D PlatformBuildLib.CommonPlatform =3D CommonPlatform=0D diff --git a/ArmVirtPkg/PlatformCI/QemuBuild.py b/ArmVirtPkg/PlatformCI/Qem= uKernelBuild.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 =3D os.path.realpath(os.path.join(=0D os.path.dirname(os.path.abspath(__file__)), "..", ".."))=0D =0D - DscName =3D os.path.join("ArmVirtPkg", "ArmVirtQemu.dsc")=0D + DscName =3D os.path.join("ArmVirtPkg", "ArmVirtQemuKernel.dsc")=0D +=0D + # this platform produces an executable image that is invoked using=0D + # the Linux/arm64 kernel boot protocol=0D + FvQemuArg =3D " -kernel "=0D =0D import PlatformBuildLib=0D PlatformBuildLib.CommonPlatform =3D CommonPlatform=0D --=20 2.39.0