From: Matthew Wood <thepacketgeek@gmail.com>
To: Miguel Ojeda <ojeda@kernel.org>,
Luis Chamberlain <mcgrof@kernel.org>,
Petr Pavlu <petr.pavlu@suse.com>,
Daniel Gomez <da.gomez@kernel.org>,
Sami Tolvanen <samitolvanen@google.com>
Cc: "Aaron Tomlin" <atomlin@atomlin.com>,
"Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>,
"Tamir Duberstein" <tamird@kernel.org>,
"David Gow" <davidgow@google.com>,
"José Expósito" <jose.exposito89@gmail.com>,
linux-modules@vger.kernel.org, rust-for-linux@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH 0/8] rust: module parameter extensions
Date: Thu, 26 Feb 2026 15:47:26 -0800 [thread overview]
Message-ID: <20260226234736.428341-1-thepacketgeek@gmail.com> (raw)
This series extends the Rust module! macro with three capabilities that
are available to C modules but currently missing from the Rust
abstractions: string parameters, early boot command-line parameters, and
configurable initcall levels.
The existing Rust module parameter infrastructure supports integer types
(i8..u64, isize, usize) but has no way to accept string values.
Additionally, built-in Rust modules cannot register parameters for early
boot command-line parsing (__setup / early_param), and all Rust modules
are hard-coded to initcall level 6 (device_initcall) with no way to
control initialization ordering.
String parameter support (patches 1-3):
Introduce StringParam, a Copy wrapper around *const c_char whose
memory is managed by the kernel parameter subsystem. Wire it into
the module! macro as the `string` parameter type with a dedicated
kernel_param_ops (PARAM_OPS_STRING) that stores the pointer directly
into a SetOnce<StringParam> container. The rust_minimal sample is
updated to demonstrate usage.
An earlier implementation of string parameter support was proposed in:
https://github.com/Rust-for-Linux/linux/pull/110/
This series takes a different approach for StringParam by storing the
raw C string pointer directly rather than copying the string data,
since the kernel guarantees the backing memory remains valid for the
module's lifetime. This avoids allocation in the parameter setter and
keeps StringParam as a simple Copy type consistent with the existing
integer parameter design.
Early boot parameter support (patches 4-7):
Add ObsKernelParam (mirroring the C obs_kernel_param), extend the
ModuleParam trait with from_setup_arg() for constructing parameter
values from raw __setup callback arguments, and integrate an optional
`early_param` field into the module! macro. When specified, the macro
emits a __setup entry in the .init.setup ELF section, gated behind
#[cfg(not(MODULE))] since this mechanism is only meaningful for
built-in modules.
Configurable initcall levels (patch 8):
Add an optional `initcall` field to the module! macro that accepts
any of the eight standard levels (pure through late). The default
remains level 6 (device) so existing modules are unaffected.
Matthew Wood (8):
rust: module_param: add StringParam type for C string parameters
rust: module_param: wire StringParam into the module! macro
samples: rust_minimal: demonstrate string module parameter
rust: module_param: add ObsKernelParam type
rust: module_param: add from_setup_arg() to ModuleParam trait
rust: macros: add early_param support to module! macro
samples: rust_minimal: demonstrate early_param usage
rust: macros: add configurable initcall levels to module! macro
rust/kernel/module_param.rs | 160 +++++++++++++++++++++++++++++++
rust/macros/lib.rs | 9 ++
rust/macros/module.rs | 179 +++++++++++++++++++++++++++++++++--
samples/rust/rust_minimal.rs | 33 ++++++-
4 files changed, 368 insertions(+), 13 deletions(-)
--
2.52.0
next reply other threads:[~2026-02-26 23:47 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-26 23:47 Matthew Wood [this message]
2026-02-26 23:47 ` [PATCH 1/8] rust: module_param: add StringParam type for C string parameters Matthew Wood
2026-02-28 1:32 ` Miguel Ojeda
2026-03-05 12:47 ` Petr Pavlu
2026-02-26 23:47 ` [PATCH 2/8] rust: module_param: wire StringParam into the module! macro Matthew Wood
2026-03-04 8:13 ` Petr Pavlu
2026-03-09 2:24 ` Matthew Wood
2026-03-06 19:27 ` Sami Tolvanen
2026-03-09 2:27 ` Matthew Wood
2026-02-26 23:47 ` [PATCH 3/8] samples: rust_minimal: demonstrate string module parameter Matthew Wood
2026-02-26 23:47 ` [PATCH 4/8] rust: module_param: add ObsKernelParam type Matthew Wood
2026-02-26 23:47 ` [PATCH 5/8] rust: module_param: add from_setup_arg() to ModuleParam trait Matthew Wood
2026-02-26 23:47 ` [PATCH 6/8] rust: macros: add early_param support to module! macro Matthew Wood
2026-03-06 17:22 ` Petr Pavlu
2026-02-26 23:47 ` [PATCH 7/8] samples: rust_minimal: demonstrate early_param usage Matthew Wood
2026-02-26 23:47 ` [PATCH 8/8] rust: macros: add configurable initcall levels to module! macro Matthew Wood
2026-02-27 13:27 ` [PATCH 0/8] rust: module parameter extensions Matthew Wood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260226234736.428341-1-thepacketgeek@gmail.com \
--to=thepacketgeek@gmail.com \
--cc=a.hindborg@kernel.org \
--cc=aliceryhl@google.com \
--cc=atomlin@atomlin.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=da.gomez@kernel.org \
--cc=dakr@kernel.org \
--cc=davidgow@google.com \
--cc=gary@garyguo.net \
--cc=jose.exposito89@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-modules@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=mcgrof@kernel.org \
--cc=ojeda@kernel.org \
--cc=petr.pavlu@suse.com \
--cc=rust-for-linux@vger.kernel.org \
--cc=samitolvanen@google.com \
--cc=tamird@kernel.org \
--cc=tmgross@umich.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox