Google engineer Alice Ryhl's 46-patch series enables proper inlining of C helpers into Rust code during LTO kernel builds, resolving optimization hurdles for Rust-enabled kernels.

The Linux kernel's Rust integration takes a significant leap forward with new changes targeting Link-Time Optimization (LTO) builds. Spearheaded by Google's Alice Ryhl, this enhancement addresses a critical limitation when combining Rust components with the kernel's C infrastructure during optimized builds.
The LTO Inlining Challenge
When building Linux kernels with both Rust support and LTO enabled, LLVM/Clang encounters optimization barriers due to differing code generation settings between C and Rust compilation units. Specifically, C helper functions couldn't be properly inlined into Rust code paths during LTO builds. This limitation prevented the compiler from applying critical optimizations that reduce function call overhead and improve cache locality.
The __rust_helper Solution
Ryhl's approach introduces a new __rust_helper annotation applied to C functions called from Rust code. This marker triggers two key behaviors during compilation:
- Automatically applies
__always_inlineattribute during LTO builds - Temporarily disables inlining during
bindgenprocessing to avoid code generation conflicts
The implementation required meticulous annotation of 46 helper functions across kernel subsystems. As Ryhl explained in the patch notes: "Without this, C helpers cannot be inlined into Rust code when compiling with LTO because LLVM doesn't know that the two languages are being compiled with sufficiently compatible options."
Patch Integration Strategy
The changes are being merged incrementally through subsystem maintainers rather than as a single monolithic patchset. The VFS subsystem has already integrated the modifications via its vfs-7.0.rust branch, with other subsystems following throughout the Linux 6.20-7.0 development cycle.
Performance Implications
This fix unlocks the full performance potential of LTO-built Rust kernels. Recent benchmarks demonstrate measurable gains from LTO kernel builds:
| Optimization Level | Context Switch Latency | Kernel Compile Time |
|---|---|---|
| Default | 1.42μs | 8m 37s |
| ThinLTO | 1.31μs (-8%) | 10m 15s (+19%) |
| Full LTO | 1.28μs (-10%) | 12m 48s (+48%) |
Benchmark data from Phoronix LTO kernel testing (AMD Ryzen 9 7950X test system)
By resolving the inlining limitation, Rust components can now fully participate in these optimizations. The combination of Rust's memory safety guarantees and LTO's performance benefits creates a compelling path forward for critical kernel subsystems.
Ecosystem Context
This work represents another step in Linux's gradual Rust adoption following the initial infrastructure merge in Linux 6.1. With Microsoft's Rust for Windows and Google's Android Rust efforts advancing concurrently, the industry-wide shift toward memory-safe systems programming continues gaining momentum.
The complete patch series is documented in the kernel mailing list archives with ongoing discussion in the Rust for Linux GitHub repository.

Comments
Please log in or register to join the discussion