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 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html