]> www.infradead.org Git - nvme.git/commitdiff
KVM: SEV: Avoid WBINVD for HVA-based MMU notifications for SNP
authorAshish Kalra <ashish.kalra@amd.com>
Wed, 1 May 2024 08:52:06 +0000 (03:52 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Sun, 12 May 2024 08:09:33 +0000 (04:09 -0400)
With SNP/guest_memfd, private/encrypted memory should not be mappable,
and MMU notifications for HVA-mapped memory will only be relevant to
unencrypted guest memory. Therefore, the rationale behind issuing a
wbinvd_on_all_cpus() in sev_guest_memory_reclaimed() should not apply
for SNP guests and can be ignored.

Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
[mdr: Add some clarifications in commit]
Signed-off-by: Michael Roth <michael.roth@amd.com>
Message-ID: <20240501085210.2213060-17-michael.roth@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/svm/sev.c

index 0bbbcadbac72c6d77b38cf18e2328ec27450a53e..a876a418693925bf678b64b3002c74e92ee49bad 100644 (file)
@@ -3039,7 +3039,13 @@ do_wbinvd:
 
 void sev_guest_memory_reclaimed(struct kvm *kvm)
 {
-       if (!sev_guest(kvm))
+       /*
+        * With SNP+gmem, private/encrypted memory is unreachable via the
+        * hva-based mmu notifiers, so these events are only actually
+        * pertaining to shared pages where there is no need to perform
+        * the WBINVD to flush associated caches.
+        */
+       if (!sev_guest(kvm) || sev_snp_guest(kvm))
                return;
 
        wbinvd_on_all_cpus();