[ changes in v2: rebase over uq/master ] This series is another major milestone of merging qemu-kvm into upstream. It implements the required interfaces and logic to directly inject MSI-X interrupts generated by the vhost-net kernel module into the KVM in-kernel irqchip. This involves - establishing MSI vector notifiers, so far triggered on relevant MSI-X configuration changes of subscribed PCI devices - support for static vIRQ-to-MSI routes - an API for linking an IRQFD with such a vIRQ - the usage of these services in virtio-pci to enable direct injection
The series also contains some smaller refactorings of the KVM IRQ routing API such as automatic committing of route changes. It applies on top of the KVM MSI support series [1] posted recently. The complete stack is available at git://git.kiszka.org/qemu-kvm.git queues/kvm-msi-irqfd If the proposes API is acceptable, I will also provide some morphing patches for qemu-kvm to make the merge of both trees smoother. After this series, to only reasons to still use qemu-kvm for production purposes will be PCI device assignment and potential dependencies on legacy command line switches as well as vmstate formats (when requiring backward migration support). However, the majority of users should be able to switch to upstream QEMU seamlessly and finally receive the same level of performance on x86. [1] http://thread.gmane.org/gmane.comp.emulators.kvm.devel/90651 Jan Kiszka (11): msix: Factor out msix_get_message msix: Invoke msix_handle_mask_update on msix_mask_all msix: Introduce vector notifiers kvm: Rename kvm_irqchip_add_route to kvm_irqchip_add_irq_route kvm: Introduce kvm_irqchip_add_msi_route kvm: Publicize kvm_irqchip_release_virq kvm: Make kvm_irqchip_commit_routes an internal service kvm: Introduce kvm_irqchip_add/remove_irqfd kvm: Enable use of kvm_irqchip_in_kernel in hwlib code msix: Add msix_nr_vectors_allocated virtio/vhost: Add support for KVM in-kernel MSI injection hw/msix.c | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++--- hw/msix.h | 6 +++ hw/pc_piix.c | 14 ++---- hw/pci.h | 8 ++++ hw/virtio-pci.c | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ hw/virtio-pci.h | 6 +++ kvm-all.c | 91 +++++++++++++++++++++++++++++++++------ kvm-stub.c | 23 ++++++++++ kvm.h | 17 +++++--- 9 files changed, 377 insertions(+), 35 deletions(-) -- 1.7.3.4