[PATCH 12/21] KVM: SEV: WARN on unhandled VM type when initializing VM

Sean Christopherson posted 21 patches 4 weeks ago
[PATCH 12/21] KVM: SEV: WARN on unhandled VM type when initializing VM
Posted by Sean Christopherson 4 weeks ago
WARN if KVM encounters an unhandled VM type when setting up flags for SEV+
VMs, e.g. to guard against adding a new flavor of SEV without adding proper
recognition in sev_vm_init().

Practically speaking, no functional change intended (the new "default" case
should be unreachable).

Signed-off-by: Sean Christopherson <seanjc@google.com>
---
 arch/x86/kvm/svm/sev.c | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index e5dae76d2986..9a907bc057d0 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -2930,17 +2930,24 @@ static int snp_decommission_context(struct kvm *kvm)
 
 void sev_vm_init(struct kvm *kvm)
 {
-	int type = kvm->arch.vm_type;
-
-	if (type == KVM_X86_DEFAULT_VM || type == KVM_X86_SW_PROTECTED_VM)
-		return;
-
-	kvm->arch.has_protected_state = (type == KVM_X86_SEV_ES_VM ||
-					 type == KVM_X86_SNP_VM);
-	to_kvm_sev_info(kvm)->need_init = true;
-
-	kvm->arch.has_private_mem = (type == KVM_X86_SNP_VM);
-	kvm->arch.pre_fault_allowed = !kvm->arch.has_private_mem;
+	switch (kvm->arch.vm_type) {
+	case KVM_X86_DEFAULT_VM:
+	case KVM_X86_SW_PROTECTED_VM:
+		break;
+	case KVM_X86_SNP_VM:
+		kvm->arch.has_private_mem = true;
+		fallthrough;
+	case KVM_X86_SEV_ES_VM:
+		kvm->arch.has_protected_state = true;
+		fallthrough;
+	case KVM_X86_SEV_VM:
+		kvm->arch.pre_fault_allowed = !kvm->arch.has_private_mem;
+		to_kvm_sev_info(kvm)->need_init = true;
+		break;
+	default:
+		WARN_ONCE(1, "Unsupported VM type %lu", kvm->arch.vm_type);
+		break;
+	}
 }
 
 void sev_vm_destroy(struct kvm *kvm)
-- 
2.53.0.473.g4a7958ca14-goog