On Wed, Aug 07, 2019 at 10:29:50AM -0400, Alan Stern wrote: > It has been requested that usbfs should implement runtime power > management, instead of forcing the device to remain at full power as > long as the device file is open. This patch introduces that new > feature. > > It does so by adding three new usbfs ioctls: > > USBDEVFS_FORBID_SUSPEND: Prevents the device from going into > runtime suspend (and causes a resume if the device is already > suspended). > > USBDEVFS_ALLOW_SUSPEND: Allows the device to go into runtime > suspend. Some time may elapse before the device actually is > suspended, depending on things like the autosuspend delay. > > USBDEVFS_WAIT_FOR_RESUME: Blocks until the call is interrupted > by a signal or at least one runtime resume has occurred since > the most recent ALLOW_SUSPEND ioctl call (which may mean > immediately, even if the device is currently suspended). In > the latter case, the device is prevented from suspending again > just as if FORBID_SUSPEND was called before the ioctl returns. > > For backward compatibility, when the device file is first opened > runtime suspends are forbidden. The userspace program can then allow > suspends whenever it wants, and either resume the device directly (by > forbidding suspends again) or wait for a resume from some other source > (such as a remote wakeup). URBs submitted to a suspended device will > fail or will complete with an appropriate error code. > > This combination of ioctls is sufficient for user programs to have > nearly the same degree of control over a device's runtime power > behavior as kernel drivers do. > > Still lacking is documentation for the new ioctls. I intend to add it > later, after the existing documentation for the usbfs userspace API is > straightened out into a reasonable form. > > Suggested-by: Mayuresh Kulkarni <mkulkarni@xxxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > > --- > > v2: Return -EINTR instead of -ERESTARTSYS when proc_wait_for_resume() > is interrupted by a signal. Looks great, thanks for doing this. Now queued up. greg k-h