Here is the latest series of MSI-X mask supporting patches. The bigest change from last version is, in order to reduce the complexity, I moved all mask bit operation to kernel, including disabled entries. This addressed two concerns: 1. KVM and QEmu each own a part of mask bit operation. 2. QEmu need accessing the real hardware to get the mask bit information.
So now QEmu have to use kernel API to get mask bit information. Though it would be slower than direct accessing the real hardware's MMIO, the direct accessing is unacceptable beacuse in fact the host OS own the device. The host OS can access the device without notifying the guest(and don't need to do so). Userspace shouldn't penetrate the host OS layer to directly operate the real hardware, otherwise would cause guest confusion. Also I discard the userspace mask operation as well, after showed the performance number. This version also removed the capability enabling mechanism. Because we want to use the struct kvm_assigned_msix_entry with new IOCTL, so there is no compatible issue. Please review. And I would run more test with current patch. So far so good. -- regards Yang, Sheng Sheng Yang (5): PCI: MSI: Move MSI-X entry definition to pci_regs.h PCI: Add mask bit definition for MSI-X table KVM: Move struct kvm_io_device to kvm_host.h KVM: Add kvm_get_irq_routing_entry() func KVM: assigned dev: MSI-X mask support Documentation/kvm/api.txt | 46 +++++++ arch/x86/kvm/x86.c | 1 + drivers/pci/msi.c | 4 +- drivers/pci/msi.h | 6 - include/linux/kvm.h | 21 +++- include/linux/kvm_host.h | 28 +++++ include/linux/pci_regs.h | 8 ++ virt/kvm/assigned-dev.c | 285 ++++++++++++++++++++++++++++++++++++++++++++- virt/kvm/iodev.h | 25 +---- virt/kvm/irq_comm.c | 20 +++ 10 files changed, 410 insertions(+), 34 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html