Re: [OE-core] [PATCH v5 00/15] Enable rust support for linux kernel

Bruce Ashfield
2026-02-04T13:54:47Z

[-- Attachment #1: Type: text/plain, Size: 8677 bytes --]

On Wed, Feb 4, 2026 at 7:00 AM Paul Barker via lists.openembedded.org <paul=
pbarker.dev@lists.openembedded.org> wrote:

> On Thu, 2026-01-29 at 08:38 -0800, Sadineni, Harish via
> lists.openembedded.org wrote:
> > From: Harish Sadineni <Harish.Sadineni@windriver.com>
> >
> > v5:
> > - Regression in autobuilder with v4 series is due to applying v4 series
> together with following patch
> > "llvm: enable LLVMgold.so build by adding binutils dependency"(
> https://lists.openembedded.org/g/openembedded-core/message/229387)
> > is fixed by droping Alistair Francis's patch(
> https://lists.openembedded.org/g/openembedded-core/message/229091).
> > - Updated patch "rust: install Rust library sources for 'make
> rustavailable' support" to install
> > rust standard library sources for rust-native.
> >
> > v4:
> > - Resolved patchtest failures.
> >
> > v3:
> > - Removed the DISTRO_FEATURES dependency for installing Rust library
> sources in the Rust recipe,
> > - Extended support for on target rust kernel module developmet by
> installing Rust library sources and
> > introduced packaging of the Rust standard library sources in a
> dedicated ${PN}-src-lib package.
> > - Integrated Alistair Francis's patch(
> https://lists.openembedded.org/g/openembedded-core/message/229091)
> > that uses the Rust bootstrap tool to install Rust library sources for
> rust-native.
> > - Dropped the patch that added rust-kernel to native/nativesdk feature
> filters in bitbake.conf.
> > - Updated flags in the make-mod-scripts recipe to fix build failures
> when building Rust out-of-tree
> > module recipes.
> > - Dropped the bindgen-cli patch extending BBCLASSEXTEND to include
> > nativesdk, as it has been merged into oe-core.
> >
> > v2:
> > - Combined [PATCH 05/16][0] & [PATCH 06/16][1] from v1.
> > - Updated commit message and added in code comments for patch "[PATCH
> 09/15] kernel-devsrc: copying
> > rust-kernel source to $kerneldir/build"
> >
> > [0] https://lists.openembedded.org/g/openembedded-core/message/228559
> > [1] https://lists.openembedded.org/g/openembedded-core/message/228560
> >
> > v1:
> > The previous series was RFC v4, "Enable Rust support for Linux kernel"
> > (https://lists.openembedded.org/g/openembedded-core/message/226623).
> >
> > In addition, Yoann Congal posted RFC v2, "Kernel Rust out-of-tree module
> support"
> > (https://lists.openembedded.org/g/openembedded-core/message/227281),
> which builds on top of RFC v4.
> >
> > The current patch series is a unified version that combines both efforts.
> > Compared to the earlier series, the main changes are:
> >
> > -Kernel configuration fragments have been moved to yocto-kernel-cache.
> > -The kernel fragments have been removed from SRC_URI and from the files
> > directory previously stored underrecipes-kernel/linux/files.
> > -Updated the "[PATCH 11/16] selftest/cases/runtime_test: Add test for
> Linux Rust sample"
> > by appending KERNEL_EXTRA_FEATURES:append =
> 'features/kernel-sample/kernel-rust-sample.scc'
> > instead of adding this directly in the linux-yocto recipe.
> >
> >
> > This patch series introduces Rust support into the linux-yocto kernel
> recipe and
> > related build infrastructure in the Yocto Project. The goal is to enable
> building
> > the Linux kernel with Rust components and provide support for building
> kernel module
> > which is written in rust and also provide support to build rust kernel
> modules in sdk.
> >
> > And this series adds test for Linux Rust sample and also added support
> > for out-of-tree kernel module written in Rust as well as associated test.
> >
> > Summary of patches:
> >
> > - Patch 01: Add required dependencies ('clang-native',
> 'rust-native','bindgen-cli-native') to the kernel to support Rust binding
> generation.
> > - Patch 02: Install the Rust standard library source ('library/') for
> native,target and sdk.
> > - Patch 03: Updated `kernel-yocto.bbclass` to invoke `make
> rustavailable` during 'do_kernel_configme', ensuring Rust readiness.
> > - Patch 04: Add kernel configuration support for Rust (via
> 'kernel-rust.scc'), enabling the Rust build options in kernel config.
> > - Patch 05: Fixed buildpaths errors when rust is enabled for kernel by
> appending --remap-path-prefix to RUST_DEBUG_REMAP
> > - Patch 06: split `HOSTCC` flag to align with to linux-yocto and fix
> build issue with make-mod-scripts recipe.
> > - Patch 07: Disabling ccache when rust-kernel is enabled for linux-yocto.
> > - Patch 08: Copy Rust kernel sources into kernel-devsrc build directory
> which will be required while running 'make prepare' in sdk.
> > - Patch 09: Added oe-selftest case for the Linux Rust sample.
> > - patch 10: Copying include/config/auto.conf in STAGING_KERNEL_BUILDDIR
> > - patch 11: Export artifacts needed for out-of-tree Rust compilation
> > - patch 12: Prepare out-of-tree rust module compilation
> > - patch 13: Added rust-out-of-tree-module recipe in meta-skeleton layer
> > - Patch 14: Fixed buildpaths errors for rust-out-of-tree-module recipe
> by appending --remap-path-prefix to RUST_DEBUG_REMAP
> > - patch 15: Added rust-out-of-tree selftest
> >
> > Patches have been build-tested successfully on:
> > - qemuarm64
> > - qemux86-64
> >
> > Benchmark test-result for x86-64:
> >
> +-------------------------------+------------+-----------+-----------+-----------+
> > > DISTRO_FEATURES | real | user | sys |
> FS usage |
> >
> +-------------------------------+------------+-----------+-----------+-----------+
> > > rust-kernel (enabled) | 46m1.720s | 0m28.864s | 0m3.696s |
> 58 GB |
> > > rust-kernel (disabled) | 30m1.053s | 0m20.091s | 0m2.748s |
> 33 GB |
> >
> +-------------------------------+------------+-----------+-----------+-----------+
>
> We discussed these patches on Monday and have some feedback on the
> design. Things are nearly correct, we do want to ensure that the user
> experience is good before merging this though as people will quickly
> start to depend on it.
>
> We think it would be better if Rust support was controlled by
> KERNEL_FEATURES instead of DISTRO_FEATURES. This option now only impacts
> the kernel and any kernel module recipes. It also may need to change
> depending on MACHINE which makes it not a good fit for DISTRO_FEATURES -
> e.g. one BSP may use an older LTS kernel with no required Rust code and
> a different BSP may use a newer kernel and need a driver written in Rust
> for the board to function.
>
> We should add a new module-rust.bbclass instead of extending
> module.bbclass with conditional logic. This can be included by any
> modules which use Rust and handle any common setup. It can also check
> for the presence of required files (scripts/target.json & rust/*) in the
> kernel's shared workdir, and perhaps the kernel config so that we can
> give a sensible error message if they are missing. This means that
> module-rust.bbclass doesn't need to check KERNEL_FEATURES for
> rust-kernel, it can just look at the shared workdir (probably in
> do_configure) to make sure that we're ready to build a Rust module.
>
> If we can't use KERNEL_FEATURES, then perhaps a new KERNEL_RUST_SUPPORT
> variable would work. In either case, this should only be checked in the
> kernel recipe itself.
>
> Bruce - what do you think about KERNEL_FEATURES being used in this way?
>

It's a reasonable idea. KERNEL_FEATURES are supposed to abstract
the individual CONFIG_ items from spreading throughout the code base
so checking KERNEL_FEATURES is acceptable for coordinating different
parts of kernel infrastructure.

I'll just repeat my feedback that I sent earlier (and also to your other
reply in this email), that I prefer to make the tasks in the bbclasses
conditional, not have them checking for conditionals within the tasks.

Bruce

>
> Best regards,
>
> --
> Paul Barker
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#230511):
> https://lists.openembedded.org/g/openembedded-core/message/230511
> Mute This Topic: https://lists.openembedded.org/mt/117528967/1050810
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> bruce.ashfield@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>

--
- Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end
- "Use the force Harry" - Gandalf, Star Trek II

[-- Attachment #2: Type: text/html, Size: 12115 bytes --]