From dafe88677965e179d92ab2f0708ee63efc447a4b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Eil=C3=ADs=20N=C3=AD=20Fhlannag=C3=A1in?=
 <elizabeth.flanagan@huawei.com>
Date: Thu, 25 Nov 2021 13:08:31 +0000
Subject: [PATCH] oniro: Add support for qemu-generic-arm64 SystemReady
 devices.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This commit adds support for the qemu-generic-arm64 machine as a basic
qemu machine for arm SystemReady devices. It requires
meta-arm-dunfell-backports in order to function.

Signed-off-by: Eilís Ní Fhlannagáin <elizabeth.flanagan@huawei.com>
---
 flavours/linux/bblayers.conf.sample                   |  1 +
 manifests/default.xml                                 |  1 +
 meta-oniro-core/classes/oniro-image.bbclass           |  3 +++
 meta-oniro-core/conf/distro/oniro-linux.conf          |  9 +++++++++
 .../recipes-kernel/linux/linux-oniro_5.10.bb          |  2 +-
 meta-oniro-core/wic/x-qemu-efi-disk.wks.in            | 11 +++++++++++
 6 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 meta-oniro-core/wic/x-qemu-efi-disk.wks.in

diff --git a/flavours/linux/bblayers.conf.sample b/flavours/linux/bblayers.conf.sample
index 30628862..f9a90606 100644
--- a/flavours/linux/bblayers.conf.sample
+++ b/flavours/linux/bblayers.conf.sample
@@ -16,6 +16,7 @@ BBLAYERS ?= " \
   ##OEROOT##/../meta-zephyr \
   ##OEROOT##/../meta-zephyr-bsp \
   ##OEROOT##/../oniro/meta-oniro-core \
+  ##OEROOT##/../meta-arm-mixin/meta-arm \
   ##OEROOT##/../meta-freertos \
   ##OEROOT##/../meta-intel \
   ##OEROOT##/../meta-seco-intel \
diff --git a/manifests/default.xml b/manifests/default.xml
index 92f9c6df..33af03cb 100644
--- a/manifests/default.xml
+++ b/manifests/default.xml
@@ -74,6 +74,7 @@ SPDX-FileCopyrightText: Huawei Inc.
 	<project name="oniro" revision="dunfell" path="oniro">
 		<linkfile src="README.md" dest="README.md"/>
 	</project>
+	<project name="meta-arm-dunfell-backports" revision="dunfell" path="meta-arm-mixin" />
 	<project name="meta-clang" revision="main" path="meta-clang" />
 	<project name="meta-riscv" revision="OSTC/dunfell" path="meta-riscv" />
 	<project name="meta-zephyr" revision="ostc/master" path="meta-zephyr" />
diff --git a/meta-oniro-core/classes/oniro-image.bbclass b/meta-oniro-core/classes/oniro-image.bbclass
index a68fd3a6..127846d2 100644
--- a/meta-oniro-core/classes/oniro-image.bbclass
+++ b/meta-oniro-core/classes/oniro-image.bbclass
@@ -81,6 +81,9 @@ WKS_FILE_qemux86 ?= "x-qemux86-directdisk.wks.in"
 IMAGE_FSTYPES_qemux86-64 ?= "wic wic.bz2"
 WKS_FILE_qemux86-64 ?= "x-qemux86-directdisk.wks.in"
 
+WKS_FILE_qemu-generic-arm64 = "x-qemu-efi-disk.wks.in"
+IMAGE_FSTYPES_qemu-generic-arm64 += "wic wic.qcow2"
+
 WKS_FILE_seco-imx8mm-c61 ?= "x-imx-uboot-bootpart.wks.in"
 
 #
diff --git a/meta-oniro-core/conf/distro/oniro-linux.conf b/meta-oniro-core/conf/distro/oniro-linux.conf
index 5b7382ac..326adf5e 100644
--- a/meta-oniro-core/conf/distro/oniro-linux.conf
+++ b/meta-oniro-core/conf/distro/oniro-linux.conf
@@ -108,12 +108,21 @@ IMAGE_FEATURES_remove = " nfs-server nfs-client nfs-utils"
 DISTRO_EXTRA_RDEPENDS_remove = " packagegroup-core-device-devel"
 
 PREFERRED_VERSION_linux-raspberrypi = "5.10.%"
+
 PREFERRED_VERSION_linux-yocto = "5.10%"
 PREFERRED_PROVIDER_virtual/kernel_qemuarm = "linux-oniro"
 PREFERRED_PROVIDER_virtual/kernel_qemuarm64 = "linux-oniro"
 PREFERRED_PROVIDER_virtual/kernel_qemux86 = "linux-oniro"
 PREFERRED_PROVIDER_virtual/kernel_qemux86-64 = "linux-oniro"
 
+# qemu-generic-arm64 has issues booting past 5.10. See:
+# https://git.yoctoproject.org/meta-arm/tree/meta-arm/conf/machine/generic-arm64.conf?id=c40fb5348b1d0f8c4a1ed779c8df6ba3cf411930
+# When kernel version is bumped we will have to revisit here.
+PREFERRED_PROVIDER_virtual/kernel_qemu-generic-arm64 = "linux-oniro"
+
+# qemu-generic-arm64 specific requirements
+PREFERRED_VERSION_optee-os_qemu-generic-arm64 = "3.14.0"
+
 # Default to enabling serial debug console on RaspberryPi
 ENABLE_UART ?= "1"
 
diff --git a/meta-oniro-core/recipes-kernel/linux/linux-oniro_5.10.bb b/meta-oniro-core/recipes-kernel/linux/linux-oniro_5.10.bb
index cf4e9492..fcf4b7fd 100644
--- a/meta-oniro-core/recipes-kernel/linux/linux-oniro_5.10.bb
+++ b/meta-oniro-core/recipes-kernel/linux/linux-oniro_5.10.bb
@@ -30,7 +30,7 @@ PROVIDES="linux-oniro virtual/kernel"
 
 KCONF_BSP_AUDIT_LEVEL = "1"
 
-COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemux86-64|qemuriscv64|qemuriscv32"
+COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemux86-64|qemuriscv64|qemuriscv32|qemu-generic-arm64"
 
 # Functionality flags
 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
diff --git a/meta-oniro-core/wic/x-qemu-efi-disk.wks.in b/meta-oniro-core/wic/x-qemu-efi-disk.wks.in
new file mode 100644
index 00000000..24409d66
--- /dev/null
+++ b/meta-oniro-core/wic/x-qemu-efi-disk.wks.in
@@ -0,0 +1,11 @@
+# short-description: Create an EFI disk image
+# long-description: Creates a partitioned EFI disk image that the user
+# can directly dd to boot media.
+
+bootloader --ptable gpt --timeout=5 --append="rootwait rootfstype=squashfs"
+part /boot --source bootimg-efi --sourceparams="loader=${EFI_PROVIDER}" --label boot --active --align 1024 --use-uuid
+${WIC_ROOTA_PARTITION}
+${WIC_ROOTB_PARTITION}
+${WIC_DEVDATA_PARTITION}
+${WIC_SYSDATA_PARTITION}
+${WIC_APPDATA_PARTITION}
-- 
GitLab