All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Danilo Krummrich" <dakr@kernel.org>
To: "Daniel Almeida" <daniel.almeida@collabora.com>
Cc: "Benno Lossin" <lossin@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>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
	linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-pci@vger.kernel.org
Subject: Re: [PATCH v6 3/6] rust: irq: add support for non-threaded IRQs and handlers
Date: Sun, 13 Jul 2025 17:02:08 +0200	[thread overview]
Message-ID: <DBB0NXU86D6G.2M3WZMS2NUV10@kernel.org> (raw)
In-Reply-To: <18B23FD3-56E9-4531-A50C-F204616E7D17@collabora.com>

On Sun Jul 13, 2025 at 4:48 PM CEST, Daniel Almeida wrote:
>
>
>> On 13 Jul 2025, at 11:27, Danilo Krummrich <dakr@kernel.org> wrote:
>> 
>> On Sun Jul 13, 2025 at 4:19 PM CEST, Danilo Krummrich wrote:
>>> On Sun Jul 13, 2025 at 4:09 PM CEST, Daniel Almeida wrote:
>>>> On a second look, I wonder how useful this will be.
>>>> 
>>>> fn handle(&self, dev: &Device<Bound>) -> IrqReturn
>>>> 
>>>> Sorry for borrowing this terminology, but here we offer Device<Bound>, while I
>>>> suspect that most drivers will be looking for the most derived Device type
>>>> instead. So for drm drivers this will be drm::Device, for example, not the base
>>>> dev::Device type. I assume that this pattern will hold for other subsystems as
>>>> well.
>>>> 
>>>> Which brings me to my second point: drivers can store an ARef<drm::Device> on
>>>> the handler itself, and I assume that the same will be possible in other
>>>> subsystems.
>>> 
>>> Well, the whole point is that you can use a &Device<Bound> to directly access
>>> device resources without any overhead, i.e.
>>> 
>>> fn handle(&self, dev: &Device<Bound>) -> IrqReturn {
>>>   let io = self.iomem.access(dev);
>>> 
>>>   io.write32(...);
>>> }
>> 
>> So, yes, you can store anything in your handler, but the &Device<Bound> is a
>> cookie for the scope.
>
> Fine, but can’t you get a &Device<Bound> from a ARef<drm::Device>, for example?
> Perhaps a nicer solution would be to offer this capability instead?

I think you're confusing quite some things here.

  (1) I'm talking about the bus device the IRQ is registered for (e.g. PCI,
      platform, etc.). drm::Device represents a class device, which do not
      have DeviceContext states, such as Bound.

  (2) Owning a reference count of a device (i.e. ARef<Device>) does *not*
      guarantee that the device is bound. You can own a reference count to the
      device object way beyond it being bound. Instead, the guarantee comes from
      the scope.

      In this case, the scope is the IRQ callback, since the irq::Registration
      guarantees to call and complete free_irq() before the underlying bus
      device is unbound.

  reply	other threads:[~2025-07-13 15:02 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-03 19:29 [PATCH v6 0/6] rust: add support for request_irq Daniel Almeida
2025-07-03 19:29 ` [PATCH v6 1/6] rust: irq: add irq module Daniel Almeida
2025-07-04  7:43   ` Alice Ryhl
2025-07-03 19:30 ` [PATCH v6 2/6] rust: irq: add flags module Daniel Almeida
2025-07-04  6:14   ` Daniel Sedlak
2025-07-04  7:42     ` Alice Ryhl
2025-07-12 16:26       ` Daniel Almeida
2025-07-12 20:03         ` Alice Ryhl
2025-07-12 20:48           ` Daniel Almeida
2025-07-12 21:43             ` Alice Ryhl
2025-07-04  9:31     ` Miguel Ojeda
2025-07-03 19:30 ` [PATCH v6 3/6] rust: irq: add support for non-threaded IRQs and handlers Daniel Almeida
2025-07-04  7:51   ` Alice Ryhl
2025-07-07 16:18     ` Daniel Almeida
2025-07-07 20:30       ` Benno Lossin
2025-07-08 11:49         ` Alice Ryhl
2025-07-08 14:33           ` Benno Lossin
2025-07-04 16:39   ` Boqun Feng
2025-07-04 16:41     ` Boqun Feng
2025-07-07  7:20       ` Alice Ryhl
2025-07-08 12:15   ` Dirk Behme
2025-07-08 12:19     ` Danilo Krummrich
2025-07-12 21:24   ` Danilo Krummrich
2025-07-12 23:32     ` Daniel Almeida
2025-07-13 10:24       ` Danilo Krummrich
2025-07-13 11:19         ` Benno Lossin
2025-07-13 11:57           ` Danilo Krummrich
2025-07-13 12:16             ` Benno Lossin
2025-07-13 12:42               ` Danilo Krummrich
2025-07-13 14:09                 ` Daniel Almeida
2025-07-13 14:19                   ` Danilo Krummrich
2025-07-13 14:27                     ` Danilo Krummrich
2025-07-13 14:48                       ` Daniel Almeida
2025-07-13 15:02                         ` Danilo Krummrich [this message]
     [not found]                           ` <1F0227F0-8554-4DD2-BADE-0184D0824AF8@collabora.com>
2025-07-13 15:32                             ` Daniel Almeida
2025-07-19  5:47                               ` Dirk Behme
2025-07-19  8:56                                 ` Alice Ryhl
2025-07-20  0:45                                 ` Daniel Almeida
2025-07-14  7:57                     ` Dirk Behme
2025-07-14  9:36                       ` Danilo Krummrich
2025-07-13 15:29                 ` Benno Lossin
2025-07-13 17:20                   ` Danilo Krummrich
2025-07-14  6:42                 ` Boqun Feng
2025-07-14  9:24                   ` Danilo Krummrich
2025-07-14 10:29                     ` Danilo Krummrich
2025-07-14 15:12                 ` Daniel Almeida
2025-07-15  9:41                   ` Benno Lossin
2025-07-15 12:33                   ` Alice Ryhl
2025-07-15 12:37                     ` Danilo Krummrich
2025-07-03 19:30 ` [PATCH v6 4/6] rust: irq: add support for threaded " Daniel Almeida
2025-07-04  7:53   ` Alice Ryhl
2025-07-03 19:30 ` [PATCH v6 5/6] rust: platform: add irq accessors Daniel Almeida
2025-07-04  7:56   ` Alice Ryhl
2025-07-04 18:17     ` Danilo Krummrich
2025-07-04 18:23   ` Danilo Krummrich
2025-07-03 19:30 ` [PATCH v6 6/6] rust: pci: " Daniel Almeida
2025-07-04  7:56   ` Alice Ryhl
2025-07-04 18:19     ` Danilo Krummrich
2025-07-04 18:29   ` Danilo Krummrich
2025-07-03 20:13 ` [PATCH v6 0/6] rust: add support for request_irq 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=DBB0NXU86D6G.2M3WZMS2NUV10@kernel.org \
    --to=dakr@kernel.org \
    --cc=a.hindborg@kernel.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=bhelgaas@google.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=daniel.almeida@collabora.com \
    --cc=gary@garyguo.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=kwilczynski@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lossin@kernel.org \
    --cc=ojeda@kernel.org \
    --cc=rafael@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --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.