On Mon Jul 14, 2025 at 5:12 PM CEST, Daniel Almeida wrote: > Hi, > >> >>>> >>>> (2) It is guaranteed that the device pointer is valid because (1) guarantees >>>> it's even bound and because Devres<RegistrationInner> itself has a >>>> reference count. >>> >>> Yeah but I would find it much more natural (and also useful in other >>> circumstances) if `Devres<T>` would give you access to `Device` (at >>> least the `Normal` type state). >> >> If we use container_of!() instead or just pass the address of Self (i.e. >> Registration) to request_irq() instead, > > > Boqun, Benno, are you ok with passing the address of Registration<T> as the cookie? > > Recall that this was a change requested in v4, so I am checking whether we are > all on the same page before going back to that. I looked at the conversation again and the important part is that you aren't allowed to initialize the `RegistrationInner` before the `request_irq` call was successful (because the drop will run `irq_free`). What pointer you use as the cookie doesn't matter for this. Feel free to double check again with the concrete code. --- Cheers, Benno > See [0], i.e.: > >> > > >> Well yes and no, with the Devres changes, the `cookie` can just be the >> > > >> address of the `RegistrationInner` & we can do it this way :) >> > > >> >> > > >> --- >> > > >> Cheers, >> > > >> Benno >> > > > >> > > > >> > > > No, we need this to be the address of the the whole thing (i.e. >> > > > Registration<T>), otherwise you can’t access the handler in the irq >> > > > callback. >> >> You only need the access of `handler` in the irq callback, right? I.e. >> passing the address of `handler` would suffice (of course you need >> to change the irq callback as well). > > > — Daniel > > [0] https://lore.kernel.org/all/aFq3P_4XgP0dUrAS@xxxxxxxx/