From: "Danilo Krummrich" <dakr@kernel.org>
To: "Andreas Hindborg" <a.hindborg@kernel.org>
Cc: <aliceryhl@google.com>, <acourbot@nvidia.com>, <ojeda@kernel.org>,
<boqun@kernel.org>, <gary@garyguo.net>,
<bjorn3_gh@protonmail.com>, <lossin@kernel.org>,
<tmgross@umich.edu>, <abdiel.janulgue@gmail.com>,
<daniel.almeida@collabora.com>, <robin.murphy@arm.com>,
<driver-core@lists.linux.dev>, <nouveau@lists.freedesktop.org>,
<dri-devel@lists.freedesktop.org>,
<rust-for-linux@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 5/8] rust: dma: add Coherent:init() and Coherent::init_with_attrs()
Date: Tue, 24 Mar 2026 16:03:31 +0100 [thread overview]
Message-ID: <DHB3RDNDS08U.A75EZUOMO311@kernel.org> (raw)
In-Reply-To: <87y0jhpbsp.fsf@kernel.org>
On Tue Mar 24, 2026 at 3:00 PM CET, Andreas Hindborg wrote:
>> + /// Same as [`Coherent::zeroed`], but instead of a zero-initialization the memory is initialized
>> + /// with `init`.
>> + #[inline]
>> + pub fn init<E>(
>> + dev: &device::Device<Bound>,
>> + gfp_flags: kernel::alloc::Flags,
>> + init: impl Init<T, E>,
>> + ) -> Result<Self>
>> + where
>> + Error: From<E>,
>> + {
>> + Self::init_with_attrs(dev, gfp_flags, Attrs(0), init)
>> + }
>> +
>
> I think we are missing an array initializer for `Coherent<[T]>`.
This method is already compatible with arrays, T can be an array type itself,
e.g. T = [MyStruct; 5].
For instance, the diff in [1] should work.
> Reviewed-by: Andreas Hindborg <a.hindborg@kernel.org>
Thanks! The patch series has been applied yesterday, and the branch it has been
applied to is immutable, so I can't add additional tags.
However, the Link: included in the patch still points to this conversation.
Also note that subsequent review is still valued; we can always send follow-up
patches if required.
Thanks,
Danilo
[1]
diff --git a/samples/rust/rust_dma.rs b/samples/rust/rust_dma.rs
index 129bb4b39c04..3d3ffc21ea77 100644
--- a/samples/rust/rust_dma.rs
+++ b/samples/rust/rust_dma.rs
@@ -22,6 +22,7 @@
struct DmaSampleDriver {
pdev: ARef<pci::Device>,
ca: Coherent<[MyStruct]>,
+ ca_init: Coherent<[MyStruct; 5]>,
#[pin]
sgt: SGTable<Owned<VVec<u8>>>,
}
@@ -76,6 +77,15 @@ fn probe(pdev: &pci::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, E
kernel::dma_write!(ca, [i]?, MyStruct::new(value.0, value.1));
}
+ let ca_init: Coherent<[MyStruct; 5]> = Coherent::init(
+ pdev.as_ref(),
+ GFP_KERNEL,
+ pin_init::init_array_from_fn(|i| {
+ let (h, b) = TEST_VALUES[i];
+ MyStruct::new(h, b)
+ }),
+ )?;
+
let size = 4 * page::PAGE_SIZE;
let pages = VVec::with_capacity(size, GFP_KERNEL)?;
@@ -84,6 +94,7 @@ fn probe(pdev: &pci::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, E
Ok(try_pin_init!(Self {
pdev: pdev.into(),
ca,
+ ca_init,
sgt <- sgt,
}))
})
@@ -98,6 +109,12 @@ fn check_dma(&self) -> Result {
assert_eq!(val0, value.0);
assert_eq!(val1, value.1);
+
+ let val0 = kernel::dma_read!(self.ca_init, [i]?.h);
+ let val1 = kernel::dma_read!(self.ca_init, [i]?.b);
+
+ assert_eq!(val0, value.0);
+ assert_eq!(val1, value.1);
}
Ok(())
next prev parent reply other threads:[~2026-03-24 15:03 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-20 19:45 [PATCH v2 0/8] dma::Coherent & dma::CoherentBox API Danilo Krummrich
2026-03-20 19:45 ` [PATCH v2 1/8] rust: dma: use "kernel vertical" style for imports Danilo Krummrich
2026-03-24 14:02 ` Andreas Hindborg
2026-03-20 19:45 ` [PATCH v2 2/8] rust: dma: add generalized container for types other than slices Danilo Krummrich
2026-03-21 23:22 ` Aditya Rajan
2026-03-22 0:47 ` Gary Guo
2026-03-22 6:24 ` Aditya Rajan
2026-03-24 13:42 ` Andreas Hindborg
2026-03-24 14:06 ` Gary Guo
2026-03-24 14:37 ` Andreas Hindborg
2026-03-20 19:45 ` [PATCH v2 3/8] rust: dma: add zeroed constructor to `Coherent` Danilo Krummrich
2026-03-21 6:37 ` Alexandre Courbot
2026-03-24 13:46 ` Andreas Hindborg
2026-03-20 19:45 ` [PATCH v2 4/8] rust: dma: introduce dma::CoherentBox for memory initialization Danilo Krummrich
2026-03-20 20:55 ` Gary Guo
2026-03-24 13:57 ` Andreas Hindborg
2026-03-20 19:45 ` [PATCH v2 5/8] rust: dma: add Coherent:init() and Coherent::init_with_attrs() Danilo Krummrich
2026-03-20 20:56 ` Gary Guo
2026-03-24 14:00 ` Andreas Hindborg
2026-03-24 15:03 ` Danilo Krummrich [this message]
2026-03-24 15:40 ` Andreas Hindborg
2026-03-20 19:45 ` [PATCH v2 6/8] gpu: nova-core: use Coherent::init to initialize GspFwWprMeta Danilo Krummrich
2026-03-20 21:04 ` Gary Guo
2026-03-20 19:45 ` [PATCH v2 7/8] gpu: nova-core: convert Gsp::new() to use CoherentBox Danilo Krummrich
2026-03-20 21:06 ` Gary Guo
2026-03-20 19:45 ` [PATCH v2 8/8] gpu: nova-core: convert to new dma::Coherent API Danilo Krummrich
2026-03-21 16:50 ` Gary Guo
2026-03-21 18:22 ` Danilo Krummrich
2026-03-21 22:36 ` Gary Guo
2026-03-21 5:13 ` [PATCH v2 0/8] dma::Coherent & dma::CoherentBox API Alexandre Courbot
2026-03-23 21:56 ` Danilo Krummrich
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=DHB3RDNDS08U.A75EZUOMO311@kernel.org \
--to=dakr@kernel.org \
--cc=a.hindborg@kernel.org \
--cc=abdiel.janulgue@gmail.com \
--cc=acourbot@nvidia.com \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=driver-core@lists.linux.dev \
--cc=gary@garyguo.net \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=nouveau@lists.freedesktop.org \
--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