mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
KVM: SEV: Move SEV-specific VM initialization to sev.c
Move SEV+ VM initialization to sev.c (as sev_vm_init()) so that kvm_sev_info (and all usage) can be gated on CONFIG_KVM_AMD_SEV=y without needing more #ifdefs. As a bonus, isolating the logic will make it easier to harden the flow, e.g. to WARN if the vm_type is unknown. No functional change intended (SEV, SEV_ES, and SNP VM types are only supported if CONFIG_KVM_AMD_SEV=y). Link: https://patch.msgid.link/20260310234829.2608037-12-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
7341500f8b
commit
e353f1beed
|
|
@ -2925,6 +2925,21 @@ static int snp_decommission_context(struct kvm *kvm)
|
|||
return 0;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
void sev_vm_destroy(struct kvm *kvm)
|
||||
{
|
||||
struct kvm_sev_info *sev = to_kvm_sev_info(kvm);
|
||||
|
|
|
|||
|
|
@ -5123,17 +5123,7 @@ static void svm_vm_destroy(struct kvm *kvm)
|
|||
|
||||
static int svm_vm_init(struct kvm *kvm)
|
||||
{
|
||||
int type = kvm->arch.vm_type;
|
||||
|
||||
if (type != KVM_X86_DEFAULT_VM &&
|
||||
type != KVM_X86_SW_PROTECTED_VM) {
|
||||
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;
|
||||
}
|
||||
sev_vm_init(kvm);
|
||||
|
||||
if (!pause_filter_count || !pause_filter_thresh)
|
||||
kvm_disable_exits(kvm, KVM_X86_DISABLE_EXITS_PAUSE);
|
||||
|
|
|
|||
|
|
@ -900,6 +900,7 @@ static inline struct page *snp_safe_alloc_page(void)
|
|||
|
||||
int sev_vcpu_create(struct kvm_vcpu *vcpu);
|
||||
void sev_free_vcpu(struct kvm_vcpu *vcpu);
|
||||
void sev_vm_init(struct kvm *kvm);
|
||||
void sev_vm_destroy(struct kvm *kvm);
|
||||
void __init sev_set_cpu_caps(void);
|
||||
void __init sev_hardware_setup(void);
|
||||
|
|
@ -926,6 +927,7 @@ static inline struct page *snp_safe_alloc_page(void)
|
|||
|
||||
static inline int sev_vcpu_create(struct kvm_vcpu *vcpu) { return 0; }
|
||||
static inline void sev_free_vcpu(struct kvm_vcpu *vcpu) {}
|
||||
static inline void sev_vm_init(struct kvm *kvm) {}
|
||||
static inline void sev_vm_destroy(struct kvm *kvm) {}
|
||||
static inline void __init sev_set_cpu_caps(void) {}
|
||||
static inline void __init sev_hardware_setup(void) {}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user