public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
* [PATCH v4 00/16] Enable rust support for linux kernel
@ 2026-01-20 18:29 Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 01/16] linux-yocto: conditionally add clang/rust/bindgen-cli-native to DEPENDS Harish.Sadineni
                   ` (16 more replies)
  0 siblings, 17 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Harish Sadineni <Harish.Sadineni@windriver.com>

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


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: Using the Rust bootstrap tool to install Rust library sources for rust-native
- Patch 03: Install the Rust standard library source ('library/') into target and sdk
- Patch 04: Updated `kernel-yocto.bbclass` to invoke `make rustavailable` during 'do_kernel_configme', ensuring Rust readiness.
- Patch 05: Add kernel configuration support for Rust (via 'kernel-rust.scc'), enabling the Rust build options in kernel config.
- Patch 06: Fixed buildpaths errors when rust is enabled for kernel by appending --remap-path-prefix to RUST_DEBUG_REMAP
- Patch 07: split `HOSTCC` flag to align with to linux-yocto and fix build issue with make-mod-scripts recipe.
- Patch 08: Disabling ccache when rust-kernel is enabled for linux-yocto.
- Patch 09: Copy Rust kernel sources into kernel-devsrc build directory which will be required while running 'make prepare' in sdk.
- Patch 10: Added oe-selftest case for the Linux Rust sample.
- patch 11: Copying include/config/auto.conf in STAGING_KERNEL_BUILDDIR
- patch 12: Export artifacts needed for out-of-tree Rust compilation
- patch 13: Prepare out-of-tree rust module compilation
- patch 14: Added rust-out-of-tree-module recipe in meta-skeleton layer
- Patch 15: Fixed buildpaths errors for rust-out-of-tree-module recipe by appending --remap-path-prefix to RUST_DEBUG_REMAP
- 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.

Alistair Francis (1):
  rust: Install the Rust source

Harish Sadineni (8):
  linux-yocto: conditionally add clang/rust/bindgen-cli-native to
    DEPENDS
  rust: install Rust library sources for target & sdk
  kernel-yocto: enable Rust kernel support via 'make rustavailable'.
  linux-yocto: enable Rust support in kernel configuration
  kernel-yocto: Fix for buildpaths errors when rust is enabled for
    kernel
  make-mod-scripts: split `HOSTCC` flag to align with to linux-yocto
  kernel-devsrc: copying rust-kernel source to $kerneldir/build
  make-mod-scripts: fix for buildpath issues with rust-out-of-tree
    compilation

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      | 22 +++++++
 meta/classes-recipe/kernel.bbclass            | 19 ++++++
 meta/classes-recipe/module.bbclass            |  8 +++
 meta/lib/oeqa/selftest/cases/runtime_test.py  | 35 +++++++++++
 ...-host-documentation-is-built-before-.patch | 60 +++++++++++++++++++
 meta/recipes-devtools/rust/rust-source.inc    |  1 +
 meta/recipes-devtools/rust/rust_1.92.0.bb     | 15 ++++-
 meta/recipes-kernel/linux/kernel-devsrc.bb    |  9 +++
 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 +
 .../make-mod-scripts/make-mod-scripts_1.0.bb  | 10 +++-
 13 files changed, 199 insertions(+), 2 deletions(-)
 create mode 100644 meta-skeleton/recipes-kernel/rust-out-of-tree-module/rust-out-of-tree-module_git.bb
 create mode 100644 meta/recipes-devtools/rust/files/0001-bootstrap-Ensure-host-documentation-is-built-before-.patch

-- 
2.49.0



^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v4 01/16] linux-yocto: conditionally add clang/rust/bindgen-cli-native to DEPENDS
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 02/16] rust: Install the Rust source Harish.Sadineni
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Harish Sadineni <Harish.Sadineni@windriver.com>

Conditionally add 'clang-native', 'rust-native' and 'bindgen-cli-native' to 'DEPENDS'
when rust-kernel distro feature is enabled to support Rust-based kernel modules or
features that require generating Rust FFI bindings using bindgen during the kernel
build process.

Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/recipes-kernel/linux/linux-yocto.inc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc
index 4d0a726bb6..41b12b6f14 100644
--- a/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/meta/recipes-kernel/linux/linux-yocto.inc
@@ -81,6 +81,8 @@ KERNEL_DEBUG ?= ""
 DEPENDS += '${@bb.utils.contains_any("ARCH", [ "x86", "arm64", "powerpc" ], "elfutils-native", "", d)}'
 DEPENDS += "openssl-native util-linux-native"
 DEPENDS += "gmp-native libmpc-native"
+RUST_KERNEL_DEPENDS ?= "${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', 'clang-native rust-native bindgen-cli-native', '', d)}"
+DEPENDS += "${RUST_KERNEL_DEPENDS}"
 
 # Some options depend on CONFIG_PAHOLE_VERSION, so need to make pahole-native available before do_kernel_configme
 do_kernel_configme[depends] += '${@bb.utils.contains("KERNEL_DEBUG", "True", "pahole-native:do_populate_sysroot", "", d)}'
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 02/16] rust: Install the Rust source
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 01/16] linux-yocto: conditionally add clang/rust/bindgen-cli-native to DEPENDS Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 03/16] rust: install Rust library sources for target & sdk Harish.Sadineni
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Alistair Francis <alistair.francis@wdc.com>

When building the Linux kernel with Rust support enabled the kernel
expects to find the Rust source as the kernel build system will cross
compile the core library.

This patch uses the Rust tooling to install the Rust source (of size ~50MB)
when we install the compiller as well.

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 ...-host-documentation-is-built-before-.patch | 60 +++++++++++++++++++
 meta/recipes-devtools/rust/rust-source.inc    |  1 +
 meta/recipes-devtools/rust/rust_1.92.0.bb     |  2 +
 3 files changed, 63 insertions(+)
 create mode 100644 meta/recipes-devtools/rust/files/0001-bootstrap-Ensure-host-documentation-is-built-before-.patch

diff --git a/meta/recipes-devtools/rust/files/0001-bootstrap-Ensure-host-documentation-is-built-before-.patch b/meta/recipes-devtools/rust/files/0001-bootstrap-Ensure-host-documentation-is-built-before-.patch
new file mode 100644
index 0000000000..e561266d70
--- /dev/null
+++ b/meta/recipes-devtools/rust/files/0001-bootstrap-Ensure-host-documentation-is-built-before-.patch
@@ -0,0 +1,60 @@
+From 2e89bf7969ac6d77b7c6a38265b1eabc8ec6df7a Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Fri, 9 Jan 2026 08:35:43 +1000
+Subject: [PATCH] bootstrap: Ensure host documentation is built before tarball
+ is created
+
+`run_default_doc_steps()` is called to ensure the documentation is built
+by `Docs::run()` and it should build the documentation if it isn't
+already built.
+
+When running the `install src` command I'm seeing failures as the
+`builder.doc_out(host)` directory does not exist. This is because
+`match_paths_to_steps_and_run()` doesn't actually build any
+documentation as the `paths.is_empty()` causes an early return. This
+results in install failures as the `*/doc` src directory doesn't exist.
+
+This patch passes the paths to `run_host_step_descriptions()` when building
+documentation to ensure it is correctly built.
+
+This fixes installing the Rust source code in OpenEmbedded.
+
+Upstream-Status: Submitted [https://github.com/rust-lang/rust/pull/150845]
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+---
+ src/bootstrap/src/core/build_steps/dist.rs | 2 +-
+ src/bootstrap/src/core/builder/mod.rs      | 5 +++++
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs
+index f47b0c0b007..2fbb068632e 100644
+--- a/src/bootstrap/src/core/build_steps/dist.rs
++++ b/src/bootstrap/src/core/build_steps/dist.rs
+@@ -83,7 +83,7 @@ fn run(self, builder: &Builder<'_>) -> Option<GeneratedTarball> {
+         // FIXME: explicitly enumerate the steps that should be executed here, and gather their
+         // documentation, rather than running all default steps and then read their output
+         // from a shared directory.
+-        builder.run_default_doc_steps();
++        builder.run_host_default_doc_steps();
+ 
+         let dest = "share/doc/rust/html";
+ 
+diff --git a/src/bootstrap/src/core/builder/mod.rs b/src/bootstrap/src/core/builder/mod.rs
+index 4a04b97c549..16c1c324be0 100644
+--- a/src/bootstrap/src/core/builder/mod.rs
++++ b/src/bootstrap/src/core/builder/mod.rs
+@@ -1117,6 +1117,11 @@ pub fn execute_cli(&self) {
+         self.run_step_descriptions(&Builder::get_step_descriptions(self.kind), &self.paths);
+     }
+ 
++    /// Run all default documentation steps to build documentation.
++    pub fn run_host_default_doc_steps(&self) {
++        self.run_step_descriptions(&Builder::get_step_descriptions(Kind::Doc), &self.paths);
++    }
++
+     /// Run all default documentation steps to build documentation.
+     pub fn run_default_doc_steps(&self) {
+         self.run_step_descriptions(&Builder::get_step_descriptions(Kind::Doc), &[]);
+-- 
+2.52.0
+
diff --git a/meta/recipes-devtools/rust/rust-source.inc b/meta/recipes-devtools/rust/rust-source.inc
index d7d44510e4..2c1caed858 100644
--- a/meta/recipes-devtools/rust/rust-source.inc
+++ b/meta/recipes-devtools/rust/rust-source.inc
@@ -8,6 +8,7 @@ SRC_URI += "https://static.rust-lang.org/dist/rustc-${RUST_VERSION}-src.tar.xz;n
             file://0001-src-core-build_steps-tool.rs-switch-off-lto-for-rust.patch;patchdir=${RUSTSRC} \
             file://revert-link-std-statically-in-rustc_driver-feature.patch;patchdir=${RUSTSRC} \
             file://0001-riscv32-Define-plain-syscalls-as-their-time64-varian.patch;patchdir=${RUSTSRC} \
+	    file://0001-bootstrap-Ensure-host-documentation-is-built-before-.patch;patchdir=${RUSTSRC} \
 "
 SRC_URI[rust.sha256sum] = "ebee170bfe4c4dfc59521a101de651e5534f4dae889756a5c97ca9ea40d0c307"
 
diff --git a/meta/recipes-devtools/rust/rust_1.92.0.bb b/meta/recipes-devtools/rust/rust_1.92.0.bb
index a25f65f674..af739df88a 100644
--- a/meta/recipes-devtools/rust/rust_1.92.0.bb
+++ b/meta/recipes-devtools/rust/rust_1.92.0.bb
@@ -6,6 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=11a3899825f4376896e438c8c753f8dc"
 
 inherit rust
 inherit cargo_common
+inherit pkgconfig
 
 DEPENDS += "llvm"
 # native rust uses cargo/rustc from binary snapshots to bootstrap
@@ -282,6 +283,7 @@ do_install () {
 
 rust_do_install() {
     rust_runx install
+    rust_runx install src
 }
 
 rust_do_install:class-nativesdk() {
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 03/16] rust: install Rust library sources for target & sdk
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 01/16] linux-yocto: conditionally add clang/rust/bindgen-cli-native to DEPENDS Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 02/16] rust: Install the Rust source Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 04/16] kernel-yocto: enable Rust kernel support via 'make rustavailable' Harish.Sadineni
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Harish Sadineni <Harish.Sadineni@windriver.com>

The `make rustavailable` process (1) expects the Rust standard library source files (e.g., `lib.rs`)
to be present in the `library/` directory under `rustlib/src/rust/`.

This patch ensures the required sources are available by:
- Installing the `library/` directory (of size ~50MB) into `${D}${libdir}/rustlib/src/rust` for `target` class,
  making them available in them available on target.
- Installing the `library/` directory (of size ~50MB) into `${SDKPATHNATIVE}/usr/lib/rustlib/src/rust` for the
  `nativesdk` class, making them available in them available in sdk.
- packaging `${libdir}/rustlib/src/rust` sepearately with `${PN}-src-lib`.

1) See the kernel tree for Documentation/rust/quick-start.rst in the section: Requirements: Building

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/rust/quick-start.rst#n145

Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/recipes-devtools/rust/rust_1.92.0.bb | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/meta/recipes-devtools/rust/rust_1.92.0.bb b/meta/recipes-devtools/rust/rust_1.92.0.bb
index af739df88a..eaab6a1c16 100644
--- a/meta/recipes-devtools/rust/rust_1.92.0.bb
+++ b/meta/recipes-devtools/rust/rust_1.92.0.bb
@@ -265,10 +265,11 @@ do_test_compile () {
 
 ALLOW_EMPTY:${PN} = "1"
 
-PACKAGES =+ "${PN}-rustdoc ${PN}-tools-clippy ${PN}-tools-rustfmt"
+PACKAGES =+ "${PN}-rustdoc ${PN}-tools-clippy ${PN}-tools-rustfmt ${PN}-src-lib"
 FILES:${PN}-rustdoc = "${bindir}/rustdoc"
 FILES:${PN}-tools-clippy = "${bindir}/cargo-clippy ${bindir}/clippy-driver"
 FILES:${PN}-tools-rustfmt = "${bindir}/rustfmt"
+FILES:${PN}-src-lib = "${libdir}/rustlib/src/rust"
 
 RDEPENDS:${PN}-rustdoc = "${PN}"
 RDEPENDS:${PN}-tools-clippy = "${PN}"
@@ -316,6 +317,11 @@ rust_do_install:class-nativesdk() {
 	export CARGO_TARGET_${RUST_HOST_TRIPLE}_RUNNER="\$OECORE_NATIVE_SYSROOT/lib/${SDKLOADER}"
 	export CC_$RUST_HOST_CC="${CCACHE}${HOST_PREFIX}gcc"
 	EOF
+
+    install -d ${D}${SDKPATHNATIVE}/usr/lib/rustlib/src/rust
+    cp -r ${S}/library ${D}${SDKPATHNATIVE}/usr/lib/rustlib/src/rust
+    find ${D}${libdir}/rustlib/src/rust/ -name "*.sh" -type f -delete
+
 }
 
 FILES:${PN} += "${base_prefix}/environment-setup.d"
@@ -336,6 +342,11 @@ rust_do_install:class-target() {
 
     install -d ${D}${libdir}/rustlib/${RUST_HOST_SYS}
     install -m 0644 ${WORKDIR}/rust-targets/${RUST_HOST_SYS}.json ${D}${libdir}/rustlib/${RUST_HOST_SYS}/target.json
+    install -d ${D}${libdir}/rustlib/src/rust
+    cp -r ${S}/library/ ${D}${libdir}/rustlib/src/rust/
+    find ${D}${libdir}/rustlib/src/rust/ -name "*.sh" -type f -delete
+    install -m 0644 ${WORKDIR}/rust-targets/${RUST_HOST_SYS}.json ${D}${libdir}/rustlib/${RUST_HOST_SYS}/${RUST_HOST_SYS}.json
+
 
     chown root:root ${D}/ -R
     rm ${D}${libdir}/rustlib/uninstall.sh
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 04/16] kernel-yocto: enable Rust kernel support via 'make rustavailable'.
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (2 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 03/16] rust: install Rust library sources for target & sdk Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 05/16] linux-yocto: enable Rust support in kernel configuration Harish.Sadineni
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Harish Sadineni <Harish.Sadineni@windriver.com>

This change adds support for Rust-enabled kernel builds by:

-Extending do_kernel_configme dependencies to include rust-native,
 clang-native, and bindgen-cli-native.

-Invoking make rustavailable during do_kernel_configme() to prepare the
 kernel build environment for Rust.

Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/classes-recipe/kernel-yocto.bbclass | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/meta/classes-recipe/kernel-yocto.bbclass b/meta/classes-recipe/kernel-yocto.bbclass
index e53bf15194..4323c4c80a 100644
--- a/meta/classes-recipe/kernel-yocto.bbclass
+++ b/meta/classes-recipe/kernel-yocto.bbclass
@@ -463,8 +463,14 @@ do_kernel_configme[depends] += "virtual/cross-binutils:do_populate_sysroot"
 do_kernel_configme[depends] += "virtual/cross-cc:do_populate_sysroot"
 do_kernel_configme[depends] += "bc-native:do_populate_sysroot bison-native:do_populate_sysroot"
 do_kernel_configme[depends] += "kern-tools-native:do_populate_sysroot"
+RUST_KERNEL_TASK_DEPENDS ?=  "${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', ' \
+                                  rust-native:do_populate_sysroot \
+                                  clang-native:do_populate_sysroot \
+                                  bindgen-cli-native:do_populate_sysroot', '', d)}"
+do_kernel_configme[depends] += "${RUST_KERNEL_TASK_DEPENDS}"
 do_kernel_configme[dirs] += "${S} ${B}"
 do_kernel_configme() {
+
 	do_kernel_metadata config
 
 	# translate the kconfig_mode into something that merge_config.sh
@@ -506,6 +512,10 @@ do_kernel_configme() {
 		echo "# Global settings from linux recipe" >> ${B}/.config
 		echo "CONFIG_LOCALVERSION="\"${LINUX_VERSION_EXTENSION}\" >> ${B}/.config
 	fi
+        
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', 'true', 'false', d)}; then
+		oe_runmake -C ${S} O=${B} rustavailable
+	fi
 }
 
 addtask kernel_configme before do_configure after do_patch
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 05/16] linux-yocto: enable Rust support in kernel configuration
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (3 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 04/16] kernel-yocto: enable Rust kernel support via 'make rustavailable' Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 06/16] kernel-yocto: Fix for buildpaths errors when rust is enabled for kernel Harish.Sadineni
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Harish Sadineni <Harish.Sadineni@windriver.com>

Add initial support for building the Linux kernel with Rust enabled:

- Update `linux-yocto_${PV}.bb` to:
  - Append `features/kernel-rust/kernel-rust.scc` to `KERNEL_FEATURES`.

Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/recipes-kernel/linux/linux-yocto_6.16.bb | 1 +
 meta/recipes-kernel/linux/linux-yocto_6.18.bb | 1 +
 2 files changed, 2 insertions(+)

diff --git a/meta/recipes-kernel/linux/linux-yocto_6.16.bb b/meta/recipes-kernel/linux/linux-yocto_6.16.bb
index 408f14b451..e468fdc0d7 100644
--- a/meta/recipes-kernel/linux/linux-yocto_6.16.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_6.16.bb
@@ -77,3 +77,4 @@ KERNEL_FEATURES:append:powerpc64le = " arch/powerpc/powerpc-debug.scc"
 # Check again during next major version upgrade
 KERNEL_FEATURES:remove:riscv32 = "features/debug/debug-kernel.scc"
 INSANE_SKIP:kernel-vmlinux:qemuppc64 = "textrel"
+KERNEL_FEATURES:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', ' features/kernel-rust/kernel-rust.scc', '', d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto_6.18.bb b/meta/recipes-kernel/linux/linux-yocto_6.18.bb
index 599a3d13b8..3c2bf02221 100644
--- a/meta/recipes-kernel/linux/linux-yocto_6.18.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_6.18.bb
@@ -77,3 +77,4 @@ KERNEL_FEATURES:append:powerpc64le = " arch/powerpc/powerpc-debug.scc"
 # Check again during next major version upgrade
 KERNEL_FEATURES:remove:riscv32 = "features/debug/debug-kernel.scc"
 INSANE_SKIP:kernel-vmlinux:qemuppc64 = "textrel"
+KERNEL_FEATURES:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', ' features/kernel-rust/kernel-rust.scc', '', d)}"
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 06/16] kernel-yocto: Fix for buildpaths errors when rust is enabled for kernel
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (4 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 05/16] linux-yocto: enable Rust support in kernel configuration Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 07/16] make-mod-scripts: split `HOSTCC` flag to align with to linux-yocto Harish.Sadineni
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Harish Sadineni <Harish.Sadineni@windriver.com>

Fixes for buildpaths errors after enabling rust for linux-kernel

Co-authored-by: El Mehdi YOUNES <elmehdi.younes@smile.fr>
Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/classes-recipe/kernel-yocto.bbclass | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/meta/classes-recipe/kernel-yocto.bbclass b/meta/classes-recipe/kernel-yocto.bbclass
index 4323c4c80a..cd5daaf33b 100644
--- a/meta/classes-recipe/kernel-yocto.bbclass
+++ b/meta/classes-recipe/kernel-yocto.bbclass
@@ -4,6 +4,8 @@
 # SPDX-License-Identifier: MIT
 #
 
+INHERIT:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', ' rust-common', '', d)}"
+
 # remove tasks that modify the source tree in case externalsrc is inherited
 SRCTREECOVEREDTASKS += "do_validate_branches do_kernel_configcheck do_kernel_checkout do_fetch do_unpack do_patch"
 PATCH_GIT_USER_EMAIL ?= "kernel-yocto@oe"
@@ -27,6 +29,11 @@ KMETA_AUDIT ?= "yes"
 KMETA_AUDIT_WERROR ?= ""
 KMETA_CONFIG_FEATURES ?= ""
 
+RUST_DEBUG_REMAP = "${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', '--remap-path-prefix=${WORKDIR}=${TARGET_DBGSRC_DIR} \
+                      --remap-path-prefix=${TMPDIR}/work-shared=${TARGET_DBGSRC_DIR}', '',d)}"
+KRUSTFLAGS:append = " ${RUST_DEBUG_REMAP}"
+EXTRA_OEMAKE:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', ' KRUSTFLAGS="${KRUSTFLAGS}"', '',d)}"
+
 # returns local (absolute) path names for all valid patches in the
 # src_uri
 def find_patches(d,subdir):
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 07/16] make-mod-scripts: split `HOSTCC` flag to align with to linux-yocto
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (5 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 06/16] kernel-yocto: Fix for buildpaths errors when rust is enabled for kernel Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 08/16] kernel-yocto.bbclass: Disable ccache when rust-kernel is enabled Harish.Sadineni
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Harish Sadineni <Harish.Sadineni@windriver.com>

when compiling rust-out-of-tree module recipe 'make-mod-scripts' failing
with the following error:

HOSTRUSTC scripts/generate_rust_target
error: Unrecognized option: 'i'

This issue occurs because CFLAGS are being passed to HOSTRUSTC.
Updated the flags in the make-mod-scripts recipe to align with
the flags used by linux-yocto.

Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
index 8fcb5e6eb3..874e16e642 100644
--- a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
+++ b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
@@ -18,7 +18,7 @@ DEV_PKG_DEPENDENCY = ""
 DEPENDS += "bc-native bison-native"
 DEPENDS += "gmp-native"
 
-EXTRA_OEMAKE = " HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}""
+EXTRA_OEMAKE = " HOSTCC="${BUILD_CC}" HOSTCFLAGS="${BUILD_CFLAGS}" HOSTLDFLAGS="${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}""
 EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" CROSS_COMPILE=${TARGET_PREFIX}"
 
 KERNEL_LOCALVERSION = "${@get_kernellocalversion_file("${STAGING_KERNEL_BUILDDIR}")}"
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 08/16] kernel-yocto.bbclass: Disable ccache when rust-kernel is enabled
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (6 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 07/16] make-mod-scripts: split `HOSTCC` flag to align with to linux-yocto Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 09/16] kernel-devsrc: copying rust-kernel source to $kerneldir/build Harish.Sadineni
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Yoann Congal <yoann.congal@smile.fr>

Currently, a ccache enabled build fails with:
  |   HOSTRUSTC scripts/generate_rust_target
  |   HOSTCC  scripts/kallsyms
  |   HOSTCC  scripts/sorttable
  |   HOSTCC  scripts/asn1_compiler
  |   TOUCH   include/generated/gcc-plugins.h
  |   DESCEND objtool
  | error: multiple input filenames provided (first two filenames are gcc and
.../tmp/work-shared/qemux86-64/kernel-source/scripts/generate_rust_target.rs)

when using ccache, value of "HOSTCC=cache gcc" when this value is passing
to rustc, It is thinking gcc is a input file. when ccache is not used "HOSTCC=gcc" is passed.

Disable ccache for kernel build if rust-kernel is enabled to workaround
this.

Signed-off-by: El Mehdi YOUNES <elmehdi.younes@smile.fr>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/classes-recipe/kernel-yocto.bbclass | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/meta/classes-recipe/kernel-yocto.bbclass b/meta/classes-recipe/kernel-yocto.bbclass
index cd5daaf33b..bfdafbee8c 100644
--- a/meta/classes-recipe/kernel-yocto.bbclass
+++ b/meta/classes-recipe/kernel-yocto.bbclass
@@ -34,6 +34,11 @@ RUST_DEBUG_REMAP = "${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', '--re
 KRUSTFLAGS:append = " ${RUST_DEBUG_REMAP}"
 EXTRA_OEMAKE:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', ' KRUSTFLAGS="${KRUSTFLAGS}"', '',d)}"
 
+# TODO: rust-kernel enabled kernel fails to build with:
+#  | error: multiple input filenames provided (first two filenames are gcc and .../tmp/work-shared/qemux86-64/kernel-source/scripts/generate_rust_target.rs)
+# Disable ccache for kernel build if rust-kernel is enabled to workaround this.
+CCACHE_DISABLE ?= "${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', '1', '0', d)}"
+
 # returns local (absolute) path names for all valid patches in the
 # src_uri
 def find_patches(d,subdir):
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 09/16] kernel-devsrc: copying rust-kernel source to $kerneldir/build
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (7 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 08/16] kernel-yocto.bbclass: Disable ccache when rust-kernel is enabled Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 10/16] selftest/cases/runtime_test: Add test for Linux Rust sample Harish.Sadineni
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Harish Sadineni <Harish.Sadineni@windriver.com>

When CONFIG_RUST is enabled, running 'make prepare' in the  target & SDK
fails because the Rust kernel infrastructure is incomplete in the staged
kernel sources.

The Rust build system requires a wider set of interdependent sources
during make prepare, including bindgen inputs, C helper sources,
generated headers, and other support files. These are all located under
the kernel rust/ directory.

To ensure make prepare succeeds and to support building Rust-based
kernel modules from the  target & SDK, copy the full rust/ directory
(of size 2.5MB) into $kerneldir/build when the rust-kernel distro feature
is enabled.

Additionally, when Rust support is enabled, 'make prepare' generates
.rmeta files (crate metadata in a custom binary format) and shared
objects (.so) that are required for compiling Rust kernel modules.

Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/recipes-kernel/linux/kernel-devsrc.bb | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb
index 23a9093ede..07f082132b 100644
--- a/meta/recipes-kernel/linux/kernel-devsrc.bb
+++ b/meta/recipes-kernel/linux/kernel-devsrc.bb
@@ -139,6 +139,15 @@ do_install() {
         cd ${S}
 
         cp -a scripts $kerneldir/build
+        
+        # In sdk, when CONFIG_RUST is enabled, `make prepare` requires the full Rust
+        # kernel infrastructure. The Rust build system pulls in bindgen inputs, C helpers,
+        # generated headers, and generate crate metadata (.rmeta), and shared objects 
+        # needed for building Rust kernel modules. Copy the entire rust/ directory (of size 2.5MB)
+        # to avoid failures with 'make prepare'.
+        if ${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', 'true', 'false', d)}; then
+            cp -a rust ${kerneldir}/build
+        fi
 
         # for v6.1+ (otherwise we are missing multiple default targets)
         cp -a --parents Kbuild $kerneldir/build 2>/dev/null || :
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 10/16] selftest/cases/runtime_test: Add test for Linux Rust sample
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (8 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 09/16] kernel-devsrc: copying rust-kernel source to $kerneldir/build Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 11/16] kernel.bbclass: Copy include/config/auto.conf in STAGING_KERNEL_BUILDDIR Harish.Sadineni
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Yoann Congal <yoann.congal@smile.fr>

This new case tests that the rust_mininal sample inside the kernel source
tree is buildable and works properly: check that the module can be
loaded and that it prints correctly.

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/lib/oeqa/selftest/cases/runtime_test.py | 25 ++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py
index d58ffa80f5..e8374606a4 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -481,3 +481,28 @@ IMAGE_INSTALL:append = " systemtap-runtime"
                 cmd = "crosstap -r root@192.168.7.2 -s %s/process/ syscalls_by_pid.stp" % systemtap_examples
                 result = runCmd(cmd)
                 self.assertEqual(0, result.status, 'crosstap  syscalls_by_pid returned a non 0 status:%s' % result.output)
+
+@OETestTag("runqemu")
+class RustKernel(OESelftestTestCase):
+        @classmethod
+        def setUpClass(cls):
+            super(RustKernel, cls).setUpClass()
+            cls.image = "core-image-minimal"
+
+        def test_kernel_rust_sample(self):
+            import textwrap
+            self.write_config(textwrap.dedent("""
+                DISTRO_FEATURES:append = ' rust-kernel'
+                KERNEL_EXTRA_FEATURES:append = ' features/kernel-sample/kernel-rust-sample.scc'
+                CORE_IMAGE_EXTRA_INSTALL += "kernel-module-rust-minimal"
+            """))
+            bitbake(self.image)
+
+            with runqemu(self.image, runqemuparams = "nographic") as qemu:
+                qemu.run_serial("dmesg -c > /dev/null")
+                status, _ = qemu.run_serial("modprobe rust_minimal")
+                self.assertEqual(status, 1, "Loading rust_minimal module failed!")
+                _, output = qemu.run_serial("dmesg")
+                self.logger.debug(f"rust_minimal dmesg output:\n" + textwrap.indent(output, "  "))
+                self.assertIn("Rust minimal sample", output, "Kernel Rust sample expected output not found in dmesg")
+
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 11/16] kernel.bbclass: Copy include/config/auto.conf in STAGING_KERNEL_BUILDDIR
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (9 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 10/16] selftest/cases/runtime_test: Add test for Linux Rust sample Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 12/16] kernel.bbclass: Export artifacts needed for out-of-tree Rust compilation Harish.Sadineni
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Yoann Congal <yoann.congal@smile.fr>

Linux commit aaed5c7739be ("kbuild: slim down package for building
external modules")[0] states that include/config/auto.conf is also a
file needed for out-of-tree build.

This avoids this error when building an out-of-tree Rust kernel module:
| make -C .../tmp/work-shared/qemux86-64/kernel-source M=$PWD
| make[1]: Entering directory '.../tmp/work-shared/qemux86-64/kernel-source'
| make[2]: Entering directory '.../tmp/work/qemux86_64-poky-linux/rust-out-of-tree-module/git/sources/rust-out-of-tree-module-git'
| .../tmp/work-shared/qemux86-64/kernel-source/Makefile:779: .../tmp/work-shared/qemux86-64/kernel-build-artifacts/include/config/auto.conf: No such file or directory

[0]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=aaed5c7739be81ebdd6008aedc8befd98c88e67a

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/classes-recipe/kernel.bbclass | 1 +
 1 file changed, 1 insertion(+)

diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass
index f989b31c47..30a10b0801 100644
--- a/meta/classes-recipe/kernel.bbclass
+++ b/meta/classes-recipe/kernel.bbclass
@@ -570,6 +570,7 @@ do_shared_workdir () {
 	cp .config $kerneldir/
 	mkdir -p $kerneldir/include/config
 	cp include/config/kernel.release $kerneldir/include/config/kernel.release
+	cp include/config/auto.conf      $kerneldir/include/config/auto.conf
 	if [ -e certs/signing_key.x509 ]; then
 		# The signing_key.* files are stored in the certs/ dir in
 		# newer Linux kernels
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 12/16] kernel.bbclass: Export artifacts needed for out-of-tree Rust compilation
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (10 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 11/16] kernel.bbclass: Copy include/config/auto.conf in STAGING_KERNEL_BUILDDIR Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 13/16] module.bbclass: Prepare out-of-tree rust module compilation Harish.Sadineni
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Yoann Congal <yoann.congal@smile.fr>

Publish artifacts from kernel compilation to allow out-of-tree Rust
compilation:
* scripts/target.json: target definition: architecture, ABI, compiler
  options, ...
* rust/: the crates compiled by the kernel available to
  out-of-tree-modules

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/classes-recipe/kernel.bbclass | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass
index 30a10b0801..dfb8604a68 100644
--- a/meta/classes-recipe/kernel.bbclass
+++ b/meta/classes-recipe/kernel.bbclass
@@ -632,6 +632,24 @@ do_shared_workdir () {
 		cp -r scripts/gcc-plugins ${kerneldir}/scripts
 	fi
 
+	if ${@bb.utils.contains("DISTRO_FEATURES", "rust-kernel", "true", "false", d)}; then
+		# Copy target.json file needed for out-of-tree rust modules
+		if [ -e scripts/target.json ]; then
+			bbnote "Copying scripts/target.json"
+			mkdir -p ${kerneldir}/scripts
+			cp scripts/target.json ${kerneldir}/scripts
+		else
+			bbwarn "scripts/target.json not found in compiled kernel. Out-of-tree rust modules will fail to build."
+		fi
+
+		# Copy rust/ needed by out-of-tree module (firstly for the core rust crate)
+		if [ -e rust/ ]; then
+			bbnote "Copying rust/"
+			cp -r rust ${kerneldir}/
+		else
+			bbwarn "rust/ not found in compiled kernel. Out-of-tree rust modules will fail to build."
+		fi
+	fi
 }
 
 # We don't need to stage anything, not the modules/firmware since those would clash with linux-firmware
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 13/16] module.bbclass: Prepare out-of-tree rust module compilation
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (11 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 12/16] kernel.bbclass: Export artifacts needed for out-of-tree Rust compilation Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 14/16] meta-skeleton: Add rust-out-of-tree-module recipe Harish.Sadineni
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Yoann Congal <yoann.congal@smile.fr>

Conditioned to the "rust-linux" DISTRO_FEATURES:
* Add dependency to rust-native
* Remap ${S} in compiled output to avoid buildpath errors

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/classes-recipe/module.bbclass | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/meta/classes-recipe/module.bbclass b/meta/classes-recipe/module.bbclass
index 4948e995c5..7dbd4194d1 100644
--- a/meta/classes-recipe/module.bbclass
+++ b/meta/classes-recipe/module.bbclass
@@ -87,3 +87,11 @@ EXPORT_FUNCTIONS do_compile do_install
 KERNEL_MODULES_META_PACKAGE = "${PN}"
 FILES:${PN} = ""
 ALLOW_EMPTY:${PN} = "1"
+
+# Rust module support
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', 'rust-native', '', d)}"
+
+RUST_DEBUG_REMAP ?= "--remap-path-prefix=${S}=${TARGET_DBGSRC_DIR}"
+KRUSTFLAGS:append = " ${RUST_DEBUG_REMAP}"
+EXTRA_OEMAKE:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', \
+                                             ' KRUSTFLAGS="${KRUSTFLAGS}"', '',d)}"
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 14/16] meta-skeleton: Add rust-out-of-tree-module recipe
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (12 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 13/16] module.bbclass: Prepare out-of-tree rust module compilation Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 15/16] make-mod-scripts: fix for buildpath issues with rust-out-of-tree compilation Harish.Sadineni
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Yoann Congal <yoann.congal@smile.fr>

Basic template for an out-of-tree Linux kernel module written in Rust.

Mainly to test Rust integration into the kernel.

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 .../rust-out-of-tree-module_git.bb             | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
 create mode 100644 meta-skeleton/recipes-kernel/rust-out-of-tree-module/rust-out-of-tree-module_git.bb

diff --git a/meta-skeleton/recipes-kernel/rust-out-of-tree-module/rust-out-of-tree-module_git.bb b/meta-skeleton/recipes-kernel/rust-out-of-tree-module/rust-out-of-tree-module_git.bb
new file mode 100644
index 0000000000..642fa80319
--- /dev/null
+++ b/meta-skeleton/recipes-kernel/rust-out-of-tree-module/rust-out-of-tree-module_git.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Basic template for an out-of-tree Linux kernel module written in Rust"
+HOMEPAGE = "https://github.com/Rust-for-Linux/rust-out-of-tree-module"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+inherit module features_check
+REQUIRED_DISTRO_FEATURES = "rust-kernel"
+
+SRC_URI = "git://github.com/Rust-for-Linux/rust-out-of-tree-module.git;protocol=https;branch=main"
+SRCREV = "00b5a8ee2bf53532d115004d7636b61a54f49802" 
+UPSTREAM_CHECK_COMMITS = "1"
+
+EXTRA_OEMAKE += "KDIR=${STAGING_KERNEL_DIR}"
+
+# The inherit of module.bbclass will automatically name module packages with
+# "kernel-module-" prefix as required by the oe-core build environment.
+RPROVIDES:${PN} += "kernel-module-rust-out-of-tree"
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 15/16] make-mod-scripts: fix for buildpath issues with rust-out-of-tree compilation
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (13 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 14/16] meta-skeleton: Add rust-out-of-tree-module recipe Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:29 ` [PATCH v4 16/16] runtime_test: Add rust-out-of-tree selftest Harish.Sadineni
  2026-01-20 18:41 ` [PATCH v4 00/16] Enable rust support for linux kernel Sadineni, Harish
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Harish Sadineni <Harish.Sadineni@windriver.com>

Fixes buildpath issues when compiling rust-out-of-tree recipe.

Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 .../make-mod-scripts/make-mod-scripts_1.0.bb              | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
index 874e16e642..d6b2178767 100644
--- a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
+++ b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
@@ -36,3 +36,11 @@ do_configure() {
 		-C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} $t
 	done
 }
+
+RUST_DEBUG_REMAP ?= "--remap-path-prefix=${TMPDIR}/work-shared=${TARGET_DBGSRC_DIR} \
+                     --remap-path-prefix=${TMPDIR}/work=${TARGET_DBGSRC_DIR} \
+"
+KRUSTFLAGS:append = " ${RUST_DEBUG_REMAP}"
+EXTRA_OEMAKE:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'rust-kernel', \
+                                             ' KRUSTFLAGS="${KRUSTFLAGS}"', '',d)}"
+
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v4 16/16] runtime_test: Add rust-out-of-tree selftest
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (14 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 15/16] make-mod-scripts: fix for buildpath issues with rust-out-of-tree compilation Harish.Sadineni
@ 2026-01-20 18:29 ` Harish.Sadineni
  2026-01-20 18:41 ` [PATCH v4 00/16] Enable rust support for linux kernel Sadineni, Harish
  16 siblings, 0 replies; 23+ messages in thread
From: Harish.Sadineni @ 2026-01-20 18:29 UTC (permalink / raw)
  To: openembedded-core
  Cc: Randy.MacLeod, alistair.francis, Sundeep.Kokkonda, bruce.ashfield,
	richard.purdie, yoann.congal, elmehdi.younes

From: Yoann Congal <yoann.congal@smile.fr>

This new case tests that the rust-out-of-tree-module recipe compiles and
run properly: check that the dmesg output is as expected.

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/lib/oeqa/selftest/cases/runtime_test.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py
index e8374606a4..461116601d 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -494,8 +494,11 @@ class RustKernel(OESelftestTestCase):
             self.write_config(textwrap.dedent("""
                 DISTRO_FEATURES:append = ' rust-kernel'
                 KERNEL_EXTRA_FEATURES:append = ' features/kernel-sample/kernel-rust-sample.scc'
-                CORE_IMAGE_EXTRA_INSTALL += "kernel-module-rust-minimal"
+                CORE_IMAGE_EXTRA_INSTALL += "kernel-module-rust-minimal kernel-module-rust-out-of-tree"
             """))
+
+            runCmd('bitbake-layers add-layer %s' % os.path.join(get_bb_var("COREBASE"), 'meta-skeleton'))
+            self.add_command_to_tearDown('bitbake-layers remove-layer */meta-skeleton')
             bitbake(self.image)
 
             with runqemu(self.image, runqemuparams = "nographic") as qemu:
@@ -506,3 +509,10 @@ class RustKernel(OESelftestTestCase):
                 self.logger.debug(f"rust_minimal dmesg output:\n" + textwrap.indent(output, "  "))
                 self.assertIn("Rust minimal sample", output, "Kernel Rust sample expected output not found in dmesg")
 
+                qemu.run_serial("dmesg -c > /dev/null")
+                status, _ = qemu.run_serial("modprobe rust_out_of_tree")
+                self.assertEqual(status, 1, "Loading rust_out_of_tree module failed!")
+                _, output = qemu.run_serial("dmesg")
+                self.logger.debug(f"rust_out_of_tree dmesg output:\n" + textwrap.indent(output, "  "))
+                self.assertIn("Rust out-of-tree sample", output, "Out-of-tree Rust sample expected output not found in dmesg")
+
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH v4 00/16] Enable rust support for linux kernel
  2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
                   ` (15 preceding siblings ...)
  2026-01-20 18:29 ` [PATCH v4 16/16] runtime_test: Add rust-out-of-tree selftest Harish.Sadineni
@ 2026-01-20 18:41 ` Sadineni, Harish
  2026-01-21 15:16   ` [OE-core] " Antonin Godard
  16 siblings, 1 reply; 23+ messages in thread
From: Sadineni, Harish @ 2026-01-20 18:41 UTC (permalink / raw)
  To: openembedded-core

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

This patch series was tested on Autobuilder:
https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/3193
https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/3056

Thanks,
Harish

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

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [PATCH v4 00/16] Enable rust support for linux kernel
  2026-01-20 18:41 ` [PATCH v4 00/16] Enable rust support for linux kernel Sadineni, Harish
