Subject: Re: linux-next: manual merge of the rust-timekeeping tree with the drm-nova tree

From: Andreas Hindborg <[email-masked]>
Date: Tue, 24 Jun 2025 21:02:43 +0200

"Danilo Krummrich" <[email-masked]> writes:

> On Tue, Jun 24, 2025 at 09:03:48PM +0900, Alexandre Courbot wrote:
>> On Tue Jun 24, 2025 at 8:48 PM JST, Andreas Hindborg wrote:
>> > For the Nova people: You might consider if it makes sense to take a
>> > `kernel::time::Delta<C>` for the timeout.
>>
>> It probably does now that it is available. I'm willing to do it this
>> cycle if we can find a way to not break the build. Should we have a tag
>> to merge into nova-next or something?
>
> I'm not sure about the generic in Delta mentioned by Andreas above, but the
> Detla type did land in the last merge window, so it's available in the nova
> tree already.

Sorry, that is my mistake. `Delta` does not take any generics, I was
thinking of `Instant`, it takes the clock.

Anyway, I dropped the patch renaming `as_*` [1], so now the resolution would
be:

diff --git a/drivers/gpu/nova-core/util.rs b/drivers/gpu/nova-core/util.rs
index 5cafe0797cd6..01a920085438 100644
--- a/drivers/gpu/nova-core/util.rs
+++ b/drivers/gpu/nova-core/util.rs
@@ -3,7 +3,7 @@
 use core::time::Duration;
 
 use kernel::prelude::*;
-use kernel::time::Instant;
+use kernel::time::{Instant, Monotonic};
 
 pub(crate) const fn to_lowercase_bytes<const N: usize>(s: &str) -> [u8; N] {
     let src = s.as_bytes();
@@ -35,7 +35,7 @@ pub(crate) const fn const_bytes_to_str(bytes: &[u8]) -> &str {
 /// TODO[DLAY]: replace with `read_poll_timeout` once it is available.
 /// (https://lore.kernel.org/lkml/[email-masked]/)
 pub(crate) fn wait_on<R, F: Fn() -> Option<R>>(timeout: Duration, cond: F) -> Result<R> {
-    let start_time = Instant::now();
+    let start_time = Instant::<Monotonic>::now();
 
     loop {
         if let Some(ret) = cond() {

Best regards,
Andreas Hindborg

[1] https://lore.kernel.org/all/[email-masked]