lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <DAUQZ1TY9VT3.UJEFQ96157DJ@nvidia.com>
Date: Tue, 24 Jun 2025 21:03:48 +0900
From: "Alexandre Courbot" <acourbot@...dia.com>
To: "Andreas Hindborg" <a.hindborg@...nel.org>, "Stephen Rothwell"
 <sfr@...b.auug.org.au>
Cc: "Danilo Krummrich" <dakr@...nel.org>, "FUJITA Tomonori"
 <fujita.tomonori@...il.com>, "Linux Kernel Mailing List"
 <linux-kernel@...r.kernel.org>, "Linux Next Mailing List"
 <linux-next@...r.kernel.org>
Subject: Re: linux-next: manual merge of the rust-timekeeping tree with the
 drm-nova tree

On Tue Jun 24, 2025 at 8:48 PM JST, Andreas Hindborg wrote:
> "Stephen Rothwell" <sfr@...b.auug.org.au> writes:
>
>> Hi all,
>>
>> After merging the rust-timekeeping tree, today's linux-next build
>> (x86_64 allmodconfig) failed like this:
>>
>> error[E0599]: no method named `as_nanos` found for struct `Delta` in the current scope
>>   --> drivers/gpu/nova-core/util.rs:45:33
>>    |
>> 45 |         if start_time.elapsed().as_nanos() > timeout.as_nanos() as i64 {
>>    |                                 ^^^^^^^^ method not found in `Delta`
>>
>> error: aborting due to 1 previous error
>>
>> For more information about this error, try `rustc --explain E0599`.
>>
>> Caused by commits
>>
>>   2ed94606a0fe ("rust: time: Rename Delta's methods from as_* to into_*")
>>   768dfbfc98e2 ("rust: time: Make Instant generic over ClockSource")
>>
>> interacting with commit
>>
>>   a03c9bd953c2 ("gpu: nova-core: add helper function to wait on condition")
>>
>> from the drm-nova tree.
>>
>> I tried to fix it up, but this lead down a rabbit hole and my rust
>> skills are poor, so I just dropped the rust-timekeeping tree for today.
>> A merge resolution would be appreciated.
>
> I would suggest the following:
>
> diff --git a/drivers/gpu/nova-core/util.rs b/drivers/gpu/nova-core/util.rs
> index 5cafe0797cd6..24cbf3f4cc39 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,14 +35,14 @@ 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/20250220070611.214262-8-fujita.tomonori@gmail.com/)
>  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() {
>              return Ok(ret);
>          }
>  
> -        if start_time.elapsed().as_nanos() > timeout.as_nanos() as i64 {
> +        if start_time.elapsed().into_nanos() > timeout.as_nanos() as i64 {
>              return Err(ETIMEDOUT);
>          }
>      }
>
> 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?

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