From: Michael Mueller <mimu@linux.ibm.com>
To: KVM Mailing List <kvm@vger.kernel.org>
Cc: Linux-S390 Mailing List <linux-s390@vger.kernel.org>,
linux-kernel@vger.kernel.org,
kvm390-list@tuxmaker.boeblingen.de.ibm.com,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
David Hildenbrand <david@redhat.com>,
Cornelia Huck <cohuck@redhat.com>,
Halil Pasic <pasic@linux.ibm.com>,
Pierre Morel <pmorel@linux.ibm.com>,
Michael Mueller <mimu@linux.ibm.com>
Subject: [PATCH v5 00/15] KVM: s390: make use of the GIB
Date: Wed, 19 Dec 2018 20:17:41 +0100 [thread overview]
Message-ID: <20181219191756.57973-1-mimu@linux.ibm.com> (raw)
The Guest Information Area (GIB) and its mechanics is part of
the AIV facility. It provides hardware support to process
Adapter Interruptions (AI) for pagable storage mode guests.
Whenever a guest cannot process an AI because none of its
vcpus is running in SIE context, a GIB alert interruption is
sent to and handled by the host program to dispatch a vcpu of
the respective guest.
Eventually, the AI is handled by the guest.
v4->v5:
Between these two versions some significant change was
introduced:
a) During IPM look-up, the IAM gets atomically restored
if the IPM is clean. (The main strategy is: As soon no
airqs are pending anymore, get prepared for new ones
arriving).
b) Kick a set of vcpus in WAIT state, that will be able
to handle all ISCs in IPM if possible. The main loop
that processes the GIB alert list is unchanged.
patches 1/15 to 6/15:
prepare the existing Interruption and GISA code for
the introduction of the GIB code.
patches 7/15 to 9/15:
kept from v4.
patch 10/15:
restores the IAM in get_ipm() when clean on request
with additional parameter irq_flags
patch 12/15:
modifies kvm_s390_deliver_pending_interrupts() such
that the IAM is not restored during the deliverable_irqs()
test as we are about to enter the SIE. Restoring the
IAM would trigger the alert mechanism unnecessarily
on SIE entry.
patch 13/15:
process_gib_alert_list() now triggers a minimal set
of idle vcpus capable the handle all pending ISCs.
patch 14/15:
the wiring is logical similar to v4 but uses different
routines
patch 15/15:
kept from v4.
v3->v4:
The central change of v4 is that the metric "vcpus_in_sie"
has been dropped. A least agressive IAM restore strategy
is being followed now. The consequence is that potentially
more GAL interruptions are to be handled by the host program.
The assuption as made that as soon the first vcpu is trying
to go into wait state, this could be the last vcpu being
open for I/O interruptions. Thus, to not loose the initiative
to deliver I/O interruptions as soon as possible, the IAM
is restored. Adding better heuristics can be done in future.
I expect this to be the last version of the series.
patch 01/12: Kernel msg now printed when FLIC fails
to register during arch inititialization.
patch 03/12: Commit message slightly changed with the
hint that gib initialization is called
by last patch of this serias.
patch 09/12: IAM now restored during kvm_s390_handle_wait()
patch 10/12: gib destroy case now handled upon unsuccessful
arch inititialization.
All other patches are unchanged.
v2->v3:
patch 01/12: Fixes a resource dealocation issue upon
unsuccessful exit from kvm_arch_init().
It is relevant for patch 11/12 as well.
patch 08/12: The function process_gib_alert_list() has
been rewritten to reduce the number of GAL
interruptions on the host for many guest
scenarios.
patch 10/12: The IAM is now never cleared before SIE entry.
It will be cleared by millicode as soon the
first guest interruption is made pending and
not directly processed in SIE. The IAM gets
restored as soon a vm is idle, i.e. no vcpu
of that guest is in SIE context anymore.
patch 11/12: now integrates with new patch 01/12
patch 12/12: This patch is just experimental and shall not
be part of the final series.
The first patch of series v2: "leave AIs in IPM of GISA
during vcpu_pre_run()" has been dropped.
All other patches are unchanged.
v1->v2:
patch 01/12: New patch. Tt can go also standalone without the
rest of the GIB series presented here but is a
requirement
patch 03/12: kvm_s390_gib_init() now has a return code
patch 06/12: unlink_gib_alert_list() now uses cmpxchg() instead
of atomic_xchg()
patch 08/12: New patch. Foctors out __find_vcpu_for_floating_irq()
patch 09/12: process_gib_alert_list() has been simplified
the GISA clear/destroy cases have been removed
patch 11/12: kvm_s390_gisa_clear/destroy() now clear the IAM
and process the alert list directly
The IAM now gets restored in vcpu_post_run() only if
the GISA is not in alert list
patch 12/12: during kvm_arch_init() now the return code of
kvm_s390_gib_init() is honored.
All other patches are unchanged.
Michael Mueller (15):
KVM: s390: unregister debug feature on failing arch init
KVM: s390: coding style issue kvm_s390_gisa_init/clear()
KVM: s390: factor out nullify_gisa()
KVM: s390: use pending_irqs_no_gisa() where appropriate
KVM: s390: unify pending_irqs() and pending_irqs_no_gisa()
KVM: s390: remove prefix kvm_s390_gisa_ from static inline functions
s390/cio: add function chsc_sgib()
KVM: s390: add the GIB and its related life-cyle functions
KVM: s390: add kvm reference to struct sie_page2
KVM: s390: add functions to (un)register GISC with GISA
KVM: s390: restore IAM in get_ipm() when IPM is clean
KVM: s390: do not restore IAM immediately before SIE entry
KVM: s390: add function process_gib_alert_list()
KVM: s390: add and wire function gib_alert_irq_handler()
KVM: s390: start using the GIB
Documentation/kmsg/s390/kvm | 12 ++
arch/s390/include/asm/cio.h | 1 +
arch/s390/include/asm/irq.h | 1 +
arch/s390/include/asm/isc.h | 1 +
arch/s390/include/asm/kvm_host.h | 22 ++-
arch/s390/kernel/irq.c | 1 +
arch/s390/kvm/interrupt.c | 396 +++++++++++++++++++++++++++++++++++----
arch/s390/kvm/kvm-s390.c | 25 ++-
arch/s390/kvm/kvm-s390.h | 2 +
drivers/s390/cio/chsc.c | 37 ++++
drivers/s390/cio/chsc.h | 1 +
11 files changed, 457 insertions(+), 42 deletions(-)
create mode 100644 Documentation/kmsg/s390/kvm
--
2.13.4
next reply other threads:[~2018-12-19 19:17 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-19 19:17 Michael Mueller [this message]
2018-12-19 19:17 ` [PATCH v5 01/15] KVM: s390: unregister debug feature on failing arch init Michael Mueller
2018-12-19 20:10 ` Cornelia Huck
2018-12-20 7:49 ` Michael Mueller
2018-12-20 7:55 ` Christian Borntraeger
2018-12-19 19:17 ` [PATCH v5 02/15] KVM: s390: coding style issue kvm_s390_gisa_init/clear() Michael Mueller
2018-12-19 20:13 ` Cornelia Huck
2019-01-02 16:50 ` Pierre Morel
2019-01-07 16:16 ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 03/15] KVM: s390: factor out nullify_gisa() Michael Mueller
2018-12-19 19:17 ` [PATCH v5 04/15] KVM: s390: use pending_irqs_no_gisa() where appropriate Michael Mueller
2018-12-19 20:16 ` Cornelia Huck
2019-01-02 16:52 ` Pierre Morel
2018-12-19 19:17 ` [PATCH v5 05/15] KVM: s390: unify pending_irqs() and pending_irqs_no_gisa() Michael Mueller
2018-12-20 10:09 ` Michael Mueller
2018-12-20 11:06 ` Cornelia Huck
2018-12-20 11:49 ` Michael Mueller
2018-12-20 12:15 ` Halil Pasic
2018-12-20 12:21 ` Cornelia Huck
2018-12-20 12:33 ` Michael Mueller
2018-12-20 15:43 ` pierre morel
2018-12-20 16:40 ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 06/15] KVM: s390: remove prefix kvm_s390_gisa_ from static inline functions Michael Mueller
2018-12-20 12:24 ` Cornelia Huck
2018-12-20 14:37 ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 07/15] s390/cio: add function chsc_sgib() Michael Mueller
2018-12-19 19:17 ` [PATCH v5 08/15] KVM: s390: add the GIB and its related life-cyle functions Michael Mueller
2018-12-20 12:28 ` Cornelia Huck
2019-01-03 9:49 ` Pierre Morel
2019-01-07 16:25 ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 09/15] KVM: s390: add kvm reference to struct sie_page2 Michael Mueller
2018-12-19 19:17 ` [PATCH v5 10/15] KVM: s390: add functions to (un)register GISC with GISA Michael Mueller
2018-12-20 14:32 ` Michael Mueller
2019-01-02 17:29 ` Pierre Morel
2019-01-02 18:26 ` Pierre Morel
2019-01-04 13:19 ` Cornelia Huck
2019-01-07 17:38 ` Michael Mueller
2019-01-08 10:34 ` Cornelia Huck
2019-01-08 13:07 ` Michael Mueller
2019-01-08 13:35 ` Cornelia Huck
2019-01-08 13:36 ` Halil Pasic
2019-01-08 13:41 ` Cornelia Huck
2019-01-08 14:23 ` Halil Pasic
2018-12-19 19:17 ` [PATCH v5 11/15] KVM: s390: restore IAM in get_ipm() when IPM is clean Michael Mueller
2019-01-03 15:06 ` Pierre Morel
2019-01-07 18:17 ` Michael Mueller
2019-01-06 23:32 ` Halil Pasic
2019-01-08 8:06 ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 12/15] KVM: s390: do not restore IAM immediately before SIE entry Michael Mueller
2019-01-03 15:00 ` Pierre Morel
2019-01-07 17:53 ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 13/15] KVM: s390: add function process_gib_alert_list() Michael Mueller
2019-01-03 14:43 ` Pierre Morel
2019-01-07 19:18 ` Michael Mueller
2019-01-08 14:27 ` Halil Pasic
2019-01-09 11:39 ` Pierre Morel
2019-01-07 19:19 ` Michael Mueller
2019-01-08 6:37 ` Heiko Carstens
2019-01-08 12:59 ` Halil Pasic
2019-01-08 15:21 ` Michael Mueller
2019-01-08 18:34 ` Halil Pasic
2019-01-09 12:14 ` Pierre Morel
2019-01-09 13:10 ` Halil Pasic
2019-01-09 14:49 ` Pierre Morel
2019-01-09 16:18 ` Halil Pasic
2018-12-19 19:17 ` [PATCH v5 14/15] KVM: s390: add and wire function gib_alert_irq_handler() Michael Mueller
2019-01-03 15:16 ` Pierre Morel
2019-01-08 10:06 ` Michael Mueller
2019-01-09 12:35 ` Pierre Morel
2018-12-19 19:17 ` [PATCH v5 15/15] KVM: s390: start using the GIB Michael Mueller
2019-01-02 17:45 ` Pierre Morel
2019-01-08 9:03 ` Michael Mueller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181219191756.57973-1-mimu@linux.ibm.com \
--to=mimu@linux.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=kvm390-list@tuxmaker.boeblingen.de.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=pasic@linux.ibm.com \
--cc=pmorel@linux.ibm.com \
--cc=schwidefsky@de.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox