On Thu, Sep 29, 2022 at 11:23 PM Jon Mason <jdma...@kudzu.us> wrote: > > Most machine features have corresponding kernel config fragments, but > only a few have an entry in the kernel recipe to be automatically added. > Adding the majority of them here. > > Signed-off-by: Jon Mason <jdma...@kudzu.us> > --- > meta/recipes-kernel/linux/linux-yocto.inc | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/meta/recipes-kernel/linux/linux-yocto.inc > b/meta/recipes-kernel/linux/linux-yocto.inc > index 7ea661e138d9..23ae0b4260c2 100644 > --- a/meta/recipes-kernel/linux/linux-yocto.inc > +++ b/meta/recipes-kernel/linux/linux-yocto.inc > @@ -33,7 +33,12 @@ KERNEL_LD:append:arc = " ${TOOLCHAIN_OPTIONS}" > > KERNEL_FEATURES:append:qemuall=" features/debug/printk.scc" > > +KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', > 'bluetooth', 'features/bluetooth/bluetooth.scc', '', d)}" > +KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'efi', > 'cfg/efi.scc', '', d)}" > +KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'ext2', > 'cfg/fs/ext2.scc', '', d)}" > KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'numa', > 'features/numa/numa.scc', '', d)}" > +KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'pci', > 'features/pci/pci.scc', '', d)}" > +KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'rtc', > 'cfg/timer/rtc.scc', '', d)}" > KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'vfat', > 'cfg/fs/vfat.scc', '', d)}"
The concept of this is ok, but there are some non-obvious details that need to be considered. There's a really old enhancement in bugzilla about doing a better job of integration between machine, kernel and distro features: https://bugzilla.yoctoproject.org/show_bug.cgi?id=2267 One issue is that this should generate warnings if the config values don't make it into the final .config. otherwise they aren't really a useful mapping of machine -> kernel features (we don't want "just-in-case" configuration). Obviously the linux-yocto config audit can warn on things like this, but the fragments need to be tagged as required (hardware) for that to happen. Which they won't currently be if specified this way. I'd need to do some tooling work to make that happen. Another detail is that KERNEL_FEATURES are applied last. Which means they can override / enable things that a BSP configuration doesn't want and could have even explicitly disabled, used different values, etc. A proper BSP configuration is already a definition with a curated set of options, and in a linux-yocto flow, that is typically the first and last word on the values. doing a lot of BSP configuration via machine features spreads the logic out to multiple places, which can be a challenge to track down later. The fact that these map to the centralized fragments is really good (since while the enablement might be distributed and spread over recipe space, the actual options are centralized), but it makes jumping off from a kernel-cache BSP or one of the qemu references harder, as these will keep showing up .. when you might not want them. Yes, we can argue that machine's shouldn't set features that they don't want to support, but that doesn't cover all of the complications and potential issues. If we want to start dabbling with this, these should be a little bit more opt-in, and be specific to the qemu machines we define (versus just appending to KERNEL_FEATURES). As for opt-in, I'd suggest something like an image or machine feature in the spirit of "DYNAMIC_CONFIG" or "ENABLE_MACHINE_FEATURES", and when that is set, we do the mapping. Bruce > > # A KMACHINE is the mapping of a yocto $MACHINE to what is built > -- > 2.30.2 > > > > -- - Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end - "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#171221): https://lists.openembedded.org/g/openembedded-core/message/171221 Mute This Topic: https://lists.openembedded.org/mt/94009766/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-