public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Claudio Imbrenda <imbrenda@linux.ibm.com>
To: kvm@vger.kernel.org
Cc: 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,
	scgl@linux.ibm.com, mimu@linux.ibm.com, nrb@linux.ibm.com
Subject: [PATCH v11 13/19] KVM: s390: pv: destroy the configuration before its memory
Date: Fri,  3 Jun 2022 08:56:39 +0200	[thread overview]
Message-ID: <20220603065645.10019-14-imbrenda@linux.ibm.com> (raw)
In-Reply-To: <20220603065645.10019-1-imbrenda@linux.ibm.com>

Move the Destroy Secure Configuration UVC before the loop to destroy
the memory. If the protected VM has memory, it will be cleaned up and
made accessible by the Destroy Secure Configuraion UVC. The struct
page for the relevant pages will still have the protected bit set, so
the loop is still needed to clean that up.

Switching the order of those two operations does not change the
outcome, but it is significantly faster.

Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
---
 arch/s390/kvm/pv.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/s390/kvm/pv.c b/arch/s390/kvm/pv.c
index a389555d62e7..6cffea26c47f 100644
--- a/arch/s390/kvm/pv.c
+++ b/arch/s390/kvm/pv.c
@@ -163,6 +163,9 @@ int kvm_s390_pv_deinit_vm(struct kvm *kvm, u16 *rc, u16 *rrc)
 {
 	int cc;
 
+	cc = uv_cmd_nodata(kvm_s390_pv_get_handle(kvm),
+			   UVC_CMD_DESTROY_SEC_CONF, rc, rrc);
+	WRITE_ONCE(kvm->arch.gmap->guest_handle, 0);
 	/*
 	 * if the mm still has a mapping, make all its pages accessible
 	 * before destroying the guest
@@ -172,9 +175,6 @@ int kvm_s390_pv_deinit_vm(struct kvm *kvm, u16 *rc, u16 *rrc)
 		mmput(kvm->mm);
 	}
 
-	cc = uv_cmd_nodata(kvm_s390_pv_get_handle(kvm),
-			   UVC_CMD_DESTROY_SEC_CONF, rc, rrc);
-	WRITE_ONCE(kvm->arch.gmap->guest_handle, 0);
 	if (!cc) {
 		atomic_dec(&kvm->mm->context.protected_count);
 		kvm_s390_pv_dealloc_vm(kvm);
-- 
2.36.1


  parent reply	other threads:[~2022-06-03  6:58 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-03  6:56 [PATCH v11 00/19] KVM: s390: pv: implement lazy destroy for reboot Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 01/19] KVM: s390: pv: leak the topmost page table when destroy fails Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 02/19] KVM: s390: pv: handle secure storage violations for protected guests Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 03/19] KVM: s390: pv: handle secure storage exceptions for normal guests Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 04/19] KVM: s390: pv: refactor s390_reset_acc Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 05/19] KVM: s390: pv: usage counter instead of flag Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 06/19] KVM: s390: pv: add export before import Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 07/19] KVM: s390: pv: module parameter to fence asynchronous destroy Claudio Imbrenda
2022-06-15  9:53   ` Janosch Frank
2022-06-15  9:59     ` Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 08/19] KVM: s390: pv: clear the state without memset Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 09/19] KVM: s390: pv: Add kvm_s390_cpus_from_pv to kvm-s390.h and add documentation Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 10/19] KVM: s390: pv: add mmu_notifier Claudio Imbrenda
2022-06-08 12:02   ` Nico Boehr
2022-06-03  6:56 ` [PATCH v11 11/19] s390/mm: KVM: pv: when tearing down, try to destroy protected pages Claudio Imbrenda
2022-06-08 12:03   ` Nico Boehr
2022-06-03  6:56 ` [PATCH v11 12/19] KVM: s390: pv: refactoring of kvm_s390_pv_deinit_vm Claudio Imbrenda
2022-06-03  6:56 ` Claudio Imbrenda [this message]
2022-06-08 12:06   ` [PATCH v11 13/19] KVM: s390: pv: destroy the configuration before its memory Nico Boehr
2022-06-14 14:23   ` Janosch Frank
2022-06-03  6:56 ` [PATCH v11 14/19] KVM: s390: pv: cleanup leftover protected VMs if needed Claudio Imbrenda
2022-06-15  9:59   ` Janosch Frank
2022-06-15 10:19     ` Claudio Imbrenda
2022-06-15 10:57       ` Janosch Frank
2022-06-15 11:13         ` Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 15/19] KVM: s390: pv: asynchronous destroy for reboot Claudio Imbrenda
2022-06-15 10:58   ` Janosch Frank
2022-06-20  9:41   ` Janosch Frank
2022-06-03  6:56 ` [PATCH v11 16/19] KVM: s390: pv: api documentation for asynchronous destroy Claudio Imbrenda
2022-06-20  9:13   ` Janosch Frank
2022-06-03  6:56 ` [PATCH v11 17/19] KVM: s390: pv: add KVM_CAP_S390_PROTECTED_ASYNC_DISABLE Claudio Imbrenda
2022-06-03  6:56 ` [PATCH v11 18/19] KVM: s390: pv: avoid export before import if possible Claudio Imbrenda
2022-06-07 14:33   ` Nico Boehr
2022-06-20  9:56   ` Janosch Frank
2022-06-03  6:56 ` [PATCH v11 19/19] KVM: s390: pv: support for Destroy fast UVC Claudio Imbrenda
2022-06-14 14:29 ` [PATCH v11 00/19] KVM: s390: pv: implement lazy destroy for reboot Janosch Frank

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=20220603065645.10019-14-imbrenda@linux.ibm.com \
    --to=imbrenda@linux.ibm.com \
    --cc=borntraeger@de.ibm.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=mimu@linux.ibm.com \
    --cc=nrb@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=scgl@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: 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