On Sat, Jul 19, 2025 at 7:47 AM Dirk Behme <dirk.behme@xxxxxxxxx> wrote: > > Hi Daniel, > > On 13.07.25 17:32, Daniel Almeida wrote: > > > > > >> On 13 Jul 2025, at 12:28, Daniel Almeida <daniel.almeida@xxxxxxxxxxxxx> wrote: > >> > >> > >> > >>> > >>> (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. > >>> > >> > >> > >> Oh, I see. I guess this is where I started to get a bit confused indeed. > >> > >> — Daniel > > > > Fine, I guess I can submit a newer version and test that on Tyr. > > > > Dirk, can you also test the next iteration on your driver? It will possibly > > solve your use case as well. > > > Now, I'm slightly confused ;) I just saw your version 7 of this > > [PATCH v7 3/6] rust: irq: add support for non-threaded IRQs and handlers > https://lore.kernel.org/rust-for-linux/20250715-topics-tyr-request_irq2-v7-3-d469c0f37c07@xxxxxxxxxxxxx/ > > and somehow was expecting something like > > fn handle(&self, dev: &Device<Bound>) -> IrqReturn > > there. I.e. to get a bound device passed into the handler. > > If I misunderstood the discussion and this is supposed to not be > added: Any hint how to get the &Device<Bound> from the probe > function/irq registration into the irq handler, then? To be able to do > something like > > fn handle(&self) -> IrqReturn { > let dev = ??; > let io = self.iomem.access(dev); Please see: https://lore.kernel.org/all/CAH5fLgibCtmgFpKNrC+jcSEqSUctyVMuYwEC0QSo+vzyDXK0zg@xxxxxxxxxxxxxx/ Alice