Il 26/11/2013 17:24, Gleb Natapov ha scritto: >> VCPU writes to routing table >> e = entry from IRQ routing table >> kvm_irq_routing_update(kvm, new); >> VCPU resumes execution >> kvm_set_msi_irq(e, &irq); >> kvm_irq_delivery_to_apic_fast(); >> >> where the entry is stale but the VCPU has already resumed execution. > > So how is it different from what we have now: > > disable_irq() > VCPU writes to routing table > e = entry from IRQ routing table > kvm_set_msi_irq(e, &irq); > kvm_irq_delivery_to_apic_fast(); > kvm_irq_routing_update(kvm, new); > synchronize_rcu() > VCPU resumes execution > enable_irq() > receive stale irq Adding a "disable/enable IRQs" looks like a relatively big change. But perhaps it's not for some reason I'm missing. Paolo -- 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