On 9/25/19 2:08 PM, Bart Van Assche wrote: > On 9/25/19 1:50 PM, Danil Kipnis wrote: >> On Wed, Sep 25, 2019 at 8:55 PM Bart Van Assche <bvanassche@xxxxxxx> wrote: >>> There is plenty of code under drivers/base that calls get_device() and >>> put_device(). Are you sure that none of the code under drivers/base will >>> ever call get_device() and put_device() for the ibtrs client device? >> >> You mean how could multiple kernel modules share the same ibtrs >> session...? I really never thought that far... > > I meant something else: device_register() registers struct device > instances in multiple lists. The driver core may decide to iterate over > these lists and to call get_device() / put_device() on the devices it > finds in these lists. Examples of such functions are device_pm_add() (which is called indirectly by device_register()) and dpm_prepare(). Although it is unlikely that this code will be used in combination with suspend/resume, I don't think these drivers should be written such that it these are incompatible with the runtime power management code. Bart.