2016-07-05 16:19+0800, Peter Xu: > This is v11 of Intel IR work. It is rebased to mst's branch > "tags/for_upstream", commit: > > "278a2a2 vmw_pvscsi: remove unnecessary internal msi state flag" > > This series mainly fixed several issues in v10 review comments, fixed > one bug with RHEL guests, added acked-by for Paolo, and a fresh new > rebase as mentioned above. > > To make it fast, I only did quick tests for this versiont. But at > least it should cover basic functions like: IOAPIC, MSI, multiple > vcpus, different guests (4.7 upstream and rhel 7.2), vhost, split/off > irqchips. More tests to be done. > > Meanwhile, there are several pending issues to be solved, which is > queued in my todo list and I'll continue the work after this series is > merged. > > Online branch: > > https://github.com/xzpeter/qemu vtd-intr-v11 > > Please review, thanks.
Testing found only one bug: The patchset doesn't work with if you have 16 APICs with IDs 0-15 and then some more, because KVM has hacked x2APIC support that translates logical interrupt with destination 0xff (first cluster of 16 VCPUs) into a broadcast (also works with lowest-priority) and then picks VCPU > 16 as the destination, leading to messages like do_IRQ: 17.209 No irq handler for vector The fun part is that this is how KVM wanted to behave, when it allowed x2apic with unremapped ioapic. :( KVM could either finally remove x2apic without IR or add a way in which userspace could say whether an interrupt is x2APIC or not. QEMU cannot do anything to work around the bug, so I think it would be best to disable EIM for now.