[PATCH v3 0/2] Arithmetic ops for Instant/Delta

Lyude Paul posted 2 patches 1 month, 2 weeks ago
rust/kernel/time.rs | 141 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 140 insertions(+), 1 deletion(-)
[PATCH v3 0/2] Arithmetic ops for Instant/Delta
Posted by Lyude Paul 1 month, 2 weeks ago
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
Re: [PATCH v3 0/2] Arithmetic ops for Instant/Delta
Posted by Andreas Hindborg 4 weeks, 1 day ago
On Wed, 20 Aug 2025 16:26:42 -0400, Lyude Paul wrote:
> 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
> 
> [...]

Applied, thanks!

[1/2] rust: time: Implement Add<Delta>/Sub<Delta> for Instant
      commit: 22b65a40574e597e1919ca22cc3535c2b541f764
[2/2] rust: time: Implement basic arithmetic operations for Delta
      commit: 4521438fb076f8a6a52f45b0e508f6ef10ac0c49

Best regards,
-- 
Andreas Hindborg <a.hindborg@kernel.org>