@ 2026-01-21 15:16   ` Antonin Godard
  2026-01-22 11:53     ` Harish Sadineni
  0 siblings, 1 reply; 23+ messages in thread
From: Antonin Godard @ 2026-01-21 15:16 UTC (permalink / raw)
  To: Harish.Sadineni, openembedded-core

Hi,

On Tue Jan 20, 2026 at 7:41 PM CET, Harish via lists.openembedded.org Sadineni wrote:
> This patch series was tested on Autobuilder:
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/3193
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/3056

Thanks for your efforts on this. However I think it triggers issues in other
builders as you can see from this a-full run (a-full is the complete Autobuilder
testing run):

https://autobuilder.yoctoproject.org/valkyrie/#/builders/29/builds/3101

For example, the first failure in the list (beaglebone builder):

| error: linking with `/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/wrapper/build-rust-ccld` failed: exit status: 1
|   |
|   = note:  "/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/wrapper/build-rust-ccld" "-m64" "/tmp/rustcBDQQCc/symbols.o" "<75 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libstd-*,libpanic_unwind-*,libobject-*,libmemchr-*,libaddr2line-*,libgimli-*,libcfg_if-*,librustc_demangle-*,libstd_detect-*,libhashbrown-*,librustc_std_workspace_alloc-*,libminiz_oxide-*,libadler2-*,libunwind-*,liblibc-*,librustc_std_workspace_core-*,liballoc-*,libcore-*,libcompiler_builtins-*}.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-L" "/tmp/rustcBDQQCc/raw-dylibs" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/recipe-sysroot/usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/usr/lib" "-L" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/sources/rustc-1.92.0-src/build/bootstrap/debug/deps/rustdoc-92c720c010da8c74" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "-lz" "-lzstd"
|   = note: some arguments are omitted. use `--verbose` to show all linker arguments
|   = note: /srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/hosttools/ld: cannot find /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/lib/libm.so.6: No such file or directory
|           /srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/hosttools/ld: cannot find /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/lib/libmvec.so.1: No such file or directory
|           collect2: error: ld returned 1 exit status


