All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Danilo Krummrich" <dakr@kernel.org>
To: "Jason Gunthorpe" <jgg@nvidia.com>
Cc: "Zhi Wang" <zhiw@nvidia.com>, <rust-for-linux@vger.kernel.org>,
	<linux-pci@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<gary@garyguo.net>, <joelagnelf@nvidia.com>,
	<aliceryhl@google.com>, <bhelgaas@google.com>,
	<kwilczynski@kernel.org>, <ojeda@kernel.org>,
	<alex.gaynor@gmail.com>, <boqun.feng@gmail.com>,
	<bjorn3_gh@protonmail.com>, <lossin@kernel.org>,
	<a.hindborg@kernel.org>, <tmgross@umich.edu>,
	<markus.probst@posteo.de>, <helgaas@kernel.org>,
	<cjia@nvidia.com>, <smitra@nvidia.com>, <ankita@nvidia.com>,
	<aniketa@nvidia.com>, <kwankhede@nvidia.com>,
	<targupta@nvidia.com>, <acourbot@nvidia.com>,
	<jhubbard@nvidia.com>, <zhiwang@kernel.org>,
	<daniel.almeida@collabora.com>
Subject: Re: [PATCH v3 1/1] rust: introduce abstractions for fwctl
Date: Tue, 03 Mar 2026 21:50:55 +0100	[thread overview]
Message-ID: <DGTFZX0OF96N.18P63FULRD8GN@kernel.org> (raw)
In-Reply-To: <20260303201552.GF972761@nvidia.com>

On Tue Mar 3, 2026 at 9:15 PM CET, Jason Gunthorpe wrote:
> Anyhow is someone waiting for me to do something with it?

I still have this on my list for review, I can probably do a pass tomorrow. :)

>> +impl<T: Operations> Device<T> {
>> +    /// Allocate a new fwctl device with embedded driver data.
>> +    ///
>> +    /// Returns an [`ARef`] that can be passed to [`Registration::new()`]
>> +    /// to make the device visible to userspace. The caller may inspect or
>> +    /// configure the device between allocation and registration.
>> +    pub fn new(
>> +        parent: &device::Device<device::Bound>,
>> +        data: impl PinInit<T::DeviceData, Error>,
>> +    ) -> Result<ARef<Self>> {
>> +        let ops = core::ptr::from_ref::<bindings::fwctl_ops>(&VTable::<T>::VTABLE).cast_mut();
>> +
>> +        // SAFETY: `_fwctl_alloc_device` allocates `size` bytes via kzalloc and
>> +        // initialises the embedded fwctl_device. `ops` points to a static vtable
>> +        // that outlives the device. `parent` is bound.
>> +        let raw = unsafe {
>> +            bindings::_fwctl_alloc_device(parent.as_raw(), ops, core::mem::size_of::<Self>())
>> +        };
>> +
>> +        if raw.is_null() {
>> +            return Err(ENOMEM);
>> +        }
>> +
>> +        // CAST: Device<T> is repr(C) with fwctl_device at offset 0.
>> +        let this = raw as *mut Self;
>
> Should this have some helper? It looks a bit fragile, in C we have a
> static_assert on offsetof to prevent errors.

We could add a helper with something like this:

	    const {
	        assert!(
	            core::mem::offset_of!(Self, dev) == 0,
	            "struct fwctl_device must be at offset 0"
	        )
	    };

But we could also just include this in this constructor.

  reply	other threads:[~2026-03-03 20:51 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-17 20:49 [PATCH v3 0/1] rust: introduce abstractions for fwctl Zhi Wang
2026-02-17 20:49 ` [PATCH v3 1/1] " Zhi Wang
2026-03-03 20:15   ` Jason Gunthorpe
2026-03-03 20:50     ` Danilo Krummrich [this message]
2026-03-03 21:00     ` Danilo Krummrich
2026-03-05 16:02   ` Danilo Krummrich
2026-03-05 21:14     ` Zhi Wang

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=DGTFZX0OF96N.18P63FULRD8GN@kernel.org \
    --to=dakr@kernel.org \
    --cc=a.hindborg@kernel.org \
    --cc=acourbot@nvidia.com \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=aniketa@nvidia.com \
    --cc=ankita@nvidia.com \
    --cc=bhelgaas@google.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=cjia@nvidia.com \
    --cc=daniel.almeida@collabora.com \
    --cc=gary@garyguo.net \
    --cc=helgaas@kernel.org \
    --cc=jgg@nvidia.com \
    --cc=jhubbard@nvidia.com \
    --cc=joelagnelf@nvidia.com \
    --cc=kwankhede@nvidia.com \
    --cc=kwilczynski@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lossin@kernel.org \
    --cc=markus.probst@posteo.de \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=smitra@nvidia.com \
    --cc=targupta@nvidia.com \
    --cc=tmgross@umich.edu \
    --cc=zhiw@nvidia.com \
    --cc=zhiwang@kernel.org \
    /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.