]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: SEV: Document the SEV-ES check when querying SMM support as "safe"
authorSean Christopherson <seanjc@google.com>
Tue, 10 Mar 2026 23:48:17 +0000 (16:48 -0700)
committerSean Christopherson <seanjc@google.com>
Wed, 8 Apr 2026 23:04:25 +0000 (16:04 -0700)
Use the "unsafe" API to check for an SEV-ES+ guest when determining whether
or not SMBASE is a supported MSR, i.e. whether or not emulated SMM is
supported.  This will eventually allow adding lockdep assertings to the
APIs for detecting SEV+ VMs without triggering "real" false positives.

While svm_has_emulated_msr() doesn't hold kvm->lock, i.e. can get both
false positives *and* false negatives, both are completely fine, as the
only time the result isn't stable is when userspace is the sole consumer
of the result.  I.e. userspace can confuse itself, but that's it.

No functional change intended.

Link: https://patch.msgid.link/20260310234829.2608037-10-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/svm/svm.c

index d874af3d520aa9158782951a89c1c6de6af2b89b..69a3efc14368247a4ff717c71e1eb3bc69bc48e2 100644 (file)
@@ -4517,9 +4517,17 @@ static bool svm_has_emulated_msr(struct kvm *kvm, u32 index)
        case MSR_IA32_SMBASE:
                if (!IS_ENABLED(CONFIG_KVM_SMM))
                        return false;
-               /* SEV-ES guests do not support SMM, so report false */
-               if (kvm && sev_es_guest(kvm))
+
+#ifdef CONFIG_KVM_AMD_SEV
+               /*
+                * KVM can't access register state to emulate SMM for SEV-ES
+                * guests.  Conusming stale data here is "fine", as KVM only
+                * checks for MSR_IA32_SMBASE support without a vCPU when
+                * userspace is querying KVM_CAP_X86_SMM.
+                */
+               if (kvm && ____sev_es_guest(kvm))
                        return false;
+#endif
                break;
        default:
                break;