All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alexandre Courbot" <acourbot@nvidia.com>
To: "Danilo Krummrich" <dakr@kernel.org>, <akpm@linux-foundation.org>,
	<ojeda@kernel.org>, <alex.gaynor@gmail.com>,
	<boqun.feng@gmail.com>, <gary@garyguo.net>,
	<bjorn3_gh@protonmail.com>, <lossin@kernel.org>,
	<a.hindborg@kernel.org>, <aliceryhl@google.com>,
	<tmgross@umich.edu>, <abdiel.janulgue@gmail.com>, <jgg@ziepe.ca>,
	<lyude@redhat.com>, <robin.murphy@arm.com>,
	<daniel.almeida@collabora.com>
Cc: <rust-for-linux@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 0/5] Rust infrastructure for sg_table and scatterlist
Date: Fri, 22 Aug 2025 22:31:12 +0900	[thread overview]
Message-ID: <DC8ZS3RPS2W2.1D6MXZ28MP73K@nvidia.com> (raw)
In-Reply-To: <20250820165431.170195-1-dakr@kernel.org>

On Thu Aug 21, 2025 at 1:52 AM JST, Danilo Krummrich wrote:
> This patch series provides abstractions for struct sg_table and struct
> scatterlist.
>
> Abdiel and me agreed for me to take over his previous iterations on this topic.
> I decided to send my patches as a new series rather than as a subsequent version
> of Abdiel's previous iterations, since the changes I made turned out to be much
> closer to a full rewrite.
>
> The most notable differences in design are:
>
>   - SGTable utilizes BorrowedPage, AsPageIter and VmallocPageIter from my patch
>     series in [1].
>
>   -  SGTable is a transparent wrapper over either struct Owned<P> (where P is
>      the provider of the backing pages) or struct Borrowed, which by itself is a
>      transparent wrapper over Opaque<bindings::sg_table>, i.e. either
>      SGTable<Owned<P>> or just SGTable (which is equivalent to
>      SGTable<Borrowed>.
>
>      - `SGTable<Owned<P>>`: Represents a table whose resources are fully managed
>        by Rust. It takes ownership of a page provider `P`, allocates the
>        underlying `struct sg_table`, maps it for DMA, and handles all cleanup
>        automatically upon drop. The DMA mapping's lifetime is tied to the
>        associated device using `Devres`, ensuring it is correctly unmapped
>        before the device is unbound.
>
>      - `SGTable<Borrowed>` (or just `SGTable`): A zero-cost representation of an
>        externally managed `struct sg_table`. It is created from a raw pointer
>        using `SGTable::as_ref()` and provides a lifetime-bound reference
>        (`&'a SGTable`) for operations like iteration.
>
>      - As a consequence, a borrowed SG table can be created with
>        SGTable::as_ref(), which returns a &'a SGTable, just like similar
>        existing abstractions.
>
>        An owned SGTable is created with SGTable::new(), which returns an
>        impl PinInit<SGTable<Owned<P>>, Error>, such that it can be initialized
>        directly within existing private data memory allocations while providing
>        the required pin guarantees.
>
>   - SGTable<Owned<P>> uses an inner type Devres<DmaMapSgt> to ensure that the
>     DMA mapping can't out-live device unbind.
>
>   - SGTable<Owned<P>> uses pin-init for initialization.
>
> This patch series depends on [1] (branch containing the patches in [2]). A
> branch containing this series (including dependencies) can be found in [3];
> Abdiel's latest series can be found in [4].
>
> [1] https://lore.kernel.org/rust-for-linux/20250820145434.94745-1-dakr@kernel.org/
> [2] https://git.kernel.org/pub/scm/linux/kernel/git/dakr/linux.git/log/?h=page-iter
> [3] https://git.kernel.org/pub/scm/linux/kernel/git/dakr/linux.git/log/?h=scatterlist
> [4] https://lore.kernel.org/lkml/20250718103359.1026240-1-abdiel.janulgue@gmail.com/

I am going to do a full review of this revision over the weekend, but I
have already successfully used it in nova-core to boot the GSP. Thus,

Tested-by: Alexandre Courbot <acourbot@nvidia.com>

      parent reply	other threads:[~2025-08-22 13:31 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-20 16:52 [PATCH v2 0/5] Rust infrastructure for sg_table and scatterlist Danilo Krummrich
2025-08-20 16:52 ` [PATCH v2 1/5] rust: dma: implement DataDirection Danilo Krummrich
2025-08-22 11:38   ` Alice Ryhl
2025-08-23 11:09   ` Alexandre Courbot
2025-08-20 16:52 ` [PATCH v2 2/5] rust: dma: add type alias for bindings::dma_addr_t Danilo Krummrich
2025-08-22 11:38   ` Alice Ryhl
2025-08-23 11:10   ` Alexandre Courbot
2025-08-20 16:52 ` [PATCH v2 3/5] rust: scatterlist: Add type-state abstraction for sg_table Danilo Krummrich
2025-08-20 17:14   ` Daniel Almeida
2025-08-22 11:44   ` Alice Ryhl
2025-08-22 11:48     ` Danilo Krummrich
2025-08-22 11:52       ` Alice Ryhl
2025-08-22 11:54         ` Danilo Krummrich
2025-08-23 12:44           ` Alexandre Courbot
2025-08-23 13:22   ` Alexandre Courbot
2025-08-23 13:48     ` Danilo Krummrich
2025-08-23 14:12       ` Alexandre Courbot
2025-08-23 14:32     ` Jason Gunthorpe
2025-08-23 14:57       ` Danilo Krummrich
2025-08-23 13:47   ` Alexandre Courbot
2025-08-23 13:57     ` Danilo Krummrich
2025-08-23 14:16       ` Alexandre Courbot
2025-08-23 14:20         ` Danilo Krummrich
2025-08-23 14:29           ` Alexandre Courbot
2025-08-20 16:52 ` [PATCH v2 4/5] samples: rust: dma: add sample code for SGTable Danilo Krummrich
2025-08-20 16:52 ` [PATCH v2 5/5] MAINTAINERS: rust: dma: add scatterlist files Danilo Krummrich
2025-08-22 11:45 ` [PATCH v2 0/5] Rust infrastructure for sg_table and scatterlist Alice Ryhl
2025-08-22 13:31 ` Alexandre Courbot [this message]

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=DC8ZS3RPS2W2.1D6MXZ28MP73K@nvidia.com \
    --to=acourbot@nvidia.com \
    --cc=a.hindborg@kernel.org \
    --cc=abdiel.janulgue@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=dakr@kernel.org \
    --cc=daniel.almeida@collabora.com \
    --cc=gary@garyguo.net \
    --cc=jgg@ziepe.ca \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lossin@kernel.org \
    --cc=lyude@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.