[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Patch] s390x/kvm: make setting of in-kernel irq routes
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [Patch] s390x/kvm: make setting of in-kernel irq routes more efficient |
Date: |
Mon, 10 Aug 2015 16:10:08 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 |
On 10/08/2015 16:02, Jens Freimann wrote:
> When we add new adapter routes we call kvm_irqchip_add_route() for every
> virtqueue and in the same step also do the KVM_SET_GSI_ROUTING ioctl.
>
> This is unnecessary costly as the interface allows us to set multiple
> routes in one go. Let's first add all routes to the table stored in the
> global kvm_state and then do the ioctl to commit the routes to the
> in-kernel irqchip.
>
> This saves us several ioctls to the kernel where for each call a list
> is reallocated and populated.
Acked-by: Paolo Bonzini <address@hidden>
but we should do the same for kvm_irqchip_add_msi_route as well. I'll
prepare a patch.
Paolo
> Signed-off-by: Jens Freimann <address@hidden>
> Reviewed-by: David Hildenbrand <address@hidden>
> ---
> hw/intc/s390_flic_kvm.c | 2 ++
> kvm-all.c | 1 -
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c
> index b471e7a..48714f9 100644
> --- a/hw/intc/s390_flic_kvm.c
> +++ b/hw/intc/s390_flic_kvm.c
> @@ -228,6 +228,8 @@ static int kvm_s390_add_adapter_routes(S390FLICState *fs,
> routes->gsi[i] = ret;
> routes->adapter.ind_offset++;
> }
> + kvm_irqchip_commit_routes(kvm_state);
> +
> /* Restore passed-in structure to original state. */
> routes->adapter.ind_offset = ind_offset;
> return 0;
> diff --git a/kvm-all.c b/kvm-all.c
> index 06e06f2..c6f5128 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -1293,7 +1293,6 @@ int kvm_irqchip_add_adapter_route(KVMState *s,
> AdapterInfo *adapter)
> kroute.u.adapter.adapter_id = adapter->adapter_id;
>
> kvm_add_routing_entry(s, &kroute);
> - kvm_irqchip_commit_routes(s);
>
> return virq;
> }
> -- 2.3.8