* Re: [PATCH] rust: kbuild: allow `unused_features`
2026-03-12 11:10 [PATCH] rust: kbuild: allow `unused_features` Miguel Ojeda
@ 2026-03-12 11:48 ` Gary Guo
2026-03-12 13:36 ` Benno Lossin
2026-03-12 14:17 ` Miguel Ojeda
2 siblings, 0 replies; 4+ messages in thread
From: Gary Guo @ 2026-03-12 11:48 UTC (permalink / raw)
To: Miguel Ojeda, Nathan Chancellor, Nicolas Schier
Cc: Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich,
rust-for-linux, linux-kbuild, stable
On Thu Mar 12, 2026 at 11:10 AM GMT, Miguel Ojeda wrote:
> Starting with the upcoming Rust 1.96.0 (to be released 2026-05-28),
> `rustc` introduces the new lint `unused_features` [1], which warns [2]:
>
> warning: feature `used_with_arg` is declared but not used
> --> <crate attribute>:1:93
> |
> 1 | #![feature(asm_const,asm_goto,arbitrary_self_types,lint_reasons,offset_of_nested,raw_ref_op,used_with_arg)]
> | ^^^^^^^^^^^^^
> |
> = note: `#[warn(unused_features)]` (part of `#[warn(unused)]`) on by default
>
> The original goal of using `-Zcrate-attr` automatically was that there
> is a consistent set of features enabled and managed globally for all
> Rust kernel code (modulo exceptions like the `rust/` crated).
>
> While we could require crates to enable features manually (even if we
> still keep the `-Zallow-features=` list, i.e. removing the `-Zcrate-attr`
> list), it is not really worth making all developers worry about it just
> for a new lint.
>
> The features are expected to eventually become stable anyway (most already
> did), and thus having to remove features in every file that may use them
> is not worth it either.
>
> Thus just allow the new lint globally.
>
> The lint actually existed for a long time, which is why `rustc` does
> not complain about an unknown lint in the stable versions we support,
> but it was "disabled" years ago [3], and now it was made to work again.
>
> For extra context, the new implementation of the lint has already been
> improved to avoid linting about features that became stable thanks to
> Benno's report and the ensuing discussion [4] [5], but while that helps,
> it is still the case that we may have features enabled that are not used
> for one reason or another in a particular crate.
>
> Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs).
> Link: https://github.com/rust-lang/rust/pull/152164 [1]
> Link: https://github.com/Rust-for-Linux/pin-init/pull/114 [2]
> Link: https://github.com/rust-lang/rust/issues/44232 [3]
> Link: https://github.com/rust-lang/rust/issues/153523 [4]
> Link: https://github.com/rust-lang/rust/pull/153610 [5]
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Gary Guo <gary@garyguo.net>
> ---
> Makefile | 1 +
> 1 file changed, 1 insertion(+)
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] rust: kbuild: allow `unused_features`
2026-03-12 11:10 [PATCH] rust: kbuild: allow `unused_features` Miguel Ojeda
2026-03-12 11:48 ` Gary Guo
@ 2026-03-12 13:36 ` Benno Lossin
2026-03-12 14:17 ` Miguel Ojeda
2 siblings, 0 replies; 4+ messages in thread
From: Benno Lossin @ 2026-03-12 13:36 UTC (permalink / raw)
To: Miguel Ojeda, Nathan Chancellor, Nicolas Schier
Cc: Boqun Feng, Gary Guo, Björn Roy Baron, Andreas Hindborg,
Alice Ryhl, Trevor Gross, Danilo Krummrich, rust-for-linux,
linux-kbuild, stable
On Thu Mar 12, 2026 at 12:10 PM CET, Miguel Ojeda wrote:
> Starting with the upcoming Rust 1.96.0 (to be released 2026-05-28),
> `rustc` introduces the new lint `unused_features` [1], which warns [2]:
>
> warning: feature `used_with_arg` is declared but not used
> --> <crate attribute>:1:93
> |
> 1 | #![feature(asm_const,asm_goto,arbitrary_self_types,lint_reasons,offset_of_nested,raw_ref_op,used_with_arg)]
> | ^^^^^^^^^^^^^
> |
> = note: `#[warn(unused_features)]` (part of `#[warn(unused)]`) on by default
>
> The original goal of using `-Zcrate-attr` automatically was that there
> is a consistent set of features enabled and managed globally for all
> Rust kernel code (modulo exceptions like the `rust/` crated).
>
> While we could require crates to enable features manually (even if we
> still keep the `-Zallow-features=` list, i.e. removing the `-Zcrate-attr`
> list), it is not really worth making all developers worry about it just
> for a new lint.
>
> The features are expected to eventually become stable anyway (most already
> did), and thus having to remove features in every file that may use them
> is not worth it either.
>
> Thus just allow the new lint globally.
>
> The lint actually existed for a long time, which is why `rustc` does
> not complain about an unknown lint in the stable versions we support,
> but it was "disabled" years ago [3], and now it was made to work again.
>
> For extra context, the new implementation of the lint has already been
> improved to avoid linting about features that became stable thanks to
> Benno's report and the ensuing discussion [4] [5], but while that helps,
> it is still the case that we may have features enabled that are not used
> for one reason or another in a particular crate.
>
> Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs).
> Link: https://github.com/rust-lang/rust/pull/152164 [1]
> Link: https://github.com/Rust-for-Linux/pin-init/pull/114 [2]
> Link: https://github.com/rust-lang/rust/issues/44232 [3]
> Link: https://github.com/rust-lang/rust/issues/153523 [4]
> Link: https://github.com/rust-lang/rust/pull/153610 [5]
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Benno Lossin <lossin@kernel.org>
> ---
> Makefile | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/Makefile b/Makefile
> index 73a39592f112..587345f16c97 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -476,6 +476,7 @@ KBUILD_USERLDFLAGS := $(USERLDFLAGS)
> export rust_common_flags := --edition=2021 \
> -Zbinary_dep_depinfo=y \
> -Astable_features \
> + -Aunused_features \
> -Dnon_ascii_idents \
> -Dunsafe_op_in_unsafe_fn \
> -Wmissing_docs \
>
> base-commit: 487f9b3dc6e507a982f1b984aa6bfbd9dc4b0567
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] rust: kbuild: allow `unused_features`
2026-03-12 11:10 [PATCH] rust: kbuild: allow `unused_features` Miguel Ojeda
2026-03-12 11:48 ` Gary Guo
2026-03-12 13:36 ` Benno Lossin
@ 2026-03-12 14:17 ` Miguel Ojeda
2 siblings, 0 replies; 4+ messages in thread
From: Miguel Ojeda @ 2026-03-12 14:17 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Nathan Chancellor, Nicolas Schier, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, Danilo Krummrich, rust-for-linux, linux-kbuild,
stable
On Thu, Mar 12, 2026 at 12:10 PM Miguel Ojeda <ojeda@kernel.org> wrote:
>
> Starting with the upcoming Rust 1.96.0 (to be released 2026-05-28),
> `rustc` introduces the new lint `unused_features` [1], which warns [2]:
>
> warning: feature `used_with_arg` is declared but not used
> --> <crate attribute>:1:93
> |
> 1 | #![feature(asm_const,asm_goto,arbitrary_self_types,lint_reasons,offset_of_nested,raw_ref_op,used_with_arg)]
> | ^^^^^^^^^^^^^
> |
> = note: `#[warn(unused_features)]` (part of `#[warn(unused)]`) on by default
>
> The original goal of using `-Zcrate-attr` automatically was that there
> is a consistent set of features enabled and managed globally for all
> Rust kernel code (modulo exceptions like the `rust/` crated).
>
> While we could require crates to enable features manually (even if we
> still keep the `-Zallow-features=` list, i.e. removing the `-Zcrate-attr`
> list), it is not really worth making all developers worry about it just
> for a new lint.
>
> The features are expected to eventually become stable anyway (most already
> did), and thus having to remove features in every file that may use them
> is not worth it either.
>
> Thus just allow the new lint globally.
>
> The lint actually existed for a long time, which is why `rustc` does
> not complain about an unknown lint in the stable versions we support,
> but it was "disabled" years ago [3], and now it was made to work again.
>
> For extra context, the new implementation of the lint has already been
> improved to avoid linting about features that became stable thanks to
> Benno's report and the ensuing discussion [4] [5], but while that helps,
> it is still the case that we may have features enabled that are not used
> for one reason or another in a particular crate.
>
> Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs).
> Link: https://github.com/rust-lang/rust/pull/152164 [1]
> Link: https://github.com/Rust-for-Linux/pin-init/pull/114 [2]
> Link: https://github.com/rust-lang/rust/issues/44232 [3]
> Link: https://github.com/rust-lang/rust/issues/153523 [4]
> Link: https://github.com/rust-lang/rust/pull/153610 [5]
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Applied to `rust-fixes` -- thanks everyone!
We were already discussing this in the links above, and it is fairly
trivial on our side, so I am putting it in already so that it goes
into the next fixes PR.
Cheers,
Miguel
^ permalink raw reply [flat|nested] 4+ messages in thread