diff options
author | Jeremi Piotrowski <jpiotrowski@linux.microsoft.com> | 2023-03-08 15:05:31 +0000 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2023-03-17 21:57:52 -0700 |
commit | 6365ba64b4dbe8b59ddaeaa724b281f3787715d5 (patch) | |
tree | 22b37a8da0da4dcbb9ef3d98511d60c9f9ab3bcf /include/linux/ptp_kvm.h | |
parent | 1118aa4c70a6978afb0c4391ad29826c14b842b3 (diff) | |
download | lwn-6365ba64b4dbe8b59ddaeaa724b281f3787715d5.tar.gz lwn-6365ba64b4dbe8b59ddaeaa724b281f3787715d5.zip |
ptp: kvm: Use decrypted memory in confidential guest on x86
KVM_HC_CLOCK_PAIRING currently fails inside SEV-SNP guests because the
guest passes an address to static data to the host. In confidential
computing the host can't access arbitrary guest memory so handling the
hypercall runs into an "rmpfault". To make the hypercall work, the guest
needs to explicitly mark the memory as decrypted. Do that in
kvm_arch_ptp_init(), but retain the previous behavior for
non-confidential guests to save us from having to allocate memory.
Add a new arch-specific function (kvm_arch_ptp_exit()) to free the
allocation and mark the memory as encrypted again.
Signed-off-by: Jeremi Piotrowski <jpiotrowski@linux.microsoft.com>
Link: https://lore.kernel.org/r/20230308150531.477741-1-jpiotrowski@linux.microsoft.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/linux/ptp_kvm.h')
-rw-r--r-- | include/linux/ptp_kvm.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/ptp_kvm.h b/include/linux/ptp_kvm.h index c2e28deef33a..746fd67c3480 100644 --- a/include/linux/ptp_kvm.h +++ b/include/linux/ptp_kvm.h @@ -14,6 +14,7 @@ struct timespec64; struct clocksource; int kvm_arch_ptp_init(void); +void kvm_arch_ptp_exit(void); int kvm_arch_ptp_get_clock(struct timespec64 *ts); int kvm_arch_ptp_get_crosststamp(u64 *cycle, struct timespec64 *tspec, struct clocksource **cs); |