On Tue, Feb 14, 2023 at 01:23:25PM -0800, Elliot Berman wrote: > +struct gh_rm { > + struct device *dev; What device does this point to? > + struct gunyah_resource tx_ghrsc, rx_ghrsc; > + struct gh_msgq msgq; > + struct mbox_client msgq_client; > + struct gh_rm_connection *active_rx_connection; > + int last_tx_ret; > + > + struct idr call_idr; > + struct mutex call_idr_lock; > + > + struct kmem_cache *cache; > + struct mutex send_lock; > + struct blocking_notifier_head nh; > +}; This obviously is the "device" that your system works on, so what are the lifetime rules of it? Why isn't is just a real 'struct device' in the system instead of a random memory blob with a pointer to a device? What controls the lifetime of this structure and where is the reference counting logic for it? And why no documentation for this core structure? thanks, greg k-h