On 02/11/2015 22:19, Matt Gingell wrote: > Hi Jan, > > Would you be able to look this over? I’d like to get this into shape to > commit, > either now or once the corresponding kernel patch goes in. > > Thanks, > Matt > > Add support for KVM_CAP_SPLIT_IRQCHIP > > Adds a new alternative 'split' to the -machine kernel-irqchip option. > When split mode is specified: > > 1.) KVM_CAP_SPLIT_IRQCHIP is enabled. > > 2.) The PIC, PIT, and IOAPIC are implemented in userspace while the > LAPIC is implemented by KVM. > > 3.) The software IOAPIC delivers interrupts to the KVM LAPIC via > kvm_set_irq. Interrupt delivery is configured via the MSI routing > table, for which routes are reserved in target-i386/kvm.c then > configured in hw/intc/ioapic.c > > 4.) KVM delivers IOAPIC EOIs via a new exit KVM_EXIT_IOAPIC_EOI, > which is handled in target-i386/kvm.c and relayed to the software > IOAPIC via ioapic_eoi_broadcast.
I had looked at v1, and there was nothing surprising. I was travelling and couldn't comment immediately. I only have a couple of notes: 1) the kvm_*_in_kernel() rename should be a separate patch; 2) this: + if (machine_kernel_irqchip_split(machine)) { + ret = kvm_vm_enable_cap(s, KVM_CAP_SPLIT_IRQCHIP, 0, 24); + if (ret) { + error_report("Could not enable split irqchip mode: %s\n", + strerror(-ret)); and "bool kvm_split_irqchip" should go in target-i386/kvm.c, using the existing kvm_arch_irqchip_create hook; 3) other arches than i386 should reject kernel_irqchip=split. More importantly, I would like to understand what is the kernel issue that you are getting. It should be resolved before 4.4 goes out in two months, of course. Paolo