[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [qemu-s390x] [PATCH v2 17/18] s390x/kvm: cache the kvm flic in a cen
From: |
Christian Borntraeger |
Subject: |
Re: [qemu-s390x] [PATCH v2 17/18] s390x/kvm: cache the kvm flic in a central function |
Date: |
Thu, 25 Jan 2018 12:03:20 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 |
On 01/17/2018 06:40 PM, David Hildenbrand wrote:
> This avoids tons of conversions when handling interrupts.
>
> Signed-off-by: David Hildenbrand <address@hidden>
Acked-by: Christian Borntraeger <address@hidden>
> ---
> hw/intc/s390_flic_kvm.c | 21 ++++++++++++++++-----
> 1 file changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c
> index d277ffdd2e..3f804ad52e 100644
> --- a/hw/intc/s390_flic_kvm.c
> +++ b/hw/intc/s390_flic_kvm.c
> @@ -35,6 +35,17 @@ typedef struct KVMS390FLICState {
> bool clear_io_supported;
> } KVMS390FLICState;
>
> +static KVMS390FLICState *s390_get_kvm_flic(S390FLICState *fs)
> +{
> + static KVMS390FLICState *flic;
> +
> + if (!flic) {
> + /* we only have one flic device, so this is fine to cache */
> + flic = KVM_S390_FLIC(fs);
> + }
> + return flic;
> +}
> +
> /**
> * flic_get_all_irqs - store all pending irqs in buffer
> * @buf: pointer to buffer which is passed to kernel
> @@ -117,7 +128,7 @@ static void kvm_s390_inject_flic(S390FLICState *fs,
> struct kvm_s390_irq *irq)
> int r;
>
> if (use_flic) {
> - r = flic_enqueue_irqs(irq, sizeof(*irq), KVM_S390_FLIC(fs));
> + r = flic_enqueue_irqs(irq, sizeof(*irq), s390_get_kvm_flic(fs));
> if (r == -ENOSYS) {
> use_flic = false;
> }
> @@ -174,7 +185,7 @@ static void kvm_s390_inject_crw_mchk(S390FLICState *fs)
> static int kvm_s390_clear_io_flic(S390FLICState *fs, uint16_t subchannel_id,
> uint16_t subchannel_nr)
> {
> - KVMS390FLICState *flic = KVM_S390_FLIC(fs);
> + KVMS390FLICState *flic = s390_get_kvm_flic(fs);
> int rc;
> uint32_t sid = subchannel_id << 16 | subchannel_nr;
> struct kvm_device_attr attr = {
> @@ -192,7 +203,7 @@ static int kvm_s390_clear_io_flic(S390FLICState *fs,
> uint16_t subchannel_id,
> static int kvm_s390_modify_ais_mode(S390FLICState *fs, uint8_t isc,
> uint16_t mode)
> {
> - KVMS390FLICState *flic = KVM_S390_FLIC(fs);
> + KVMS390FLICState *flic = s390_get_kvm_flic(fs);
> struct kvm_s390_ais_req req = {
> .isc = isc,
> .mode = mode,
> @@ -212,7 +223,7 @@ static int kvm_s390_modify_ais_mode(S390FLICState *fs,
> uint8_t isc,
> static int kvm_s390_inject_airq(S390FLICState *fs, uint8_t type,
> uint8_t isc, uint8_t flags)
> {
> - KVMS390FLICState *flic = KVM_S390_FLIC(fs);
> + KVMS390FLICState *flic = s390_get_kvm_flic(fs);
> uint32_t id = css_get_adapter_id(type, isc);
> struct kvm_device_attr attr = {
> .group = KVM_DEV_FLIC_AIRQ_INJECT,
> @@ -301,7 +312,7 @@ static int kvm_s390_io_adapter_map(S390FLICState *fs,
> uint32_t id,
> .group = KVM_DEV_FLIC_ADAPTER_MODIFY,
> .addr = (uint64_t)&req,
> };
> - KVMS390FLICState *flic = KVM_S390_FLIC(fs);
> + KVMS390FLICState *flic = s390_get_kvm_flic(fs);
> int r;
>
> if (!kvm_gsi_routing_enabled()) {
>
- Re: [qemu-s390x] [PATCH v2 12/18] s390x: fix size + content of STSI blocks, (continued)
[qemu-s390x] [PATCH v2 11/18] s390x/flic: optimize CPU wakeup for TCG, David Hildenbrand, 2018/01/17
[qemu-s390x] [PATCH v2 14/18] s390x/tcg: remove SMP warning, David Hildenbrand, 2018/01/17
[qemu-s390x] [PATCH v2 13/18] s390x/tcg: STSI overhaul, David Hildenbrand, 2018/01/17
[qemu-s390x] [PATCH v2 15/18] configure: s390x supports mttcg now, David Hildenbrand, 2018/01/17
[qemu-s390x] [PATCH v2 16/18] s390x/tcg: cache the qemu flic in a central function, David Hildenbrand, 2018/01/17
[qemu-s390x] [PATCH v2 18/18] s390x/flic: cache the common flic class in a central function, David Hildenbrand, 2018/01/17
[qemu-s390x] [PATCH v2 17/18] s390x/kvm: cache the kvm flic in a central function, David Hildenbrand, 2018/01/17
- Re: [qemu-s390x] [PATCH v2 17/18] s390x/kvm: cache the kvm flic in a central function,
Christian Borntraeger <=
Re: [qemu-s390x] [PATCH v2 00/18] s390x: flic rework, tcg flic support and STSI, Cornelia Huck, 2018/01/25
Re: [qemu-s390x] [PATCH v2 00/18] s390x: flic rework, tcg flic support and STSI, Cornelia Huck, 2018/01/25