From: Miguel Ojeda <ojeda@kernel.org>
To: "Miguel Ojeda" <ojeda@kernel.org>,
"Nathan Chancellor" <nathan@kernel.org>,
"Nicolas Schier" <nsc@kernel.org>,
"Danilo Krummrich" <dakr@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Will Deacon" <will@kernel.org>, "Paul Walmsley" <pjw@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Courbot" <acourbot@nvidia.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Brendan Higgins" <brendan.higgins@linux.dev>,
"David Gow" <david@davidgow.net>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Arve Hjønnevåg" <arve@android.com>,
"Todd Kjos" <tkjos@android.com>,
"Christian Brauner" <christian@brauner.io>,
"Carlos Llamas" <cmllamas@google.com>,
"Alice Ryhl" <aliceryhl@google.com>,
"Jonathan Corbet" <corbet@lwn.net>
Cc: "Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Trevor Gross" <tmgross@umich.edu>,
rust-for-linux@vger.kernel.org, linux-kbuild@vger.kernel.org,
"Lorenzo Stoakes" <lorenzo.stoakes@oracle.com>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Liam R . Howlett" <Liam.Howlett@oracle.com>,
"Uladzislau Rezki" <urezki@gmail.com>,
linux-block@vger.kernel.org,
linux-arm-kernel@lists.infradead.org (moderated for
non-subscribers), "Alexandre Ghiti" <alex@ghiti.fr>,
linux-riscv@lists.infradead.org, nouveau@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, "Rae Moar" <raemoar63@gmail.com>,
linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com,
"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
"Bill Wendling" <morbo@google.com>,
"Justin Stitt" <justinstitt@google.com>,
llvm@lists.linux.dev, linux-kernel@vger.kernel.org,
"Shuah Khan" <skhan@linuxfoundation.org>,
linux-doc@vger.kernel.org
Subject: [PATCH 05/33] rust: remove `RUSTC_HAS_COERCE_POINTEE` and simplify code
Date: Wed, 1 Apr 2026 13:45:12 +0200 [thread overview]
Message-ID: <20260401114540.30108-6-ojeda@kernel.org> (raw)
In-Reply-To: <20260401114540.30108-1-ojeda@kernel.org>
With the Rust version bump in place, the `RUSTC_HAS_COERCE_POINTEE`
Kconfig (automatic) option is always true.
Thus remove the option and simplify the code.
In particular, this includes removing our use of the predecessor unstable
features we used with Rust < 1.84.0 (`coerce_unsized`, `dispatch_from_dyn`
and `unsize`).
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
init/Kconfig | 3 ---
rust/kernel/alloc/kbox.rs | 29 ++---------------------------
rust/kernel/lib.rs | 8 +-------
rust/kernel/list/arc.rs | 22 +---------------------
rust/kernel/sync/arc.rs | 21 ++-------------------
5 files changed, 6 insertions(+), 77 deletions(-)
diff --git a/init/Kconfig b/init/Kconfig
index c38f49228157..f9fac458e4d4 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -178,9 +178,6 @@ config LD_CAN_USE_KEEP_IN_OVERLAY
# https://github.com/llvm/llvm-project/pull/130661
def_bool LD_IS_BFD || LLD_VERSION >= 210000
-config RUSTC_HAS_COERCE_POINTEE
- def_bool RUSTC_VERSION >= 108400
-
config RUSTC_HAS_SPAN_FILE
def_bool RUSTC_VERSION >= 108800
diff --git a/rust/kernel/alloc/kbox.rs b/rust/kernel/alloc/kbox.rs
index 622b3529edfc..bd6da02c7ab8 100644
--- a/rust/kernel/alloc/kbox.rs
+++ b/rust/kernel/alloc/kbox.rs
@@ -77,33 +77,8 @@
/// `self.0` is always properly aligned and either points to memory allocated with `A` or, for
/// zero-sized types, is a dangling, well aligned pointer.
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
-pub struct Box<#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, pointee)] T: ?Sized, A: Allocator>(
- NonNull<T>,
- PhantomData<A>,
-);
-
-// This is to allow coercion from `Box<T, A>` to `Box<U, A>` if `T` can be converted to the
-// dynamically-sized type (DST) `U`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, A> core::ops::CoerceUnsized<Box<U, A>> for Box<T, A>
-where
- T: ?Sized + core::marker::Unsize<U>,
- U: ?Sized,
- A: Allocator,
-{
-}
-
-// This is to allow `Box<U, A>` to be dispatched on when `Box<T, A>` can be coerced into `Box<U,
-// A>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, A> core::ops::DispatchFromDyn<Box<U, A>> for Box<T, A>
-where
- T: ?Sized + core::marker::Unsize<U>,
- U: ?Sized,
- A: Allocator,
-{
-}
+#[derive(core::marker::CoercePointee)]
+pub struct Box<#[pointee] T: ?Sized, A: Allocator>(NonNull<T>, PhantomData<A>);
/// Type alias for [`Box`] with a [`Kmalloc`] allocator.
///
diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs
index 621cae75030c..66a09d77a2c4 100644
--- a/rust/kernel/lib.rs
+++ b/rust/kernel/lib.rs
@@ -39,17 +39,11 @@
//
// Expected to become stable.
#![feature(arbitrary_self_types)]
+#![feature(derive_coerce_pointee)]
//
// To be determined.
#![feature(used_with_arg)]
//
-// `feature(derive_coerce_pointee)` is expected to become stable. Before Rust
-// 1.84.0, it did not exist, so enable the predecessor features.
-#![cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, feature(derive_coerce_pointee))]
-#![cfg_attr(not(CONFIG_RUSTC_HAS_COERCE_POINTEE), feature(coerce_unsized))]
-#![cfg_attr(not(CONFIG_RUSTC_HAS_COERCE_POINTEE), feature(dispatch_from_dyn))]
-#![cfg_attr(not(CONFIG_RUSTC_HAS_COERCE_POINTEE), feature(unsize))]
-//
// `feature(file_with_nul)` is expected to become stable. Before Rust 1.89.0, it did not exist, so
// enable it conditionally.
#![cfg_attr(CONFIG_RUSTC_HAS_FILE_WITH_NUL, feature(file_with_nul))]
diff --git a/rust/kernel/list/arc.rs b/rust/kernel/list/arc.rs
index e1082423909c..a9a2b0178f65 100644
--- a/rust/kernel/list/arc.rs
+++ b/rust/kernel/list/arc.rs
@@ -160,7 +160,7 @@ fn try_new_list_arc(&self) -> bool {
///
/// [`List`]: crate::list::List
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
+#[derive(core::marker::CoercePointee)]
pub struct ListArc<T, const ID: u64 = 0>
where
T: ListArcSafe<ID> + ?Sized,
@@ -443,26 +443,6 @@ fn as_ref(&self) -> &Arc<T> {
}
}
-// This is to allow coercion from `ListArc<T>` to `ListArc<U>` if `T` can be converted to the
-// dynamically-sized type (DST) `U`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, const ID: u64> core::ops::CoerceUnsized<ListArc<U, ID>> for ListArc<T, ID>
-where
- T: ListArcSafe<ID> + core::marker::Unsize<U> + ?Sized,
- U: ListArcSafe<ID> + ?Sized,
-{
-}
-
-// This is to allow `ListArc<U>` to be dispatched on when `ListArc<T>` can be coerced into
-// `ListArc<U>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, const ID: u64> core::ops::DispatchFromDyn<ListArc<U, ID>> for ListArc<T, ID>
-where
- T: ListArcSafe<ID> + core::marker::Unsize<U> + ?Sized,
- U: ListArcSafe<ID> + ?Sized,
-{
-}
-
/// A utility for tracking whether a [`ListArc`] exists using an atomic.
///
/// # Invariants
diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs
index 921e19333b89..18d6c0d62ce0 100644
--- a/rust/kernel/sync/arc.rs
+++ b/rust/kernel/sync/arc.rs
@@ -128,7 +128,7 @@
/// # Ok::<(), Error>(())
/// ```
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
+#[derive(core::marker::CoercePointee)]
pub struct Arc<T: ?Sized> {
ptr: NonNull<ArcInner<T>>,
// NB: this informs dropck that objects of type `ArcInner<T>` may be used in `<Arc<T> as
@@ -182,15 +182,6 @@ unsafe fn container_of(ptr: *const T) -> NonNull<ArcInner<T>> {
}
}
-// This is to allow coercion from `Arc<T>` to `Arc<U>` if `T` can be converted to the
-// dynamically-sized type (DST) `U`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T: ?Sized + core::marker::Unsize<U>, U: ?Sized> core::ops::CoerceUnsized<Arc<U>> for Arc<T> {}
-
-// This is to allow `Arc<U>` to be dispatched on when `Arc<T>` can be coerced into `Arc<U>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T: ?Sized + core::marker::Unsize<U>, U: ?Sized> core::ops::DispatchFromDyn<Arc<U>> for Arc<T> {}
-
// SAFETY: It is safe to send `Arc<T>` to another thread when the underlying `T` is `Sync` because
// it effectively means sharing `&T` (which is safe because `T` is `Sync`); additionally, it needs
// `T` to be `Send` because any thread that has an `Arc<T>` may ultimately access `T` using a
@@ -547,20 +538,12 @@ fn from(item: Pin<UniqueArc<T>>) -> Self {
/// # Ok::<(), Error>(())
/// ```
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
+#[derive(core::marker::CoercePointee)]
pub struct ArcBorrow<'a, T: ?Sized + 'a> {
inner: NonNull<ArcInner<T>>,
_p: PhantomData<&'a ()>,
}
-// This is to allow `ArcBorrow<U>` to be dispatched on when `ArcBorrow<T>` can be coerced into
-// `ArcBorrow<U>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T: ?Sized + core::marker::Unsize<U>, U: ?Sized> core::ops::DispatchFromDyn<ArcBorrow<'_, U>>
- for ArcBorrow<'_, T>
-{
-}
-
impl<T: ?Sized> Clone for ArcBorrow<'_, T> {
fn clone(&self) -> Self {
*self
--
2.53.0
WARNING: multiple messages have this Message-ID (diff)
From: Miguel Ojeda <ojeda@kernel.org>
To: "Miguel Ojeda" <ojeda@kernel.org>,
"Nathan Chancellor" <nathan@kernel.org>,
"Nicolas Schier" <nsc@kernel.org>,
"Danilo Krummrich" <dakr@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Will Deacon" <will@kernel.org>, "Paul Walmsley" <pjw@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Courbot" <acourbot@nvidia.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Brendan Higgins" <brendan.higgins@linux.dev>,
"David Gow" <david@davidgow.net>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Arve Hjønnevåg" <arve@android.com>,
"Todd Kjos" <tkjos@android.com>,
"Christian Brauner" <christian@brauner.io>,
"Carlos Llamas" <cmllamas@google.com>,
"Alice Ryhl" <aliceryhl@google.com>,
"Jonathan Corbet" <corbet@lwn.net>
Cc: "Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Trevor Gross" <tmgross@umich.edu>,
rust-for-linux@vger.kernel.org, linux-kbuild@vger.kernel.org,
"Lorenzo Stoakes" <lorenzo.stoakes@oracle.com>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Liam R . Howlett" <Liam.Howlett@oracle.com>,
"Uladzislau Rezki" <urezki@gmail.com>,
linux-block@vger.kernel.org,
linux-arm-kernel@lists.infradead.org (moderated for
non-subscribers), "Alexandre Ghiti" <alex@ghiti.fr>,
linux-riscv@lists.infradead.org, nouveau@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, "Rae Moar" <raemoar63@gmail.com>,
linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com,
"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
"Bill Wendling" <morbo@google.com>,
"Justin Stitt" <justinstitt@google.com>,
llvm@lists.linux.dev, linux-kernel@vger.kernel.org,
"Shuah Khan" <skhan@linuxfoundation.org>,
linux-doc@vger.kernel.org
Subject: [PATCH 05/33] rust: remove `RUSTC_HAS_COERCE_POINTEE` and simplify code
Date: Wed, 1 Apr 2026 13:45:12 +0200 [thread overview]
Message-ID: <20260401114540.30108-6-ojeda@kernel.org> (raw)
In-Reply-To: <20260401114540.30108-1-ojeda@kernel.org>
With the Rust version bump in place, the `RUSTC_HAS_COERCE_POINTEE`
Kconfig (automatic) option is always true.
Thus remove the option and simplify the code.
In particular, this includes removing our use of the predecessor unstable
features we used with Rust < 1.84.0 (`coerce_unsized`, `dispatch_from_dyn`
and `unsize`).
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
init/Kconfig | 3 ---
rust/kernel/alloc/kbox.rs | 29 ++---------------------------
rust/kernel/lib.rs | 8 +-------
rust/kernel/list/arc.rs | 22 +---------------------
rust/kernel/sync/arc.rs | 21 ++-------------------
5 files changed, 6 insertions(+), 77 deletions(-)
diff --git a/init/Kconfig b/init/Kconfig
index c38f49228157..f9fac458e4d4 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -178,9 +178,6 @@ config LD_CAN_USE_KEEP_IN_OVERLAY
# https://github.com/llvm/llvm-project/pull/130661
def_bool LD_IS_BFD || LLD_VERSION >= 210000
-config RUSTC_HAS_COERCE_POINTEE
- def_bool RUSTC_VERSION >= 108400
-
config RUSTC_HAS_SPAN_FILE
def_bool RUSTC_VERSION >= 108800
diff --git a/rust/kernel/alloc/kbox.rs b/rust/kernel/alloc/kbox.rs
index 622b3529edfc..bd6da02c7ab8 100644
--- a/rust/kernel/alloc/kbox.rs
+++ b/rust/kernel/alloc/kbox.rs
@@ -77,33 +77,8 @@
/// `self.0` is always properly aligned and either points to memory allocated with `A` or, for
/// zero-sized types, is a dangling, well aligned pointer.
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
-pub struct Box<#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, pointee)] T: ?Sized, A: Allocator>(
- NonNull<T>,
- PhantomData<A>,
-);
-
-// This is to allow coercion from `Box<T, A>` to `Box<U, A>` if `T` can be converted to the
-// dynamically-sized type (DST) `U`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, A> core::ops::CoerceUnsized<Box<U, A>> for Box<T, A>
-where
- T: ?Sized + core::marker::Unsize<U>,
- U: ?Sized,
- A: Allocator,
-{
-}
-
-// This is to allow `Box<U, A>` to be dispatched on when `Box<T, A>` can be coerced into `Box<U,
-// A>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, A> core::ops::DispatchFromDyn<Box<U, A>> for Box<T, A>
-where
- T: ?Sized + core::marker::Unsize<U>,
- U: ?Sized,
- A: Allocator,
-{
-}
+#[derive(core::marker::CoercePointee)]
+pub struct Box<#[pointee] T: ?Sized, A: Allocator>(NonNull<T>, PhantomData<A>);
/// Type alias for [`Box`] with a [`Kmalloc`] allocator.
///
diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs
index 621cae75030c..66a09d77a2c4 100644
--- a/rust/kernel/lib.rs
+++ b/rust/kernel/lib.rs
@@ -39,17 +39,11 @@
//
// Expected to become stable.
#![feature(arbitrary_self_types)]
+#![feature(derive_coerce_pointee)]
//
// To be determined.
#![feature(used_with_arg)]
//
-// `feature(derive_coerce_pointee)` is expected to become stable. Before Rust
-// 1.84.0, it did not exist, so enable the predecessor features.
-#![cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, feature(derive_coerce_pointee))]
-#![cfg_attr(not(CONFIG_RUSTC_HAS_COERCE_POINTEE), feature(coerce_unsized))]
-#![cfg_attr(not(CONFIG_RUSTC_HAS_COERCE_POINTEE), feature(dispatch_from_dyn))]
-#![cfg_attr(not(CONFIG_RUSTC_HAS_COERCE_POINTEE), feature(unsize))]
-//
// `feature(file_with_nul)` is expected to become stable. Before Rust 1.89.0, it did not exist, so
// enable it conditionally.
#![cfg_attr(CONFIG_RUSTC_HAS_FILE_WITH_NUL, feature(file_with_nul))]
diff --git a/rust/kernel/list/arc.rs b/rust/kernel/list/arc.rs
index e1082423909c..a9a2b0178f65 100644
--- a/rust/kernel/list/arc.rs
+++ b/rust/kernel/list/arc.rs
@@ -160,7 +160,7 @@ fn try_new_list_arc(&self) -> bool {
///
/// [`List`]: crate::list::List
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
+#[derive(core::marker::CoercePointee)]
pub struct ListArc<T, const ID: u64 = 0>
where
T: ListArcSafe<ID> + ?Sized,
@@ -443,26 +443,6 @@ fn as_ref(&self) -> &Arc<T> {
}
}
-// This is to allow coercion from `ListArc<T>` to `ListArc<U>` if `T` can be converted to the
-// dynamically-sized type (DST) `U`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, const ID: u64> core::ops::CoerceUnsized<ListArc<U, ID>> for ListArc<T, ID>
-where
- T: ListArcSafe<ID> + core::marker::Unsize<U> + ?Sized,
- U: ListArcSafe<ID> + ?Sized,
-{
-}
-
-// This is to allow `ListArc<U>` to be dispatched on when `ListArc<T>` can be coerced into
-// `ListArc<U>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, const ID: u64> core::ops::DispatchFromDyn<ListArc<U, ID>> for ListArc<T, ID>
-where
- T: ListArcSafe<ID> + core::marker::Unsize<U> + ?Sized,
- U: ListArcSafe<ID> + ?Sized,
-{
-}
-
/// A utility for tracking whether a [`ListArc`] exists using an atomic.
///
/// # Invariants
diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs
index 921e19333b89..18d6c0d62ce0 100644
--- a/rust/kernel/sync/arc.rs
+++ b/rust/kernel/sync/arc.rs
@@ -128,7 +128,7 @@
/// # Ok::<(), Error>(())
/// ```
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
+#[derive(core::marker::CoercePointee)]
pub struct Arc<T: ?Sized> {
ptr: NonNull<ArcInner<T>>,
// NB: this informs dropck that objects of type `ArcInner<T>` may be used in `<Arc<T> as
@@ -182,15 +182,6 @@ unsafe fn container_of(ptr: *const T) -> NonNull<ArcInner<T>> {
}
}
-// This is to allow coercion from `Arc<T>` to `Arc<U>` if `T` can be converted to the
-// dynamically-sized type (DST) `U`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T: ?Sized + core::marker::Unsize<U>, U: ?Sized> core::ops::CoerceUnsized<Arc<U>> for Arc<T> {}
-
-// This is to allow `Arc<U>` to be dispatched on when `Arc<T>` can be coerced into `Arc<U>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T: ?Sized + core::marker::Unsize<U>, U: ?Sized> core::ops::DispatchFromDyn<Arc<U>> for Arc<T> {}
-
// SAFETY: It is safe to send `Arc<T>` to another thread when the underlying `T` is `Sync` because
// it effectively means sharing `&T` (which is safe because `T` is `Sync`); additionally, it needs
// `T` to be `Send` because any thread that has an `Arc<T>` may ultimately access `T` using a
@@ -547,20 +538,12 @@ fn from(item: Pin<UniqueArc<T>>) -> Self {
/// # Ok::<(), Error>(())
/// ```
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
+#[derive(core::marker::CoercePointee)]
pub struct ArcBorrow<'a, T: ?Sized + 'a> {
inner: NonNull<ArcInner<T>>,
_p: PhantomData<&'a ()>,
}
-// This is to allow `ArcBorrow<U>` to be dispatched on when `ArcBorrow<T>` can be coerced into
-// `ArcBorrow<U>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T: ?Sized + core::marker::Unsize<U>, U: ?Sized> core::ops::DispatchFromDyn<ArcBorrow<'_, U>>
- for ArcBorrow<'_, T>
-{
-}
-
impl<T: ?Sized> Clone for ArcBorrow<'_, T> {
fn clone(&self) -> Self {
*self
--
2.53.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Miguel Ojeda <ojeda@kernel.org>
To: "Miguel Ojeda" <ojeda@kernel.org>,
"Nathan Chancellor" <nathan@kernel.org>,
"Nicolas Schier" <nsc@kernel.org>,
"Danilo Krummrich" <dakr@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Will Deacon" <will@kernel.org>, "Paul Walmsley" <pjw@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Courbot" <acourbot@nvidia.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Brendan Higgins" <brendan.higgins@linux.dev>,
"David Gow" <david@davidgow.net>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Arve Hjønnevåg" <arve@android.com>,
"Todd Kjos" <tkjos@android.com>,
"Christian Brauner" <christian@brauner.io>,
"Carlos Llamas" <cmllamas@google.com>,
"Alice Ryhl" <aliceryhl@google.com>,
"Jonathan Corbet" <corbet@lwn.net>
Cc: "Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Trevor Gross" <tmgross@umich.edu>,
rust-for-linux@vger.kernel.org, linux-kbuild@vger.kernel.org,
"Lorenzo Stoakes" <lorenzo.stoakes@oracle.com>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Liam R . Howlett" <Liam.Howlett@oracle.com>,
"Uladzislau Rezki" <urezki@gmail.com>,
linux-block@vger.kernel.org,
"moderated for non-subscribers"
<linux-arm-kernel@lists.infradead.org>,
"Alexandre Ghiti" <alex@ghiti.fr>,
linux-riscv@lists.infradead.org, nouveau@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, "Rae Moar" <raemoar63@gmail.com>,
linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com,
"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
"Bill Wendling" <morbo@google.com>,
"Justin Stitt" <justinstitt@google.com>,
llvm@lists.linux.dev, linux-kernel@vger.kernel.org,
"Shuah Khan" <skhan@linuxfoundation.org>,
linux-doc@vger.kernel.org
Subject: [PATCH 05/33] rust: remove `RUSTC_HAS_COERCE_POINTEE` and simplify code
Date: Wed, 1 Apr 2026 13:45:12 +0200 [thread overview]
Message-ID: <20260401114540.30108-6-ojeda@kernel.org> (raw)
In-Reply-To: <20260401114540.30108-1-ojeda@kernel.org>
With the Rust version bump in place, the `RUSTC_HAS_COERCE_POINTEE`
Kconfig (automatic) option is always true.
Thus remove the option and simplify the code.
In particular, this includes removing our use of the predecessor unstable
features we used with Rust < 1.84.0 (`coerce_unsized`, `dispatch_from_dyn`
and `unsize`).
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
init/Kconfig | 3 ---
rust/kernel/alloc/kbox.rs | 29 ++---------------------------
rust/kernel/lib.rs | 8 +-------
rust/kernel/list/arc.rs | 22 +---------------------
rust/kernel/sync/arc.rs | 21 ++-------------------
5 files changed, 6 insertions(+), 77 deletions(-)
diff --git a/init/Kconfig b/init/Kconfig
index c38f49228157..f9fac458e4d4 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -178,9 +178,6 @@ config LD_CAN_USE_KEEP_IN_OVERLAY
# https://github.com/llvm/llvm-project/pull/130661
def_bool LD_IS_BFD || LLD_VERSION >= 210000
-config RUSTC_HAS_COERCE_POINTEE
- def_bool RUSTC_VERSION >= 108400
-
config RUSTC_HAS_SPAN_FILE
def_bool RUSTC_VERSION >= 108800
diff --git a/rust/kernel/alloc/kbox.rs b/rust/kernel/alloc/kbox.rs
index 622b3529edfc..bd6da02c7ab8 100644
--- a/rust/kernel/alloc/kbox.rs
+++ b/rust/kernel/alloc/kbox.rs
@@ -77,33 +77,8 @@
/// `self.0` is always properly aligned and either points to memory allocated with `A` or, for
/// zero-sized types, is a dangling, well aligned pointer.
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
-pub struct Box<#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, pointee)] T: ?Sized, A: Allocator>(
- NonNull<T>,
- PhantomData<A>,
-);
-
-// This is to allow coercion from `Box<T, A>` to `Box<U, A>` if `T` can be converted to the
-// dynamically-sized type (DST) `U`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, A> core::ops::CoerceUnsized<Box<U, A>> for Box<T, A>
-where
- T: ?Sized + core::marker::Unsize<U>,
- U: ?Sized,
- A: Allocator,
-{
-}
-
-// This is to allow `Box<U, A>` to be dispatched on when `Box<T, A>` can be coerced into `Box<U,
-// A>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, A> core::ops::DispatchFromDyn<Box<U, A>> for Box<T, A>
-where
- T: ?Sized + core::marker::Unsize<U>,
- U: ?Sized,
- A: Allocator,
-{
-}
+#[derive(core::marker::CoercePointee)]
+pub struct Box<#[pointee] T: ?Sized, A: Allocator>(NonNull<T>, PhantomData<A>);
/// Type alias for [`Box`] with a [`Kmalloc`] allocator.
///
diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs
index 621cae75030c..66a09d77a2c4 100644
--- a/rust/kernel/lib.rs
+++ b/rust/kernel/lib.rs
@@ -39,17 +39,11 @@
//
// Expected to become stable.
#![feature(arbitrary_self_types)]
+#![feature(derive_coerce_pointee)]
//
// To be determined.
#![feature(used_with_arg)]
//
-// `feature(derive_coerce_pointee)` is expected to become stable. Before Rust
-// 1.84.0, it did not exist, so enable the predecessor features.
-#![cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, feature(derive_coerce_pointee))]
-#![cfg_attr(not(CONFIG_RUSTC_HAS_COERCE_POINTEE), feature(coerce_unsized))]
-#![cfg_attr(not(CONFIG_RUSTC_HAS_COERCE_POINTEE), feature(dispatch_from_dyn))]
-#![cfg_attr(not(CONFIG_RUSTC_HAS_COERCE_POINTEE), feature(unsize))]
-//
// `feature(file_with_nul)` is expected to become stable. Before Rust 1.89.0, it did not exist, so
// enable it conditionally.
#![cfg_attr(CONFIG_RUSTC_HAS_FILE_WITH_NUL, feature(file_with_nul))]
diff --git a/rust/kernel/list/arc.rs b/rust/kernel/list/arc.rs
index e1082423909c..a9a2b0178f65 100644
--- a/rust/kernel/list/arc.rs
+++ b/rust/kernel/list/arc.rs
@@ -160,7 +160,7 @@ fn try_new_list_arc(&self) -> bool {
///
/// [`List`]: crate::list::List
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
+#[derive(core::marker::CoercePointee)]
pub struct ListArc<T, const ID: u64 = 0>
where
T: ListArcSafe<ID> + ?Sized,
@@ -443,26 +443,6 @@ fn as_ref(&self) -> &Arc<T> {
}
}
-// This is to allow coercion from `ListArc<T>` to `ListArc<U>` if `T` can be converted to the
-// dynamically-sized type (DST) `U`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, const ID: u64> core::ops::CoerceUnsized<ListArc<U, ID>> for ListArc<T, ID>
-where
- T: ListArcSafe<ID> + core::marker::Unsize<U> + ?Sized,
- U: ListArcSafe<ID> + ?Sized,
-{
-}
-
-// This is to allow `ListArc<U>` to be dispatched on when `ListArc<T>` can be coerced into
-// `ListArc<U>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T, U, const ID: u64> core::ops::DispatchFromDyn<ListArc<U, ID>> for ListArc<T, ID>
-where
- T: ListArcSafe<ID> + core::marker::Unsize<U> + ?Sized,
- U: ListArcSafe<ID> + ?Sized,
-{
-}
-
/// A utility for tracking whether a [`ListArc`] exists using an atomic.
///
/// # Invariants
diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs
index 921e19333b89..18d6c0d62ce0 100644
--- a/rust/kernel/sync/arc.rs
+++ b/rust/kernel/sync/arc.rs
@@ -128,7 +128,7 @@
/// # Ok::<(), Error>(())
/// ```
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
+#[derive(core::marker::CoercePointee)]
pub struct Arc<T: ?Sized> {
ptr: NonNull<ArcInner<T>>,
// NB: this informs dropck that objects of type `ArcInner<T>` may be used in `<Arc<T> as
@@ -182,15 +182,6 @@ unsafe fn container_of(ptr: *const T) -> NonNull<ArcInner<T>> {
}
}
-// This is to allow coercion from `Arc<T>` to `Arc<U>` if `T` can be converted to the
-// dynamically-sized type (DST) `U`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T: ?Sized + core::marker::Unsize<U>, U: ?Sized> core::ops::CoerceUnsized<Arc<U>> for Arc<T> {}
-
-// This is to allow `Arc<U>` to be dispatched on when `Arc<T>` can be coerced into `Arc<U>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T: ?Sized + core::marker::Unsize<U>, U: ?Sized> core::ops::DispatchFromDyn<Arc<U>> for Arc<T> {}
-
// SAFETY: It is safe to send `Arc<T>` to another thread when the underlying `T` is `Sync` because
// it effectively means sharing `&T` (which is safe because `T` is `Sync`); additionally, it needs
// `T` to be `Send` because any thread that has an `Arc<T>` may ultimately access `T` using a
@@ -547,20 +538,12 @@ fn from(item: Pin<UniqueArc<T>>) -> Self {
/// # Ok::<(), Error>(())
/// ```
#[repr(transparent)]
-#[cfg_attr(CONFIG_RUSTC_HAS_COERCE_POINTEE, derive(core::marker::CoercePointee))]
+#[derive(core::marker::CoercePointee)]
pub struct ArcBorrow<'a, T: ?Sized + 'a> {
inner: NonNull<ArcInner<T>>,
_p: PhantomData<&'a ()>,
}
-// This is to allow `ArcBorrow<U>` to be dispatched on when `ArcBorrow<T>` can be coerced into
-// `ArcBorrow<U>`.
-#[cfg(not(CONFIG_RUSTC_HAS_COERCE_POINTEE))]
-impl<T: ?Sized + core::marker::Unsize<U>, U: ?Sized> core::ops::DispatchFromDyn<ArcBorrow<'_, U>>
- for ArcBorrow<'_, T>
-{
-}
-
impl<T: ?Sized> Clone for ArcBorrow<'_, T> {
fn clone(&self) -> Self {
*self
--
2.53.0
next prev parent reply other threads:[~2026-04-01 11:47 UTC|newest]
Thread overview: 325+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-01 11:45 [PATCH 00/33] rust: bump minimum Rust and `bindgen` versions Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` [PATCH 01/33] rust: bump Rust minimum supported version to 1.85.0 (Debian Trixie) Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 12:24 ` Alice Ryhl
2026-04-01 12:24 ` Alice Ryhl
2026-04-01 12:24 ` Alice Ryhl
2026-04-01 12:38 ` Miguel Ojeda
2026-04-01 12:38 ` Miguel Ojeda
2026-04-01 12:38 ` Miguel Ojeda
2026-04-01 12:28 ` Danilo Krummrich
2026-04-01 12:28 ` Danilo Krummrich
2026-04-01 12:28 ` Danilo Krummrich
2026-04-01 13:11 ` Gary Guo
2026-04-01 13:11 ` Gary Guo
2026-04-01 13:28 ` Gary Guo
2026-04-01 13:28 ` Gary Guo
2026-04-01 13:31 ` Miguel Ojeda
2026-04-01 13:31 ` Miguel Ojeda
2026-04-01 13:31 ` Miguel Ojeda
2026-04-01 14:57 ` Benno Lossin
2026-04-01 14:57 ` Benno Lossin
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 02/33] rust: bump Clippy's MSRV and clean `incompatible_msrv` allows Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 13:15 ` Gary Guo
2026-04-01 13:15 ` Gary Guo
2026-04-01 15:39 ` Danilo Krummrich
2026-04-01 15:39 ` Danilo Krummrich
2026-04-01 15:39 ` Danilo Krummrich
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 03/33] rust: simplify `RUSTC_VERSION` Kconfig conditions Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 13:18 ` Gary Guo
2026-04-01 13:18 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 04/33] rust: remove `RUSTC_HAS_SLICE_AS_FLATTENED` and simplify code Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 13:18 ` Gary Guo
2026-04-01 13:18 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` Miguel Ojeda [this message]
2026-04-01 11:45 ` [PATCH 05/33] rust: remove `RUSTC_HAS_COERCE_POINTEE` " Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 13:44 ` Gary Guo
2026-04-01 13:44 ` Gary Guo
2026-04-01 15:38 ` Danilo Krummrich
2026-04-01 15:38 ` Danilo Krummrich
2026-04-01 15:38 ` Danilo Krummrich
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 06/33] rust: kbuild: remove skipping of `-Wrustdoc::unescaped_backticks` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 13:44 ` Gary Guo
2026-04-01 13:44 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 07/33] rust: kbuild: remove `feature(...)`s that are now stable Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 13:51 ` Gary Guo
2026-04-01 13:51 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 08/33] rust: kbuild: simplify `--remap-path-prefix` workaround Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 13:59 ` Gary Guo
2026-04-01 13:59 ` Gary Guo
2026-04-01 17:36 ` Miguel Ojeda
2026-04-01 17:36 ` Miguel Ojeda
2026-04-01 17:36 ` Miguel Ojeda
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 09/33] rust: kbuild: make `--remap-path-prefix` workaround conditional Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 14:08 ` Gary Guo
2026-04-01 14:08 ` Gary Guo
2026-04-01 17:39 ` Miguel Ojeda
2026-04-01 17:39 ` Miguel Ojeda
2026-04-01 17:39 ` Miguel Ojeda
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 10/33] rust: transmute: simplify code with Rust 1.80.0 `split_at_*checked()` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 14:10 ` Gary Guo
2026-04-01 14:10 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-05 19:29 ` Miguel Ojeda
2026-04-05 19:29 ` Miguel Ojeda
2026-04-05 19:29 ` Miguel Ojeda
2026-04-01 11:45 ` [PATCH 11/33] rust: alloc: simplify with `NonNull::add()` now that it is stable Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 12:28 ` Danilo Krummrich
2026-04-01 12:28 ` Danilo Krummrich
2026-04-01 12:28 ` Danilo Krummrich
2026-04-01 14:12 ` Gary Guo
2026-04-01 14:12 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-05 19:31 ` Miguel Ojeda
2026-04-05 19:31 ` Miguel Ojeda
2026-04-05 19:31 ` Miguel Ojeda
2026-04-01 11:45 ` [PATCH 12/33] rust: macros: update `extract_if` MSRV TODO comment Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 14:18 ` Gary Guo
2026-04-01 14:18 ` Gary Guo
2026-04-01 17:45 ` Miguel Ojeda
2026-04-01 17:45 ` Miguel Ojeda
2026-04-01 17:45 ` Miguel Ojeda
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 13/33] rust: block: update `const_refs_to_static` " Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 14:37 ` Gary Guo
2026-04-01 14:37 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-02 1:43 ` Gary Guo
2026-04-02 1:43 ` Gary Guo
2026-04-02 1:43 ` Gary Guo
2026-04-01 11:45 ` [PATCH 14/33] rust: bump `bindgen` minimum supported version to 0.71.1 (Debian Trixie) Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 14:38 ` Gary Guo
2026-04-01 14:38 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 15/33] rust: rust_is_available: remove warning for 0.66.[01] buggy versions Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 14:58 ` Gary Guo
2026-04-01 14:58 ` Gary Guo
2026-04-02 7:12 ` Miguel Ojeda
2026-04-02 7:12 ` Miguel Ojeda
2026-04-02 7:12 ` Miguel Ojeda
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 16/33] rust: rust_is_available: remove warning for < 0.69.5 && libclang >= 19.1 Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 17/33] rust: kbuild: update `bindgen --rust-target` version and replace comment Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:05 ` Gary Guo
2026-04-01 15:05 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-05 19:31 ` Miguel Ojeda
2026-04-05 19:31 ` Miguel Ojeda
2026-04-05 19:31 ` Miguel Ojeda
2026-04-01 11:45 ` [PATCH 18/33] rust: kbuild: remove "dummy parameter" workaround for `bindgen` < 0.71.1 Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:05 ` Gary Guo
2026-04-01 15:05 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 19/33] rust: kbuild: remove "`try` keyword" workaround for `bindgen` < 0.59.2 Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:05 ` Gary Guo
2026-04-01 15:05 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 20/33] rust: kbuild: remove unneeded old `allow`s for generated layout tests Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:05 ` Gary Guo
2026-04-01 15:05 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-05 19:31 ` Miguel Ojeda
2026-04-05 19:31 ` Miguel Ojeda
2026-04-05 19:31 ` Miguel Ojeda
2026-04-01 11:45 ` [PATCH 21/33] gpu: nova-core: bindings: remove unneeded `cfg_attr` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 12:29 ` Danilo Krummrich
2026-04-01 12:29 ` Danilo Krummrich
2026-04-01 12:29 ` Danilo Krummrich
2026-04-01 15:08 ` Gary Guo
2026-04-01 15:08 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 22/33] docs: rust: quick-start: openSUSE provides `rust-src` package nowadays Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 23/33] docs: rust: quick-start: update Ubuntu versioned packages Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-05 19:35 ` Miguel Ojeda
2026-04-05 19:35 ` Miguel Ojeda
2026-04-05 19:35 ` Miguel Ojeda
2026-04-06 0:06 ` Gary Guo
2026-04-06 0:06 ` Gary Guo
2026-04-06 0:06 ` Gary Guo
2026-04-06 0:14 ` Miguel Ojeda
2026-04-06 0:14 ` Miguel Ojeda
2026-04-06 0:14 ` Miguel Ojeda
2026-04-01 11:45 ` [PATCH 24/33] docs: rust: quick-start: update minimum Ubuntu version Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 25/33] docs: rust: quick-start: add Ubuntu 26.04 LTS and remove subsection title Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 26/33] docs: rust: quick-start: remove Gentoo "testing" note Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 27/33] docs: rust: quick-start: remove Nix "unstable channel" note Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:10 ` Gary Guo
2026-04-01 15:10 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 28/33] docs: rust: quick-start: remove GDB/Binutils mention Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:15 ` Gary Guo
2026-04-01 15:15 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 29/33] docs: rust: general-information: simplify Kconfig example Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:16 ` Gary Guo
2026-04-01 15:16 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 30/33] docs: rust: general-information: use real example Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:16 ` Gary Guo
2026-04-01 15:16 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 31/33] rust: declare cfi_encoding for lru_status Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:20 ` Gary Guo
2026-04-01 15:20 ` Gary Guo
2026-04-01 11:45 ` [PATCH 32/33] rust: kbuild: support global per-version flags Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:26 ` Gary Guo
2026-04-01 15:26 ` Gary Guo
2026-04-05 23:15 ` Miguel Ojeda
2026-04-05 23:15 ` Miguel Ojeda
2026-04-05 23:15 ` Miguel Ojeda
2026-04-06 0:09 ` Gary Guo
2026-04-06 0:09 ` Gary Guo
2026-04-06 0:09 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 11:45 ` [PATCH 33/33] rust: kbuild: allow `clippy::precedence` for Rust < 1.86.0 Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 11:45 ` Miguel Ojeda
2026-04-01 15:28 ` Gary Guo
2026-04-01 15:28 ` Gary Guo
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-01 22:59 ` Tamir Duberstein
2026-04-06 13:21 ` Miguel Ojeda
2026-04-06 13:21 ` Miguel Ojeda
2026-04-06 13:21 ` Miguel Ojeda
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=20260401114540.30108-6-ojeda@kernel.org \
--to=ojeda@kernel.org \
--cc=Liam.Howlett@oracle.com \
--cc=a.hindborg@kernel.org \
--cc=acourbot@nvidia.com \
--cc=airlied@gmail.com \
--cc=alex@ghiti.fr \
--cc=aliceryhl@google.com \
--cc=aou@eecs.berkeley.edu \
--cc=arve@android.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=brendan.higgins@linux.dev \
--cc=catalin.marinas@arm.com \
--cc=christian@brauner.io \
--cc=cmllamas@google.com \
--cc=corbet@lwn.net \
--cc=dakr@kernel.org \
--cc=david@davidgow.net \
--cc=dri-devel@lists.freedesktop.org \
--cc=gary@garyguo.net \
--cc=gregkh@linuxfoundation.org \
--cc=justinstitt@google.com \
--cc=kunit-dev@googlegroups.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=llvm@lists.linux.dev \
--cc=lorenzo.stoakes@oracle.com \
--cc=lossin@kernel.org \
--cc=morbo@google.com \
--cc=nathan@kernel.org \
--cc=nick.desaulniers+lkml@gmail.com \
--cc=nouveau@lists.freedesktop.org \
--cc=nsc@kernel.org \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=raemoar63@gmail.com \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=skhan@linuxfoundation.org \
--cc=tkjos@android.com \
--cc=tmgross@umich.edu \
--cc=urezki@gmail.com \
--cc=vbabka@kernel.org \
--cc=will@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.