On Tue, Aug 02, 2022 at 10:57:55AM -0600, Alex Williamson wrote: > On Tue, 2 Aug 2022 13:35:04 -0300 > Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > > On Tue, Aug 02, 2022 at 09:41:28AM -0600, Alex Williamson wrote: > > > > > The subtlety is that there's a flag and a field and the flag can only > > > be set if the field is set, the flag can only be clear if the field is > > > clear, so we return -EINVAL for the other cases? Why do we have both a > > > flag and a field? This isn't like we're adding a feature later and the > > > flag needs to indicate that the field is present and valid. It's just > > > not a very clean interface, imo. Thanks, > > > > That isn't how I read Abhishek's proposal.. The eventfd should always > > work and should always behave as described "The notification through > > the provided eventfd will be generated only when the device has > > entered and is resumed from a low power state" > > > > If userspace provides it without LOW_POWER_REENTERY_DISABLE then it > > still generates the events. > > > > The linkage to LOW_POWER_REENTERY_DISABLE is only that userspace > > probably needs to use both elements together to generate the > > auto-reentry behavior. Kernel should not enforce it. > > > > Two fields, orthogonal behaviors. > > What's the point of notifying userspace that the device was resumed if > it might already be suspended again by the time userspace responds to > the eventfd? I don't know - the eventfds is counting so it does let userspace monitor frequency of auto-sleeping. In any case the point is to make simple kernel APIs, not cover every combination with a use case. Decoupling is simpler than coupling. Jason