Re: [PATCH v5 1/3] rust: sizes: add SizeConstants trait for device address space constants

From: Alexandre Courbot

Date: Sat Apr 04 2026 - 00:20:21 EST


On Sat Apr 4, 2026 at 11:33 AM JST, Miguel Ojeda wrote:
> On Sat, Apr 4, 2026 at 4:12 AM John Hubbard <jhubbard@xxxxxxxxxx> wrote:
>>
>> The SZ_* constants are usize, matching the CPU pointer width. But
>> device address spaces have their own widths (32-bit MMIO windows,
>> 64-bit GPU framebuffers, etc.), so drivers end up casting these
>> constants with SZ_1M as u64 or helper functions. This adds
>> boilerplate with no safety benefit.
>>
>> Add a SizeConstants trait with associated SZ_* constants, implemented
>> for u32, u64, and usize. With the trait in scope, callers write
>> u64::SZ_1M or u32::SZ_4K to get the constant in their device's
>> native width. All SZ_* values fit in a u32, so every implementation
>> is lossless. Each impl has a const assert to catch any future
>> constant that would overflow.
>>
>> A define_sizes! macro generates everything from a single internal
>> list of names. The macro takes the target types as arguments, so
>> adding a new target type requires changing only the call site.
>>
>> Suggested-by: Danilo Krummrich <dakr@xxxxxxxxxx>
>> Link: https://lore.kernel.org/all/DGB9G697GSWO.3VBFGU5MKFPMR@xxxxxxxxxx/
>> Link: https://lore.kernel.org/all/DGHI8WRKBQS9.38910L6FIIZTE@xxxxxxxxxx/
>> Reviewed-by: Eliot Courtney <ecourtney@xxxxxxxxxx>
>> Reviewed-by: Alexandre Courbot <acourbot@xxxxxxxxxx>
>> Acked-by: Gary Guo <gary@xxxxxxxxxxx>
>> Signed-off-by: John Hubbard <jhubbard@xxxxxxxxxx>
>
> If there are no concerns, then I will pick this one up.

No concern from me, the user code in Nova will be scheduled for the 7.2
merge window anyway.