On 2/17/26 8:39 AM, Danilo Krummrich wrote:
> On Tue Feb 10, 2026 at 3:45 AM CET, John Hubbard wrote:
>> diff --git a/drivers/gpu/nova-core/num.rs b/drivers/gpu/nova-core/num.rs
>> index c952a834e662..f068722c5bdf 100644
>> --- a/drivers/gpu/nova-core/num.rs
>> +++ b/drivers/gpu/nova-core/num.rs
>> @@ -215,3 +215,13 @@ pub(crate) const fn [<$from _into_ $into>]<const N:
>> $from>() -> $into {
>> impl_const_into!(u64 => { u8, u16, u32 });
>> impl_const_into!(u32 => { u8, u16 });
>> impl_const_into!(u16 => { u8 });
>> +
>> +/// Aligns `value` up to `ALIGN` at compile time.
>> +///
>> +/// This is the const-compatible equivalent of
>> [`kernel::ptr::Alignable::align_up`].
>> +/// `ALIGN` must be a power of two (enforced at compile time).
>> +#[inline(always)]
>> +pub(crate) const fn const_align_up<const ALIGN: usize>(value: usize) ->
>> usize {
>
> We should probably just add this as a function to Alignable.
So that would go in via a separate git branch? And therefore probably
I should send that change separately?
Or should I just create a new patch for rust/kernel/ptr.rs as part of
this series?
>
>> + build_assert!(ALIGN.is_power_of_two());
>
> ALIGN is a const generic, hence this should be:
>
> const { core::assert!(ALIGN.is_power_of_two(), "ALIGN must be a power
> of two") };
That doesn't compile on rustc 1.78.0:
error[E0658]: inline-const is experimental
--> drivers/gpu/nova-core/num.rs:225:5
|
225 | const { core::assert!(ALIGN.is_power_of_two(), "ALIGN must be a power
of two") };
| ^^^^^
|
= note: see issue #76001 <https://github.com/rust-lang/rust/issues/76001>
for more information
= help: add `#![feature(inline_const)]` to the crate attributes to enable
= note: this compiler was built on 2024-04-29; consider upgrading it if it
is out of date
error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0658`.
>
>> + (value + (ALIGN - 1)) & !(ALIGN - 1)
>> +}
thanks,
--
John Hubbard