Commit 4f67cf7e authored by Sean Christopherson's avatar Sean Christopherson
Browse files

KVM: SEV: WARN on unhandled VM type when initializing VM

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).

Link: https://patch.msgid.link/20260310234829.2608037-13-seanjc@google.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent e353f1be
Loading
Loading
Loading
Loading
+18 −11
Original line number Diff line number Diff line
@@ -2927,17 +2927,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);
	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 %u", kvm->arch.vm_type);
		break;
	}
}

void sev_vm_destroy(struct kvm *kvm)