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