On Fri, Sep 30, 2022 at 3:15 PM Jon Mason <jdma...@kudzu.us> wrote:
>
> On Fri, Sep 30, 2022 at 09:29:24AM -0400, Bruce Ashfield wrote:
> > 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
>
> Perhaps I got a little overzealous. :)
>
> My issue really is EFI.  EFI has some kernel features needed to boot
> and is fairly compartmentalized.  Adding the kernel fragement in the
> edk2 recipe doesn't really make sense.  Also, there a some machines
> that can do u-boot and edk2, and adding it by default for both might not
> be what we want.  Adding this makes it easier to switch between the two
> in CI.
>
> Let me know if that is acceptable and I'll hack the patch down to just
> efi.

That makes sense to me. Let's start with that, and see how the pattern expands!

Bruce

>
> Thanks,
> Jon
>
> >
> >
> > >
> > >  # 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
> >



-- 
- 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 (#171247): 
https://lists.openembedded.org/g/openembedded-core/message/171247
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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to