https://autobuilder.yoctoproject.org/valkyrie/#/builders/2/builds/3084
https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/5052191/raw_inline

Can you have a look at these failures?

Antonin

-- 
Antonin Godard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [PATCH v4 00/16] Enable rust support for linux kernel
  2026-01-21 15:16   ` [OE-core] " Antonin Godard
@ 2026-01-22 11:53     ` Harish Sadineni
  2026-01-22 14:24       ` Antonin Godard
  0 siblings, 1 reply; 23+ messages in thread
From: Harish Sadineni @ 2026-01-22 11:53 UTC (permalink / raw)
  To: Antonin Godard, openembedded-core; +Cc: MacLeod, Randy, Kokkonda, Sundeep


On 1/21/2026 8:46 PM, Antonin Godard 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.
>
> Hi,
>
> On Tue Jan 20, 2026 at 7:41 PM CET, Harish via lists.openembedded.org Sadineni wrote:
>> This patch series was tested on Autobuilder:
>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/3193
>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/3056
> Thanks for your efforts on this. However I think it triggers issues in other
> builders as you can see from this a-full run (a-full is the complete Autobuilder
> testing run):
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/29/builds/3101
>
> For example, the first failure in the list (beaglebone builder):
>
> | error: linking with `/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/wrapper/build-rust-ccld` failed: exit status: 1
> |   |
> |   = note:  "/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/wrapper/build-rust-ccld" "-m64" "/tmp/rustcBDQQCc/symbols.o" "<75 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libstd-*,libpanic_unwind-*,libobject-*,libmemchr-*,libaddr2line-*,libgimli-*,libcfg_if-*,librustc_demangle-*,libstd_detect-*,libhashbrown-*,librustc_std_workspace_alloc-*,libminiz_oxide-*,libadler2-*,libunwind-*,liblibc-*,librustc_std_workspace_core-*,liballoc-*,libcore-*,libcompiler_builtins-*}.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-L" "/tmp/rustcBDQQCc/raw-dylibs" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/recipe-sysroot/usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/usr/lib" "-L" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/sources/rustc-1.92.0-src/build/bootstrap/debug/deps/rustdoc-92c720c010da8c74" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "-lz" "-lzstd"
> |   = note: some arguments are omitted. use `--verbose` to show all linker arguments
> |   = note: /srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/hosttools/ld: cannot find /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/lib/libm.so.6: No such file or directory
> |           /srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/hosttools/ld: cannot find /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/lib/libmvec.so.1: No such file or directory
> |           collect2: error: ld returned 1 exit status
>
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/2/builds/3084
> https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/5052191/raw_inline
>
> Can you have a look at these failures?
Thanks for reporting this.
The error indicates that the linker is unable to locate libm.so.6 and 
libmvec.so.6 in the recipe sysroot.
These libraries are normally provided by glibc, and this issue does not 
appear to be caused by our patches, as we are not able to reproduce it 
locally.
Could you please re-test the series once more to confirm?

Thanks,
Harish
>
> Antonin
>
> --
> Antonin Godard, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [PATCH v4 00/16] Enable rust support for linux kernel
  2026-01-22 11:53     ` Harish Sadineni
