| Message ID | 20251227113251.773795-1-Harish.Sadineni@windriver.com |
|---|---|
| Headers | show |
| Series | Enable rust support for linux kernel | expand |
On Sat, Dec 27, 2025 at 7:33 AM <Harish.Sadineni@windriver.com> wrote: > > From: Harish Sadineni <Harish.Sadineni@windriver.com> > > 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. 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 >
From: Harish Sadineni <Harish.Sadineni@windriver.com> 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: 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