From 6e274689443736549241f128992b5eedbafe5e91 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 8 Jul 2024 12:51:15 -0400 Subject: Rework virtio-aarch64 machine definition Start on potentially removing separate virtio-arch64 machine by simplifying it and moving as much of its virtio kernel configuration over to our generic kernel configuration scheme. From some experimentation, it is not obvious that genericarm64 or qemuarm64 are directly reusable as guest MACHINEs as is, so further investigation is required on whether maintaining our own machine and potentially custom kernel metadata cache is perhaps worthwhile. Changes: - Update virtio-aarch64 linux-yocto bbappend for new version in scarthgap, and drop its use of a custom kernel metadata cache for reusing qemuarm64's BSP as a starting point for now. - Move the various virtio-*.cfg kernel configuration fragments over to meta-agl-core, using a new "agl-virtio-guest" AGL_FEATURES flag to control whether they are used. The aim is to make it more obvious where any virtio kernel configuration comes from and hopefully make it more easily reusable. Bug-AGL: SPEC-5137, SPEC-5201 Change-Id: I861cd1f80643aca632a5ab103eae2cc46de3922e Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/30119 ci-image-build: Jenkins Job builder account Tested-by: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller ci-image-boot-test: Jenkins Job builder account --- meta-agl-bsp/conf/machine/include/virtio.inc | 3 --- .../recipes-kernel/linux/linux-yocto-dev.bbappend | 10 -------- .../linux/linux-yocto/virtio-aarch64-standard.scc | 13 ---------- .../linux/linux-yocto/virtio-drm.cfg | 3 --- .../linux/linux-yocto/virtio-pci.cfg | 3 --- .../recipes-kernel/linux/linux-yocto_6.6.bbappend | 21 ++++------------ .../linux/linux-agl-config-virtio.inc | 8 ++++++ .../recipes-kernel/linux/linux-agl-config.inc | 4 --- meta-agl-core/recipes-kernel/linux/linux-agl.inc | 3 ++- .../recipes-kernel/linux/linux/virtio-aarch64.cfg | 29 ++++++++++++++++++++++ .../recipes-kernel/linux/linux/virtio-drm.cfg | 3 +++ .../recipes-kernel/linux/linux/virtio-pci.cfg | 3 +++ .../recipes-kernel/linux/linux/virtio-scmi.cfg | 25 +++++++++++++++++++ 13 files changed, 75 insertions(+), 53 deletions(-) delete mode 100644 meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto-dev.bbappend delete mode 100644 meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-aarch64-standard.scc delete mode 100644 meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-drm.cfg delete mode 100644 meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-pci.cfg create mode 100644 meta-agl-core/recipes-kernel/linux/linux-agl-config-virtio.inc create mode 100644 meta-agl-core/recipes-kernel/linux/linux/virtio-aarch64.cfg create mode 100644 meta-agl-core/recipes-kernel/linux/linux/virtio-drm.cfg create mode 100644 meta-agl-core/recipes-kernel/linux/linux/virtio-pci.cfg create mode 100644 meta-agl-core/recipes-kernel/linux/linux/virtio-scmi.cfg diff --git a/meta-agl-bsp/conf/machine/include/virtio.inc b/meta-agl-bsp/conf/machine/include/virtio.inc index 6f8a638a0..1e4875b5d 100644 --- a/meta-agl-bsp/conf/machine/include/virtio.inc +++ b/meta-agl-bsp/conf/machine/include/virtio.inc @@ -15,9 +15,6 @@ RDEPENDS:${KERNEL_PACKAGE_NAME}-base = "" # Use a common kernel recipe for all VirtIO machines PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto" -# Use newer kernel -PREFERRED_VERSION_linux-yocto = "5.15.%" - EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native" IMAGE_CLASSES += "qemuboot" diff --git a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto-dev.bbappend b/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto-dev.bbappend deleted file mode 100644 index 5970414eb..000000000 --- a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto-dev.bbappend +++ /dev/null @@ -1,10 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/linux-yocto:" - -SRC_URI:append:virtio-all = " \ - git://gerrit.automotivelinux.org/gerrit/src/agl-yocto-kernel-meta.git;protocol=https;type=kmeta;name=agl-meta;destsuffix=agl-kernel-meta;branch=master \ - file://virtio-aarch64-${LINUX_KERNEL_TYPE}.scc \ -" - -SRCREV_agl-meta = "c5008f4ba9e1b9f11c1014b53477079e605ceab7" - -COMPATIBLE_MACHINE:virtio-aarch64 = "virtio-aarch64" diff --git a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-aarch64-standard.scc b/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-aarch64-standard.scc deleted file mode 100644 index 2d1570e9f..000000000 --- a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-aarch64-standard.scc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: MIT -define KMACHINE virtio-aarch64 -define KTYPE standard -define KARCH arm64 - -include ktypes/standard/standard.scc nopatch -include arch/arm/aarch64.scc -include cfg/8250.scc -include cfg/virtio.scc -include bsp/virtio/agl-virtio.scc - -# enable the ability to run 32 bit apps -include arch/arm/32bit-compat.scc diff --git a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-drm.cfg b/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-drm.cfg deleted file mode 100644 index 2facc345e..000000000 --- a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-drm.cfg +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_DRM=y -CONFIG_FB=y -CONFIG_DRM_FBDEV_EMULATION=y diff --git a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-pci.cfg b/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-pci.cfg deleted file mode 100644 index bbcaca312..000000000 --- a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-pci.cfg +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_PCI=y -CONFIG_VIRTIO_PCI=y -CONFIG_PCI_HOST_GENERIC=y diff --git a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto_6.6.bbappend b/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto_6.6.bbappend index 6952436a3..15cb9ea98 100644 --- a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto_6.6.bbappend +++ b/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto_6.6.bbappend @@ -1,17 +1,6 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -# Cannot just append to SRC_URI, as the metadata interferes with the -# AGL config fragment scheme -AGL_KERNEL_SRC:prepend:virtio-all = " \ - git://gerrit.automotivelinux.org/gerrit/src/agl-yocto-kernel-meta.git;protocol=https;type=kmeta;name=agl-meta;destsuffix=agl-kernel-meta;branch=kernel-5.15 \ - file://virtio-aarch64-${LINUX_KERNEL_TYPE}.scc \ -" - -SRCREV_agl-meta = "4deb7357eab5962b0553a5ad1f11be5ac35f9da9" - -AGL_KCONFIG_FRAGMENTS:append:virtio-all = " \ - virtio-drm.cfg \ - virtio-pci.cfg \ -" - +# NOTE: Has to be in bbappend itself because BitBake does not fully +# parse recipes when checking it COMPATIBLE_MACHINE:virtio-aarch64 = "virtio-aarch64" + +# Reuse base qemuarm64 machine to avoid needing our own kernel metadata +KMACHINE:virtio-aarch64 = "qemuarm64" \ No newline at end of file diff --git a/meta-agl-core/recipes-kernel/linux/linux-agl-config-virtio.inc b/meta-agl-core/recipes-kernel/linux/linux-agl-config-virtio.inc new file mode 100644 index 000000000..e0d30b1f6 --- /dev/null +++ b/meta-agl-core/recipes-kernel/linux/linux-agl-config-virtio.inc @@ -0,0 +1,8 @@ +AGL_KCONFIG_FRAGMENTS += " \ + virtio-${TUNE_ARCH} \ + virtio-drm.cfg \ + virtio-pci.cfg \ + virtio-scmi.cfg \ + sound-hda.cfg \ + virtio-snd.cfg \ +" diff --git a/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc b/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc index 4799a6180..5cf008a77 100644 --- a/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc +++ b/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc @@ -71,10 +71,6 @@ AGL_KCONFIG_FRAGMENTS:append:qemuall = " \ qemu-drm.cfg \ " -AGL_KCONFIG_FRAGMENTS:append:virtio-all = " \ - sound-hda.cfg \ -" - # Configuration for using the ARM virt machine (and not versatilepb) AGL_KCONFIG_FRAGMENTS:append:qemuarm = " qemuarm.cfg" diff --git a/meta-agl-core/recipes-kernel/linux/linux-agl.inc b/meta-agl-core/recipes-kernel/linux/linux-agl.inc index c318716fe..f41e35bc2 100644 --- a/meta-agl-core/recipes-kernel/linux/linux-agl.inc +++ b/meta-agl-core/recipes-kernel/linux/linux-agl.inc @@ -3,7 +3,8 @@ DEPENDS += "kern-tools-native" -include linux-agl-config.inc +require linux-agl-config.inc +include ${@bb.utils.contains('AGL_FEATURES', 'agl-virtio-guest', 'linux-agl-config-virtio.inc', '', d)} # returns all the elements from the src uri that are .cfg files def find_cfgs(d): diff --git a/meta-agl-core/recipes-kernel/linux/linux/virtio-aarch64.cfg b/meta-agl-core/recipes-kernel/linux/linux/virtio-aarch64.cfg new file mode 100644 index 000000000..25381e133 --- /dev/null +++ b/meta-agl-core/recipes-kernel/linux/linux/virtio-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-agl-core/recipes-kernel/linux/linux/virtio-drm.cfg b/meta-agl-core/recipes-kernel/linux/linux/virtio-drm.cfg new file mode 100644 index 000000000..2facc345e --- /dev/null +++ b/meta-agl-core/recipes-kernel/linux/linux/virtio-drm.cfg @@ -0,0 +1,3 @@ +CONFIG_DRM=y +CONFIG_FB=y +CONFIG_DRM_FBDEV_EMULATION=y diff --git a/meta-agl-core/recipes-kernel/linux/linux/virtio-pci.cfg b/meta-agl-core/recipes-kernel/linux/linux/virtio-pci.cfg new file mode 100644 index 000000000..bbcaca312 --- /dev/null +++ b/meta-agl-core/recipes-kernel/linux/linux/virtio-pci.cfg @@ -0,0 +1,3 @@ +CONFIG_PCI=y +CONFIG_VIRTIO_PCI=y +CONFIG_PCI_HOST_GENERIC=y diff --git a/meta-agl-core/recipes-kernel/linux/linux/virtio-scmi.cfg b/meta-agl-core/recipes-kernel/linux/linux/virtio-scmi.cfg new file mode 100644 index 000000000..5ae01938e --- /dev/null +++ b/meta-agl-core/recipes-kernel/linux/linux/virtio-scmi.cfg @@ -0,0 +1,25 @@ +# Enable ARM_SCMI_PROTOCOL ("ARM System Control and Management Interface (SCMI) +# Message Protocol") config located in menu +# +# -> Device Drivers +# -> Firmware Drivers +# -> ARM System Control and Management Interface Protocol +# +# After that, in the same menu enabled: +# +# * ARM_SCMI_TRANSPORT_VIRTIO ("SCMI transport based on VirtIO") +# +# and disabled not used features: +# +# * ARM_SCMI_TRANSPORT_SMC ("SCMI transport based on SMC") +# * ARM_SCMI_POWER_DOMAIN ("SCMI power domain driver") + +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ARM_SCMI_HAVE_TRANSPORT=y +CONFIG_ARM_SCMI_HAVE_MSG=y +# CONFIG_ARM_SCMI_TRANSPORT_SMC is not set +CONFIG_ARM_SCMI_TRANSPORT_VIRTIO=y +# CONFIG_ARM_SCMI_POWER_DOMAIN is not set +# CONFIG_SENSORS_ARM_SCMI is not set +# CONFIG_COMMON_CLK_SCMI is not set +CONFIG_IIO_SCMI=y -- cgit 1.2.3-korg