On Thu, 20 Dec 2018 13:40:35 +0800 Peter Xu <pet...@redhat.com> wrote:
> Starting from QEMU 4.0, let's specify "split" as the default value for > kernel-irqchip. > > So for QEMU>=4.0 we'll have: allowed=Y,required=N,split=Y > for QEMU<=3.1 we'll have: allowed=Y,required=N,split=N > (omitting all the "kernel_irqchip_" prefix) > > Note that this will let the default q35 machine type to depend on > Linux version 4.4 or newer because that's where split irqchip is > introduced in kernel. But it's fine since we're boosting supported > Linux version for QEMU 4.0 to around Linux 4.5. For more information > please refer to the discussion on AMD's RDTSCP: > > https://lore.kernel.org/lkml/20181210181328.ga...@zn.tnic/ It looks like this broke INTx for vfio-pci, see: https://bugs.launchpad.net/qemu/+bug/1826422 In my testing it looks like KVM advertises supporting the KVM_IRQFD resample feature, but vfio never gets the unmask notification, so the device remains with DisINTx set and no further interrupts are generated. Do we expect KVM's IRQFD with resampler to work in the split IRQ mode? We can certainly hope that "high performance" devices use MSI or MSI/X, but this would be quite a performance regression with split mode if our userspace bypass for INTx goes away. Thanks, Alex PS - the least impact workaround for users is to re-enable kernel mode irqchip with kernel_irqchip=on or <ioapic driver='kvm'/>. We can also force QEMU routing of INTx with the x-no-kvm-intx=on option per vfio-pci device, but this disables the userspace bypass and brings along higher interrupt latency and overhead.