From: Miguel Ojeda <ojeda@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"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>,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [GIT PULL] Rust for 6.18
Date: Sun, 28 Sep 2025 19:35:40 +0200 [thread overview]
Message-ID: <20250928173541.229298-1-ojeda@kernel.org> (raw)
Hi Linus,
This is the next round of the Rust support.
A small one this time. One of the trees I merge (pin-init) is going this
cycle through DRM for convenience.
No conflicts expected at this time. Nevertheless, I did a test merge and
tested it a bit and it seems fine.
When you merge other trees, you will have some. The resolutions in -next
should be fine, except for a `rustfmt` issue in one, so please remember
to double-check that on your merges (it may be solved by the time you
get to it).
All commits have been in linux-next for at least four rounds, most for
two weeks or more.
Please pull for v6.18 -- thanks!
Cheers,
Miguel
The following changes since commit 76eeb9b8de9880ca38696b2fb56ac45ac0a25c6c:
Linux 6.17-rc5 (2025-09-07 14:22:57 -0700)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/ojeda/linux.git tags/rust-6.18
for you to fetch changes up to f3f6b3664302e16ef1c6b91034a72df5564d6b8a:
gpu: nova-core: use Alignment for alignment-related operations (2025-09-22 23:56:06 +0200)
----------------------------------------------------------------
Rust changes for v6.18
Toolchain and infrastructure:
- Derive 'Zeroable' for all structs and unions generated by 'bindgen'
where possible and corresponding cleanups. To do so, add the
'pin-init' crate as a dependency to 'bindings' and 'uapi'.
It also includes its first use in the 'cpufreq' module, with more to
come in the next cycle.
- Add warning to the 'rustdoc' target to detect broken 'srctree/' links
and fix existing cases.
- Remove support for unused (since v6.16) host '#[test]'s, simplifying
the 'rusttest' target. Tests should generally run within KUnit.
'kernel' crate:
- Add 'ptr' module with a new 'Alignment' type, which is always a power
of two and is used to validate that a given value is a valid
alignment and to perform masking and alignment operations:
// Checked at build time.
assert_eq!(Alignment::new::<16>().as_usize(), 16);
// Checked at runtime.
assert_eq!(Alignment::new_checked(15), None);
assert_eq!(Alignment::of::<u8>().log2(), 0);
assert_eq!(0x25u8.align_down(Alignment::new::<0x10>()), 0x20);
assert_eq!(0x5u8.align_up(Alignment::new::<0x10>()), Some(0x10));
assert_eq!(u8::MAX.align_up(Alignment::new::<0x10>()), None);
It also includes its first use in Nova.
- Add 'core::mem::{align,size}_of{,_val}' to the prelude, matching
Rust 1.80.0.
- Keep going with the steps on our migration to the standard library
'core::ffi::CStr' type (use 'kernel::{fmt, prelude::fmt!}' and use
upstream method names).
- 'error' module: improve 'Error::from_errno' and 'to_result'
documentation, including examples/tests.
- 'sync' module: extend 'aref' submodule documentation now that it
exists, and more updates to complete the ongoing move of 'ARef' and
'AlwaysRefCounted' to 'sync::aref'.
- 'list' module: add an example/test for 'ListLinksSelfPtr' usage.
- 'alloc' module:
- Implement 'Box::pin_slice()', which constructs a pinned slice of
elements.
- Provide information about the minimum alignment guarantees of
'Kmalloc', 'Vmalloc' and 'KVmalloc'.
- Take minimum alignment guarantees of allocators for
'ForeignOwnable' into account.
- Remove the 'allocator_test' (including 'Cmalloc').
- Add doctest for 'Vec::as_slice()'.
- Constify various methods.
- 'time' module:
- Add methods on 'HrTimer' that can only be called with exclusive
access to an unarmed timer, or from timer callback context.
- Add arithmetic operations to 'Instant' and 'Delta'.
- Add a few convenience and access methods to 'HrTimer' and
'Instant'.
'macros' crate:
- Reduce collections in 'quote!' macro.
And a few other cleanups and improvements.
----------------------------------------------------------------
Alexandre Courbot (2):
rust: add `Alignment` type
gpu: nova-core: use Alignment for alignment-related operations
Alice Ryhl (3):
rust: alloc: specify the minimum alignment of each allocator
rust: alloc: take the allocator into account for FOREIGN_ALIGN
rust: alloc: implement Box::pin_slice()
Benno Lossin (4):
rust: add `pin-init` as a dependency to `bindings` and `uapi`
rust: derive `Zeroable` for all structs & unions generated by bindgen where possible
rust: cpufreq: replace `MaybeUninit::zeroed().assume_init()` with `pin_init::zeroed()`
rust: sync: extend module documentation of aref
Boqun Feng (1):
rust: list: Add an example for `ListLinksSelfPtr` usage
Danilo Krummrich (1):
rust: alloc: add ARCH_KMALLOC_MINALIGN to bindgen blocklist
Hui Zhu (2):
rust: alloc: kvec: add doc example for as_slice method
rust: alloc: kvec: simplify KUnit test module name to "rust_kvec"
Lyude Paul (9):
rust: hrtimer: Document the return value for HrTimerHandle::cancel()
rust: hrtimer: Add HrTimerInstant
rust: hrtimer: Add HrTimer::raw_forward() and forward()
rust: hrtimer: Add HrTimerCallbackContext and ::forward()
rust: hrtimer: Add forward_now() to HrTimer and HrTimerCallbackContext
rust: time: Add Instant::from_ktime()
rust: hrtimer: Add HrTimer::expires()
rust: time: Implement Add<Delta>/Sub<Delta> for Instant
rust: time: Implement basic arithmetic operations for Delta
Miguel Ojeda (10):
rust: kernel: remove support for unused host `#[test]`s
rust: alloc: remove `allocator_test`
Merge tag 'alloc-next-v6.18-2025-09-04' of https://github.com/Rust-for-Linux/linux into rust-next
rust: block: fix `srctree/` links
rust: drm: fix `srctree/` links
rust: warn if `srctree/` links do not exist
rust: prelude: re-export `core::mem::{align,size}_of{,_val}`
rust: error: improve `Error::from_errno` documentation
rust: error: improve `to_result` documentation
Merge tag 'rust-timekeeping-v6.18' of https://github.com/Rust-for-Linux/linux into rust-next
Onur Özkan (3):
rust: make `ArrayLayout::new_unchecked` a `const fn`
rust: make `kvec::Vec` functions `const fn`
rust: error: add C header links
Ritvik Gupta (1):
rust: kernel: cpu: mark `CpuId::current()` inline
Shankari Anand (3):
rust: dma: Update ARef and AlwaysRefCounted imports from sync::aref
rust: sync: Update ARef and AlwaysRefCounted imports from sync::aref
rust: task: update ARef and AlwaysRefCounted imports from sync::aref
Tamir Duberstein (21):
gpu: nova-core: use `kernel::{fmt,prelude::fmt!}`
rust: alloc: use `kernel::{fmt,prelude::fmt!}`
rust: block: use `kernel::{fmt,prelude::fmt!}`
rust: device: use `kernel::{fmt,prelude::fmt!}`
rust: file: use `kernel::{fmt,prelude::fmt!}`
rust: kunit: use `kernel::{fmt,prelude::fmt!}`
rust: seq_file: use `kernel::{fmt,prelude::fmt!}`
rust: sync: use `kernel::{fmt,prelude::fmt!}`
rust: device: use `kernel::{fmt,prelude::fmt!}`
drm/panic: use `core::ffi::CStr` method names
rust: auxiliary: use `core::ffi::CStr` method names
rust: configfs: use `core::ffi::CStr` method names
rust: cpufreq: use `core::ffi::CStr` method names
rust: drm: use `core::ffi::CStr` method names
rust: firmware: use `core::ffi::CStr` method names
rust: kunit: use `core::ffi::CStr` method names
rust: miscdevice: use `core::ffi::CStr` method names
rust: net: use `core::ffi::CStr` method names
rust: of: use `core::ffi::CStr` method names
rust: acpi: use `core::ffi::CStr` method names
rust: macros: reduce collections in `quote!` macro
Documentation/gpu/nova/core/todo.rst | 1 -
drivers/block/rnull.rs | 2 +-
drivers/gpu/drm/drm_panic_qr.rs | 2 +-
drivers/gpu/nova-core/fb.rs | 6 +-
drivers/gpu/nova-core/gpu.rs | 3 +-
drivers/gpu/nova-core/regs/macros.rs | 6 +-
drivers/gpu/nova-core/vbios.rs | 4 +-
rust/Makefile | 29 ++---
rust/bindgen_parameters | 5 +
rust/bindings/bindings_helper.h | 1 +
rust/bindings/lib.rs | 8 ++
rust/kernel/acpi.rs | 7 +-
rust/kernel/alloc.rs | 15 +--
rust/kernel/alloc/allocator.rs | 8 ++
rust/kernel/alloc/allocator_test.rs | 124 -------------------
rust/kernel/alloc/kbox.rs | 92 +++++++++++++-
rust/kernel/alloc/kvec.rs | 24 ++--
rust/kernel/alloc/kvec/errors.rs | 2 +-
rust/kernel/alloc/layout.rs | 2 +-
rust/kernel/auxiliary.rs | 4 +-
rust/kernel/block/mq.rs | 2 +-
rust/kernel/block/mq/gen_disk.rs | 4 +-
rust/kernel/block/mq/raw_writer.rs | 3 +-
rust/kernel/configfs.rs | 4 +-
rust/kernel/cpu.rs | 1 +
rust/kernel/cpufreq.rs | 6 +-
rust/kernel/device.rs | 6 +-
rust/kernel/device/property.rs | 23 ++--
rust/kernel/dma.rs | 2 +-
rust/kernel/drm/device.rs | 6 +-
rust/kernel/drm/driver.rs | 2 +-
rust/kernel/drm/file.rs | 2 +-
rust/kernel/drm/gem/mod.rs | 2 +-
rust/kernel/drm/ioctl.rs | 2 +-
rust/kernel/error.rs | 66 ++++++++--
rust/kernel/firmware.rs | 2 +-
rust/kernel/fs/file.rs | 5 +-
rust/kernel/kunit.rs | 14 +--
rust/kernel/lib.rs | 5 +-
rust/kernel/list.rs | 120 ++++++++++++++++++
rust/kernel/miscdevice.rs | 2 +-
rust/kernel/net/phy.rs | 2 +-
rust/kernel/of.rs | 2 +-
rust/kernel/prelude.rs | 5 +-
rust/kernel/ptr.rs | 228 +++++++++++++++++++++++++++++++++++
rust/kernel/seq_file.rs | 6 +-
rust/kernel/sync/arc.rs | 8 +-
rust/kernel/sync/aref.rs | 17 ++-
rust/kernel/task.rs | 7 +-
rust/kernel/time.rs | 163 ++++++++++++++++++++++++-
rust/kernel/time/hrtimer.rs | 152 ++++++++++++++++++++++-
rust/kernel/time/hrtimer/arc.rs | 9 +-
rust/kernel/time/hrtimer/pin.rs | 9 +-
rust/kernel/time/hrtimer/pin_mut.rs | 12 +-
rust/kernel/time/hrtimer/tbox.rs | 9 +-
rust/macros/quote.rs | 104 ++++++++--------
rust/uapi/lib.rs | 2 +
samples/rust/rust_configfs.rs | 2 +-
samples/rust/rust_dma.rs | 2 +-
scripts/generate_rust_analyzer.py | 4 +-
scripts/rustdoc_test_gen.rs | 2 +-
61 files changed, 1054 insertions(+), 315 deletions(-)
delete mode 100644 rust/kernel/alloc/allocator_test.rs
create mode 100644 rust/kernel/ptr.rs
next reply other threads:[~2025-09-28 17:35 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-28 17:35 Miguel Ojeda [this message]
2025-10-01 2:20 ` [GIT PULL] Rust for 6.18 pr-tracker-bot
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=20250928173541.229298-1-ojeda@kernel.org \
--to=ojeda@kernel.org \
--cc=a.hindborg@kernel.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=gary@garyguo.net \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tmgross@umich.edu \
--cc=torvalds@linux-foundation.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.