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 v9 11/18] s390/mm: KVM: pv: when tearing down, try to destroy protected pages
Date: Wed, 30 Mar 2022 14:25:58 +0200 [thread overview]
Message-ID: <20220330122605.247613-12-imbrenda@linux.ibm.com> (raw)
In-Reply-To: <20220330122605.247613-1-imbrenda@linux.ibm.com>
When ptep_get_and_clear_full is called for a mm teardown, we will now
attempt to destroy the secure pages. This will be faster than export.
In case it was not a teardown, or if for some reason the destroy page
UVC failed, we try with an export page, like before.
Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Acked-by: Janosch Frank <frankja@linux.ibm.com>
---
arch/s390/include/asm/pgtable.h | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index 23ca0d8e058a..72544a1b4a68 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -1118,9 +1118,21 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm,
} else {
res = ptep_xchg_lazy(mm, addr, ptep, __pte(_PAGE_INVALID));
}
- /* At this point the reference through the mapping is still present */
- if (mm_is_protected(mm) && pte_present(res))
- uv_convert_owned_from_secure(pte_val(res) & PAGE_MASK);
+ /* Nothing to do */
+ if (!mm_is_protected(mm) || !pte_present(res))
+ return res;
+ /*
+ * At this point the reference through the mapping is still present.
+ * The notifier should have destroyed all protected vCPUs at this
+ * point, so the destroy should be successful.
+ */
+ if (full && !uv_destroy_owned_page(pte_val(res) & PAGE_MASK))
+ return res;
+ /*
+ * But if something went wrong and the pages could not be destroyed,
+ * the slower export is used as fallback instead.
+ */
+ uv_convert_owned_from_secure(pte_val(res) & PAGE_MASK);
return res;
}
--
2.34.1
next prev parent reply other threads:[~2022-03-30 12:37 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-30 12:25 [PATCH v9 00/18] KVM: s390: pv: implement lazy destroy for reboot Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 01/18] KVM: s390: pv: leak the topmost page table when destroy fails Claudio Imbrenda
2022-03-31 13:13 ` Janosch Frank
2022-04-01 14:20 ` Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 02/18] KVM: s390: pv: handle secure storage violations for protected guests Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 03/18] KVM: s390: pv: handle secure storage exceptions for normal guests Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 04/18] KVM: s390: pv: refactor s390_reset_acc Claudio Imbrenda
2022-03-31 13:25 ` Janosch Frank
2022-04-01 14:25 ` Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 05/18] KVM: s390: pv: usage counter instead of flag Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 06/18] KVM: s390: pv: add export before import Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 07/18] KVM: s390: pv: module parameter to fence lazy destroy Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 08/18] KVM: s390: pv: clear the state without memset Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 09/18] KVM: s390: pv: Add kvm_s390_cpus_from_pv to kvm-s390.h and add documentation Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 10/18] KVM: s390: pv: add mmu_notifier Claudio Imbrenda
2022-03-31 13:29 ` Janosch Frank
2022-03-30 12:25 ` Claudio Imbrenda [this message]
2022-03-31 13:34 ` [PATCH v9 11/18] s390/mm: KVM: pv: when tearing down, try to destroy protected pages Janosch Frank
2022-04-01 15:03 ` Claudio Imbrenda
2022-03-30 12:25 ` [PATCH v9 12/18] KVM: s390: pv: refactoring of kvm_s390_pv_deinit_vm Claudio Imbrenda
2022-03-30 12:26 ` [PATCH v9 13/18] KVM: s390: pv: cleanup leftover protected VMs if needed Claudio Imbrenda
2022-03-31 14:02 ` Janosch Frank
2022-04-01 15:13 ` Claudio Imbrenda
2022-03-30 12:26 ` [PATCH v9 14/18] KVM: s390: pv: asynchronous destroy for reboot Claudio Imbrenda
2022-03-30 12:26 ` [PATCH v9 15/18] KVM: s390: pv: api documentation for asynchronous destroy Claudio Imbrenda
2022-03-30 12:26 ` [PATCH v9 16/18] KVM: s390: pv: add KVM_CAP_S390_PROTECTED_ASYNC_DISABLE Claudio Imbrenda
2022-03-30 12:26 ` [PATCH v9 17/18] KVM: s390: pv: avoid export before import if possible Claudio Imbrenda
2022-03-30 12:26 ` [PATCH v9 18/18] KVM: s390: pv: support for Destroy fast UVC 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=20220330122605.247613-12-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.