Message ID | 20251023112547.4044904-7-Harish.Sadineni@windriver.com |
---|---|
State | New |
Headers | show |
Series | Enable rust support for linux kernel | expand |
Hi Harish, Le 23/10/2025 à 13:25, Harish.Sadineni@windriver.com a écrit : > From: Harish Sadineni <Harish.Sadineni@windriver.com> > > Add initial support for building the Linux kernel with Rust enabled: > > - Introduce `rust.cfg` to set Rust-related kernel config options, including: > - `CONFIG_RUST`, `CONFIG_HAVE_RUST`, and `CONFIG_RUST_IS_AVAILABLE` > - Rust sample modules and developer checks (overflow/debug assertions) > - Disable BTF and module versioning for compatibility > > - Add `rust.scc` to include `rust.cfg` via `kconf` in the kernel feature stack > > - Update `linux-yocto_${PV}.bb` to: > - Append `rust.scc` to `SRC_URI` and `KERNEL_FEATURES` > - Suppress `buildpaths` QA warning due to Rust path inclusion during builds > > Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com> > --- > meta/recipes-kernel/linux/files/rust.cfg | 20 +++++++++++++++++++ > meta/recipes-kernel/linux/files/rust.scc | 1 + > meta/recipes-kernel/linux/linux-yocto_6.16.bb | 4 ++++ > 3 files changed, 25 insertions(+) > create mode 100644 meta/recipes-kernel/linux/files/rust.cfg > create mode 100644 meta/recipes-kernel/linux/files/rust.scc > > diff --git a/meta/recipes-kernel/linux/files/rust.cfg b/meta/recipes-kernel/linux/files/rust.cfg > new file mode 100644 > index 0000000000..293438e8e0 > --- /dev/null > +++ b/meta/recipes-kernel/linux/files/rust.cfg > @@ -0,0 +1,20 @@ > +CONFIG_RUST=y > +CONFIG_SAMPLES_RUST=y > +CONFIG_SAMPLE_RUST_MINIMAL=y > +CONFIG_SAMPLE_RUST_PRINT=y > +CONFIG_SAMPLE_RUST_HOSTPROGS=y > +CONFIG_RUST_DEBUG_ASSERTIONS=y > +CONFIG_RUST_OVERFLOW_CHECKS=y > +CONFIG_RUST_BUILD_ASSERT_ALLOW=y > +# Disable module versioning > +CONFIG_MODVERSIONS=n > + > +# Disable BTF debug info > +CONFIG_DEBUG_INFO_BTF=n > + > +# Rust availability > +CONFIG_RUST_IS_AVAILABLE=y > + > +# Indicate Rust support present > +CONFIG_HAVE_RUST=y Since Patch 5 correctly adds the 'make rustavailable' check during 'do_kernel_configme', shouldn't we let the kernel's build system determine these values automatically based on the actual toolchain readiness? > + > diff --git a/meta/recipes-kernel/linux/files/rust.scc b/meta/recipes-kernel/linux/files/rust.scc > new file mode 100644 > index 0000000000..4686d9ce5e > --- /dev/null > +++ b/meta/recipes-kernel/linux/files/rust.scc > @@ -0,0 +1 @@ > +kconf hardware rust.cfg > diff --git a/meta/recipes-kernel/linux/linux-yocto_6.16.bb b/meta/recipes-kernel/linux/linux-yocto_6.16.bb > index 2188c7fed2..fda964e78d 100644 > --- a/meta/recipes-kernel/linux/linux-yocto_6.16.bb > +++ b/meta/recipes-kernel/linux/linux-yocto_6.16.bb > @@ -77,3 +77,7 @@ 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" > +INSANE_SKIP:kernel-vmlinux = "buildpaths" > +INSANE_SKIP:kernel-dbg = "buildpaths" > +SRC_URI += "file://rust.scc" > +KERNEL_FEATURES += "rust.scc"
diff --git a/meta/recipes-kernel/linux/files/rust.cfg b/meta/recipes-kernel/linux/files/rust.cfg new file mode 100644 index 0000000000..293438e8e0 --- /dev/null +++ b/meta/recipes-kernel/linux/files/rust.cfg @@ -0,0 +1,20 @@ +CONFIG_RUST=y +CONFIG_SAMPLES_RUST=y +CONFIG_SAMPLE_RUST_MINIMAL=y +CONFIG_SAMPLE_RUST_PRINT=y +CONFIG_SAMPLE_RUST_HOSTPROGS=y +CONFIG_RUST_DEBUG_ASSERTIONS=y +CONFIG_RUST_OVERFLOW_CHECKS=y +CONFIG_RUST_BUILD_ASSERT_ALLOW=y +# Disable module versioning +CONFIG_MODVERSIONS=n + +# Disable BTF debug info +CONFIG_DEBUG_INFO_BTF=n + +# Rust availability +CONFIG_RUST_IS_AVAILABLE=y + +# Indicate Rust support present +CONFIG_HAVE_RUST=y + diff --git a/meta/recipes-kernel/linux/files/rust.scc b/meta/recipes-kernel/linux/files/rust.scc new file mode 100644 index 0000000000..4686d9ce5e --- /dev/null +++ b/meta/recipes-kernel/linux/files/rust.scc @@ -0,0 +1 @@ +kconf hardware rust.cfg diff --git a/meta/recipes-kernel/linux/linux-yocto_6.16.bb b/meta/recipes-kernel/linux/linux-yocto_6.16.bb index 2188c7fed2..fda964e78d 100644 --- a/meta/recipes-kernel/linux/linux-yocto_6.16.bb +++ b/meta/recipes-kernel/linux/linux-yocto_6.16.bb @@ -77,3 +77,7 @@ 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" +INSANE_SKIP:kernel-vmlinux = "buildpaths" +INSANE_SKIP:kernel-dbg = "buildpaths" +SRC_URI += "file://rust.scc" +KERNEL_FEATURES += "rust.scc"