On Wed, May 13, 2015 at 10:04:53AM +0200, Paolo Bonzini wrote: > > > On 13/05/2015 08:12, Jan Kiszka wrote: > >> +void kvm_scan_ioapic_routes(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap) > >> +{ > >> + struct kvm *kvm = vcpu->kvm; > >> + struct kvm_kernel_irq_routing_entry *entry; > >> + struct kvm_irq_routing_table *table; > >> + u32 i, nr_rt_entries; > >> + > >> + mutex_lock(&kvm->irq_lock); > > This only needs irq_srcu protection, not irq_lock, so the lookup cost > becomes much smaller (all CPUs can proceed in parallel). > > You would need to put an smp_mb here, to ensure that irq_routing is read > after KVM_SCAN_IOAPIC is cleared. You can introduce > smb_mb__after_srcu_read_lock in order to elide it. > > The matching memory barrier would be a smp_mb__before_atomic in > kvm_make_scan_ioapic_request. > Makes sense, I'll update this for the next iteration. Steve -- 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