@ 2026-01-22 14:24       ` Antonin Godard
  2026-01-26  7:54         ` Antonin Godard
  0 siblings, 1 reply; 23+ messages in thread
From: Antonin Godard @ 2026-01-22 14:24 UTC (permalink / raw)
  To: Harish.Sadineni, openembedded-core; +Cc: MacLeod, Randy, Kokkonda, Sundeep

Hi,

On Thu Jan 22, 2026 at 12:53 PM CET, Harish via lists.openembedded.org Sadineni wrote:
>
> On 1/21/2026 8:46 PM, Antonin Godard 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.
>>
>> Hi,
>>
>> On Tue Jan 20, 2026 at 7:41 PM CET, Harish via lists.openembedded.org Sadineni wrote:
>>> This patch series was tested on Autobuilder:
>>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/3193
>>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/3056
>> Thanks for your efforts on this. However I think it triggers issues in other
>> builders as you can see from this a-full run (a-full is the complete Autobuilder
>> testing run):
>>
>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/29/builds/3101
>>
>> For example, the first failure in the list (beaglebone builder):
>>
>> | error: linking with `/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/wrapper/build-rust-ccld` failed: exit status: 1
>> |   |
>> |   = note:  "/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/wrapper/build-rust-ccld" "-m64" "/tmp/rustcBDQQCc/symbols.o" "<75 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libstd-*,libpanic_unwind-*,libobject-*,libmemchr-*,libaddr2line-*,libgimli-*,libcfg_if-*,librustc_demangle-*,libstd_detect-*,libhashbrown-*,librustc_std_workspace_alloc-*,libminiz_oxide-*,libadler2-*,libunwind-*,liblibc-*,librustc_std_workspace_core-*,liballoc-*,libcore-*,libcompiler_builtins-*}.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-L" "/tmp/rustcBDQQCc/raw-dylibs" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/recipe-sysroot/usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/usr/lib" "-L" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-rust/1.92.0/sources/rustc-1.92.0-src/build/bootstrap/debug/deps/rustdoc-92c720c010da8c74" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "-lz" "-lzstd"
>> |   = note: some arguments are omitted. use `--verbose` to show all linker arguments
>> |   = note: /srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/hosttools/ld: cannot find /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/lib/libm.so.6: No such file or directory
>> |           /srv/pokybuild/yocto-worker/beaglebone/build/build/tmp/hosttools/ld: cannot find /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/lib/libmvec.so.1: No such file or directory
>> |           collect2: error: ld returned 1 exit status
>>
>>
>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/2/builds/3084
>> https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/5052191/raw_inline
>>
>> Can you have a look at these failures?
> Thanks for reporting this.
> The error indicates that the linker is unable to locate libm.so.6 and 
> libmvec.so.6 in the recipe sysroot.
> These libraries are normally provided by glibc, and this issue does not 
> appear to be caused by our patches, as we are not able to reproduce it 
> locally.
> Could you please re-test the series once more to confirm?
>
> Thanks,
> Harish

Ok, thanks for testing again on your side. It may have been related to another
commit on my branch as I'm not facing the issues again. I'll re-add the series
to my branch - sorry for the false alarm!

Antonin

-- 
Antonin Godard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [PATCH v4 00/16] Enable rust support for linux kernel
  2026-01-22 14:24       ` Antonin Godard
@ 2026-01-26  7:54         ` Antonin Godard
  2026-01-28 17:34           ` Harish Sadineni
  0 siblings, 1 reply; 23+ messages in thread
From: Antonin Godard @ 2026-01-26  7:54 UTC (permalink / raw)
  To: Harish.Sadineni, openembedded-core; +Cc: MacLeod, Randy, Kokkonda, Sundeep

Hi,

On Thu Jan 22, 2026 at 3:24 PM CET, Antonin Godard via lists.openembedded.org wrote:
[...]
>> Thanks for reporting this.
>> The error indicates that the linker is unable to locate libm.so.6 and 
>> libmvec.so.6 in the recipe sysroot.
>> These libraries are normally provided by glibc, and this issue does not 
>> appear to be caused by our patches, as we are not able to reproduce it 
>> locally.
>> Could you please re-test the series once more to confirm?
>>
>> Thanks,
>> Harish
>
> Ok, thanks for testing again on your side. It may have been related to another
> commit on my branch as I'm not facing the issues again. I'll re-add the series
> to my branch - sorry for the false alarm!

Sorry, but after starting an a-full run with your series again, I started
getting the same errors again:

https://autobuilder.yoctoproject.org/valkyrie/#/builders/29/builds/3110

I've launched an a-full build with the same branches minus your series and I
don't see the errors anymore:

https://autobuilder.yoctoproject.org/valkyrie/#/builders/29/builds/3115

You can compare the branches used for the two builds by comparing:

https://git.yoctoproject.org/poky-ci-archive/log/?h=oecore/autobuilder.yoctoproject.org/valkyrie/a-full-3110
https://git.yoctoproject.org/poky-ci-archive/log/?h=bitbake/autobuilder.yoctoproject.org/valkyrie/a-full-3110
https://git.yoctoproject.org/poky-ci-archive/log/?h=meta-yocto/autobuilder.yoctoproject.org/valkyrie/a-full-3110

vs.

https://git.yoctoproject.org/poky-ci-archive/log/?h=oecore/autobuilder.yoctoproject.org/valkyrie/a-full-3115
https://git.yoctoproject.org/poky-ci-archive/log/?h=bitbake/autobuilder.yoctoproject.org/valkyrie/a-full-3115
https://git.yoctoproject.org/poky-ci-archive/log/?h=meta-yocto/autobuilder.yoctoproject.org/valkyrie/a-full-3115

Maybe your build uses some shared state which is why your builds pass?

You can base off your test builds against my a-full-3110 branches above, that
may help.

Regards,
Antonin

-- 
Antonin Godard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [PATCH v4 00/16] Enable rust support for linux kernel
  2026-01-26  7:54         ` Antonin Godard
