[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/4] kvm: let split be optional for kvm_arch_irq
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 1/4] kvm: let split be optional for kvm_arch_irqchip_create |
Date: |
Wed, 19 Dec 2018 21:15:02 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.1 |
On 19/12/18 16:53, Michael S. Tsirkin wrote:
> On Wed, Dec 19, 2018 at 04:50:35PM +0800, Peter Xu wrote:
>> This patch allows the kvm_arch_irqchip_create() to return 0 if the
>> split irqchip is specified but not forced by the user. Also, modify
>> kvm_irqchip_create() similiarly.
>>
>> This patch should have no functional change for existing code since
>> currently if split is specified it must be forced by the user so we'll
>> always have machine_kernel_irqchip_required() returns true. However it
>> could potentially be used in follow up patches when we want to turn
>> split kernel irqchip as default for QEMU 4.0 which could trigger the
>> case that kernel_irqchip_required=N while kernel_irqchip_split=Y. When
>> with that, we'll first try with split irqchip, and falls back to
>> normal kernel irqchip when split capability is not provided by the
>> kernel.
>>
>> This brings us benefit that we can even run a default QEMU 4.0 on old
>> kernels that does not support split irqchip (<4.4) but at the same
>> time enable split irqchip for new kernels (>=4.4) as default.
>>
>> Signed-off-by: Peter Xu <address@hidden>
>
> Paolo, if you can ack this one, I can merge the rest.
If I understand the code well, there is no change needed in the rest of
the code; having the semantics I asked for simply requires dropping this
patch.
However, the commit messages need some adjustment.
Paolo
>
>> ---
>> accel/kvm/kvm-all.c | 3 ++-
>> target/i386/kvm.c | 6 +++---
>> 2 files changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
>> index 4880a05399..b008364041 100644
>> --- a/accel/kvm/kvm-all.c
>> +++ b/accel/kvm/kvm-all.c
>> @@ -1468,7 +1468,8 @@ static void kvm_irqchip_create(MachineState *machine,
>> KVMState *s)
>> * in-kernel irqchip for us */
>> ret = kvm_arch_irqchip_create(machine, s);
>> if (ret == 0) {
>> - if (machine_kernel_irqchip_split(machine)) {
>> + if (machine_kernel_irqchip_required(machine) &&
>> + machine_kernel_irqchip_split(machine)) {
>> perror("Split IRQ chip mode not supported.");
>> exit(1);
>> } else {
>> diff --git a/target/i386/kvm.c b/target/i386/kvm.c
>> index 739cf8c8ea..8f919f8f9f 100644
>> --- a/target/i386/kvm.c
>> +++ b/target/i386/kvm.c
>> @@ -3685,9 +3685,9 @@ int kvm_arch_irqchip_create(MachineState *ms, KVMState
>> *s)
>> if (machine_kernel_irqchip_split(ms)) {
>> ret = kvm_vm_enable_cap(s, KVM_CAP_SPLIT_IRQCHIP, 0, 24);
>> if (ret) {
>> - error_report("Could not enable split irqchip mode: %s",
>> - strerror(-ret));
>> - exit(1);
>> + assert(ret < 0);
>> + /* If split not required, return 0 instead to retry */
>> + return machine_kernel_irqchip_required(ms) ? ret : 0;
>> } else {
>> DPRINTF("Enabled KVM_CAP_SPLIT_IRQCHIP\n");
>> kvm_split_irqchip = true;
>> --
>> 2.17.1
[Qemu-devel] [PATCH 3/4] x86-iommu: switch intr_supported to OnOffAuto type, Peter Xu, 2018/12/19
[Qemu-devel] [PATCH 4/4] x86-iommu: turn on IR by default if proper, Peter Xu, 2018/12/19