summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorMingwei Zhang <mizhang@google.com>2022-04-21 03:14:06 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-04-27 14:41:15 +0200
commitb5296f093bd41b44912dc6f3ec16e880e4befe13 (patch)
tree62eb349670fde665842ae967d15acf67333ccbc2 /arch
parent5ecee7fcd4e4a88cd0f8b181bf68c3b4434744be (diff)
KVM: SVM: Flush when freeing encrypted pages even on SME_COHERENT CPUs
commit d45829b351ee6ec5f54dd55e6aca1f44fe239fe6 upstream. Use clflush_cache_range() to flush the confidential memory when SME_COHERENT is supported in AMD CPU. Cache flush is still needed since SME_COHERENT only support cache invalidation at CPU side. All confidential cache lines are still incoherent with DMA devices. Cc: stable@vger.kerel.org Fixes: add5e2f04541 ("KVM: SVM: Add support for the SEV-ES VMSA") Reviewed-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Mingwei Zhang <mizhang@google.com> Message-Id: <20220421031407.2516575-3-mizhang@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kvm/svm/sev.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index 5e9640e1256e..e5cecd4ad2d4 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -2217,11 +2217,14 @@ static void sev_flush_encrypted_page(struct kvm_vcpu *vcpu, void *va)
unsigned long addr = (unsigned long)va;
/*
- * If hardware enforced cache coherency for encrypted mappings of the
- * same physical page is supported, nothing to do.
+ * If CPU enforced cache coherency for encrypted mappings of the
+ * same physical page is supported, use CLFLUSHOPT instead. NOTE: cache
+ * flush is still needed in order to work properly with DMA devices.
*/
- if (boot_cpu_has(X86_FEATURE_SME_COHERENT))
+ if (boot_cpu_has(X86_FEATURE_SME_COHERENT)) {
+ clflush_cache_range(va, PAGE_SIZE);
return;
+ }
/*
* VM Page Flush takes a host virtual address and a guest ASID. Fall