Message ID | 155785957030.10526.15982471144880782730.stgit@gimli.home (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [for-4.1] q35: Revert to kernel irqchip | expand |
On Tue, 14 May 2019 12:46:47 -0600 Alex Williamson <alex.williamson@redhat.com> wrote: > Commit b2fc91db8447 ("q35: set split kernel irqchip as default") changed > the default for the pc-q35-4.0 machine type to use split irqchip, which > turned out to have disasterous effects on vfio-pci INTx support. KVM > resampling irqfds are registered for handling these interrupts, but > these are non-functional in split irqchip mode. We can't simply test > for split irqchip in QEMU as userspace handling of this interrupt is a > significant performance regression versus KVM handling (GeForce GPUs > assigned to Windows VMs are non-functional without forcing MSI mode or > re-enabling kernel irqchip). > > The resolution is to revert the change in default irqchip mode in the > pc-q35-4.1 machine type. The qemu-q35-4.0 machine type should not be > used in vfio-pci configurations for devices requiring legacy INTx > support without explicitly modifying the VM configuration to use KVM > irqchip. A new pc-q35-4.0.1 machine type is submitted to resolve this > in the stable branch. > > Link: https://bugs.launchpad.net/qemu/+bug/1826422 > Fixes: b2fc91db8447 ("q35: set split kernel irqchip as default") > Signed-off-by: Alex Williamson <alex.williamson@redhat.com> > --- > hw/i386/pc_q35.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c > index 37dd350511a9..9f90dc72a53f 100644 > --- a/hw/i386/pc_q35.c > +++ b/hw/i386/pc_q35.c > @@ -357,7 +357,7 @@ static void pc_q35_machine_options(MachineClass *m) > m->units_per_default_bus = 1; > m->default_machine_opts = "firmware=bios-256k.bin"; > m->default_display = "std"; > - m->default_kernel_irqchip_split = true; > + m->default_kernel_irqchip_split = false; > m->no_floppy = 1; > machine_class_allow_dynamic_sysbus_dev(m, TYPE_AMD_IOMMU_DEVICE); > machine_class_allow_dynamic_sysbus_dev(m, TYPE_INTEL_IOMMU_DEVICE); > @@ -377,6 +377,7 @@ DEFINE_Q35_MACHINE(v4_1, "pc-q35-4.1", NULL, > static void pc_q35_4_0_machine_options(MachineClass *m) > { > pc_q35_4_1_machine_options(m); > + m->default_kernel_irqchip_split = true; > m->alias = NULL; > compat_props_add(m->compat_props, hw_compat_4_0, hw_compat_4_0_len); > compat_props_add(m->compat_props, pc_compat_4_0, pc_compat_4_0_len); > Hmm, I need to make 4.0.1 here too, v2 coming...
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 37dd350511a9..9f90dc72a53f 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -357,7 +357,7 @@ static void pc_q35_machine_options(MachineClass *m) m->units_per_default_bus = 1; m->default_machine_opts = "firmware=bios-256k.bin"; m->default_display = "std"; - m->default_kernel_irqchip_split = true; + m->default_kernel_irqchip_split = false; m->no_floppy = 1; machine_class_allow_dynamic_sysbus_dev(m, TYPE_AMD_IOMMU_DEVICE); machine_class_allow_dynamic_sysbus_dev(m, TYPE_INTEL_IOMMU_DEVICE); @@ -377,6 +377,7 @@ DEFINE_Q35_MACHINE(v4_1, "pc-q35-4.1", NULL, static void pc_q35_4_0_machine_options(MachineClass *m) { pc_q35_4_1_machine_options(m); + m->default_kernel_irqchip_split = true; m->alias = NULL; compat_props_add(m->compat_props, hw_compat_4_0, hw_compat_4_0_len); compat_props_add(m->compat_props, pc_compat_4_0, pc_compat_4_0_len);
Commit b2fc91db8447 ("q35: set split kernel irqchip as default") changed the default for the pc-q35-4.0 machine type to use split irqchip, which turned out to have disasterous effects on vfio-pci INTx support. KVM resampling irqfds are registered for handling these interrupts, but these are non-functional in split irqchip mode. We can't simply test for split irqchip in QEMU as userspace handling of this interrupt is a significant performance regression versus KVM handling (GeForce GPUs assigned to Windows VMs are non-functional without forcing MSI mode or re-enabling kernel irqchip). The resolution is to revert the change in default irqchip mode in the pc-q35-4.1 machine type. The qemu-q35-4.0 machine type should not be used in vfio-pci configurations for devices requiring legacy INTx support without explicitly modifying the VM configuration to use KVM irqchip. A new pc-q35-4.0.1 machine type is submitted to resolve this in the stable branch. Link: https://bugs.launchpad.net/qemu/+bug/1826422 Fixes: b2fc91db8447 ("q35: set split kernel irqchip as default") Signed-off-by: Alex Williamson <alex.williamson@redhat.com> --- hw/i386/pc_q35.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)