LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Claudio Imbrenda <imbrenda@linux.ibm.com> To: kvm@vger.kernel.org Cc: cohuck@redhat.com, borntraeger@de.ibm.com, frankja@linux.ibm.com, thuth@redhat.com, pasic@linux.ibm.com, david@redhat.com, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, Ulrich.Weigand@de.ibm.com Subject: [PATCH v4 00/14] KVM: s390: pv: implement lazy destroy for reboot Date: Wed, 18 Aug 2021 15:26:06 +0200 [thread overview] Message-ID: <20210818132620.46770-1-imbrenda@linux.ibm.com> (raw) Previously, when a protected VM was rebooted or when it was shut down, its memory was made unprotected, and then the protected VM itself was destroyed. Looping over the whole address space can take some time, considering the overhead of the various Ultravisor Calls (UVCs). This means that a reboot or a shutdown would take a potentially long amount of time, depending on the amount of used memory. This patchseries implements a deferred destroy mechanism for protected guests. When a protected guest is destroyed, its memory is cleared in background, allowing the guest to restart or terminate significantly faster than before. There are 2 possibilities when a protected VM is torn down: * it still has an address space associated (reboot case) * it does not have an address space anymore (shutdown case) For the reboot case, the reference count of the mm is increased, and then a background thread is started to clean up. Once the thread went through the whole address space, the protected VM is actually destroyed. This means that the same address space can have memory belonging to more than one protected guest, although only one will be running, the others will in fact not even have any CPUs. The shutdown case is more controversial, and it will be dealt with in a future patchseries. When a guest is destroyed, its memory still counts towards its memory control group until it's actually freed (I tested this experimentally) v3->v4 * added patch 2 * split patch 3 * removed the shutdown part -- will be a separate patchseries * moved the patch introducing the module parameter v2->v3 * added definitions for CC return codes for the UVC instruction * improved make_secure_pte: - renamed rc to cc - added comments to explain why returning -EAGAIN is ok * fixed kvm_s390_pv_replace_asce and kvm_s390_pv_remove_old_asce: - renamed - added locking - moved to gmap.c * do proper error management in do_secure_storage_access instead of trying again hoping to get a different exception * fix outdated patch descriptions v1->v2 * rebased on a more recent kernel * improved/expanded some patch descriptions * improves/expanded some comments * added patch 1, which prevents stall notification when the system is under heavy load. * rename some members of struct deferred_priv to improve readability * avoid an use-after-free bug of the struct mm in case of shutdown * add missing return when lazy destroy is disabled * add support for OOM notifier Claudio Imbrenda (14): KVM: s390: pv: add macros for UVC CC values KVM: s390: pv: avoid double free of sida page KVM: s390: pv: avoid stalls for kvm_s390_pv_init_vm KVM: s390: pv: avoid stalls when making pages secure KVM: s390: pv: leak the ASCE page when destroy fails KVM: s390: pv: properly handle page flags for protected guests KVM: s390: pv: handle secure storage violations for protected guests KVM: s390: pv: handle secure storage exceptions for normal guests KVM: s390: pv: refactor s390_reset_acc KVM: s390: pv: usage counter instead of flag KVM: s390: pv: add export before import KVM: s390: pv: module parameter to fence lazy destroy KVM: s390: pv: lazy destroy for reboot KVM: s390: pv: avoid export before import if possible arch/s390/include/asm/gmap.h | 6 +- arch/s390/include/asm/pgtable.h | 9 +- arch/s390/include/asm/uv.h | 16 ++- arch/s390/kernel/uv.c | 115 ++++++++++++++++++-- arch/s390/kvm/kvm-s390.c | 6 +- arch/s390/kvm/kvm-s390.h | 2 +- arch/s390/kvm/pv.c | 185 ++++++++++++++++++++++++++++---- arch/s390/mm/fault.c | 20 +++- arch/s390/mm/gmap.c | 141 +++++++++++++++++++----- 9 files changed, 434 insertions(+), 66 deletions(-) -- 2.31.1
next reply other threads:[~2021-08-18 13:26 UTC|newest] Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-18 13:26 Claudio Imbrenda [this message] 2021-08-18 13:26 ` [PATCH v4 01/14] KVM: s390: pv: add macros for UVC CC values Claudio Imbrenda 2021-08-31 13:43 ` Christian Borntraeger 2021-08-18 13:26 ` [PATCH v4 02/14] KVM: s390: pv: avoid double free of sida page Claudio Imbrenda 2021-08-31 13:55 ` Christian Borntraeger 2021-09-08 18:50 ` Claudio Imbrenda 2021-08-31 13:59 ` Janosch Frank 2021-08-18 13:26 ` [PATCH v4 03/14] KVM: s390: pv: avoid stalls for kvm_s390_pv_init_vm Claudio Imbrenda 2021-08-31 14:10 ` Christian Borntraeger 2021-08-18 13:26 ` [PATCH v4 04/14] KVM: s390: pv: avoid stalls when making pages secure Claudio Imbrenda 2021-08-31 14:32 ` Christian Borntraeger 2021-08-31 15:00 ` Claudio Imbrenda 2021-08-31 15:11 ` Christian Borntraeger 2021-08-18 13:26 ` [PATCH v4 05/14] KVM: s390: pv: leak the ASCE page when destroy fails Claudio Imbrenda 2021-09-06 15:32 ` Christian Borntraeger 2021-09-06 15:54 ` Claudio Imbrenda 2021-08-18 13:26 ` [PATCH v4 06/14] KVM: s390: pv: properly handle page flags for protected guests Claudio Imbrenda 2021-09-06 15:46 ` Christian Borntraeger 2021-09-06 15:56 ` Claudio Imbrenda 2021-09-06 16:16 ` Christian Borntraeger 2021-09-17 14:57 ` Claudio Imbrenda 2021-08-18 13:26 ` [PATCH v4 07/14] KVM: s390: pv: handle secure storage violations " Claudio Imbrenda 2021-08-18 13:26 ` [PATCH v4 08/14] KVM: s390: pv: handle secure storage exceptions for normal guests Claudio Imbrenda 2021-08-18 13:26 ` [PATCH v4 09/14] KVM: s390: pv: refactor s390_reset_acc Claudio Imbrenda 2021-08-18 13:26 ` [PATCH v4 10/14] KVM: s390: pv: usage counter instead of flag Claudio Imbrenda 2021-08-26 7:58 ` Janis Schoetterl-Glausch 2021-08-18 13:26 ` [PATCH v4 11/14] KVM: s390: pv: add export before import Claudio Imbrenda 2021-08-18 13:26 ` [PATCH v4 12/14] KVM: s390: pv: module parameter to fence lazy destroy Claudio Imbrenda 2021-08-18 13:26 ` [PATCH v4 13/14] KVM: s390: pv: lazy destroy for reboot Claudio Imbrenda 2021-08-26 8:33 ` Janis Schoetterl-Glausch 2021-08-18 13:26 ` [PATCH v4 14/14] KVM: s390: pv: avoid export before import if possible Claudio Imbrenda
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=20210818132620.46770-1-imbrenda@linux.ibm.com \ --to=imbrenda@linux.ibm.com \ --cc=Ulrich.Weigand@de.ibm.com \ --cc=borntraeger@de.ibm.com \ --cc=cohuck@redhat.com \ --cc=david@redhat.com \ --cc=frankja@linux.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=thuth@redhat.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: linkBe 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; as well as URLs for NNTP newsgroup(s).