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 irq
Adding 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.
--
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