From: Alexandre Courbot <acourbot@nvidia.com>
To: "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>
Cc: linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org,
nouveau@lists.freedesktop.org,
Alexandre Courbot <acourbot@nvidia.com>
Subject: [PATCH v5 0/2] rust: add `Alignment` type
Date: Mon, 08 Sep 2025 22:25:53 +0900 [thread overview]
Message-ID: <20250908-num-v5-0-c0f2f681ea96@nvidia.com> (raw)
The first patch makes two additions:
- Bring an equivalent of the nightly upstream `Alignment` type [1] with
an near-identical public interface,
- Add a new `Alignable` extension trait that provides a way to align
values up or down according to an `Alignment`, and implement it on
unsigned integer types.
The second patch makes use of these in the Nova driver.
[1] https://doc.rust-lang.org/std/ptr/struct.Alignment.html
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
---
Changes in v5:
- Update doccomments a bit.
- Use a const generic instead of a regular argument for the const
constructor.
- Link to v4: https://lore.kernel.org/r/20250821-num-v4-0-1f3a425d7244@nvidia.com
Changes in v4:
- Add the `generic_nonzero` feature (stabilized in Rust 1.79) to fix
build with Rust 1.78.
- Import `core::mem::align_of` for older Rust versions (as the patch
adding it to the prelude is not attainable from nova-next yet).
- Link to v3: https://lore.kernel.org/r/20250812-num-v3-0-569d6fe1839f@nvidia.com
Changes in v3:
- Move `align_down` and `align_up` into their own `Alignable` trait.
(thanks Miguel!)
- Fix `Alignment::mask` implementation to match upstream's.
- Add missing `SAFETY:` comments.
- Improve grammar on a few hard-to-parse comments.
- Link to v2: https://lore.kernel.org/r/20250804-num-v2-0-a96b9ca6eb02@nvidia.com
Changes in v2:
- Remove `last_checked_bit` (use Rust's `checked_ilog2` instead).
- Port Rust nightly `Alignment` type and extend it with `align_down` and
`align_up` methods.
- Link to v1: https://lore.kernel.org/r/20250620-num-v1-0-7ec3d3fb06c9@nvidia.com
Changes since split from the nova-core series:
- Rename `fls` to `last_set_bit`,
- Generate per-type doctests,
- Add invariants section to `PowerOfTwo`.
- Do not use reference to `self` in `PowerOfTwo` methods since it
implements `Copy`,
- Use #[derive] where possible instead of implementing traits
manually,
- Remove `Deref` and `Borrow` implementations.
---
Alexandre Courbot (2):
rust: add `Alignment` type
gpu: nova-core: use Alignment for alignment-related operations
Documentation/gpu/nova/core/todo.rst | 1 -
drivers/gpu/nova-core/fb.rs | 6 +-
drivers/gpu/nova-core/vbios.rs | 4 +-
rust/kernel/lib.rs | 2 +
rust/kernel/ptr.rs | 226 +++++++++++++++++++++++++++++++++++
5 files changed, 233 insertions(+), 6 deletions(-)
---
base-commit: 062b3e4a1f880f104a8d4b90b767788786aa7b78
change-id: 20250620-num-9420281c02c7
prerequisite-message-id: <20250808-falcondma_256b-v1-1-15f911d89ffd@nvidia.com>
prerequisite-patch-id: 2439f5f9b560ee4867716f0018b5326dcd72cda3
Best regards,
--
Alexandre Courbot <acourbot@nvidia.com>
next reply other threads:[~2025-09-08 13:26 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-08 13:25 Alexandre Courbot [this message]
2025-09-08 13:25 ` [PATCH v5 1/2] rust: add `Alignment` type Alexandre Courbot
2025-09-08 14:21 ` Miguel Ojeda
2025-09-09 7:05 ` Alexandre Courbot
2025-09-09 7:21 ` Miguel Ojeda
2025-09-09 8:01 ` Alexandre Courbot
2025-09-09 9:14 ` Danilo Krummrich
2025-09-08 13:25 ` [PATCH v5 2/2] gpu: nova-core: use Alignment for alignment-related operations Alexandre Courbot
2025-09-08 13:56 ` Danilo Krummrich
2025-09-09 22:04 ` [PATCH v5 0/2] rust: add `Alignment` type Miguel Ojeda
2025-09-10 1:13 ` Alexandre Courbot
2025-09-22 21:59 ` 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=20250908-num-v5-0-c0f2f681ea96@nvidia.com \
--to=acourbot@nvidia.com \
--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=nouveau@lists.freedesktop.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.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 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.