[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC v2] Add support for KVM_CAP_SPLIT_IRQCHIP
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [RFC v2] Add support for KVM_CAP_SPLIT_IRQCHIP |
Date: |
Wed, 4 Nov 2015 22:23:14 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 |
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