On 23-06-21 17:22:54, Greg Kroah-Hartman wrote: > On Wed, Jun 21, 2023 at 05:40:17PM +0300, Abel Vesa wrote: > > This can be used by drivers to figure out if a different device > > driver has state synced or not for a specific device. > > > > Signed-off-by: Abel Vesa <abel.vesa@xxxxxxxxxx> > > --- > > include/linux/device.h | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/include/linux/device.h b/include/linux/device.h > > index bae11928ef7e..8f042f04b5d9 100644 > > --- a/include/linux/device.h > > +++ b/include/linux/device.h > > @@ -1007,6 +1007,20 @@ static inline int dev_set_drv_sync_state(struct device *dev, > > return 0; > > } > > > > +static inline bool dev_is_drv_state_synced(struct device *dev) > > +{ > > + bool ret = false; > > + > > + if (!dev) > > + return ret; > > + > > + device_lock(dev); > > + ret = dev->state_synced; > > + device_unlock(dev); > > This lock is "protecting" nothing, given that the value can instantly > change after it is read. Hmm, for some reason I thought it needs to be synchronized with the sync state callback being called already. But I just noticed that call to the sync state callback is independently locked after state_synced is set. So I guess the lock can go away here. > > Because it can change, how will this function actually show anything > relevant? The only usecase I can think of for this new API is for some driver to delay an action until ultimately the driver for a specific device gets state synced. So even if the value can change after it has been checked, such consumer driver will most likely retry later on. Hope that makes sense. > > thanks, > > greg k-h