On 11/26/2013 06:28 PM, Paolo Bonzini wrote:
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 irqAdding a "disable/enable IRQs" looks like a relatively big change. But perhaps it's not for some reason I'm missing.
Those are guest operations, which may not be there at all.
