[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250820203704.731588-1-lyude@redhat.com>
Date: Wed, 20 Aug 2025 16:26:42 -0400
From: Lyude Paul <lyude@...hat.com>
To: rust-for-linux@...r.kernel.org,
linux-kernel@...r.kernel.org,
Thomas Gleixner <tglx@...utronix.de>,
Andreas Hindborg <a.hindborg@...nel.org>,
FUJITA Tomonori <fujita.tomonori@...il.com>
Cc: Miguel Ojeda <ojeda@...nel.org>,
Alex Gaynor <alex.gaynor@...il.com>,
Boqun Feng <boqun.feng@...il.com>,
Gary Guo <gary@...yguo.net>,
Björn Roy Baron <bjorn3_gh@...tonmail.com>,
Benno Lossin <lossin@...nel.org>,
Alice Ryhl <aliceryhl@...gle.com>,
Trevor Gross <tmgross@...ch.edu>,
Danilo Krummrich <dakr@...nel.org>
Subject: [PATCH v3 0/2] Arithmetic ops for Instant/Delta
When rebasing RVKMS against my hrtimer additions, which themselves were
rebased against Fujita's recent work for introducing Instant/Delta, I
needed to reintroduce the ability to perform some of the arithmetic that
rvkms uses for vblank emulation - so, this commit introduces such
arithmetic.
Example usage:
https://gitlab.freedesktop.org/lyudess/linux/-/blob/rvkms-slim/drivers/gpu/drm/rvkms/crtc.rs?ref_type=heads#L167
Previous versions:
Version 1: https://lkml.org/lkml/2025/7/24/1400
Version 2: https://lkml.org/lkml/2025/8/7/950
Lyude Paul (2):
rust: time: Implement Add<Delta>/Sub<Delta> for Instant
rust: time: Implement basic arithmetic operations for Delta
rust/kernel/time.rs | 141 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 140 insertions(+), 1 deletion(-)
Changelog:
rust: time: Implement Add<Delta>/Sub<Delta> for Instant
V2:
* Change behavior in ops::{Add,Sub}<Delta> so that we panic on overflows
under the same conditions that arithmetic operations in rust would panic
by default.
V3:
* Don't forget to update the commit message this time!
rust: time: Implement basic arithmetic operations for Delta
V2:
* Don't forget to make sure that we inline all of these
* Drop ops::Rem and ops::RemAssign implementations for Delta, replace with
Delta::rem_nanos() instead. It turns out that there's actually no way to
perform i64 % i64 on 32 bit platforms in the kernel at the moment, the
closest that we have is div_s64_rem() which only allows a 32 bit divisor.
* Actually use the kernel arithmetic helpers for division/remainders so
that this code works on both 32 and 64 bit platforms.
V3:
* Change the output type for Div to i64, drop DivAssign
* Change Mul/MulAssign to accept i64, not another Delta
* Fix parameter name in rem_nanos (ns -> dividend)
base-commit: c17b750b3ad9f45f2b6f7e6f7f4679844244f0b9
--
2.50.0
Powered by blists - more mailing lists