From ed2ebb5c329261c1f9694c8933c1b843effb5b6e Mon Sep 17 00:00:00 2001
From: Andrei Gherzan <andrei.gherzan@huawei.com>
Date: Wed, 10 Aug 2022 01:04:37 +0200
Subject: [PATCH] qemuarm-efi.conf: Introduce qemuarm machine equivalent with
 EFI

This machine is based on Cortex-A15 with softfp (to avoid hacks on grub
side as it requires softfp or a way to force flag to softfp). For the
EFI side, it uses edk2-firmware.

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
Signed-off-by: Luca Seritan <luca.seritan@huawei.com>
---
 .../conf/machine/include/qemu-efi.inc         | 42 +++++++++++++++++++
 meta-oniro-core/conf/machine/qemuarm-efi.conf | 18 ++++++++
 2 files changed, 60 insertions(+)
 create mode 100644 meta-oniro-core/conf/machine/include/qemu-efi.inc
 create mode 100644 meta-oniro-core/conf/machine/qemuarm-efi.conf

diff --git a/meta-oniro-core/conf/machine/include/qemu-efi.inc b/meta-oniro-core/conf/machine/include/qemu-efi.inc
new file mode 100644
index 00000000..97023a49
--- /dev/null
+++ b/meta-oniro-core/conf/machine/include/qemu-efi.inc
@@ -0,0 +1,42 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+require conf/machine/include/qemu.inc
+
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+KCONFIG_MODE = "--alldefconfig"
+MACHINE_EXTRA_RRECOMMENDS += "kernel-modules linux-firmware"
+
+SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"
+SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
+
+# This provides the bios for runqemu
+EXTRA_IMAGEDEPENDS += "edk2-firmware"
+
+IMAGE_FSTYPES += "wic wic.gz"
+WKS_FILE ?= "x-gpt-efi-disk.wks.in"
+
+# For runqemu
+QB_MACHINE_VIRT_HIGHMEM ?= "on"
+QB_MACHINE = "-machine virt,highmem=${QB_MACHINE_VIRT_HIGHMEM}"
+QB_SMP = "-smp 4"
+# For graphics to work we need to define the VGA device as well as the necessary USB devices
+QB_GRAPHICS = "-device virtio-gpu-pci"
+QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
+# Virtio Networking support
+QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
+QB_NETWORK_DEVICE = "-device virtio-net-pci,netdev=net0,mac=@MAC@"
+# Virtio block device
+QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw"
+# Virtio serial console
+QB_SERIAL_OPT = "-device virtio-serial-pci -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
+QB_TCPSERIAL_OPT = "-device virtio-serial-pci -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
+
+# Boot the wic image via EFI
+QB_DEFAULT_FSTYPE = "wic"
+QB_DEFAULT_KERNEL = "none"
+QB_DEFAULT_BIOS = "uefi.bin"
+QB_ROOTFS_EXTRA_OPT += "bootindex=0"
+EFI_PROVIDER = "grub-efi"
+MACHINE_FEATURES += "efi"
diff --git a/meta-oniro-core/conf/machine/qemuarm-efi.conf b/meta-oniro-core/conf/machine/qemuarm-efi.conf
new file mode 100644
index 00000000..592ac181
--- /dev/null
+++ b/meta-oniro-core/conf/machine/qemuarm-efi.conf
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+#@TYPE: Machine
+#@NAME: qemuarm-efi
+#@DESCRIPTION: Qemu Arm machine that boots via EFI.
+
+DEFAULTTUNE ?= "cortexa15t-neon"
+require conf/machine/include/arm/armv7a/tune-cortexa15.inc
+require conf/machine/include/qemu-efi.inc
+
+KERNEL_IMAGETYPE ?= "zImage"
+
+# For runqemu
+QB_SYSTEM_NAME = "qemu-system-arm"
+QB_MACHINE_VIRT_HIGHMEM = "off"
+QB_CPU = "-cpu cortex-a15"
-- 
GitLab