Re: [PATCH 2/5] rust: dma: add DMA addressing capabilities

From: Alice Ryhl
Date: Wed Jul 16 2025 - 06:22:42 EST


On Wed, Jul 16, 2025 at 11:15 AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> On Thu, Jul 10, 2025 at 09:45:44PM +0200, Danilo Krummrich wrote:
> > +/// Returns a bitmask with the lowest `n` bits set to `1`.
> > +///
> > +/// For `n` in `0..=64`, returns a mask with the lowest `n` bits set.
> > +/// For `n > 64`, returns `u64::MAX` (all bits set).
> > +///
> > +/// # Examples
> > +///
> > +/// ```
> > +/// use kernel::dma::dma_bit_mask;
> > +///
> > +/// assert_eq!(dma_bit_mask(0), 0);
> > +/// assert_eq!(dma_bit_mask(1), 0b1);
> > +/// assert_eq!(dma_bit_mask(64), u64::MAX);
> > +/// assert_eq!(dma_bit_mask(100), u64::MAX); // Saturates at all bits set.
> > +/// ```
> > +pub const fn dma_bit_mask(n: usize) -> u64 {
> > + match n {
> > + 0 => 0,
> > + 1..=64 => u64::MAX >> (64 - n),
> > + _ => u64::MAX,
> > + }
> > +}
>
> This is just the C macro DMA_BIT_MASK(), right? If so, can that be said
> here somewhere? Or, how about turning DMA_BIT_MASK() into an inline
> function which could then be just called by the rust code directly
> instead?

Converting to an inline method would not make a difference for calling
it from Rust. We would need a helper in rust/helpers/ either way, and
it's also possible to define a helper for a macro.

Alice