From 23b3db93c3fa7d155e4a36a2852a2a9974a48b18 Mon Sep 17 00:00:00 2001 From: Bertrand Marquis Date: Fri, 27 Mar 2020 10:50:07 +0000 Subject: [PATCH] arm-autonomy: Create arm-autonomy-guest feature Introduce DISTRO_FEATURE arm-autonomy-guest which is: - enabling ipv4 in distro features - enabling xen frontend driver in the linux kernel using a kernel feature - enabling console over hvc0 Change-Id: Idd9a708799b35e483dbba22279ce677d9674ef09 Issue-Id: SCM-767 Signed-off-by: Bertrand Marquis Reviewed-by: Diego Sueiro Signed-off-by: Jon Mason --- meta-arm-autonomy/README.md | 6 +++ .../classes/arm-autonomy-features.bbclass | 1 + .../distro/include/arm-autonomy-guest.inc | 5 ++ .../sysvinit/sysvinit-inittab_2.%.bbappend | 16 ++++++ .../features/arm-autonomy/xen-guest.cfg | 54 +++++++++++++++++++ .../features/arm-autonomy/xen-guest.scc | 4 ++ .../linux/linux-arm-autonomy.inc | 3 ++ 7 files changed, 89 insertions(+) create mode 100644 meta-arm-autonomy/conf/distro/include/arm-autonomy-guest.inc create mode 100644 meta-arm-autonomy/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend create mode 100644 meta-arm-autonomy/recipes-kernel/linux/arm-autonomy-kmeta/features/arm-autonomy/xen-guest.cfg create mode 100644 meta-arm-autonomy/recipes-kernel/linux/arm-autonomy-kmeta/features/arm-autonomy/xen-guest.scc diff --git a/meta-arm-autonomy/README.md b/meta-arm-autonomy/README.md index d0c6181d..e5ad6ed9 100644 --- a/meta-arm-autonomy/README.md +++ b/meta-arm-autonomy/README.md @@ -23,6 +23,12 @@ This layer is adding the following Yocto DISTRO_FEATURES: - add 'xen' and 'ipv4' to DISTRO_FEATURES. - add xen backend drivers to linux kernel configuration. +* arm-autonomy-guest: this feature activates functionalities to run as guest + of an autonomy system. It is doing the following: + - add 'ipv4' to DISTRO_FEATURES. + - add xen frontend drivers to linux kernel configuration. + - add console on hvc0 during init. + Bitbake variables ----------------- Some recipes and classes in this layer are introducing variables which can be diff --git a/meta-arm-autonomy/classes/arm-autonomy-features.bbclass b/meta-arm-autonomy/classes/arm-autonomy-features.bbclass index 38441e49..15549d89 100644 --- a/meta-arm-autonomy/classes/arm-autonomy-features.bbclass +++ b/meta-arm-autonomy/classes/arm-autonomy-features.bbclass @@ -1,4 +1,5 @@ # Include arm-autonomy distro config files if the distro features are set require ${@bb.utils.contains('DISTRO_FEATURES', 'arm-autonomy-host', '${ARM_AUTONOMY_DISTRO_CFGDIR}/arm-autonomy-host.inc', '', d)} +require ${@bb.utils.contains('DISTRO_FEATURES', 'arm-autonomy-guest', '${ARM_AUTONOMY_DISTRO_CFGDIR}/arm-autonomy-guest.inc', '', d)} diff --git a/meta-arm-autonomy/conf/distro/include/arm-autonomy-guest.inc b/meta-arm-autonomy/conf/distro/include/arm-autonomy-guest.inc new file mode 100644 index 00000000..d961b409 --- /dev/null +++ b/meta-arm-autonomy/conf/distro/include/arm-autonomy-guest.inc @@ -0,0 +1,5 @@ +# This files is added when DISTRO_FEATURES contains arm-autonomy-guest + +# We need to have ipv4 activated +DISTRO_FEATURES_append = " ipv4" + diff --git a/meta-arm-autonomy/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend b/meta-arm-autonomy/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend new file mode 100644 index 00000000..7b0c6472 --- /dev/null +++ b/meta-arm-autonomy/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend @@ -0,0 +1,16 @@ +# if arm-autonomy-guest is activated, we are running as a xen guest so we must +# have a console on hvc0 +# This is normally done in meta-virtualization if xen is activated but here +# we don't have xen activated. +# + +SYSVINIT_ADDHVC0 = "${@bb.utils.contains('DISTRO_FEATURES', \ + 'arm-autonomy-guest', 'true', 'false', d)}" + +do_install_append() { + if ${SYSVINIT_ADDHVC0}; then + echo "" >> ${D}${sysconfdir}/inittab + echo "X0:12345:respawn:/sbin/getty 115200 hvc0" >> \ + ${D}${sysconfdir}/inittab + fi +} diff --git a/meta-arm-autonomy/recipes-kernel/linux/arm-autonomy-kmeta/features/arm-autonomy/xen-guest.cfg b/meta-arm-autonomy/recipes-kernel/linux/arm-autonomy-kmeta/features/arm-autonomy/xen-guest.cfg new file mode 100644 index 00000000..e4e44a9c --- /dev/null +++ b/meta-arm-autonomy/recipes-kernel/linux/arm-autonomy-kmeta/features/arm-autonomy/xen-guest.cfg @@ -0,0 +1,54 @@ +CONFIG_PARAVIRT=y +CONFIG_XEN=y + +CONFIG_BLOCK=y +CONFIG_XEN_BLKDEV_FRONTEND=y + +CONFIG_SCSI=y +CONFIG_XEN_SCSI_FRONTEND=y + +CONFIG_NET=y +CONFIG_XEN_NETDEV_FRONTEND=y + +CONFIG_INPUT=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y + +CONFIG_HVC_IRQ=y + +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y + +CONFIG_WATCHDOG=y +CONFIG_XEN_WDT=y + +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_XEN_FBDEV_FRONTEND=y + +CONFIG_XEN_BALLOON=y + +CONFIG_XEN_DEV_EVTCHN=y + +CONFIG_XENFS=y +CONFIG_XEN_COMPAT_XENFS=y + +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_XENBUS_FRONTEND=y +CONFIG_XEN_GNTDEV=y +CONFIG_XEN_GRANT_DEV_ALLOC=y +CONFIG_SWIOTLB_XEN=y + +CONFIG_XEN_EFI=y +CONFIG_XEN_AUTO_XLATE=y + +CONFIG_DRM=y +CONFIG_DRM_XEN=y +CONFIG_DRM_XEN_FRONTEND=y + +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_XEN_FRONTEND=y diff --git a/meta-arm-autonomy/recipes-kernel/linux/arm-autonomy-kmeta/features/arm-autonomy/xen-guest.scc b/meta-arm-autonomy/recipes-kernel/linux/arm-autonomy-kmeta/features/arm-autonomy/xen-guest.scc new file mode 100644 index 00000000..935e78f8 --- /dev/null +++ b/meta-arm-autonomy/recipes-kernel/linux/arm-autonomy-kmeta/features/arm-autonomy/xen-guest.scc @@ -0,0 +1,4 @@ +define KFEATURE_DESCRIPTION "Enable XEN Guest Frontend Drivers" + +kconf non-hardware xen-guest.cfg + diff --git a/meta-arm-autonomy/recipes-kernel/linux/linux-arm-autonomy.inc b/meta-arm-autonomy/recipes-kernel/linux/linux-arm-autonomy.inc index 03323872..b2245a5a 100644 --- a/meta-arm-autonomy/recipes-kernel/linux/linux-arm-autonomy.inc +++ b/meta-arm-autonomy/recipes-kernel/linux/linux-arm-autonomy.inc @@ -11,3 +11,6 @@ SRC_URI_append = " file://arm-autonomy-kmeta;type=kmeta;name=arm-autonomy-kmeta; KERNEL_FEATURES += "${@bb.utils.contains('DISTRO_FEATURES', \ 'arm-autonomy-host', 'features/arm-autonomy/xen-host.scc', '', d)}" +# Add xen guest drivers to kernel if arm-autonomy-guest is activated +KERNEL_FEATURES += "${@bb.utils.contains('DISTRO_FEATURES', \ + 'arm-autonomy-guest', 'features/arm-autonomy/xen-guest.scc', '', d)}"