Re: [PATCH v9 2/2] kvm: On Ack, De-assert & Notify KVM_IRQFD extension

Alex Williamson
2012-08-22T01:48:16Z

On Wed, 2012-08-22 at 03:14 +0300, Michael S. Tsirkin wrote:
> On Tue, Aug 21, 2012 at 03:11:41PM -0600, Alex Williamson wrote:
> > On Tue, 2012-08-21 at 23:37 +0300, Michael S. Tsirkin wrote:
> > > On Tue, Aug 21, 2012 at 01:29:14PM -0600, Alex Williamson wrote:
> > > > + }
> > > > +
> > > > irq_rt = rcu_dereference_protected(kvm->irq_routing,
> > > > lockdep_is_held(&kvm->irqfds.lock));
> > > > irqfd_update(kvm, irqfd, irq_rt);
> > > > @@ -267,6 +426,26 @@ kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args)
> > > >
> > > > spin_unlock_irq(&kvm->irqfds.lock);
> > > >
> > > > + if (oadn) {
> > > > + synchronize_rcu();
> > >
> > > Seems unexpected on assign.
> > > What does this synchronize_rcu do?
> >
> > Because we force the notify below and we need the irqfd we just added to
> > the list to be visible on the list for that.
>
> I do not see it yet - maybe add a comment?

It's entirely possible I'm wrong too. This was an after thought and now
that I look at it again, the below irqfd_oadn_notify obviously starts
after the list_add, so there shouldn't be any need to wait. Thanks,

Alex