On 24/09/2025 14.39, Andreas Hindborg wrote: > Extend the `module!` macro with support module parameters. Also add some > string to integer parsing functions. > > Based on the original module parameter support by Miguel [1], > later extended and generalized by Adam for more types [2][3]. > Originally tracked at [4]. > > Link: https://github.com/Rust-for-Linux/linux/pull/7 [1] > Link: https://github.com/Rust-for-Linux/linux/pull/82 [2] > Link: https://github.com/Rust-for-Linux/linux/pull/87 [3] > Link: https://github.com/Rust-for-Linux/linux/issues/11 [4] > Signed-off-by: Andreas Hindborg <[email protected]>
I tested this series with rust_minimal module. They LGTM, Tested-by: Daniel Gomez <[email protected]> The patches did not apply cleanly to v6.18-rc3, at least not when using b4. However, when applying them to the base commit and then rebasing onto v6.18-rc3, I didn't see any conflicts. I've created a temporary branch with this rebase here: https://git.kernel.org/pub/scm/linux/kernel/git/modules/linux.git/log/?h=rebase/[email protected] Can you take a look when you can? I'll merge this shortly after checking with Uwe, as there are some minor conflicts with his tree. + Uwe These are the conflicts I see when merging the patch series from Michal [1] (Introduce import_ns support for Rust). I believe these are trivial things that we will get notified from linux-next merging. But let me know what you think as you have requested in that thread. [1] Link: https://lore.kernel.org/all/[email protected]/ ... Applying: rust: macros: Add support for 'imports_ns' to module! Patch failed at 0008 rust: macros: Add support for 'imports_ns' to module! error: patch failed: rust/macros/module.rs:98 error: rust/macros/module.rs: patch does not apply hint: Use 'git am --show-current-patch=diff' to see the failed patch hint: When you have resolved this problem, run "git am --continue". hint: If you prefer to skip this patch, run "git am --skip" instead. hint: To restore the original branch and stop patching, run "git am --abort". hint: Disable this message with "git config set advice.mergeConflict false" git am --show-current-patch=diff --- rust/macros/module.rs | 8 ++++++++ 1 file changed, 8 insertions(+) --- rust/macros/module.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rust/macros/module.rs b/rust/macros/module.rs index 5ee54a00c0b65699596e660b2d4d60e64be2a50c..408cd115487514c8be79724d901c676435696376 100644 --- a/rust/macros/module.rs +++ b/rust/macros/module.rs @@ -98,6 +98,7 @@ struct ModuleInfo { description: Option<String>, alias: Option<Vec<String>>, firmware: Option<Vec<String>>, + imports_ns: Option<Vec<String>>, } impl ModuleInfo { @@ -112,6 +113,7 @@ fn parse(it: &mut token_stream::IntoIter) -> Self { "license", "alias", "firmware", + "imports_ns", ]; const REQUIRED_KEYS: &[&str] = &["type", "name", "license"]; let mut seen_keys = Vec::new(); @@ -137,6 +139,7 @@ fn parse(it: &mut token_stream::IntoIter) -> Self { "license" => info.license = expect_string_ascii(it), "alias" => info.alias = Some(expect_string_array(it)), "firmware" => info.firmware = Some(expect_string_array(it)), + "imports_ns" => info.imports_ns = Some(expect_string_array(it)), _ => panic!("Unknown key \"{key}\". Valid keys are: {EXPECTED_KEYS:?}."), } @@ -195,6 +198,11 @@ pub(crate) fn module(ts: TokenStream) -> TokenStream { modinfo.emit("firmware", &fw); } } + if let Some(imports) = info.imports_ns { + for ns in imports { + modinfo.emit("import_ns", &ns); + } + } // Built-in modules also export the `file` modinfo string. let file =

