diff options
Diffstat (limited to 'meta-egvirt')
9 files changed, 142 insertions, 0 deletions
diff --git a/meta-egvirt/conf/include/agl_virtio-aarch64.inc b/meta-egvirt/conf/include/agl_virtio-aarch64.inc new file mode 100644 index 00000000..e3faaf7b --- /dev/null +++ b/meta-egvirt/conf/include/agl_virtio-aarch64.inc @@ -0,0 +1,14 @@ +# Build updatable image. Only takes effect when sota.bbclass is inherited +DISTRO_FEATURES_append = " sota" + +# Root device +ROOT_VM = "root=PARTUUID=${DISK_SIGNATURE}-02" + +# Use our own wks file +WKS_FILE = "directdisk.wks.in" + +# Simplest possible option +AGL_DEFAULT_IMAGE_FSTYPES = "ext4" + +# Need to run QEMU with virtio-gpu device +PACKAGECONFIG_append_pn-qemu-system-native = " virglrenderer glx gtk+" diff --git a/meta-egvirt/conf/machine/include/virtio.inc b/meta-egvirt/conf/machine/include/virtio.inc new file mode 100644 index 00000000..b4022d52 --- /dev/null +++ b/meta-egvirt/conf/machine/include/virtio.inc @@ -0,0 +1,23 @@ +PREFERRED_PROVIDER_virtual/egl ?= "mesa" +PREFERRED_PROVIDER_virtual/libgl ?= "mesa" +PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa" +PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa" + +MACHINE_FEATURES = "alsa usbgadget screen vfat" + +MACHINEOVERRIDES =. "virtio-all:" + +IMAGE_FSTYPES += "tar.bz2 ext4" + +# Don't include kernels in standard images +RDEPENDS_${KERNEL_PACKAGE_NAME}-base = "" + +# Use a common kernel recipe for all VirtIO machines +PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto" + +EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native" + +IMAGE_CLASSES += "qemuboot" + +# most driver fails to compile +MOST_DRIVERS ?= "" diff --git a/meta-egvirt/conf/machine/virtio-aarch64.conf b/meta-egvirt/conf/machine/virtio-aarch64.conf new file mode 100644 index 00000000..d92d4394 --- /dev/null +++ b/meta-egvirt/conf/machine/virtio-aarch64.conf @@ -0,0 +1,36 @@ +#@TYPE: Machine +#@NAME: VirtIO ARMv8 machine +#@DESCRIPTION: Machine configuration for running an ARMv8 system on VirtIO based platform + +require conf/machine/include/arm/arch-armv8a.inc +require conf/machine/include/virtio.inc + +KERNEL_IMAGETYPE = "Image" + +SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0" +SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" + +# For runqemu +QB_SYSTEM_NAME = "qemu-system-aarch64" +QB_MACHINE = "-machine virt" +QB_CPU = "-cpu cortex-a57" +QB_CPU_KVM = "-cpu host -machine gic-version=3" +QB_MEM = "-m 2048" +# Standard Serial console +QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0" +# Ensure virtio-mmio support VirtIO 1.0 required by virtio-gpu +QB_OPT_APPEND = "-global virtio-mmio.force-legacy=false" +# TODO: upstream to OE-core runqemu +QB_OPT_APPEND += "-device virtio-gpu-device -display gtk,gl=on -show-cursor" +# Virtio input +QB_OPT_APPEND += "-device virtio-mouse-device -device virtio-keyboard-device" +# Add the 'virtio-rng-device' device otherwise the guest may run out of entropy +QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-device,rng=rng0" +# Virtio Networking support +QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" +QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@" +# Virtio block device +QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0" +# Virtio serial console +QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon" +QB_TCPSERIAL_OPT = "-device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon" diff --git a/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/aarch64.cfg b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/aarch64.cfg new file mode 100644 index 00000000..25381e13 --- /dev/null +++ b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/aarch64.cfg @@ -0,0 +1,29 @@ +# SPDX-License-Identifier: MIT +# +# ARM64 +# +CONFIG_ARM64=y +CONFIG_64BIT=y + +# +# Bus support +# +CONFIG_ARM_AMBA=y + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y + +# +# RTC +# +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" + +# +# on-CPU RTC drivers +# +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PL031=y diff --git a/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/aarch64.scc b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/aarch64.scc new file mode 100644 index 00000000..1de6faf9 --- /dev/null +++ b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/aarch64.scc @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: MIT +kconf hardware aarch64.cfg diff --git a/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/virtio-aarch64-standard.scc b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/virtio-aarch64-standard.scc new file mode 100644 index 00000000..3a241a0e --- /dev/null +++ b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/virtio-aarch64-standard.scc @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: MIT +define KMACHINE virtio-aarch64 +define KTYPE standard +define KARCH arm64 + +include ktypes/standard/standard.scc +include aarch64.scc +include cfg/8250.scc +include cfg/virtio.scc +include virtio.scc + +# enable the ability to run 32 bit apps +include arch/arm/32bit-compat.scc diff --git a/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/virtio.cfg b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/virtio.cfg new file mode 100644 index 00000000..b8b36e7a --- /dev/null +++ b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/virtio.cfg @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: MIT + +# TODO: upstream to yocto-kernel-cache/cfg/8250.cfg +CONFIG_SERIAL_OF_PLATFORM=y + +# Remove since PCI is not enabled +# CONFIG_SERIAL_8250_PCI is not set + +# TODO: upstream to yocto-kernel-cache/cfg/virtio.cfg +CONFIG_VSOCKETS=y +CONFIG_VSOCKETS_DIAG=y +CONFIG_VIRTIO_VSOCKETS=y +CONFIG_VIRTIO_VSOCKETS_COMMON=y + +# Needed for CONFIG_DRM_VIRTIO_GPU +CONFIG_DRM=y diff --git a/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/virtio.scc b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/virtio.scc new file mode 100644 index 00000000..333ac42b --- /dev/null +++ b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-aarch64/virtio.scc @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: MIT +kconf hardware virtio.cfg diff --git a/meta-egvirt/recipes-kernel/linux/linux-yocto_%.bbappend b/meta-egvirt/recipes-kernel/linux/linux-yocto_%.bbappend new file mode 100644 index 00000000..ed48a135 --- /dev/null +++ b/meta-egvirt/recipes-kernel/linux/linux-yocto_%.bbappend @@ -0,0 +1,7 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/linux-yocto:" + +SRC_URI_append_virtio-aarch64 = " \ + file://virtio-aarch64;type=kmeta;destsuffix=virtio-aarch64 \ +" + +COMPATIBLE_MACHINE_virtio-aarch64 = "virtio-aarch64" |