diff options
author | Scott Murray <scott.murray@konsulko.com> | 2021-06-27 14:36:00 -0400 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2021-06-29 21:31:01 +0000 |
commit | 74a7b60c94e21caa47334aeb975bb1af8fcb4efd (patch) | |
tree | 07355e73b63fc33afc5c43cb88f28862e9c93a55 /meta-agl-core/recipes-kernel/linux/linux-agl-config.inc | |
parent | 820d8ac3e5c2ff3e110932e1ed08ea24ffad156c (diff) |
Refactor kernel configuration fragment handling
Refactor the kernel configuration fragment handling to shift all AGL
applied configuration fragments into a new AGL_KCONFIG_FRAGMENTS
variable that is used to generate SRC_URI and KERNEL_CONFIG_FRAGMENTS
additions for the various BSPs. The intent is to make it simple to
disable AGL provided configuration in downstream builds as the IC EG
has expressed as a requirement. Additionally, the rework has allowed
for some clean up of accumulated cruft.
In practice, clearing AGL_KCONFIG_FRAGMENTS drops all non-BSP provided
kernel configuration with the exception of some qemu BSP related
additions required for AGL CI and some explicitly configurable things
like netboot support.
Notable changes:
- Instead of always using AGL's own fragment merging logic on top of
the BSP kernel recipe, an effort is now made to leverage the BSP
recipes' own merging schemes, so there are now separate include
files for kernel-yocto.bbclass and plain kernel.bbclass based kernel
recipes, as well as a common include file that defines the
AGL_KCONFIG_FRAGMENTS variable and its derivations. That file can
be included directly in bbappends for BSP kernel recipes that use
the KERNEL_CONFIG_FRAGMENTS scheme (e.g. meta-ti, meta-qcom).
- The SMACK enabling configuration in meta-app-framework has been
updated to supply different fragments for enabling SMACK by default
for 4.x and 5.x kernels. This removes a warning from always
supplying the old configuration, and allows providing a CONFIG_LSM
definition to ensure over-riding any BSP modifications.
This allows removing the previous hack to handle CONFIG_LSM being
set in the defconfigs in linux-raspberrypi.
- By request, the linux-yocto support from meta-agl-bsp/meta-core has
been rationalized into meta-agl-core to improve the experience when
using meta-agl-core standalone for testing.
- All demo supporting kernel configuration has been removed, a
subsequent change to meta-agl-demo will add it there by leveraging
AGL_KCONFIG_FRAGMENTS.
- The hardware device support has been split out of the can-bus.cfg
fragment, in favor of shifting it to meta-agl-demo. A few other
stray non-CAN configuration options have also been removed from
can-bus.cfg, as they do not seem to be required.
Bug-AGL: SPEC-3983
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: If6662fd36e26cec767b1d53b1188a74d01ef9dcf
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/26460
Reviewed-by: Hiroyuki Ishii <ishii.hiroyuki002@jp.panasonic.com>
Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tested-by: Jenkins Job builder account
ci-image-build: Jenkins Job builder account
ci-image-boot-test: Jenkins Job builder account
Diffstat (limited to 'meta-agl-core/recipes-kernel/linux/linux-agl-config.inc')
-rw-r--r-- | meta-agl-core/recipes-kernel/linux/linux-agl-config.inc | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc b/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc new file mode 100644 index 000000000..4003dd970 --- /dev/null +++ b/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc @@ -0,0 +1,85 @@ +# Common include file that defines AGL's variables for kernel +# configuration. +# +# Can be included directly for kernel.bbclass based recipes that +# use their own config fragment merging scheme, or use the +# KERNEL_CONFIG_FRAGMENTS variable (e.g. meta-ti, meta-qcom). +# +# Fragments should be added to AGL_KCONFIG_FRAGMENTS as just the +# .cfg filename with +=. Appending to AGL_KCONFIG_FRAGMENTS (i.e. +# using _append) should only be done for: +# - Specific AGL features that set an override in their feature +# template, e.g. agl-netboot. +# - To add essential configuration for core target machines like +# qemu. Note that appending fragments directly to SRC_URI +# would work for qemu targets since they use linux-yocto, but +# the AGL_KCONFIG_FRAGMENTS mechanism is recommended for +# consistency and to preserve the option of disabling all AGL +# additions by overriding AGL_KERNEL_SRC. +# +# In general, care shoud be taken to preserve the ability to set +# AGL_KCONFIG_FRAGMENTS to "" to disable non-essential (from a build +# perspective) AGL additions. +# + +FILESEXTRAPATHS_prepend := "${THISDIR}/linux:" + +# NOTE: AGL_KERNEL_SRC is explicitly intended as an intermediate variable +# that can be used as a last resort to completely disable all AGL +# additions, modifying or appending it is not recommended. +AGL_KERNEL_SRC ?= "${@' '.join(['file://' + x for x in d.getVar('AGL_KCONFIG_FRAGMENTS').split()])}" + +SRC_URI_append = " ${AGL_KERNEL_SRC}" + +# For meta-ti and meta-qcom +KERNEL_CONFIG_FRAGMENTS ?= "${@' '.join(['${WORKDIR}/' + x for x in d.getVar('AGL_KCONFIG_FRAGMENTS').split()])}" + +# Extra configuration options for the AGL kernel +AGL_KCONFIG_FRAGMENTS += " \ + can-bus.cfg \ + fanotify.cfg \ + overlayfs.cfg \ +" + +AGL_KCONFIG_FRAGMENTS += " ${@bb.utils.contains('AGL_XEN_GUEST_WANTED','1','xen_domu.cfg','',d)}" + +# Base ALSA support and other sound related configuration +AGL_KCONFIG_FRAGMENTS += "sound.cfg" + +# Enable support for SystemTap +AGL_KCONFIG_FRAGMENTS += "${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'systemtap.cfg', '', d)}" + +# +# Feature override and qemu specific appends: +# + +# Enable required features for the agl-netboot feature +AGL_KCONFIG_FRAGMENTS_append_netboot = " \ + nbd.cfg \ + ramdisk.cfg \ +" + +# Add hda audio and required virtio device support for qemu +AGL_KCONFIG_FRAGMENTS_append_qemuall = " \ + sound-hda.cfg \ + qemu-virtio.cfg \ + qemu-drm.cfg \ +" + +# Configuration for using the ARM virt machine (and not versatilepb) +AGL_KCONFIG_FRAGMENTS_append_qemuarm = " qemuarm.cfg" + +# Additional drivers for virtual machines +# OVERRIDES save us some c'n'p below ... +OVERRIDES_prepend_qemux86 = "virtualmachine:" +OVERRIDES_prepend_qemux86-64 = "virtualmachine:" +AGL_KCONFIG_FRAGMENTS_append_virtualmachine = " vbox-vmware-sata.cfg" + +# Extra configuration for using qemux86-64 image on physical hardware +AGL_KCONFIG_FRAGMENTS_append_qemux86-64 = " \ + x86-extra-graphic-devices.cfg \ + x86-net-devices.cfg \ + x86-security-tpm.cfg \ + x86-usb-devices.cfg \ + x86-upsquare.cfg \ +" |