Re: [KVM PATCH 2/3] eventfd: add a notifier mechanism

Davide Libenzi
2009-04-23T22:07:38Z

On Thu, 23 Apr 2009, Gregory Haskins wrote:

> Davide Libenzi wrote:
> > On Thu, 23 Apr 2009, Gregory Haskins wrote:
> >
> >
> >> This allows synchronous notifications to register with the eventfd
> >> infrastructure. Unlike traditional vfs based eventfd readers, notifiees
> >> do not implictly clear the counter on reception. However, the clearing
> >> is primarily important to allowing threads to block waiting for events
> >> anyway, so its an acceptable trade-off since blocking doesn't apply to
> >> notifiers.
> >>
> >
> > Do you really need to add a notifier? Eventfd already has a wait queue,
> > and we support callback-based wakeups, so is there any reason we shouldn't
> > use those and rely on the already existing wakeups?
> >
> Well, IIUC the issue is that a wait queue implies that you are in fact
> waiting...which we may not. :)
>
> The target in this particular application with kvm-irqfd is a vcpu
> context, which *may* be sleeping in something like a HLT, but it also
> could be in a number of other states such as non-root (guest) mode, it
> could be running in the kernel, it could be up in userspace, etc.
>
> That said: I am not married to the concept that this has to be a
> notifier callback, but I do want to be able to meet the target
> application. So if there is some way to do that within the existing
> wait-queue contstruct, I am open to suggestions.

Take a look at init_waitqueue_func_entry(), in particula at that "func"
parameter. Then look at how __wake_up_common() does its thing.
You don't need to be "waiting" for our wakeup system to work. Callbacks
works just fine, otherwise things like epoll could not work at all.

- Davide