On 12/27/2025 8:29 PM, Bruce Ashfield wrote:
CAUTION: This email comes from a non Wind River email account!
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Sat, Dec 27, 2025 at 7:33 AM <[email protected]> wrote:
From: Harish Sadineni <[email protected]>

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.
What are the changes in this version compared to the last ?

I didn't get a chance to look at the previous series in detail, but will look
at this one. Knowing what was done in the different iterations is
helpful in guiding what I look at.

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 under recipes-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.

Thanks,
Harish


Bruce

Summary of patches:

- Patch 01: Extend 'bindgen-cli' to support 'nativesdk', allowing it to be 
available in the SDK environment.
- Patch 02: Add required dependencies ('clang-native', 'rust-native', 
'bindgen-cli-native') to the kernel to support Rust binding generation.
- Patch 03: Install the Rust standard library source ('library/') into 
`work-shared` and which will be later copied to
            linux-yocto recipe-sysroot-native.
- Patch 04: Added 'rust-kernel' to DISTRO_FEATURES_FILTER_NATIVE and 
DISTRO_FEATURES_FILTER_NATIVESDK, the 'rust-kernel' feature automatically
            propagates from target DISTRO_FEATURES to native/nativesdk builds
- Patch 05: Stage the Rust sources into `recipe-sysroot-native` for kernel 
build compatibility, making them visible during native builds.
- Patch 06: Update `kernel-yocto.bbclass` to invoke `make rustavailable` during 
'do_kernel_configme', ensuring Rust readiness.
- Patch 07: Add kernel configuration support for Rust (via 'kernel-rust.scc'), 
enabling the Rust build options in kernel config.
- Patch 08: Fixed buildpaths errors when rust is enabled for kernel by 
appending --remap-path-prefix to RUST_DEBUG_REMAP
- Patch 09: Disabling ccache when rust-kernel is enabled for linux-yocto.
- Patch 10: Copy Rust kernel sources into kernel-devsrc build directory which 
will be required while running 'make prepare' in sdk.
- Patch 11: Added oe-selftest case for the Linux Rust sample.
- patch 12: Copying include/config/auto.conf in STAGING_KERNEL_BUILDDIR
- patch 13: Export artifacts needed for out-of-tree Rust compilation
- patch 14: Prepare out-of-tree rust module compilation
- patch 15: Added rust-out-of-tree-module recipe in meta-skeleton layer
- patch 16: 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  
 |
+-------------------------------+------------+-----------+-----------+-----------+

The increased in time & fs is due to kernel rust dependencies in
linux-yocto.


Harish Sadineni (9):
   bindgen-cli: extend BBCLASSEXTEND to include nativesdk
   linux-yocto: conditionally add clang/rust/bindgen-cli-native to
     DEPENDS
   rust: install Rust library sources for 'make rustavailable' support
   bitbake.conf: Include "rust-kernel" in native/nativesdk feature
     filters
   kernel-yocto: stage rustlib sources for linux-yocto 'make
     rustavailable' support
   kernel-yocto: add rust support via "make rustavailable" in
     do_kernel_configme
   linux-yocto: enable Rust support in kernel configuration
   kernel-yocto: Fix for buildpaths errors when rust is enabled for
     kernel
   kernel-devsrc: copying rust-kernel source to $kerneldir/build

Yoann Congal (7):
   kernel-yocto.bbclass: Disable ccache when rust-kernel is enabled
   selftest/cases/runtime_test: Add test for Linux Rust sample
   kernel.bbclass: Copy include/config/auto.conf in
     STAGING_KERNEL_BUILDDIR
   kernel.bbclass: Export artifacts needed for out-of-tree Rust
     compilation
   module.bbclass: Prepare out-of-tree rust module compilation
   meta-skeleton: Add rust-out-of-tree-module recipe
   runtime_test: Add rust-out-of-tree selftest

  .../rust-out-of-tree-module_git.bb            | 18 ++++++++++
  meta/classes-recipe/kernel-yocto.bbclass      | 28 +++++++++++++++
  meta/classes-recipe/kernel.bbclass            | 19 ++++++++++
  meta/classes-recipe/module.bbclass            |  8 +++++
  meta/conf/bitbake.conf                        |  4 +--
  meta/lib/oeqa/selftest/cases/runtime_test.py  | 35 +++++++++++++++++++
  .../bindgen-cli/bindgen-cli_0.72.1.bb         |  2 +-
  meta/recipes-devtools/rust/rust_1.91.1.bb     | 17 +++++++++
  meta/recipes-kernel/linux/kernel-devsrc.bb    |  4 +++
  meta/recipes-kernel/linux/linux-yocto.inc     |  2 ++
  meta/recipes-kernel/linux/linux-yocto_6.16.bb |  1 +
  meta/recipes-kernel/linux/linux-yocto_6.18.bb |  1 +
  12 files changed, 136 insertions(+), 3 deletions(-)
  create mode 100644 
meta-skeleton/recipes-kernel/rust-out-of-tree-module/rust-out-of-tree-module_git.bb

--
2.49.0


--
- 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 (#228594): 
https://lists.openembedded.org/g/openembedded-core/message/228594
Mute This Topic: https://lists.openembedded.org/mt/116959146/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to