From: Greg KH <gregkh@linuxfoundation.org>
To: Danilo Krummrich <dakr@kernel.org>
Cc: Alice Ryhl <aliceryhl@google.com>,
rafael@kernel.org, bhelgaas@google.com, ojeda@kernel.org,
alex.gaynor@gmail.com, boqun.feng@gmail.com, gary@garyguo.net,
bjorn3_gh@protonmail.com, benno.lossin@proton.me,
tmgross@umich.edu, a.hindborg@samsung.com, airlied@gmail.com,
fujita.tomonori@gmail.com, lina@asahilina.net,
pstanner@redhat.com, ajanulgu@redhat.com, lyude@redhat.com,
robh@kernel.org, daniel.almeida@collabora.com,
saravanak@google.com, dirk.behme@de.bosch.com, j@jannau.net,
fabien.parent@linaro.org, chrisi.schrefl@gmail.com,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-pci@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v4 08/13] rust: pci: add basic PCI device / driver abstractions
Date: Wed, 11 Dec 2024 15:42:06 +0100 [thread overview]
Message-ID: <2024121153-exact-wobbling-d306@gregkh> (raw)
In-Reply-To: <2024121104-curling-frostily-7b47@gregkh>
On Wed, Dec 11, 2024 at 03:41:35PM +0100, Greg KH wrote:
> On Wed, Dec 11, 2024 at 03:32:21PM +0100, Danilo Krummrich wrote:
> > On Wed, Dec 11, 2024 at 02:06:50PM +0100, Alice Ryhl wrote:
> > > On Tue, Dec 10, 2024 at 11:38 PM Danilo Krummrich <dakr@kernel.org> wrote:
> > > >
> > > > On Tue, Dec 10, 2024 at 11:55:33AM +0100, Alice Ryhl wrote:
> > > > > On Mon, Dec 9, 2024 at 11:44 AM Danilo Krummrich <dakr@kernel.org> wrote:
> > > > > >
> > > > > > On Fri, Dec 06, 2024 at 03:01:18PM +0100, Alice Ryhl wrote:
> > > > > > > On Thu, Dec 5, 2024 at 3:16 PM Danilo Krummrich <dakr@kernel.org> wrote:
> > > > > > > >
> > > > > > > > Implement the basic PCI abstractions required to write a basic PCI
> > > > > > > > driver. This includes the following data structures:
> > > > > > > >
> > > > > > > > The `pci::Driver` trait represents the interface to the driver and
> > > > > > > > provides `pci::Driver::probe` for the driver to implement.
> > > > > > > >
> > > > > > > > The `pci::Device` abstraction represents a `struct pci_dev` and provides
> > > > > > > > abstractions for common functions, such as `pci::Device::set_master`.
> > > > > > > >
> > > > > > > > In order to provide the PCI specific parts to a generic
> > > > > > > > `driver::Registration` the `driver::RegistrationOps` trait is implemented
> > > > > > > > by `pci::Adapter`.
> > > > > > > >
> > > > > > > > `pci::DeviceId` implements PCI device IDs based on the generic
> > > > > > > > `device_id::RawDevceId` abstraction.
> > > > > > > >
> > > > > > > > Co-developed-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
> > > > > > > > Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
> > > > > > > > Signed-off-by: Danilo Krummrich <dakr@kernel.org>
> > > > > > >
> > > > > > > > +/// The PCI device representation.
> > > > > > > > +///
> > > > > > > > +/// A PCI device is based on an always reference counted `device:Device` instance. Cloning a PCI
> > > > > > > > +/// device, hence, also increments the base device' reference count.
> > > > > > > > +#[derive(Clone)]
> > > > > > > > +pub struct Device(ARef<device::Device>);
> > > > > > >
> > > > > > > It seems more natural for this to be a wrapper around
> > > > > > > `Opaque<bindings::pci_dev>`. Then you can have both &Device and
> > > > > > > ARef<Device> depending on whether you want to hold a refcount or not.
> > > > > >
> > > > > > Yeah, but then every bus device has to re-implement the refcount dance we
> > > > > > already have in `device::Device` for the underlying base `struct device`.
> > > > > >
> > > > > > I forgot to mention this in my previous reply to Boqun, but we even documented
> > > > > > it this way in `device::Device` [1].
> > > > > >
> > > > > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/rust/kernel/device.rs#n28
> > > > >
> > > > > We could perhaps write a derive macro for AlwaysRefCounted that
> > > > > delegates to the inner type? That way, we can have the best of both
> > > > > worlds.
> > > >
> > > > Sounds interesting, how exactly would this work?
> > > >
> > > > (I'll already send out a v5, but let's keep discussing this.)
> > >
> > > Well, the derive macro could assume that the refcount is manipulated
> > > in the same way as the inner type does it. I admit that the idea is
> > > not fully formed, but if we can avoid wrapping ARef, that would be
> > > ideal.
> >
> > If we can get this to work, I agree it's a good solution.
> >
> > What do you think about making this a follow up of this series?
>
> That's fine, if you remove the patch that adds the module name to the
> function as ideally that's what we are trying to remove here :)
Argh, wrong thread, nevermind me, I'm fine with this...
next prev parent reply other threads:[~2024-12-11 14:42 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-05 14:14 [PATCH v4 00/13] Device / Driver PCI / Platform Rust abstractions Danilo Krummrich
2024-12-05 14:14 ` [PATCH v4 01/13] rust: pass module name to `Module::init` Danilo Krummrich
2024-12-05 14:14 ` [PATCH v4 02/13] rust: implement generic driver registration Danilo Krummrich
2024-12-06 13:57 ` Alice Ryhl
2024-12-06 18:13 ` Danilo Krummrich
2024-12-05 14:14 ` [PATCH v4 03/13] rust: implement `IdArray`, `IdTable` and `RawDeviceId` Danilo Krummrich
2024-12-07 1:14 ` Fabien Parent
2024-12-09 10:45 ` Danilo Krummrich
2024-12-05 14:14 ` [PATCH v4 04/13] rust: add rcu abstraction Danilo Krummrich
2024-12-05 14:14 ` [PATCH v4 05/13] rust: add `Revocable` type Danilo Krummrich
2024-12-06 15:11 ` Alice Ryhl
2024-12-09 10:40 ` Danilo Krummrich
2024-12-05 14:14 ` [PATCH v4 06/13] rust: add `io::{Io, IoRaw}` base types Danilo Krummrich
2024-12-06 14:13 ` Alice Ryhl
2024-12-11 14:52 ` Daniel Almeida
2024-12-05 14:14 ` [PATCH v4 07/13] rust: add devres abstraction Danilo Krummrich
2024-12-05 14:14 ` [PATCH v4 08/13] rust: pci: add basic PCI device / driver abstractions Danilo Krummrich
2024-12-06 14:01 ` Alice Ryhl
2024-12-09 10:44 ` Danilo Krummrich
2024-12-10 10:55 ` Alice Ryhl
2024-12-10 22:38 ` Danilo Krummrich
2024-12-11 13:06 ` Alice Ryhl
2024-12-11 14:32 ` Danilo Krummrich
2024-12-11 14:41 ` Greg KH
2024-12-11 14:42 ` Greg KH [this message]
2024-12-11 14:44 ` Alice Ryhl
2024-12-06 15:25 ` Alice Ryhl
2024-12-05 14:14 ` [PATCH v4 09/13] rust: pci: implement I/O mappable `pci::Bar` Danilo Krummrich
2024-12-06 10:44 ` Philipp Stanner
2024-12-05 14:14 ` [PATCH v4 10/13] samples: rust: add Rust PCI sample driver Danilo Krummrich
2024-12-05 14:14 ` [PATCH v4 11/13] rust: of: add `of::DeviceId` abstraction Danilo Krummrich
2024-12-09 21:22 ` Rob Herring
2024-12-05 14:14 ` [PATCH v4 12/13] rust: platform: add basic platform device / driver abstractions Danilo Krummrich
2024-12-09 22:37 ` Rob Herring
2024-12-09 23:13 ` Danilo Krummrich
2024-12-10 7:46 ` Greg KH
2024-12-10 9:34 ` Danilo Krummrich
2024-12-10 9:40 ` Greg KH
2024-12-05 14:14 ` [PATCH v4 13/13] samples: rust: add Rust platform sample driver Danilo Krummrich
2024-12-05 17:09 ` Dirk Behme
2024-12-05 18:03 ` Rob Herring
2024-12-06 6:39 ` Dirk Behme
2024-12-06 8:33 ` Danilo Krummrich
2024-12-06 9:29 ` Dirk Behme
2024-12-10 22:59 ` Rob Herring (Arm)
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=2024121153-exact-wobbling-d306@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=a.hindborg@samsung.com \
--cc=airlied@gmail.com \
--cc=ajanulgu@redhat.com \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=benno.lossin@proton.me \
--cc=bhelgaas@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=chrisi.schrefl@gmail.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=devicetree@vger.kernel.org \
--cc=dirk.behme@de.bosch.com \
--cc=fabien.parent@linaro.org \
--cc=fujita.tomonori@gmail.com \
--cc=gary@garyguo.net \
--cc=j@jannau.net \
--cc=lina@asahilina.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lyude@redhat.com \
--cc=ojeda@kernel.org \
--cc=pstanner@redhat.com \
--cc=rafael@kernel.org \
--cc=robh@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=saravanak@google.com \
--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.