@ 2026-01-28 17:34           ` Harish Sadineni
  0 siblings, 0 replies; 23+ messages in thread
From: Harish Sadineni @ 2026-01-28 17:34 UTC (permalink / raw)
  To: Antonin Godard, openembedded-core
  Cc: MacLeod, Randy, Kokkonda, Sundeep, Alistair Francis

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


On 1/26/2026 1:24 PM, Antonin Godard 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.
>
> Hi,
>
> On Thu Jan 22, 2026 at 3:24 PM CET, Antonin Godard via lists.openembedded.org wrote:
> [...]
>>> Thanks for reporting this.
>>> The error indicates that the linker is unable to locate libm.so.6 and
>>> libmvec.so.6 in the recipe sysroot.
>>> These libraries are normally provided by glibc, and this issue does not
>>> appear to be caused by our patches, as we are not able to reproduce it
>>> locally.
>>> Could you please re-test the series once more to confirm?
>>>
>>> Thanks,
>>> Harish
>> Ok, thanks for testing again on your side. It may have been related to another
>> commit on my branch as I'm not facing the issues again. I'll re-add the series
>> to my branch - sorry for the false alarm!
> Sorry, but after starting an a-full run with your series again, I started
> getting the same errors again:
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/29/builds/3110
>
> I've launched an a-full build with the same branches minus your series and I
> don't see the errors anymore:
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/29/builds/3115
>
> You can compare the branches used for the two builds by comparing:
>
> https://git.yoctoproject.org/poky-ci-archive/log/?h=oecore/autobuilder.yoctoproject.org/valkyrie/a-full-3110
> https://git.yoctoproject.org/poky-ci-archive/log/?h=bitbake/autobuilder.yoctoproject.org/valkyrie/a-full-3110
> https://git.yoctoproject.org/poky-ci-archive/log/?h=meta-yocto/autobuilder.yoctoproject.org/valkyrie/a-full-3110
>
> vs.
>
> https://git.yoctoproject.org/poky-ci-archive/log/?h=oecore/autobuilder.yoctoproject.org/valkyrie/a-full-3115
> https://git.yoctoproject.org/poky-ci-archive/log/?h=bitbake/autobuilder.yoctoproject.org/valkyrie/a-full-3115
> https://git.yoctoproject.org/poky-ci-archive/log/?h=meta-yocto/autobuilder.yoctoproject.org/valkyrie/a-full-3115
>
> Maybe your build uses some shared state which is why your builds pass?
>
> You can base off your test builds against my a-full-3110 branches above, that
> may help.
I was able to reproduce the issue locally.

Failure was happening due to Alistair Francis's patch from my v4 series 
(https://lists.openembedded.org/g/openembedded-core/message/229769) when 
applied together
with following patch "llvm: enable LLVMgold.so build by adding binutils 
dependency(https://lists.openembedded.org/g/openembedded-core/message/229387)"

To avoid this issue, I am dropping Alistair Francis’s patch 
(https://lists.openembedded.org/g/openembedded-core/message/229769<https://lists.openembedded.org/g/openembedded-core/message/229769>) 
from my patch set.
We will send a v5 series tomorrow.

Thanks,
Harish

>
> Regards,
> Antonin
>
> --
> Antonin Godard, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>

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

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2026-01-28 17:35 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-20 18:29 [PATCH v4 00/16] Enable rust support for linux kernel Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 01/16] linux-yocto: conditionally add clang/rust/bindgen-cli-native to DEPENDS Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 02/16] rust: Install the Rust source Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 03/16] rust: install Rust library sources for target & sdk Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 04/16] kernel-yocto: enable Rust kernel support via 'make rustavailable' Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 05/16] linux-yocto: enable Rust support in kernel configuration Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 06/16] kernel-yocto: Fix for buildpaths errors when rust is enabled for kernel Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 07/16] make-mod-scripts: split `HOSTCC` flag to align with to linux-yocto Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 08/16] kernel-yocto.bbclass: Disable ccache when rust-kernel is enabled Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 09/16] kernel-devsrc: copying rust-kernel source to $kerneldir/build Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 10/16] selftest/cases/runtime_test: Add test for Linux Rust sample Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 11/16] kernel.bbclass: Copy include/config/auto.conf in STAGING_KERNEL_BUILDDIR Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 12/16] kernel.bbclass: Export artifacts needed for out-of-tree Rust compilation Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 13/16] module.bbclass: Prepare out-of-tree rust module compilation Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 14/16] meta-skeleton: Add rust-out-of-tree-module recipe Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 15/16] make-mod-scripts: fix for buildpath issues with rust-out-of-tree compilation Harish.Sadineni
2026-01-20 18:29 ` [PATCH v4 16/16] runtime_test: Add rust-out-of-tree selftest Harish.Sadineni
2026-01-20 18:41 ` [PATCH v4 00/16] Enable rust support for linux kernel Sadineni, Harish
2026-01-21 15:16   ` [OE-core] " Antonin Godard
2026-01-22 11:53     ` Harish Sadineni
2026-01-22 14:24       ` Antonin Godard
2026-01-26  7:54         ` Antonin Godard
2026-01-28 17:34           ` Harish Sadineni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox