Linux IOMMU Development
 help / color / mirror / Atom feed
From: Abdiel Janulgue <abdiel.janulgue@gmail.com>
To: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Cc: aliceryhl@google.com, dakr@kernel.org, robin.murphy@arm.com,
	daniel.almeida@collabora.com, rust-for-linux@vger.kernel.org,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Alex Gaynor" <alex.gaynor@gmail.com>,
	"Boqun Feng" <boqun.feng@gmail.com>,
	"Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <benno.lossin@proton.me>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Valentin Obst" <kernel@valentinobst.de>,
	"open list" <linux-kernel@vger.kernel.org>,
	"Christoph Hellwig" <hch@lst.de>,
	"Marek Szyprowski" <m.szyprowski@samsung.com>,
	airlied@redhat.com,
	"open list:DMA MAPPING HELPERS" <iommu@lists.linux.dev>
Subject: Re: [PATCH v12 2/3] rust: add dma coherent allocator abstraction.
Date: Tue, 25 Feb 2025 10:15:23 +0200	[thread overview]
Message-ID: <02911a6d-e17a-4d17-b060-83c96732003f@gmail.com> (raw)
In-Reply-To: <CANiq72mMKx3kD5KEcT0gOa1zkCt-VXxTEhnDa3feq0H7AttUGw@mail.gmail.com>

On 25/02/2025 00:05, Miguel Ojeda wrote:
> Hi Abdiel,
> 
> Some quick doc-related nits -- please take them as a general guide for
> potential improvements in newer versions etc., given there are still
> other comments that could change the contents.
> 
> On Mon, Feb 24, 2025 at 12:50 PM Abdiel Janulgue
> <abdiel.janulgue@gmail.com> wrote:
>>
>> +/// Inform the kernel about the device's DMA addressing capabilities. This will set the mask for
>> +/// both streaming and coherent APIs together.
> 
> This comment differs from the C side one -- that is OK, but just
> wondering if there was a strong reason for that.
> 
>> +pub fn dma_set_mask_and_coherent(dev: &Device, mask: u64) -> i32 {
> 
> This returns `i32` -- I have not read the users of this, but should we
> take the chance to have a `Result` already here? Same below for the
> other one.
> 
>> +    // SAFETY: device pointer is guaranteed as valid by invariant on `Device`.
> 
> To keep things consistent, please start comments with uppercase, i.e.
> "SAFETY: Device pointer ..."
> 
> It may also be clearer to say "by the type invariant on".
> 
>> +/// Possible attributes associated with a DMA mapping.
>> +///
>> +/// They can be combined with the operators `|`, `&`, and `!`.
> 
> Even if it may be trivial, a small example could be nice here (when I
> see a sentence like "This can be used ...", I typically consider
> whether it is a good place to show how).
> 
>> +/// DMA mapping attrributes.
> 
> Typo: attributes.
> 
>> +    /// let c: CoherentAllocation<u64> = CoherentAllocation::alloc_attrs(dev.into(), 4, GFP_KERNEL,
>> +    ///                                                                  DMA_ATTR_NO_WARN)?;
> 
> Please try to format the code as `rustfmt` would normally do it. I
> know it is a pain to do it manually -- hopefully
> `format_code_in_doc_comments` will eventually be stable.
> 
>> +        // We ensure that we catch the failure on this function and throw an ENOMEM
> 
> Apart from what Benno said, please try to use Markdown in all comments.
> 
>> +    /// Performs the same functionality as `alloc_attrs`, except the `dma_attrs` is 0 by default.
> 
> Intra-doc links (I will mark a few more that I think may work).
> 
>> +    /// Create a duplicate of the `CoherentAllocation` object but prevent it from being dropped.
> 
> Intra-doc link.
> 
>> +    /// r/w access or use-cases where the pointer to the live data is needed, `start_ptr()` or
>> +    /// `start_ptr_mut()` could be used instead.
> 
> Intra-doc links.
> 
>> +    /// Performs the same functionality as `as_slice`, except that a mutable slice is returned.
> 
> Intra-doc link.
> 
>> +    /// Reads the value of `field` and ensures that its type is `FromBytes`
> 
> Intra-doc link.
> 
>> +    /// # Safety:
> 
> Typo: no colon. Also another one below.
> 
>> +    /// This must be called from the `dma_read` macro which ensures that the `field` pointer is
>> +    /// validated beforehand.
>> +    ///
>> +    /// Public but hidden since it should only be used from `dma_read` macro.
> 
> Intra-doc links -- even if they are not rendered because it is hidden
> (also even if it were a private item).
> 
>> +    #[doc(hidden)]
>> +    pub unsafe fn field_read<F: FromBytes>(&self, field: *const F) -> F {
>> +        // SAFETY: By the safety requirements field is valid
> 
> Markdown; and please end the sentence with a period for consistency.
> 
>> +    /// Writes a value to `field` and ensures that its type is `AsBytes`
> 
> Intra-doc link, and period at the end (same below too).
> 
>> +/// Reads a field of an item from an allocated region of structs.
>> +/// # Examples
> 
> Newline between these two lines. Also for the write equivalent one below.
> 
>> +/// struct MyStruct { field: u32, }
>> +/// // SAFETY: All bit patterns are acceptable values for MyStruct.
> 
> Newline between these two, also Markdown. Same below and in the write
> equivalent.
> 
> I think it is fairly important to have clean examples, since people
> will learn from and follow them!

Hi Miguel,

Thanks for the valuable feedback. Still learning the ropes at this 
point, but will further improve this. :)

Regards,
Abdiel

> 
> Thanks!
> 
> Cheers,
> Miguel


  reply	other threads:[~2025-02-25  8:15 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-24 11:49 [PATCH v12 0/3] rust: add dma coherent allocator abstraction Abdiel Janulgue
2025-02-24 11:49 ` [PATCH v12 1/3] rust: error: Add EOVERFLOW Abdiel Janulgue
2025-02-24 13:11   ` Andreas Hindborg
2025-02-24 11:49 ` [PATCH v12 2/3] rust: add dma coherent allocator abstraction Abdiel Janulgue
2025-02-24 13:21   ` Alice Ryhl
2025-02-24 16:27     ` Abdiel Janulgue
2025-02-24 13:30   ` QUENTIN BOYER
2025-02-24 16:30     ` Abdiel Janulgue
2025-02-24 14:40   ` Andreas Hindborg
2025-02-24 16:27     ` Abdiel Janulgue
2025-02-24 22:35       ` Daniel Almeida
2025-02-28  8:35       ` Alexandre Courbot
2025-02-28 10:01         ` Danilo Krummrich
2025-02-24 20:07   ` Benno Lossin
2025-02-24 21:40     ` Miguel Ojeda
2025-02-24 23:12     ` Daniel Almeida
2025-03-03 13:00       ` Andreas Hindborg
2025-03-03 13:13         ` Alice Ryhl
2025-03-03 15:21           ` Andreas Hindborg
2025-03-03 15:44             ` Alice Ryhl
2025-03-03 18:45               ` Andreas Hindborg
2025-03-03 19:00               ` Allow data races on some read/write operations Andreas Hindborg
2025-03-03 20:08                 ` Boqun Feng
2025-03-04 19:03                   ` Ralf Jung
2025-03-04 20:18                     ` comex
2025-03-05  3:24                       ` Boqun Feng
2025-03-05 13:10                         ` Ralf Jung
2025-03-05 13:23                           ` Alice Ryhl
2025-03-05 13:27                             ` Ralf Jung
2025-03-05 14:40                               ` Robin Murphy
2025-03-05 18:43                               ` Andreas Hindborg
2025-03-05 19:30                                 ` Alan Stern
2025-03-05 19:42                                 ` Ralf Jung
2025-03-05 21:26                                   ` Andreas Hindborg
2025-03-05 21:53                                     ` Ralf Jung
2025-03-07  8:43                                       ` Andreas Hindborg
2025-03-18 14:44                                         ` Ralf Jung
2025-03-05 18:41                             ` Andreas Hindborg
2025-03-05 14:25                           ` Daniel Almeida
2025-03-05 18:38                           ` Andreas Hindborg
2025-03-05 22:01                             ` Ralf Jung
2025-03-04  8:28           ` [PATCH v12 2/3] rust: add dma coherent allocator abstraction Abdiel Janulgue
2025-02-25  8:15     ` Abdiel Janulgue
2025-02-25  9:09       ` Alice Ryhl
2025-02-24 22:05   ` Miguel Ojeda
2025-02-25  8:15     ` Abdiel Janulgue [this message]
2025-03-03 11:30   ` Andreas Hindborg
2025-03-04  8:58     ` Abdiel Janulgue
2025-03-03 13:08   ` Robin Murphy
2025-03-05 17:41   ` Jason Gunthorpe
2025-03-06 13:37     ` Danilo Krummrich
2025-03-06 15:21       ` Simona Vetter
2025-03-06 15:49         ` Danilo Krummrich
2025-03-06 15:54         ` Danilo Krummrich
2025-03-06 16:18           ` Jason Gunthorpe
2025-03-06 16:34             ` Danilo Krummrich
2025-03-07 10:20               ` Simona Vetter
2025-03-06 16:09         ` Jason Gunthorpe
2025-03-07  8:50           ` Danilo Krummrich
2025-03-07 10:18             ` Simona Vetter
2025-03-07 12:48             ` Jason Gunthorpe
2025-03-07 13:16               ` Simona Vetter
2025-03-07 14:38                 ` Jason Gunthorpe
2025-03-07 17:30                   ` Danilo Krummrich
2025-03-07 18:02                     ` Greg Kroah-Hartman
2025-03-07 16:09               ` Danilo Krummrich
2025-03-07 16:57                 ` Jason Gunthorpe
2025-03-07 19:03                   ` Danilo Krummrich
2025-02-24 11:49 ` [PATCH v12 3/3] MAINTAINERS: add entry for Rust dma mapping helpers device driver API Abdiel Janulgue
2025-02-24 13:10   ` Andreas Hindborg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=02911a6d-e17a-4d17-b060-83c96732003f@gmail.com \
    --to=abdiel.janulgue@gmail.com \
    --cc=a.hindborg@kernel.org \
    --cc=airlied@redhat.com \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=dakr@kernel.org \
    --cc=daniel.almeida@collabora.com \
    --cc=gary@garyguo.net \
    --cc=hch@lst.de \
    --cc=iommu@lists.linux.dev \
    --cc=kernel@valentinobst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=miguel.ojeda.sandonis@gmail.com \
    --cc=ojeda@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tmgross@umich.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox